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) {