Skip to content

Commit 5605e58

Browse files
author
mpv1989
committed
Fix ArangoCursor#next when performing a dirty read
1 parent 2a70383 commit 5605e58

File tree

3 files changed

+24
-9
lines changed

3 files changed

+24
-9
lines changed

ChangeLog.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) a
66

77
## [Unreleased]
88

9+
### Fixed
10+
11+
- fixed `ArangoCursor#next` when performing a dirty read
12+
913
## [5.0.0] - 2018-09-18
1014

1115
### Added

src/main/java/com/arangodb/internal/ArangoDatabaseImpl.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,7 @@ public <T> ArangoCursor<T> query(
195195
final Request request = queryRequest(query, bindVars, options);
196196
final HostHandle hostHandle = new HostHandle();
197197
final CursorEntity result = executor.execute(request, CursorEntity.class, hostHandle);
198-
return createCursor(result, type, hostHandle);
198+
return createCursor(result, type, options, hostHandle);
199199
}
200200

201201
@Override
@@ -218,23 +218,24 @@ public <T> ArangoCursor<T> query(final String query, final Class<T> type) throws
218218
@Override
219219
public <T> ArangoCursor<T> cursor(final String cursorId, final Class<T> type) throws ArangoDBException {
220220
final HostHandle hostHandle = new HostHandle();
221-
final CursorEntity result = executor.execute(queryNextRequest(cursorId), CursorEntity.class, hostHandle);
222-
return createCursor(result, type, hostHandle);
221+
final CursorEntity result = executor.execute(queryNextRequest(cursorId, null), CursorEntity.class, hostHandle);
222+
return createCursor(result, type, null, hostHandle);
223223
}
224224

225225
private <T> ArangoCursor<T> createCursor(
226226
final CursorEntity result,
227227
final Class<T> type,
228+
final AqlQueryOptions options,
228229
final HostHandle hostHandle) {
229230
final ArangoCursorExecute execute = new ArangoCursorExecute() {
230231
@Override
231232
public CursorEntity next(final String id) {
232-
return executor.execute(queryNextRequest(id), CursorEntity.class, hostHandle);
233+
return executor.execute(queryNextRequest(id, options), CursorEntity.class, hostHandle);
233234
}
234235

235236
@Override
236237
public void close(final String id) {
237-
executor.execute(queryCloseRequest(id), Void.class, hostHandle);
238+
executor.execute(queryCloseRequest(id, options), Void.class, hostHandle);
238239
}
239240
};
240241
return cursorInitializer != null ? cursorInitializer.createInstance(this, execute, type, result)

src/main/java/com/arangodb/internal/InternalArangoDatabase.java

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -203,12 +203,22 @@ protected Request queryRequest(
203203
return request;
204204
}
205205

206-
protected Request queryNextRequest(final String id) {
207-
return request(name, RequestType.PUT, PATH_API_CURSOR, id);
206+
protected Request queryNextRequest(final String id, final AqlQueryOptions options) {
207+
final Request request = request(name, RequestType.PUT, PATH_API_CURSOR, id);
208+
final AqlQueryOptions opt = options != null ? options : new AqlQueryOptions();
209+
if (opt.getAllowDirtyRead() == Boolean.TRUE) {
210+
RequestUtils.allowDirtyRead(request);
211+
}
212+
return request;
208213
}
209214

210-
protected Request queryCloseRequest(final String id) {
211-
return request(name, RequestType.DELETE, PATH_API_CURSOR, id);
215+
protected Request queryCloseRequest(final String id, final AqlQueryOptions options) {
216+
final Request request = request(name, RequestType.DELETE, PATH_API_CURSOR, id);
217+
final AqlQueryOptions opt = options != null ? options : new AqlQueryOptions();
218+
if (opt.getAllowDirtyRead() == Boolean.TRUE) {
219+
RequestUtils.allowDirtyRead(request);
220+
}
221+
return request;
212222
}
213223

214224
protected Request explainQueryRequest(

0 commit comments

Comments
 (0)