Skip to content

Commit

Permalink
0001260: A null pointer happens when trying to schedule load when syn…
Browse files Browse the repository at this point in the history
…c triggers has never run
  • Loading branch information
chenson42 committed Jun 7, 2013
1 parent 27826e0 commit 83fbc71
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 25 deletions.
Expand Up @@ -192,32 +192,40 @@ protected void insertInitialLoadEvents() {
if (nodeSecurities != null) {
boolean reverseLoadFirst = parameterService
.is(ParameterConstants.INTITAL_LOAD_REVERSE_FIRST);
for (NodeSecurity security : nodeSecurities) {
boolean reverseLoadQueued = security.isRevInitialLoadEnabled();
boolean initialLoadQueued = security.isInitialLoadEnabled();
boolean thisMySecurityRecord = security.getNodeId().equals(
identity.getNodeId());
boolean registered = security.getRegistrationTime() != null;
boolean parent = identity.getNodeId().equals(
security.getCreatedAtNodeId());
if (thisMySecurityRecord && reverseLoadQueued
&& (reverseLoadFirst || !initialLoadQueued)) {
sendReverseInitialLoad();
} else if (!thisMySecurityRecord && registered && parent
&& initialLoadQueued
&& (!reverseLoadFirst || !reverseLoadQueued)) {
long ts = System.currentTimeMillis();
engine.getDataService().insertReloadEvents(
engine.getNodeService().findNode(
security.getNodeId()), false);
ts = System.currentTimeMillis() - ts;
if (ts > Constants.LONG_OPERATION_THRESHOLD) {
log.warn("Inserted reload events for node {} in {} ms",
security.getNodeId(), ts);
} else {
log.info("Inserted reload events for node {} in {} ms",
security.getNodeId(), ts);
for (NodeSecurity security : nodeSecurities) {
if (engine.getTriggerRouterService()
.getActiveTriggerHistories().size() > 0) {
boolean reverseLoadQueued = security
.isRevInitialLoadEnabled();
boolean initialLoadQueued = security.isInitialLoadEnabled();
boolean thisMySecurityRecord = security.getNodeId().equals(
identity.getNodeId());
boolean registered = security.getRegistrationTime() != null;
boolean parent = identity.getNodeId().equals(
security.getCreatedAtNodeId());
if (thisMySecurityRecord && reverseLoadQueued
&& (reverseLoadFirst || !initialLoadQueued)) {
sendReverseInitialLoad();
} else if (!thisMySecurityRecord && registered && parent
&& initialLoadQueued
&& (!reverseLoadFirst || !reverseLoadQueued)) {
long ts = System.currentTimeMillis();
engine.getDataService().insertReloadEvents(
engine.getNodeService().findNode(
security.getNodeId()), false);
ts = System.currentTimeMillis() - ts;
if (ts > Constants.LONG_OPERATION_THRESHOLD) {
log.warn(
"Inserted reload events for node {} in {} ms",
security.getNodeId(), ts);
} else {
log.info(
"Inserted reload events for node {} in {} ms",
security.getNodeId(), ts);
}
}
} else {
log.warn("Could not queue up a load for {} because sync triggers has not yet run", security.getNodeId());
}
}
}
Expand Down
Expand Up @@ -50,6 +50,7 @@
import org.jumpmind.symmetric.model.NodeGroupLinkAction;
import org.jumpmind.symmetric.service.IConfigurationService;
import org.jumpmind.symmetric.service.IRegistrationService;
import org.jumpmind.symmetric.service.ITriggerRouterService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

Expand Down Expand Up @@ -243,6 +244,8 @@ public ISymmetricEngine install(Properties passedInProperties) throws Exception

IConfigurationService configurationService = symmetricWebServer
.getConfigurationService();
ITriggerRouterService triggerRouterService = symmetricWebServer.
getTriggerRouterService();
List<NodeGroup> groups = configurationService.getNodeGroups();
boolean foundGroup = false;
for (NodeGroup nodeGroup : groups) {
Expand All @@ -267,6 +270,7 @@ public ISymmetricEngine install(Properties passedInProperties) throws Exception
if (!foundLink) {
configurationService.saveNodeGroupLink(new NodeGroupLink(
serverNodeGroupId, clientNodeGroupId, NodeGroupLinkAction.W));
triggerRouterService.syncTriggers();
}

IRegistrationService registrationService = symmetricWebServer
Expand Down

0 comments on commit 83fbc71

Please sign in to comment.