Hi,
I am trying to use replication for this first time - so most likely I am doing something wrong.
I have a server on which I run my master DB server
java -cp objectdb.jar com.objectdb.Server start -conf objectdbMASTER.conf
on the same server I run a java program - which is writing objects every second a database KAKI.odb - here is the code:
EntityManagerFactory EMF = Persistence.createEntityManagerFactory("objectdb://localhost:6001/KAKI.odb;user=admin;password=admin"); EntityManager em = EMF.createEntityManager(); int count = 0; while( true ) { DummyEntity x = new DummyEntity(String.valueOf(count)); em.getTransaction().begin(); em.persist(x); em.getTransaction().commit(); System.out.println(count +":" +x.toString()); Thread.sleep(1000); count++; }
Then locally on my machine I run a slave DB server with the following command
java -cp objectdb.jar com.objectdb.Server start -conf objectdb.conf
Here is the config for the slave DB
<!-- ObjectDB Configuration --> <objectdb> <general> <temp path="$temp" threshold="64mb" /> <network inactivity-timeout="0" /> <url-history size="50" user="true" password="true" /> <log path="$objectdb/log/" max="8mb" stdout="false" stderr="false" /> <log-archive path="$objectdb/log/archive/" retain="90" /> <logger name="*" level="info" /> </general> <database> <size initial="256kb" resize="256kb" page="2kb" /> <recovery enabled="false" sync="false" path="." max="128mb" /> <recording enabled="false" sync="false" path="." mode="write" /> <locking version-check="true" /> <processing cache="64mb" max-threads="10" /> <query-cache results="32mb" programs="500" /> <extensions drop="temp,tmp" /> </database> <entities> <enhancement agent="false" reflection="warning" /> <cache ref="weak" level2="0" /> <persist serialization="false" /> <cascade-persist always="auto" on-persist="false" on-commit="true" /> <dirty-tracking arrays="false" /> </entities> <schema> </schema> <server> <connection port="6000" max="100" /> <data path="$objectdb/db" /> <replication url="objectdb://12.345.678.910:6001/KAKI.odb;user=admin;password=admin" /> </server> <users> <user username="admin" password="admin"> <dir path="/" permissions="access,modify,create,delete" /> </user> <user username="$default" password="$$$###"> <dir path="/$user/" permissions="access,modify,create,delete"> <quota directories="5" files="20" disk-space="5mb" /> </dir> </user> <user username="user1" password="user1" /> </users> <ssl enabled="false"> <server-keystore path="$objectdb/ssl/server-kstore" password="pwd" /> <client-truststore path="$objectdb/ssl/client-tstore" password="pwd" /> </ssl> </objectdb>
The slave DB server complains with the following error every second (every time an object is added on the master DB)
com.objectdb.o.UserException: Failed to synchronize replicated database at com.objectdb.o.MSG.d(MSG.java:61) at com.objectdb.o.RPT.d(RPT.java:99) at com.objectdb.o.RPT.<init>(RPT.java:66) at com.objectdb.o.SHN.aw(SHN.java:703) at com.objectdb.o.SHN.K(SHN.java:202) at com.objectdb.o.HND.run(HND.java:133) at java.lang.Thread.run(Thread.java:722)
Thanks for your help
EKK