Creating a database in Orientdb in distributed mode -


our system creates orientdb databases programmatically , uses 1 database each customer (before jump on dismissing design, reasons security, possibility move customer/data between datacenters/regions , possibility relocation on-premise).

this works great in orientdb in single mode. however, when database setup in distributed mode (3 servers, on amazon). behaviour is, put mildly, weird. know docs doesn't being supported, couldn't find says doesn't either.

sometimes database created fine, client locks indefinitely (in oadaptivelock.lock()). whole cluster needs restarted able use database , sometimes, as time of writing, 1 orientdb node shuts down after seems synching others (address[1.2.3.4]:2434 shutting_down [lifecycleservice] -> terminating forcefully... [node]). error message proceeded stacktrace (see below).

so, questions:

  1. do orientdb support database creations online in distributed mode?
  2. if so, can doing wrong?
  3. if not, there plans on supporting in future?

thanks in advance!

./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'     @ com.orientechnologies.orient.server.hazelcast.ohazelcastdistributeddatabase.configuredatabase(ohazelcastdistributeddatabase.java:241)     @ com.orientechnologies.orient.server.hazelcast.ohazelcastplugin.installdatabasefromnetwork(ohazelcastplugin.java:1131)     @ com.orientechnologies.orient.server.hazelcast.ohazelcastplugin.requestdatabase(ohazelcastplugin.java:971)     @ com.orientechnologies.orient.server.hazelcast.ohazelcastplugin.installdatabase(ohazelcastplugin.java:908)     @ com.orientechnologies.orient.server.hazelcast.ohazelcastplugin.installnewdatabases(ohazelcastplugin.java:1468)     @ com.orientechnologies.orient.server.hazelcast.ohazelcastplugin.startup(ohazelcastplugin.java:185)     @ com.orientechnologies.orient.server.oserver.registerplugins(oserver.java:979)     @ com.orientechnologies.orient.server.oserver.activate(oserver.java:346)     @ 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'     @ com.orientechnologies.orient.server.hazelcast.ohazelcastplugin.installlocalclusterperclass(ohazelcastplugin.java:1631)     @ com.orientechnologies.orient.server.hazelcast.ohazelcastplugin.installdbclustersforlocalnode(ohazelcastplugin.java:1300)     @ com.orientechnologies.orient.server.hazelcast.ohazelcastplugin$2.call(ohazelcastplugin.java:1134)     @ com.orientechnologies.orient.server.hazelcast.ohazelcastplugin$2.call(ohazelcastplugin.java:1131)     @ 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     @ com.orientechnologies.orient.core.db.document.odatabasedocumenttx.executesaverecord(odatabasedocumenttx.java:2044)     @ com.orientechnologies.orient.core.tx.otransactionnotx.saverecord(otransactionnotx.java:159)     @ com.orientechnologies.orient.core.db.document.odatabasedocumenttx.save(odatabasedocumenttx.java:2568)     @ com.orientechnologies.orient.core.db.document.odatabasedocumenttx.save(odatabasedocumenttx.java:121)     @ com.orientechnologies.orient.core.record.impl.odocument.save(odocument.java:1768)     @ com.orientechnologies.orient.core.record.impl.odocument.save(odocument.java:1764)     @ com.orientechnologies.orient.core.metadata.schema.oschemashared$1.call(oschemashared.java:1213)     @ com.orientechnologies.orient.core.db.oscenariothreadlocal.executeasdistributed(oscenariothreadlocal.java:71)     @ com.orientechnologies.orient.core.metadata.schema.oschemashared.saveinternal(oschemashared.java:1208)     @ com.orientechnologies.orient.core.metadata.schema.oschemashared.releaseschemawritelock(oschemashared.java:642)     @ com.orientechnologies.orient.core.metadata.schema.oclassimpl.releaseschemawritelock(oclassimpl.java:1824)     @ com.orientechnologies.orient.core.metadata.schema.oclassimpl.releaseschemawritelock(oclassimpl.java:1819)     @ com.orientechnologies.orient.core.metadata.schema.oclassimpl.addcluster(oclassimpl.java:1088)     @ com.orientechnologies.orient.server.hazelcast.ohazelcastplugin.installlocalclusterperclass(ohazelcastplugin.java:1624)     ... 12 more caused by: java.lang.nullpointerexception     @ com.orientechnologies.orient.core.storage.impl.local.paginated.atomicoperations.oatomicoperationsmanager.endatomicoperation(oatomicoperationsmanager.java:148)     @ com.orientechnologies.orient.core.storage.impl.local.oabstractpaginatedstorage.doupdaterecord(oabstractpaginatedstorage.java:2046)     @ com.orientechnologies.orient.core.storage.impl.local.oabstractpaginatedstorage.updaterecord(oabstractpaginatedstorage.java:971)     @ com.orientechnologies.orient.server.distributed.odistributedstorage.updaterecord(odistributedstorage.java:708)     @ 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 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] 

severe case of tl;dr on behalf. docs on distributed architecture in orientdb states "creation of database on multiple nodes cause synchronization problems when clusters automatically created. please create databases before run in distributed mode" didn't read far.

by docs, suggested solution seems "partitioned graphs" (described here http://orientdb.com/docs/2.0/orientdb.wiki/partitioned-graphs.html). solution doesn't address our concerns, in theory enough.

however, practically doesn't work, requires significant rewrite since transactions needs managed differently. more on in topic....


Comments

Popular posts from this blog

Hatching array of circles in AutoCAD using c# -

ios - UITEXTFIELD InputView Uipicker not working in swift -

Python Pig Latin Translator -