Notre système crée des bases de données OrientDB par programme et utilise une base de données pour chaque client (avant que quelqu'un ne rejette cette conception, les raisons sont la sécurité, la possibilité de déplacer certains clients/données entre centres de données et la possibilité de déménager sur place).Création d'une base de données en Orientdb
Cela fonctionne très bien dans OrientDB en mode simple. Cependant, lorsque la base de données est configurée en mode distribué (3 serveurs, sur Amazon). Le comportement est, pour le moins, bizarre. Je sais que les docs ne disent rien à ce sujet, mais je ne trouve rien qui dise que non.
Parfois, la base de données est créée correctement, mais le client se verrouille indéfiniment (dans OAdaptiveLock.lock()
). Parfois, le cluster entier doit être redémarré pour pouvoir utiliser la base de données et parfois, comme c'est le moment de l'écriture, un nœud OrientDB s'arrête tout seul après qu'il semble synchronisé avec les autres (Address[1.2.3.4]:2434 is SHUTTING_DOWN [LifecycleService]
->Terminating forcefully... [Node]
). Le message d'erreur est suivi d'une pile (voir ci-dessous).
Donc, à mes questions:
- Do créations OrientDB la base de données de support en ligne en mode distribué?
- Si oui, que puis-je faire de mal?
- Si ce n'est pas le cas, y a-t-il des plans pour soutenir cela à l'avenir?
Merci d'avance!
./Anders
Stacktrace:
2016-01-28 14:00:01:395 SEVER [infogile02] error on creating cluster 'superclassesedge_infogile02' in class 'superClassesEdge': [OHazelcastPlugin][infogile02] Error on starting distributed plugin
com.orientechnologies.orient.server.distributed.ODistributedException: com.orientechnologies.orient.server.distributed.ODistributedException: Error on creating cluster 'superclassesedge_infogile02' in class 'superClassesEdge'
at com.orientechnologies.orient.server.hazelcast.OHazelcastDistributedDatabase.configureDatabase(OHazelcastDistributedDatabase.java:241)
at com.orientechnologies.orient.server.hazelcast.OHazelcastPlugin.installDatabaseFromNetwork(OHazelcastPlugin.java:1131)
at com.orientechnologies.orient.server.hazelcast.OHazelcastPlugin.requestDatabase(OHazelcastPlugin.java:971)
at com.orientechnologies.orient.server.hazelcast.OHazelcastPlugin.installDatabase(OHazelcastPlugin.java:908)
at com.orientechnologies.orient.server.hazelcast.OHazelcastPlugin.installNewDatabases(OHazelcastPlugin.java:1468)
at com.orientechnologies.orient.server.hazelcast.OHazelcastPlugin.startup(OHazelcastPlugin.java:185)
at com.orientechnologies.orient.server.OServer.registerPlugins(OServer.java:979)
at com.orientechnologies.orient.server.OServer.activate(OServer.java:346)
at com.orientechnologies.orient.server.OServerMain.main(OServerMain.java:41)
Caused by: com.orientechnologies.orient.server.distributed.ODistributedException: Error on creating cluster 'superclassesedge_infogile02' in class 'superClassesEdge'
at com.orientechnologies.orient.server.hazelcast.OHazelcastPlugin.installLocalClusterPerClass(OHazelcastPlugin.java:1631)
at com.orientechnologies.orient.server.hazelcast.OHazelcastPlugin.installDbClustersForLocalNode(OHazelcastPlugin.java:1300)
at com.orientechnologies.orient.server.hazelcast.OHazelcastPlugin$2.call(OHazelcastPlugin.java:1134)
at com.orientechnologies.orient.server.hazelcast.OHazelcastPlugin$2.call(OHazelcastPlugin.java:1131)
at com.orientechnologies.orient.server.hazelcast.OHazelcastDistributedDatabase.configureDatabase(OHazelcastDistributedDatabase.java:239)
... 8 more
Caused by: com.orientechnologies.orient.core.exception.ODatabaseException: Error on saving record #0:1
at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.executeSaveRecord(ODatabaseDocumentTx.java:2044)
at com.orientechnologies.orient.core.tx.OTransactionNoTx.saveRecord(OTransactionNoTx.java:159)
at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.save(ODatabaseDocumentTx.java:2568)
at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.save(ODatabaseDocumentTx.java:121)
at com.orientechnologies.orient.core.record.impl.ODocument.save(ODocument.java:1768)
at com.orientechnologies.orient.core.record.impl.ODocument.save(ODocument.java:1764)
at com.orientechnologies.orient.core.metadata.schema.OSchemaShared$1.call(OSchemaShared.java:1213)
at com.orientechnologies.orient.core.db.OScenarioThreadLocal.executeAsDistributed(OScenarioThreadLocal.java:71)
at com.orientechnologies.orient.core.metadata.schema.OSchemaShared.saveInternal(OSchemaShared.java:1208)
at com.orientechnologies.orient.core.metadata.schema.OSchemaShared.releaseSchemaWriteLock(OSchemaShared.java:642)
at com.orientechnologies.orient.core.metadata.schema.OClassImpl.releaseSchemaWriteLock(OClassImpl.java:1824)
at com.orientechnologies.orient.core.metadata.schema.OClassImpl.releaseSchemaWriteLock(OClassImpl.java:1819)
at com.orientechnologies.orient.core.metadata.schema.OClassImpl.addCluster(OClassImpl.java:1088)
at com.orientechnologies.orient.server.hazelcast.OHazelcastPlugin.installLocalClusterPerClass(OHazelcastPlugin.java:1624)
... 12 more
Caused by: java.lang.NullPointerException
at com.orientechnologies.orient.core.storage.impl.local.paginated.atomicoperations.OAtomicOperationsManager.endAtomicOperation(OAtomicOperationsManager.java:148)
at com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.doUpdateRecord(OAbstractPaginatedStorage.java:2046)
at com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.updateRecord(OAbstractPaginatedStorage.java:971)
at com.orientechnologies.orient.server.distributed.ODistributedStorage.updateRecord(ODistributedStorage.java:708)
at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.executeSaveRecord(ODatabaseDocumentTx.java:2005)
... 25 more
2016-01-28 14:00:01:398 INFO [10.0.9.105]:2434 [orientdb] [3.5.3] Address[10.0.9.105]:2434 is SHUTTING_DOWN [LifecycleService]
2016-01-28 14:00:01:398 WARNI [10.0.9.105]:2434 [orientdb] [3.5.3] Terminating forcefully... [Node]
2016-01-28 14:00:01:399 INFO [10.0.9.105]:2434 [orientdb] [3.5.3] Shutting down connection manager... [Node]
Je pense que j'ai eu les mêmes problèmes. Je ne peux toujours pas comprendre. –
En mon nom je pense que c'était un cas grave de tl; dr, le doc d'architecture distribuée (http://orientdb.com/docs/2.0/orientdb.wiki/Distributed-Architecture.html) déclare que "la création d'une base de données sur plusieurs nœuds peut provoquer des problèmes de synchronisation lorsque les clusters sont créés automatiquement. Veuillez créer les bases de données avant de les exécuter en mode distribué ". – Heintz
J'ai compris le problème, mais je ne sais pas quelle est la cause. fondamentalement j'essaye d'exécuter orientdb dans le docker avec distribuer mais cela n'a pas semblé fonctionner. donc après que j'aie essayé par fraisd orientdb dans ubuntu et cela a fonctionné (en copiant le dossier d'un autre serveur) –