Skip to content

Commit 98c4737

Browse files
committed
Distributed: fixed problem on overwriting a old configuration
1 parent 11958d7 commit 98c4737

File tree

1 file changed

+16
-15
lines changed

1 file changed

+16
-15
lines changed

server/src/main/java/com/orientechnologies/orient/server/distributed/ODistributedAbstractPlugin.java

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,13 @@
1515
*/
1616
package com.orientechnologies.orient.server.distributed;
1717

18+
import java.io.File;
19+
import java.io.FileInputStream;
20+
import java.io.FileOutputStream;
21+
import java.io.IOException;
22+
import java.util.HashMap;
23+
import java.util.Map;
24+
1825
import com.orientechnologies.common.log.OLogManager;
1926
import com.orientechnologies.common.parser.OSystemVariableResolver;
2027
import com.orientechnologies.orient.core.Orient;
@@ -30,13 +37,6 @@
3037
import com.orientechnologies.orient.server.distributed.conflict.OReplicationConflictResolver;
3138
import com.orientechnologies.orient.server.plugin.OServerPluginAbstract;
3239

33-
import java.io.File;
34-
import java.io.FileInputStream;
35-
import java.io.FileOutputStream;
36-
import java.io.IOException;
37-
import java.util.HashMap;
38-
import java.util.Map;
39-
4040
/**
4141
* Abstract plugin to manage the distributed environment.
4242
*
@@ -196,6 +196,7 @@ protected ODocument loadDatabaseConfiguration(final String iDatabaseName, final
196196
f.read(buffer);
197197

198198
final ODocument doc = (ODocument) new ODocument().fromJSON(new String(buffer), "noMap");
199+
doc.field("version", 0);
199200
updateCachedDatabaseConfiguration(iDatabaseName, doc, false);
200201
return doc;
201202

@@ -212,13 +213,14 @@ protected ODocument loadDatabaseConfiguration(final String iDatabaseName, final
212213

213214
public boolean updateCachedDatabaseConfiguration(final String iDatabaseName, final ODocument cfg, final boolean iSaveToDisk) {
214215
synchronized (cachedDatabaseConfiguration) {
215-
// final ODocument oldCfg = cachedDatabaseConfiguration.get(iDatabaseName);
216-
// if (oldCfg != null && oldCfg.field("version").equals(cfg.field("version"))) {
217-
// // NO CHANGE, SKIP IT
218-
// OLogManager.instance().debug(this, "Skip saving of distributed configuration file for database '%s' because is unchanged",
219-
// iDatabaseName);
220-
// return false;
221-
// }
216+
final ODocument oldCfg = cachedDatabaseConfiguration.get(iDatabaseName);
217+
if (oldCfg != null && (Integer) oldCfg.field("version") > (Integer) cfg.field("version")) {
218+
// NO CHANGE, SKIP IT
219+
OLogManager.instance().debug(this,
220+
"Skip saving of distributed configuration file for database '%s' because is unchanged (version %d)", iDatabaseName,
221+
(Integer) cfg.field("version"));
222+
return false;
223+
}
222224

223225
// SAVE IN NODE'S LOCAL RAM
224226
cachedDatabaseConfiguration.put(iDatabaseName, cfg);
@@ -268,7 +270,6 @@ public ODistributedConfiguration getDatabaseConfiguration(final String iDatabase
268270
cfg = loadDatabaseConfiguration(iDatabaseName, defaultDatabaseConfigFile);
269271
if (cfg == null)
270272
throw new OConfigurationException("Cannot load default distributed database config file: " + defaultDatabaseConfigFile);
271-
cfg.field("version", 0);
272273
}
273274
}
274275
return new ODistributedConfiguration(cfg);

0 commit comments

Comments
 (0)