summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDon Anderson <dda@mongodb.com>2016-12-06 19:26:03 -0500
committerAlex Gorrod <alexander.gorrod@mongodb.com>2016-12-07 11:26:03 +1100
commitc68e35c4c8aca43ebfebaf1ed8a68bef71ccb4cc (patch)
treef921248253fcdcc42238a9151a9969c2ef0cd2dc
parent00c60c5e79ecce107f6852a9f82e8329fc492c0a (diff)
downloadmongo-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.
-rw-r--r--lang/java/wiredtiger.i10
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;
}