Skip to content

Commit a4fba3b

Browse files
committed
refactor: centralized the logic to keep track of active nodes in the HZ map
1 parent 6563c53 commit a4fba3b

4 files changed

Lines changed: 30 additions & 20 deletions

File tree

distributed/src/main/java/com/orientechnologies/orient/server/distributed/impl/OClusterHealthChecker.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@ private void checkServerList() {
170170
"Server '%s' was not found in the list of registered servers. Reloading configuration from cluster...",
171171
server);
172172

173-
((ODistributedPlugin) manager).reloadRegisteredNodes(null);
173+
((ODistributedPlugin) manager).reloadRegisteredNodes();
174174
id = manager.getNodeIdByName(server);
175175
if (id == -1) {
176176
if (server.equals(manager.getLocalNodeName())) {

distributed/src/main/java/com/orientechnologies/orient/server/distributed/impl/ODistributedPlugin.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3172,8 +3172,8 @@ public ODocument getNodeConfigurationByUuid(String iNode, boolean useCache) {
31723172
return clusterManager.getNodeConfigurationByUuid(iNode, useCache);
31733173
}
31743174

3175-
public void reloadRegisteredNodes(String registeredNodesFromClusterAsJson) {
3176-
clusterManager.reloadRegisteredNodes(registeredNodesFromClusterAsJson);
3175+
public void reloadRegisteredNodes() {
3176+
clusterManager.reloadRegisteredNodes();
31773177
}
31783178

31793179
public boolean removeNodeFromConfiguration(

distributed/src/main/java/com/orientechnologies/orient/server/hazelcast/OHazelcastClusterMetadataManager.java

Lines changed: 10 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -245,12 +245,10 @@ private void initRegisteredNodeIds() {
245245
registeredNodeById.clear();
246246
registeredNodeByName.clear();
247247

248-
final ODocument registeredNodesFromCluster = new ODocument();
248+
final ODocument registeredNodesFromCluster = configurationMap.getRegisteredNodes();
249249

250-
final String registeredNodesFromClusterAsJson =
251-
(String) configurationMap.get(CONFIG_REGISTEREDNODES);
252-
if (registeredNodesFromClusterAsJson != null) {
253-
registeredNodesFromCluster.fromJSON(registeredNodesFromClusterAsJson);
250+
if (registeredNodesFromCluster.hasProperty("ids")
251+
&& registeredNodesFromCluster.hasProperty("names")) {
254252
registeredNodeById.addAll(registeredNodesFromCluster.field("ids", OType.EMBEDDEDLIST));
255253
registeredNodeByName.putAll(registeredNodesFromCluster.field("names", OType.EMBEDDEDMAP));
256254

@@ -285,7 +283,7 @@ private void initRegisteredNodeIds() {
285283
registeredNodesFromCluster.field("ids", registeredNodeById, OType.EMBEDDEDLIST);
286284
registeredNodesFromCluster.field("names", registeredNodeByName, OType.EMBEDDEDMAP);
287285

288-
configurationMap.put(CONFIG_REGISTEREDNODES, registeredNodesFromCluster.toJSON());
286+
configurationMap.putRegisteredNodes(registeredNodesFromCluster);
289287

290288
} finally {
291289
distributedLockManager.releaseExclusiveLock(
@@ -776,14 +774,14 @@ public void entryUpdated(final EntryEvent<String, Object> iEvent) {
776774
distributedPlugin.onDbStatusOnline(databaseName);
777775
}
778776

779-
} else if (key.startsWith(CONFIG_REGISTEREDNODES)) {
777+
} else if (OHazelcastDistributedMap.isRegisteredNodes(key)) {
780778
ODistributedServerLog.info(
781779
this,
782780
nodeName,
783781
eventNodeName,
784782
ODistributedServerLog.DIRECTION.IN,
785783
"Received updated about registered nodes");
786-
reloadRegisteredNodes((String) iEvent.getValue());
784+
reloadRegisteredNodes();
787785
}
788786

789787
} catch (HazelcastInstanceNotActiveException | RetryableHazelcastException e) {
@@ -1150,18 +1148,13 @@ public Set<String> getDatabases() {
11501148
return dbs;
11511149
}
11521150

1153-
public void reloadRegisteredNodes(String registeredNodesFromClusterAsJson) {
1154-
final ODocument registeredNodesFromCluster = new ODocument();
1151+
public void reloadRegisteredNodes() {
1152+
final ODocument registeredNodesFromCluster = configurationMap.getRegisteredNodes();
11551153

1156-
if (registeredNodesFromClusterAsJson == null)
1157-
// LOAD FROM THE CLUSTER CFG
1158-
registeredNodesFromClusterAsJson = (String) configurationMap.get(CONFIG_REGISTEREDNODES);
1159-
1160-
if (registeredNodesFromClusterAsJson != null) {
1161-
registeredNodesFromCluster.fromJSON(registeredNodesFromClusterAsJson);
1154+
if (registeredNodesFromCluster.hasProperty("ids")
1155+
&& registeredNodesFromCluster.hasProperty("names")) {
11621156
registeredNodeById.clear();
11631157
registeredNodeById.addAll(registeredNodesFromCluster.field("ids", OType.EMBEDDEDLIST));
1164-
11651158
registeredNodeByName.clear();
11661159
registeredNodeByName.putAll(registeredNodesFromCluster.field("names", OType.EMBEDDEDMAP));
11671160
} else

distributed/src/main/java/com/orientechnologies/orient/server/hazelcast/OHazelcastDistributedMap.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -272,4 +272,21 @@ public Set<String> getNodeUuidByName(String name) {
272272
public static boolean isNodeConfigKey(String key) {
273273
return key.startsWith(OHazelcastClusterMetadataManager.CONFIG_NODE_PREFIX);
274274
}
275+
276+
public ODocument getRegisteredNodes() {
277+
final ODocument registeredNodes = new ODocument();
278+
String jsonData = (String) this.get(OHazelcastClusterMetadataManager.CONFIG_REGISTEREDNODES);
279+
if (jsonData != null) {
280+
registeredNodes.fromJSON(jsonData);
281+
}
282+
return registeredNodes;
283+
}
284+
285+
public void putRegisteredNodes(ODocument registeredNodes) {
286+
this.put(OHazelcastClusterMetadataManager.CONFIG_REGISTEREDNODES, registeredNodes.toJSON());
287+
}
288+
289+
public static boolean isRegisteredNodes(String key) {
290+
return key.startsWith(OHazelcastClusterMetadataManager.CONFIG_REGISTEREDNODES);
291+
}
275292
}

0 commit comments

Comments
 (0)