use of org.jumpmind.symmetric.io.IOfflineClientListener in project symmetric-ds by JumpMind.
the class AbstractOfflineDetectorService method fireOffline.
protected void fireOffline(Exception error, Node remoteNode, RemoteNodeStatus status) {
String syncUrl = remoteNode.getSyncUrl() == null ? parameterService.getRegistrationUrl() : remoteNode.getSyncUrl();
Throwable cause = ExceptionUtils.getRootCause(error);
if (cause == null) {
cause = error;
}
if (isOffline(error)) {
log.warn("Could not communicate with {} at {} because: {}", new Object[] { remoteNode, syncUrl, cause.getMessage() });
status.setStatus(Status.OFFLINE);
} else if (isServiceUnavailable(error)) {
log.info("{} at {} was unavailable", new Object[] { remoteNode, syncUrl });
status.setStatus(Status.OFFLINE);
} else if (isBusy(error)) {
log.info("{} at {} was busy", new Object[] { remoteNode, syncUrl });
status.setStatus(Status.BUSY);
} else if (isNotAuthenticated(error)) {
log.info("{} at {} was not authorized", new Object[] { remoteNode, syncUrl });
status.setStatus(Status.NOT_AUTHORIZED);
} else if (isSyncDisabled(error)) {
log.info("Sync was not enabled for {} at {}", new Object[] { remoteNode, syncUrl });
status.setStatus(Status.SYNC_DISABLED);
} else if (isRegistrationRequired(error)) {
log.info("Registration was not open at {}", new Object[] { remoteNode, syncUrl });
status.setStatus(Status.REGISTRATION_REQUIRED);
} else {
log.warn(String.format("Could not communicate with node '%s' at %s because of unexpected error", remoteNode, syncUrl), error);
status.setStatus(Status.UNKNOWN_ERROR);
}
List<IOfflineClientListener> offlineListeners = extensionService.getExtensionPointList(IOfflineClientListener.class);
if (offlineListeners != null) {
for (IOfflineClientListener listener : offlineListeners) {
if (isOffline(error)) {
listener.offline(remoteNode);
} else if (isBusy(error)) {
listener.busy(remoteNode);
} else if (isNotAuthenticated(error)) {
listener.notAuthenticated(remoteNode);
} else if (isSyncDisabled(error)) {
listener.syncDisabled(remoteNode);
} else if (isRegistrationRequired(error)) {
listener.registrationRequired(remoteNode);
} else {
listener.unknownError(remoteNode, error);
}
}
}
}
use of org.jumpmind.symmetric.io.IOfflineClientListener in project symmetric-ds by JumpMind.
the class AbstractSymmetricEngine method init.
protected void init() {
if (propertiesFactory == null) {
this.propertiesFactory = createTypedPropertiesFactory();
}
if (securityService == null) {
this.securityService = SecurityServiceFactory.create(getSecurityServiceType(), propertiesFactory.reload());
}
TypedProperties properties = this.propertiesFactory.reload();
MDC.put("engineName", properties.get(ParameterConstants.ENGINE_NAME));
this.platform = createDatabasePlatform(properties);
this.parameterService = new ParameterService(platform, propertiesFactory, properties.get(ParameterConstants.RUNTIME_CONFIG_TABLE_PREFIX, "sym"));
boolean parameterTableExists = this.platform.readTableFromDatabase(null, null, TableConstants.getTableName(properties.get(ParameterConstants.RUNTIME_CONFIG_TABLE_PREFIX), TableConstants.SYM_PARAMETER)) != null;
if (parameterTableExists) {
this.parameterService.setDatabaseHasBeenInitialized(true);
this.parameterService.rereadParameters();
}
this.platform.setMetadataIgnoreCase(this.parameterService.is(ParameterConstants.DB_METADATA_IGNORE_CASE));
this.platform.setClearCacheModelTimeoutInMs(parameterService.getLong(ParameterConstants.CACHE_TIMEOUT_TABLES_IN_MS));
this.symmetricDialect = createSymmetricDialect();
this.extensionService = createExtensionService();
this.extensionService.refresh();
this.symmetricDialect.setExtensionService(extensionService);
this.parameterService.setExtensionService(extensionService);
this.bandwidthService = new BandwidthService(parameterService);
this.sequenceService = new SequenceService(parameterService, symmetricDialect);
this.stagingManager = createStagingManager();
this.nodeService = new NodeService(parameterService, symmetricDialect, securityService, extensionService);
this.configurationService = new ConfigurationService(parameterService, symmetricDialect, nodeService);
this.clusterService = new ClusterService(parameterService, symmetricDialect);
this.statisticService = new StatisticService(parameterService, symmetricDialect);
this.statisticManager = new StatisticManager(parameterService, nodeService, configurationService, statisticService, clusterService);
this.concurrentConnectionManager = new ConcurrentConnectionManager(parameterService, statisticManager);
this.purgeService = new PurgeService(parameterService, symmetricDialect, clusterService, statisticManager);
this.transformService = new TransformService(parameterService, symmetricDialect, configurationService, extensionService);
this.loadFilterService = new LoadFilterService(parameterService, symmetricDialect, configurationService);
this.groupletService = new GroupletService(this);
this.triggerRouterService = new TriggerRouterService(this);
this.outgoingBatchService = new OutgoingBatchService(parameterService, symmetricDialect, nodeService, configurationService, sequenceService, clusterService, extensionService);
this.dataService = new DataService(this, extensionService);
this.routerService = buildRouterService();
this.nodeCommunicationService = buildNodeCommunicationService(clusterService, nodeService, parameterService, symmetricDialect);
this.incomingBatchService = new IncomingBatchService(parameterService, symmetricDialect, clusterService);
this.dataExtractorService = new DataExtractorService(this);
this.transportManager = new TransportManagerFactory(this).create();
this.dataLoaderService = buildDataLoaderService();
this.registrationService = new RegistrationService(this);
this.acknowledgeService = new AcknowledgeService(this);
this.pushService = buildPushService();
this.pullService = new PullService(parameterService, symmetricDialect, nodeService, dataLoaderService, registrationService, clusterService, nodeCommunicationService, configurationService, extensionService);
this.fileSyncService = new FileSyncService(this);
this.jobManager = createJobManager();
extensionService.addExtensionPoint(new DefaultOfflineServerListener(statisticManager, nodeService, outgoingBatchService));
IOfflineClientListener defaultlistener = new DefaultOfflineClientListener(parameterService, nodeService);
extensionService.addExtensionPoint(defaultlistener);
extensionService.addExtensionPoint(defaultlistener);
if (registerEngine) {
registerHandleToEngine();
}
}
use of org.jumpmind.symmetric.io.IOfflineClientListener in project symmetric-ds by JumpMind.
the class AbstractOfflineDetectorService method fireOnline.
protected void fireOnline(Node remoteNode, RemoteNodeStatus status) {
transportErrorTimeByNode.remove(remoteNode.getNodeId());
List<IOfflineClientListener> offlineListeners = extensionService.getExtensionPointList(IOfflineClientListener.class);
if (offlineListeners != null) {
for (IOfflineClientListener listener : offlineListeners) {
listener.online(remoteNode);
}
}
}
Aggregations