[英]Setting connection retry limit of orientdb
您好,我在分布式环境中使用orientdb,该环境中有两个说dbSrv-1和dbSrv-2的orientdb服务器实例。 我已经按照以下教程设置了分布式数据库,并且工作正常。
但是我面临的问题是当节点关闭并且Java客户端尝试连接到该特定节点时,在这种情况下,客户端似乎陷入了连接重试的无限循环中。 我已经尝试通过命令行设置orientdb全局设置,如下所示:
java -Dnetwork.retry=1
也尝试像这样在运行时设置它
OGlobalConfiguration.NETWORK_SOCKET_RETRY.setValue(1);
但似乎没有任何效果。 以下是打开数据库连接的代码:
db = new ODatabaseDocumentTx("remote:localhost/mydb").open("admin", "admin");
Java异常跟踪如下:
Oct 15, 2015 8:03:48 PM com.orientechnologies.common.log.OLogManager log
SEVERE: Can not open database with url localhost:2424/mydb
com.orientechnologies.common.io.OIOException: Cannot open a connection to remote server: localhost:2424/mydb
at com.orientechnologies.orient.client.remote.OStorageRemote.getAvailableNetwork(OStorageRemote.java:2114)
at com.orientechnologies.orient.client.remote.OStorageRemote.openRemoteDatabase(OStorageRemote.java:1841)
at com.orientechnologies.orient.client.remote.OStorageRemote.open(OStorageRemote.java:222)
at com.orientechnologies.orient.client.remote.OStorageRemoteThread.open(OStorageRemoteThread.java:89)
at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.open(ODatabaseDocumentTx.java:249)
at com.orientechnologies.orient.core.db.OPartitionedDatabasePool$DatabaseDocumentTxPolled.internalOpen(OPartitionedDatabasePool.java:140)
at com.orientechnologies.orient.core.db.OPartitionedDatabasePool.openDatabase(OPartitionedDatabasePool.java:343)
at com.orientechnologies.orient.core.db.OPartitionedDatabasePool.acquire(OPartitionedDatabasePool.java:313)
at com.worldhubcom.cc.mydb.db.DatabaseHelper.getDatabase(DatabaseHelper.java:45)
at com.worldhubcom.cc.mydb.db.SubscriberDao.save(SubscriberDao.java:35)
at com.worldhubcom.cc.mydb.authen.ServiceAuthenticate.main(ServiceAuthenticate.java:24)
Caused by: com.orientechnologies.common.io.OIOException: Error on connecting to localhost:2424/mydb
at com.orientechnologies.orient.client.remote.ORemoteConnectionManager.createNetworkConnection(ORemoteConnectionManager.java:246)
at com.orientechnologies.orient.client.remote.ORemoteConnectionManager$1.createNewResource(ORemoteConnectionManager.java:80)
at com.orientechnologies.orient.client.remote.ORemoteConnectionManager$1.createNewResource(ORemoteConnectionManager.java:77)
at com.orientechnologies.common.concur.resource.OResourcePool.getResource(OResourcePool.java:94)
at com.orientechnologies.orient.client.remote.ORemoteConnectionManager.acquire(ORemoteConnectionManager.java:101)
at com.orientechnologies.orient.client.remote.OStorageRemote.getAvailableNetwork(OStorageRemote.java:2103)
... 10 more
Caused by: java.net.ConnectException: Connection refused
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:579)
at com.orientechnologies.orient.enterprise.channel.binary.OChannelBinaryAsynchClient.<init>(OChannelBinaryAsynchClient.java:83)
at com.orientechnologies.orient.client.remote.ORemoteConnectionManager.createNetworkConnection(ORemoteConnectionManager.java:233)
... 15 more
试试这个代码:
public static void main(String[] args) {
OrientGraphFactory factory = new OrientGraphFactory("remote:localhost/test", "admin", "admin");
OrientGraphNoTx graph = factory.getNoTx();
OrientInsert.testInsertion(graph);
graph.shutdown();
System.out.println("");
System.out.println("End main");
}
public static class OrientInsert {
public static void testInsertion(OrientGraphNoTx graph) {
System.out.println(new Date());
int count = 1000;
//create class 1
OClass clVertice1;
OrientVertex vVertice1;
clVertice1 = graph.createVertexType("CLASS1", "V");
clVertice1.createProperty("prop1", OType.STRING);
clVertice1.createProperty("prop2", OType.STRING);
clVertice1.createProperty("prop3", OType.STRING);
//create class 2
OClass clVertice2;
OrientVertex vVertice2;
clVertice2 = graph.createVertexType("CLASS2", "V");
clVertice2.createProperty("prop1", OType.STRING);
clVertice2.createProperty("prop2", OType.STRING);
clVertice2.createProperty("prop3", OType.STRING);
for (int i = 0; i < count; ++i) {
System.out.println("");
System.out.println("i :"+i+" -------------------" );
//....class 1
vVertice1 = graph.addVertex("class:CLASS1");
vVertice1.setProperties("prop1", Integer.toString(i));
vVertice1.setProperties("prop2", "22");
vVertice1.setProperties("prop3", "3333");
for (int j = 0; j < count; ++j) {
System.out.print("");
System.out.print(j+" ");
//...class 2
vVertice2 = graph.addVertex("class:CLASS2");
vVertice2.setProperties("prop1", Integer.toString(i + j / 1000));
vVertice2.setProperties("prop2", "22");
vVertice2.setProperties("prop3", "3333");
//edge
graph.addEdge(null, vVertice1, vVertice2, "v1v2");
}
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.