diff --git a/ChangeLog.md b/ChangeLog.md index ac7ee208f..2c81c6d0b 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -6,6 +6,13 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) a ## [Unreleased] +## [5.0.1] - 2018-09-25 + +### Fixed + +- fixed `ArangoCursor#next` when performing a dirty read +- fixed connection stickiness + ## [5.0.0] - 2018-09-18 ### Added @@ -898,7 +905,8 @@ Added support for sparse indexes - Initial Release -[unreleased]: https://github.com/arangodb/arangodb-java-driver/compare/5.0.0...HEAD +[unreleased]: https://github.com/arangodb/arangodb-java-driver/compare/5.0.1...HEAD +[5.0.1]: https://github.com/arangodb/arangodb-java-driver/compare/5.0.0...5.0.1 [5.0.0]: https://github.com/arangodb/arangodb-java-driver/compare/4.7.3...5.0.0 [4.7.3]: https://github.com/arangodb/arangodb-java-driver/compare/4.7.2...4.7.3 [4.7.2]: https://github.com/arangodb/arangodb-java-driver/compare/4.7.1...4.7.2 diff --git a/README.md b/README.md index 6080ae5ec..e8dc2529d 100644 --- a/README.md +++ b/README.md @@ -15,5 +15,4 @@ The official ArangoDB Java Driver. - [ChangeLog](ChangeLog.md) - [Examples](src/test/java/com/arangodb/example) - [Tutorial](https://www.arangodb.com/tutorials/tutorial-sync-java-driver/) -- [JavaDoc](http://arangodb.github.io/arangodb-java-driver/javadoc-4_5/index.html) -- [JavaDoc VelocyPack](http://arangodb.github.io/java-velocypack/javadoc-1_0/index.html) +- [JavaDoc](http://arangodb.github.io/arangodb-java-driver/javadoc-5_0) diff --git a/docs/Drivers/Java/GettingStarted/README.md b/docs/Drivers/Java/GettingStarted/README.md index 5b77da1ca..1f5f45067 100644 --- a/docs/Drivers/Java/GettingStarted/README.md +++ b/docs/Drivers/Java/GettingStarted/README.md @@ -25,7 +25,7 @@ ArangoDB 3.x.x com.arangodb arangodb-java-driver - 4.6.0 + 5.0.0 ``` diff --git a/pom.xml b/pom.xml index aefc4724f..0f5e355bf 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.arangodb arangodb-java-driver - 5.0.0 + 5.0.1 2016 jar diff --git a/src/main/java/com/arangodb/internal/ArangoDatabaseImpl.java b/src/main/java/com/arangodb/internal/ArangoDatabaseImpl.java index 3bbafff0d..66666d9d1 100644 --- a/src/main/java/com/arangodb/internal/ArangoDatabaseImpl.java +++ b/src/main/java/com/arangodb/internal/ArangoDatabaseImpl.java @@ -195,7 +195,7 @@ public ArangoCursor query( final Request request = queryRequest(query, bindVars, options); final HostHandle hostHandle = new HostHandle(); final CursorEntity result = executor.execute(request, CursorEntity.class, hostHandle); - return createCursor(result, type, hostHandle); + return createCursor(result, type, options, hostHandle); } @Override @@ -218,23 +218,24 @@ public ArangoCursor query(final String query, final Class type) throws @Override public ArangoCursor cursor(final String cursorId, final Class type) throws ArangoDBException { final HostHandle hostHandle = new HostHandle(); - final CursorEntity result = executor.execute(queryNextRequest(cursorId), CursorEntity.class, hostHandle); - return createCursor(result, type, hostHandle); + final CursorEntity result = executor.execute(queryNextRequest(cursorId, null), CursorEntity.class, hostHandle); + return createCursor(result, type, null, hostHandle); } private ArangoCursor createCursor( final CursorEntity result, final Class type, + final AqlQueryOptions options, final HostHandle hostHandle) { final ArangoCursorExecute execute = new ArangoCursorExecute() { @Override public CursorEntity next(final String id) { - return executor.execute(queryNextRequest(id), CursorEntity.class, hostHandle); + return executor.execute(queryNextRequest(id, options), CursorEntity.class, hostHandle); } @Override public void close(final String id) { - executor.execute(queryCloseRequest(id), Void.class, hostHandle); + executor.execute(queryCloseRequest(id, options), Void.class, hostHandle); } }; return cursorInitializer != null ? cursorInitializer.createInstance(this, execute, type, result) diff --git a/src/main/java/com/arangodb/internal/InternalArangoDatabase.java b/src/main/java/com/arangodb/internal/InternalArangoDatabase.java index 3b488436c..73a8a39c6 100644 --- a/src/main/java/com/arangodb/internal/InternalArangoDatabase.java +++ b/src/main/java/com/arangodb/internal/InternalArangoDatabase.java @@ -203,12 +203,22 @@ protected Request queryRequest( return request; } - protected Request queryNextRequest(final String id) { - return request(name, RequestType.PUT, PATH_API_CURSOR, id); + protected Request queryNextRequest(final String id, final AqlQueryOptions options) { + final Request request = request(name, RequestType.PUT, PATH_API_CURSOR, id); + final AqlQueryOptions opt = options != null ? options : new AqlQueryOptions(); + if (opt.getAllowDirtyRead() == Boolean.TRUE) { + RequestUtils.allowDirtyRead(request); + } + return request; } - protected Request queryCloseRequest(final String id) { - return request(name, RequestType.DELETE, PATH_API_CURSOR, id); + protected Request queryCloseRequest(final String id, final AqlQueryOptions options) { + final Request request = request(name, RequestType.DELETE, PATH_API_CURSOR, id); + final AqlQueryOptions opt = options != null ? options : new AqlQueryOptions(); + if (opt.getAllowDirtyRead() == Boolean.TRUE) { + RequestUtils.allowDirtyRead(request); + } + return request; } protected Request explainQueryRequest( diff --git a/src/main/java/com/arangodb/internal/http/HttpCommunication.java b/src/main/java/com/arangodb/internal/http/HttpCommunication.java index b393f30a9..351043575 100644 --- a/src/main/java/com/arangodb/internal/http/HttpCommunication.java +++ b/src/main/java/com/arangodb/internal/http/HttpCommunication.java @@ -91,6 +91,9 @@ public Response execute(final Request request, final HostHandle hostHandle) thro return response; } catch (final SocketException se) { hostHandler.fail(); + if (hostHandle != null && hostHandle.getHost() != null) { + hostHandle.setHost(null); + } final Host failedHost = host; host = hostHandler.get(hostHandle, accessType); if (host != null) { diff --git a/src/main/java/com/arangodb/internal/velocystream/VstCommunication.java b/src/main/java/com/arangodb/internal/velocystream/VstCommunication.java index 273c28dcd..a9b0466e4 100644 --- a/src/main/java/com/arangodb/internal/velocystream/VstCommunication.java +++ b/src/main/java/com/arangodb/internal/velocystream/VstCommunication.java @@ -101,6 +101,9 @@ protected synchronized C connect(final HostHandle hostHandle, final AccessType a return connection; } catch (final IOException e) { hostHandler.fail(); + if (hostHandle != null && hostHandle.getHost() != null) { + hostHandle.setHost(null); + } final Host failedHost = host; host = hostHandler.get(hostHandle, accessType); if (host != null) {