Error: `Failed to authenticate`, when connection pool size is >1 for GremlinServer with ArcadeDB
Hi Friends,
I am exploring and evaluating ArcadeDB.
The DB is setup with GremlinServerPlugin to expose GremlinServer at port 8182.
Using SpringBoot to create client app.
The GraphTraversalSource object is created once and used across the application.
When tried to load test(using default gremlin driver Cluster settings for connection pool (min 2 , max 8)) starting with 500req/sec, getting below error and around 80% requests failed.
Error: org.apache.tinkerpop.gremlin.driver.exception.ResponseException: Failed to authenticate
The only credentials configured is at the ArcadeDB first start up and with these credentials am able to initialize Cluster.
The simple logic : g.V().hasLabel("Category").count() is been run in the request
The only way I could solve this was by increasing the connection pool closer to concurrent requests, but may not be the ideal approach for a throughput for 1 million req/sec(optimistic)
If the connection pool is set to (min 1 , max 1) all requests succeeds with each request latency has the effect of the load but no authentication issue, connection pool > 1 failed to authenticate.
Requesting your insights.
I am exploring and evaluating ArcadeDB.
The DB is setup with GremlinServerPlugin to expose GremlinServer at port 8182.
Using SpringBoot to create client app.
@Bean
Cluster cluster() {
cluster = Cluster.build().port(arcadedbServerPort).addContactPoint(arcadedbServerHost)
.credentials(arcadedbServerUserName, arcadedbServerPassword).create();
return cluster;
}
@Bean
GraphTraversalSource g(Cluster cluster) {
GraphTraversalSource g = traversal().withRemote(DriverRemoteConnection.using(cluster));
logger.debug("Graph Features=>: {}", g.getGraph());
// Using this line to create the conenction pool during server start up and to avoid creation during the first actual request.
logger.debug("Graph Total Vertex=>: {}", g.V().count().toList());
return g;
}
@PreDestroy
public void cleanArcadedbGraphCluster() {
if (cluster != null) {
cluster.close();
}The GraphTraversalSource object is created once and used across the application.
When tried to load test(using default gremlin driver Cluster settings for connection pool (min 2 , max 8)) starting with 500req/sec, getting below error and around 80% requests failed.
Error: org.apache.tinkerpop.gremlin.driver.exception.ResponseException: Failed to authenticate
The only credentials configured is at the ArcadeDB first start up and with these credentials am able to initialize Cluster.
The simple logic : g.V().hasLabel("Category").count() is been run in the request
The only way I could solve this was by increasing the connection pool closer to concurrent requests, but may not be the ideal approach for a throughput for 1 million req/sec(optimistic)
If the connection pool is set to (min 1 , max 1) all requests succeeds with each request latency has the effect of the load but no authentication issue, connection pool > 1 failed to authenticate.
Requesting your insights.