public void localStatus(InstanceInfo.InstanceStatus status) { applicationInfoManager.setInstanceStatus(status); }
public void localStatus(InstanceInfo.InstanceStatus status) { applicationInfoManager.setInstanceStatus(status); }
applicationInfoManager.setInstanceStatus(InstanceInfo.InstanceStatus.STARTING); applicationInfoManager.setInstanceStatus(InstanceInfo.InstanceStatus.UP); waitForRegistrationWithEureka(eurekaClient); System.out.println("Service started and ready to process requests..");
@Override public void openForTraffic(ApplicationInfoManager applicationInfoManager, int count) { // Renewals happen every 30 seconds and for a minute it should be a factor of 2. this.expectedNumberOfClientsSendingRenews = count; updateRenewsPerMinThreshold(); logger.info("Got {} instances from neighboring DS node", count); logger.info("Renew threshold is: {}", numberOfRenewsPerMinThreshold); this.startupTime = System.currentTimeMillis(); if (count > 0) { this.peerInstancesTransferEmptyOnStartup = false; } DataCenterInfo.Name selfName = applicationInfoManager.getInfo().getDataCenterInfo().getName(); boolean isAws = Name.Amazon == selfName; if (isAws && serverConfig.shouldPrimeAwsReplicaConnections()) { logger.info("Priming AWS connections for all replicas.."); primeAwsReplicas(applicationInfoManager); } logger.info("Changing status to UP"); applicationInfoManager.setInstanceStatus(InstanceStatus.UP); super.postInit(); }
/** * Refresh the current local instanceInfo. Note that after a valid refresh where changes are observed, the * isDirty flag on the instanceInfo is set to true */ void refreshInstanceInfo() { applicationInfoManager.refreshDataCenterInfoIfRequired(); applicationInfoManager.refreshLeaseInfoIfRequired(); InstanceStatus status; try { status = getHealthCheckHandler().getStatus(instanceInfo.getStatus()); } catch (Exception e) { logger.warn("Exception from healthcheckHandler.getStatus, setting status to DOWN", e); status = InstanceStatus.DOWN; } if (null != status) { applicationInfoManager.setInstanceStatus(status); } }
/** * Shuts down Eureka Client. Also sends a deregistration request to the * eureka server. */ @PreDestroy @Override public synchronized void shutdown() { if (isShutdown.compareAndSet(false, true)) { logger.info("Shutting down DiscoveryClient ..."); if (statusChangeListener != null && applicationInfoManager != null) { applicationInfoManager.unregisterStatusChangeListener(statusChangeListener.getId()); } cancelScheduledTasks(); // If APPINFO was registered if (applicationInfoManager != null && clientConfig.shouldRegisterWithEureka() && clientConfig.shouldUnregisterOnShutdown()) { applicationInfoManager.setInstanceStatus(InstanceStatus.DOWN); unregister(); } if (eurekaTransport != null) { eurekaTransport.shutdown(); } heartbeatStalenessMonitor.shutdown(); registryStalenessMonitor.shutdown(); logger.info("Completed shut down of DiscoveryClient"); } }
@Test public void testCustomInstanceStatusMapper() { ApplicationInfoManager.OptionalArgs optionalArgs = new ApplicationInfoManager.OptionalArgs(); optionalArgs.setInstanceStatusMapper(new ApplicationInfoManager.InstanceStatusMapper() { @Override public InstanceInfo.InstanceStatus map(InstanceInfo.InstanceStatus prev) { return InstanceInfo.InstanceStatus.UNKNOWN; } }); applicationInfoManager = new ApplicationInfoManager(config, instanceInfo, optionalArgs); InstanceInfo.InstanceStatus existingStatus = applicationInfoManager.getInfo().getStatus(); assertNotEquals(existingStatus, InstanceInfo.InstanceStatus.UNKNOWN); applicationInfoManager.setInstanceStatus(InstanceInfo.InstanceStatus.UNKNOWN); existingStatus = applicationInfoManager.getInfo().getStatus(); assertEquals(existingStatus, InstanceInfo.InstanceStatus.UNKNOWN); }
@Test public void testNullResultInstanceStatusMapper() { ApplicationInfoManager.OptionalArgs optionalArgs = new ApplicationInfoManager.OptionalArgs(); optionalArgs.setInstanceStatusMapper(new ApplicationInfoManager.InstanceStatusMapper() { @Override public InstanceInfo.InstanceStatus map(InstanceInfo.InstanceStatus prev) { return null; } }); applicationInfoManager = new ApplicationInfoManager(config, instanceInfo, optionalArgs); InstanceInfo.InstanceStatus existingStatus1 = applicationInfoManager.getInfo().getStatus(); assertNotEquals(existingStatus1, InstanceInfo.InstanceStatus.UNKNOWN); applicationInfoManager.setInstanceStatus(InstanceInfo.InstanceStatus.UNKNOWN); InstanceInfo.InstanceStatus existingStatus2 = applicationInfoManager.getInfo().getStatus(); assertEquals(existingStatus2, existingStatus1); } }
public void localStatus(InstanceInfo.InstanceStatus status) { applicationInfoManager.setInstanceStatus(status); }
public void stop() throws Exception { if (applicationInfoManager != null) applicationInfoManager.setInstanceStatus(InstanceStatus.DOWN); if (eurekaClient != null) eurekaClient.shutdown(); }
@SuppressWarnings("deprecation") protected void setEurekaInstanceStatus(InstanceInfo.InstanceStatus status) { ApplicationInfoManager.getInstance().setInstanceStatus(status); }
@Override public void onApplicationEvent(ContextRefreshedEvent event) { applicationInfoManager.setInstanceStatus(getStatus(InstanceInfo.InstanceStatus.UNKNOWN)); }
public void start() throws Exception { applicationInfoManager = ioc.get(ApplicationInfoManager.class); applicationInfoManager.setInstanceStatus(InstanceStatus.UP); eurekaClient = ioc.get(DiscoveryClient.class, "eurekaClient"); }
public void close() { if (applicationInfoManager.getInfo() != null) { applicationInfoManager.setInstanceStatus(InstanceStatus.DOWN); } if (client != null) { client.shutdown(); } client = null; }
@Override public void onApplicationEvent(ApplicationEvent event) { //we only want to tell Eureka that the application is up //when the root application context (thisApplicationContext) has //been fully started. we want to ignore any ContextRefreshedEvent //from child application contexts. if (!event.getSource().equals(thisApplicationContext)) { return; } if (event instanceof ContextRefreshedEvent) { if (!disableEureka) { // tell Eureka the server UP which in turn starts the health checks and heartbeat ApplicationInfoManager.getInstance().setInstanceStatus(InstanceStatus.UP); } } else if (event instanceof ContextClosedEvent) { if (!disableEureka) { ApplicationInfoManager.getInstance().setInstanceStatus(InstanceStatus.DOWN); } } }
public void start() { if (isRegisted.compareAndSet(false, true)) { if (instanceConfig.getNonSecurePort() > 0) { client.getApplications(); applicationInfoManager.setInstanceStatus(instanceConfig.getInitialStatus()); if (healthCheckHandler != null) { client.registerHealthCheck(healthCheckHandler); } } } }
@Override public void deregister(EurekaRegistration reg) { if (reg.getApplicationInfoManager().getInfo() != null) { if (log.isInfoEnabled()) { log.info("Unregistering application " + reg.getApplicationInfoManager().getInfo().getAppName() + " with eureka with status DOWN"); } reg.getApplicationInfoManager().setInstanceStatus(InstanceInfo.InstanceStatus.DOWN); //shutdown of eureka client should happen with EurekaRegistration.close() //auto registration will create a bean which will be properly disposed //manual registrations will need to call close() } }
@IocBean(name="applicationInfoManager") public ApplicationInfoManager getApplicationInfoManager(EurekaInstanceConfig eurekaInstanceConfig) { InstanceInfo instanceInfo = new EurekaConfigBasedInstanceInfoProvider(eurekaInstanceConfig).get(); ApplicationInfoManager applicationInfoManager = new ApplicationInfoManager(eurekaInstanceConfig, instanceInfo); applicationInfoManager.setInstanceStatus(InstanceInfo.InstanceStatus.STARTING); return applicationInfoManager; }
/** * Refresh the current local instanceInfo. Note that after a valid refresh where changes are observed, the * isDirty flag on the instanceInfo is set to true */ void refreshInstanceInfo() { applicationInfoManager.refreshDataCenterInfoIfRequired(); applicationInfoManager.refreshLeaseInfoIfRequired(); InstanceStatus status; try { status = getHealthCheckHandler().getStatus(instanceInfo.getStatus()); } catch (Exception e) { logger.warn("Exception from healthcheckHandler.getStatus, setting status to DOWN", e); status = InstanceStatus.DOWN; } if (null != status) { applicationInfoManager.setInstanceStatus(status); } }
@Override public void register(EurekaRegistration reg) { maybeInitializeClient(reg); if (log.isInfoEnabled()) { log.info("Registering application " + reg.getApplicationInfoManager().getInfo().getAppName() + " with eureka with status " + reg.getInstanceConfig().getInitialStatus()); } reg.getApplicationInfoManager() .setInstanceStatus(reg.getInstanceConfig().getInitialStatus()); reg.getHealthCheckHandler().ifAvailable(healthCheckHandler -> reg.getEurekaClient().registerHealthCheck(healthCheckHandler)); }