Skip to content

Commit

Permalink
0001133: Multiple reverse reloads can be queued up because of timing …
Browse files Browse the repository at this point in the history
…issues
  • Loading branch information
chenson42 committed Mar 28, 2013
1 parent b2518e9 commit 34fe0bc
Show file tree
Hide file tree
Showing 5 changed files with 63 additions and 69 deletions.
Expand Up @@ -124,13 +124,13 @@ public void ignoreNodeChannelForExternalId(boolean ignore, String channelId,

public boolean updateNodeSecurity(ISqlTransaction transaction, NodeSecurity security);

public boolean setInitialLoadEnabled(String nodeId, boolean initialLoadEnabled);
public boolean setInitialLoadEnabled(String nodeId, boolean initialLoadEnabled, boolean syncChange);

public boolean setInitialLoadEnabled(ISqlTransaction transaction, String nodeId, boolean initialLoadEnabled);
public boolean setInitialLoadEnabled(ISqlTransaction transaction, String nodeId, boolean initialLoadEnabled, boolean syncChange);

public boolean setReverseInitialLoadEnabled(ISqlTransaction transaction, String nodeId, boolean initialLoadEnabled);
public boolean setReverseInitialLoadEnabled(ISqlTransaction transaction, String nodeId, boolean initialLoadEnabled, boolean syncChange);

public boolean setReverseInitialLoadEnabled(String nodeId, boolean initialLoadEnabled);
public boolean setReverseInitialLoadEnabled(String nodeId, boolean initialLoadEnabled, boolean syncChange);

public INodeIdCreator getNodeIdCreator();

Expand Down
Expand Up @@ -399,11 +399,11 @@ public void insertReloadEvents(Node targetNode, boolean reverse) {
}
}

INodeService nodeService = engine.getNodeService();
if (!reverse) {
engine.getNodeService().setInitialLoadEnabled(transaction, nodeIdRecord, false);
nodeService.setInitialLoadEnabled(transaction, nodeIdRecord, false, false);
} else {
engine.getNodeService().setReverseInitialLoadEnabled(transaction, nodeIdRecord,
false);
nodeService.setReverseInitialLoadEnabled(transaction, nodeIdRecord, false, false);
}

insertNodeSecurityUpdate(transaction, nodeIdRecord, targetNode.getNodeId(),
Expand Down Expand Up @@ -689,9 +689,9 @@ public String reloadNode(String nodeId, boolean reverseLoad) {
Node targetNode = engine.getNodeService().findNode(nodeId);
if (targetNode == null) {
return String.format("Unknown node %s", nodeId);
} else if (reverseLoad && nodeService.setReverseInitialLoadEnabled(nodeId, true)) {
} else if (reverseLoad && nodeService.setReverseInitialLoadEnabled(nodeId, true, true)) {
return String.format("Successfully enabled reverse initial load for node %s", nodeId);
} else if (nodeService.setInitialLoadEnabled(nodeId, true)) {
} else if (nodeService.setInitialLoadEnabled(nodeId, true, true)) {
return String.format("Successfully enabled initial load for node %s", nodeId);
} else {
return String.format("Could not enable initial load for %s", nodeId);
Expand Down
Expand Up @@ -459,54 +459,75 @@ public boolean updateNodeSecurity(ISqlTransaction transaction, NodeSecurity secu
Types.VARCHAR }) == 1;
}

public boolean setInitialLoadEnabled(ISqlTransaction transaction, String nodeId, boolean initialLoadEnabled) {
NodeSecurity nodeSecurity = findNodeSecurity(nodeId, true);
if (nodeSecurity != null) {
nodeSecurity.setInitialLoadEnabled(initialLoadEnabled);
if (initialLoadEnabled) {
nodeSecurity.setInitialLoadTime(null);
} else {
nodeSecurity.setInitialLoadTime(new Date());
public boolean setInitialLoadEnabled(ISqlTransaction transaction, String nodeId,
boolean initialLoadEnabled, boolean syncChange) {
try {
if (!syncChange) {
symmetricDialect.disableSyncTriggers(transaction, nodeId);
}
NodeSecurity nodeSecurity = findNodeSecurity(nodeId, true);
if (nodeSecurity != null) {
nodeSecurity.setInitialLoadEnabled(initialLoadEnabled);
if (initialLoadEnabled) {
nodeSecurity.setInitialLoadTime(null);
} else {
nodeSecurity.setInitialLoadTime(new Date());
}
return updateNodeSecurity(transaction, nodeSecurity);
}
return false;
} finally {
if (!syncChange) {
symmetricDialect.enableSyncTriggers(transaction);
}
return updateNodeSecurity(transaction, nodeSecurity);
}
return false;
}

public boolean setInitialLoadEnabled(String nodeId, boolean initialLoadEnabled) {
public boolean setInitialLoadEnabled(String nodeId, boolean initialLoadEnabled, boolean syncChange) {
ISqlTransaction transaction = null;
try {
transaction = sqlTemplate.startSqlTransaction();
boolean updated = setInitialLoadEnabled(transaction, nodeId, initialLoadEnabled);
boolean updated = setInitialLoadEnabled(transaction, nodeId, initialLoadEnabled, syncChange);
transaction.commit();
return updated;
} finally {
close(transaction);
}
}

public boolean setReverseInitialLoadEnabled(ISqlTransaction transaction, String nodeId, boolean initialLoadEnabled) {
NodeSecurity nodeSecurity = findNodeSecurity(nodeId, true);
if (nodeSecurity != null) {
nodeSecurity.setRevInitialLoadEnabled(initialLoadEnabled);
if (initialLoadEnabled) {
nodeSecurity.setRevInitialLoadTime(null);
} else {
nodeSecurity.setRevInitialLoadTime(new Date());
public boolean setReverseInitialLoadEnabled(ISqlTransaction transaction, String nodeId,
boolean initialLoadEnabled, boolean syncChange) {
try {
if (!syncChange) {
symmetricDialect.disableSyncTriggers(transaction, nodeId);
}

NodeSecurity nodeSecurity = findNodeSecurity(nodeId, true);
if (nodeSecurity != null) {
nodeSecurity.setRevInitialLoadEnabled(initialLoadEnabled);
if (initialLoadEnabled) {
nodeSecurity.setRevInitialLoadTime(null);
} else {
nodeSecurity.setRevInitialLoadTime(new Date());
}
return updateNodeSecurity(transaction, nodeSecurity);
}
return false;
} finally {
if (!syncChange) {
symmetricDialect.enableSyncTriggers(transaction);
}
return updateNodeSecurity(transaction, nodeSecurity);
}
return false;
}
}

public boolean setReverseInitialLoadEnabled(String nodeId, boolean initialLoadEnabled) {
public boolean setReverseInitialLoadEnabled(String nodeId, boolean initialLoadEnabled, boolean syncChange) {
ISqlTransaction transaction = null;
try {
transaction = sqlTemplate.startSqlTransaction();
boolean updated = setReverseInitialLoadEnabled(transaction, nodeId, initialLoadEnabled);
boolean updated = setReverseInitialLoadEnabled(transaction, nodeId, initialLoadEnabled, syncChange);
transaction.commit();
return updated;
} finally {
} finally {
close(transaction);
}
}
Expand Down
Expand Up @@ -193,38 +193,11 @@ public boolean registerNode(Node nodePriorToRegistration, String remoteHost, Str
if ((security != null && security.getInitialLoadTime() == null)
|| isRequestedRegistration) {
if (parameterService.is(ParameterConstants.AUTO_RELOAD_ENABLED)) {
ISqlTransaction transaction = null;
try {
transaction = sqlTemplate.startSqlTransaction();
symmetricDialect.disableSyncTriggers(transaction,
nodeId);

nodeService.setInitialLoadEnabled(transaction, nodeId,
true);
transaction.commit();
} finally {
symmetricDialect.enableSyncTriggers(transaction);
close(transaction);
}

nodeService.setInitialLoadEnabled(nodeId, true, false);
}

if (parameterService
.is(ParameterConstants.AUTO_RELOAD_REVERSE_ENABLED)) {
ISqlTransaction transaction = null;
try {
transaction = sqlTemplate.startSqlTransaction();
symmetricDialect.disableSyncTriggers(transaction,
nodeId);

nodeService.setReverseInitialLoadEnabled(transaction,
nodeId, true);
transaction.commit();
} finally {
symmetricDialect.enableSyncTriggers(transaction);
close(transaction);
}

if (parameterService.is(ParameterConstants.AUTO_RELOAD_REVERSE_ENABLED)) {
nodeService.setReverseInitialLoadEnabled(nodeId, true, false);
}
}

Expand Down
Expand Up @@ -163,12 +163,12 @@ public boolean isRegistrationEnabled(String nodeId) {
return false;
}

public boolean setInitialLoadEnabled(String nodeId, boolean initialLoadEnabled) {
public boolean setInitialLoadEnabled(String nodeId, boolean initialLoadEnabled, boolean syncChange) {
return false;
}

public boolean setInitialLoadEnabled(ISqlTransaction transaction, String nodeId,
boolean initialLoadEnabled) {
boolean initialLoadEnabled, boolean syncChange) {
return false;
}

Expand Down Expand Up @@ -247,11 +247,11 @@ public boolean removeOfflineServerListener(IOfflineServerListener listener) {
}

public boolean setReverseInitialLoadEnabled(ISqlTransaction transaction, String nodeId,
boolean initialLoadEnabled) {
boolean initialLoadEnabled, boolean syncChange) {
return true;
}

public boolean setReverseInitialLoadEnabled(String nodeId, boolean initialLoadEnabled) {
public boolean setReverseInitialLoadEnabled(String nodeId, boolean initialLoadEnabled, boolean syncChange) {
return true;
}

Expand Down

0 comments on commit 34fe0bc

Please sign in to comment.