diff options
author | Don Anderson <dda@mongodb.com> | 2016-12-06 19:26:03 -0500 |
---|---|---|
committer | Alex Gorrod <alexander.gorrod@mongodb.com> | 2016-12-07 11:26:03 +1100 |
commit | c68e35c4c8aca43ebfebaf1ed8a68bef71ccb4cc (patch) | |
tree | f921248253fcdcc42238a9151a9969c2ef0cd2dc /lang | |
parent | 00c60c5e79ecce107f6852a9f82e8329fc492c0a (diff) | |
download | mongo-c68e35c4c8aca43ebfebaf1ed8a68bef71ccb4cc.tar.gz |
WT-3055 When an AsyncOp is created, cache the whether the cursor is "raw". (#3182)
Later, when an application is fetching keys/values from the AsyncOp,
the JAVA_CALLBACK object may be detached from the (java) AsyncOp, which makes
finding out information about the cursor impossible.
Diffstat (limited to 'lang')
-rw-r--r-- | lang/java/wiredtiger.i | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/lang/java/wiredtiger.i b/lang/java/wiredtiger.i index b7515440040..d0910fa9f66 100644 --- a/lang/java/wiredtiger.i +++ b/lang/java/wiredtiger.i @@ -597,6 +597,7 @@ WT_ASYNC_CALLBACK javaApiAsyncHandler = {javaAsyncHandler}; %typemap(javabody) struct __wt_async_op %{ private long swigCPtr; protected boolean swigCMemOwn; + protected boolean javaRaw; protected String keyFormat; protected String valueFormat; protected PackOutputStream keyPacker; @@ -609,8 +610,9 @@ WT_ASYNC_CALLBACK javaApiAsyncHandler = {javaAsyncHandler}; swigCPtr = cPtr; keyFormat = getKey_format(); valueFormat = getValue_format(); - keyPacker = new PackOutputStream(keyFormat, _java_raw()); - valuePacker = new PackOutputStream(valueFormat, _java_raw()); + javaRaw = _java_raw(); + keyPacker = new PackOutputStream(keyFormat, javaRaw); + valuePacker = new PackOutputStream(valueFormat, javaRaw); wiredtigerJNI.AsyncOp__java_init(swigCPtr, this, this); } @@ -1098,7 +1100,7 @@ WT_ASYNC_CALLBACK javaApiAsyncHandler = {javaAsyncHandler}; if (keyUnpacker == null) keyUnpacker = new PackInputStream(keyFormat, get_key_wrap(), - _java_raw()); + javaRaw); return keyUnpacker; } @@ -1112,7 +1114,7 @@ WT_ASYNC_CALLBACK javaApiAsyncHandler = {javaAsyncHandler}; if (valueUnpacker == null) valueUnpacker = new PackInputStream(valueFormat, get_value_wrap(), - _java_raw()); + javaRaw); return valueUnpacker; } |