From a1b18e27d8ad47958f3fa8d07ab9f6a53bc1e0f1 Mon Sep 17 00:00:00 2001 From: mpv1989 Date: Tue, 18 Sep 2018 10:47:57 +0200 Subject: [PATCH 1/6] Prepare snapshot --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index aefc4724f..8a101f8d9 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.arangodb arangodb-java-driver - 5.0.0 + 5.0.1-SNAPSHOT 2016 jar From 5287262f939af6427b161646e31792b3dbf403bc Mon Sep 17 00:00:00 2001 From: mpv1989 Date: Tue, 18 Sep 2018 14:55:56 +0200 Subject: [PATCH 2/6] Update readme --- docs/Drivers/Java/GettingStarted/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 ``` From 2a70383295ff3f9e2af644957510e3481f5e4a21 Mon Sep 17 00:00:00 2001 From: mpv1989 Date: Tue, 18 Sep 2018 15:22:04 +0200 Subject: [PATCH 3/6] Fix Javadoc link --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) 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) From 5605e584553f3b3120c12e9a67fa5521459214c8 Mon Sep 17 00:00:00 2001 From: mpv1989 Date: Tue, 25 Sep 2018 08:33:35 +0200 Subject: [PATCH 4/6] Fix `ArangoCursor#next` when performing a dirty read --- ChangeLog.md | 4 ++++ .../arangodb/internal/ArangoDatabaseImpl.java | 11 ++++++----- .../internal/InternalArangoDatabase.java | 18 ++++++++++++++---- 3 files changed, 24 insertions(+), 9 deletions(-) diff --git a/ChangeLog.md b/ChangeLog.md index ac7ee208f..a5fab2cae 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -6,6 +6,10 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) a ## [Unreleased] +### Fixed + +- fixed `ArangoCursor#next` when performing a dirty read + ## [5.0.0] - 2018-09-18 ### Added 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( From 2d17d81d69146ef5585d4c4e172f7cfc24d72f52 Mon Sep 17 00:00:00 2001 From: mpv1989 Date: Tue, 25 Sep 2018 08:37:16 +0200 Subject: [PATCH 5/6] Fix connection stickiness --- ChangeLog.md | 1 + .../java/com/arangodb/internal/http/HttpCommunication.java | 3 +++ .../com/arangodb/internal/velocystream/VstCommunication.java | 3 +++ 3 files changed, 7 insertions(+) diff --git a/ChangeLog.md b/ChangeLog.md index a5fab2cae..cc303d12a 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -9,6 +9,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) a ### Fixed - fixed `ArangoCursor#next` when performing a dirty read +- fixed connection stickiness ## [5.0.0] - 2018-09-18 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) { From a5f73082a149c1523647065d286c2902b4537a02 Mon Sep 17 00:00:00 2001 From: mpv1989 Date: Tue, 25 Sep 2018 09:00:40 +0200 Subject: [PATCH 6/6] Prepare release 5.0.1 --- ChangeLog.md | 5 ++++- pom.xml | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/ChangeLog.md b/ChangeLog.md index cc303d12a..2c81c6d0b 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -6,6 +6,8 @@ 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 @@ -903,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/pom.xml b/pom.xml index 8a101f8d9..0f5e355bf 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.arangodb arangodb-java-driver - 5.0.1-SNAPSHOT + 5.0.1 2016 jar