summaryrefslogtreecommitdiff
path: root/db/libdb_java
diff options
context:
space:
mode:
Diffstat (limited to 'db/libdb_java')
-rw-r--r--db/libdb_java/db.i122
-rw-r--r--db/libdb_java/db_java.i121
-rw-r--r--db/libdb_java/db_java_wrap.c801
-rw-r--r--db/libdb_java/java_callbacks.i154
-rw-r--r--db/libdb_java/java_except.i16
-rw-r--r--db/libdb_java/java_stat.i1
-rw-r--r--db/libdb_java/java_stat_auto.c41
-rw-r--r--db/libdb_java/java_typemaps.i10
-rw-r--r--db/libdb_java/java_util.i163
9 files changed, 1123 insertions, 306 deletions
diff --git a/db/libdb_java/db.i b/db/libdb_java/db.i
index 92001d02c..8f1d3307c 100644
--- a/db/libdb_java/db.i
+++ b/db/libdb_java/db.i
@@ -144,8 +144,9 @@ struct Db
self->errx(self, message);
}
- int_bool get_transactional() {
- return self->get_transactional(self);
+ JAVA_EXCEPT(DB_RETOK_EXISTS, DB2JDBENV)
+ int exists(DB_TXN *txnid, DBT *key, u_int32_t flags) {
+ return self->exists(self, txnid, key, flags);
}
#ifndef SWIGJAVA
@@ -270,6 +271,12 @@ struct Db
return ret;
}
+ DB_CACHE_PRIORITY get_priority() {
+ DB_CACHE_PRIORITY ret;
+ errno = self->get_priority(self, &ret);
+ return ret;
+ }
+
u_int32_t get_re_len() {
u_int32_t ret = 0;
errno = self->get_re_len(self, &ret);
@@ -294,6 +301,16 @@ struct Db
return ret;
}
+ JAVA_EXCEPT_NONE
+ int_bool get_multiple() {
+ return self->get_multiple(self);
+ }
+
+ int_bool get_transactional() {
+ return self->get_transactional(self);
+ }
+
+ JAVA_EXCEPT_ERRNO(DB_RETOK_STD, DB2JDBENV)
DBTYPE get_type() {
DBTYPE type = (DBTYPE)0;
errno = self->get_type(self, &type);
@@ -396,6 +413,11 @@ struct Db
return self->set_flags(self, flags);
}
+ db_ret_t set_h_compare(
+ int (*h_compare_fcn)(DB *, const DBT *, const DBT *)) {
+ return self->set_h_compare(self, h_compare_fcn);
+ }
+
db_ret_t set_h_ffactor(u_int32_t h_ffactor) {
return self->set_h_ffactor(self, h_ffactor);
}
@@ -429,6 +451,10 @@ struct Db
}
#endif /* SWIGJAVA */
+ db_ret_t set_priority(DB_CACHE_PRIORITY priority) {
+ return self->set_priority(self, priority);
+ }
+
db_ret_t set_re_delim(int re_delim) {
return self->set_re_delim(self, re_delim);
}
@@ -498,40 +524,53 @@ struct Dbc
%extend {
JAVA_EXCEPT(DB_RETOK_STD, NULL)
db_ret_t close() {
- return self->c_close(self);
+ return self->close(self);
}
JAVA_EXCEPT_ERRNO(DB_RETOK_STD, DBC2JDBENV)
db_recno_t count(u_int32_t flags) {
db_recno_t count = 0;
- errno = self->c_count(self, &count, flags);
+ errno = self->count(self, &count, flags);
return count;
}
JAVA_EXCEPT(DB_RETOK_DBCDEL, DBC2JDBENV)
int del(u_int32_t flags) {
- return self->c_del(self, flags);
+ return self->del(self, flags);
}
JAVA_EXCEPT_ERRNO(DB_RETOK_STD, DBC2JDBENV)
DBC *dup(u_int32_t flags) {
DBC *newcurs = NULL;
- errno = self->c_dup(self, &newcurs, flags);
+ errno = self->dup(self, &newcurs, flags);
return newcurs;
}
JAVA_EXCEPT(DB_RETOK_DBCGET, DBC2JDBENV)
int get(DBT* key, DBT *data, u_int32_t flags) {
- return self->c_get(self, key, data, flags);
+ return self->get(self, key, data, flags);
}
+ JAVA_EXCEPT_ERRNO(DB_RETOK_STD, DBC2JDBENV)
+ DB_CACHE_PRIORITY get_priority() {
+ DB_CACHE_PRIORITY ret;
+ errno = self->get_priority(self, &ret);
+ return ret;
+ }
+
+ JAVA_EXCEPT(DB_RETOK_DBCGET, DBC2JDBENV)
int pget(DBT* key, DBT* pkey, DBT *data, u_int32_t flags) {
- return self->c_pget(self, key, pkey, data, flags);
+ return self->pget(self, key, pkey, data, flags);
}
JAVA_EXCEPT(DB_RETOK_DBCPUT, DBC2JDBENV)
int put(DBT* key, DBT *data, u_int32_t flags) {
- return self->c_put(self, key, data, flags);
+ return self->put(self, key, data, flags);
+ }
+
+ JAVA_EXCEPT_ERRNO(DB_RETOK_STD, DBC2JDBENV)
+ db_ret_t set_priority(DB_CACHE_PRIORITY priority) {
+ return self->set_priority(self, priority);
}
}
};
@@ -575,6 +614,12 @@ struct DbEnv
}
#ifndef SWIGJAVA
+ u_int32_t get_thread_count() {
+ u_int32_t ret;
+ errno = self->get_thread_count(self, &ret);
+ return ret;
+ }
+
pid_t getpid() {
pid_t ret;
db_threadid_t junk;
@@ -708,6 +753,12 @@ struct DbEnv
(u_int32_t)(bytes % GIGABYTE), ncache);
}
+ db_ret_t set_cache_max(jlong bytes) {
+ return self->set_cache_max(self,
+ (u_int32_t)(bytes / GIGABYTE),
+ (u_int32_t)(bytes % GIGABYTE));
+ }
+
db_ret_t set_data_dir(const char *dir) {
return self->set_data_dir(self, dir);
}
@@ -745,7 +796,7 @@ struct DbEnv
return self->set_mp_max_openfd(self, maxopenfd);
}
- db_ret_t set_mp_max_write(int maxwrite, int maxwrite_sleep) {
+ db_ret_t set_mp_max_write(int maxwrite, db_timeout_t maxwrite_sleep) {
return self->set_mp_max_write(self, maxwrite, maxwrite_sleep);
}
@@ -1017,6 +1068,12 @@ struct DbEnv
return ret;
}
+ jlong get_cache_max() {
+ u_int32_t gbytes, bytes;
+ errno = self->get_cache_max(self, &gbytes, &bytes);
+ return (jlong)gbytes * GIGABYTE + bytes;
+ }
+
int get_mp_max_openfd() {
int ret;
errno = self->get_mp_max_openfd(self, &ret);
@@ -1024,15 +1081,17 @@ struct DbEnv
}
int get_mp_max_write() {
- int ret, junk;
- errno = self->get_mp_max_write(self, &ret, &junk);
- return ret;
+ int maxwrite;
+ db_timeout_t sleep;
+ errno = self->get_mp_max_write(self, &maxwrite, &sleep);
+ return maxwrite;
}
- int get_mp_max_write_sleep() {
- int ret, junk;
- errno = self->get_mp_max_write(self, &junk, &ret);
- return ret;
+ db_timeout_t get_mp_max_write_sleep() {
+ int maxwrite;
+ db_timeout_t sleep;
+ errno = self->get_mp_max_write(self, &maxwrite, &sleep);
+ return sleep;
}
size_t get_mp_mmapsize() {
@@ -1173,14 +1232,13 @@ struct DbEnv
return (jlong)gbytes * GIGABYTE + bytes;
}
- int rep_elect(int nsites, int nvotes, u_int32_t flags) {
- int id;
- errno = self->rep_elect(self, nsites, nvotes, &id, flags);
- return id;
+ JAVA_EXCEPT(DB_RETOK_STD, JDBENV)
+ db_ret_t rep_elect(int nsites, int nvotes, u_int32_t flags) {
+ return self->rep_elect(self, nsites, nvotes, flags);
}
-
+
JAVA_EXCEPT(DB_RETOK_REPPMSG, JDBENV)
- int rep_process_message(DBT *control, DBT *rec, int *envid,
+ int rep_process_message(DBT *control, DBT *rec, int envid,
DB_LSN *ret_lsn) {
return self->rep_process_message(self, control, rec, envid,
ret_lsn);
@@ -1195,6 +1253,10 @@ struct DbEnv
return self->rep_set_config(self, which, onoff);
}
+ db_ret_t rep_set_lease(u_int32_t clock_scale_factor, u_int32_t flags) {
+ return self->rep_set_lease(self, clock_scale_factor, flags);
+ }
+
db_ret_t rep_start(DBT *cdata, u_int32_t flags) {
return self->rep_start(self, cdata, flags);
}
@@ -1302,6 +1364,13 @@ struct DbEnv
return self->repmgr_start(self, nthreads, flags);
}
+ JAVA_EXCEPT_ERRNO(DB_RETOK_STD, JDBENV)
+ DB_REPMGR_STAT *repmgr_stat(u_int32_t flags) {
+ DB_REPMGR_STAT *statp = NULL;
+ errno = self->repmgr_stat(self, &statp, flags);
+ return statp;
+ }
+
/* Convert DB errors to strings */
JAVA_EXCEPT_NONE
static const char *strerror(int error) {
@@ -1349,6 +1418,13 @@ struct DbLogc
int get(DB_LSN *lsn, DBT *data, u_int32_t flags) {
return self->get(self, lsn, data, flags);
}
+
+ JAVA_EXCEPT_ERRNO(DB_RETOK_STD, NULL)
+ u_int32_t version(u_int32_t flags) {
+ u_int32_t result;
+ errno = self->version(self, &result, flags);
+ return result;
+ }
}
};
diff --git a/db/libdb_java/db_java.i b/db/libdb_java/db_java.i
index dd4ff939c..bc9ff29b3 100644
--- a/db/libdb_java/db_java.i
+++ b/db/libdb_java/db_java.i
@@ -71,6 +71,7 @@ import java.util.Comparator;
private ReplicationTransport rep_transport_handler;
private java.io.OutputStream error_stream;
private java.io.OutputStream message_stream;
+ private ThreadLocal errMsg;
public static class RepProcessMessage {
public int envid;
@@ -82,6 +83,7 @@ import java.util.Comparator;
*/
void initialize() {
dbenv_ref = db_java.initDbEnvRef0(this, this);
+ errMsg = new ThreadLocal();
/* Start with System.err as the default error stream. */
set_error_stream(System.err);
set_message_stream(System.out);
@@ -102,8 +104,8 @@ import java.util.Comparator;
}
private final int handle_app_dispatch(DatabaseEntry dbt,
- LogSequenceNumber lsn,
- int recops) {
+ LogSequenceNumber lsn,
+ int recops) {
return app_dispatch_handler.handleLogRecord(wrapper, dbt, lsn,
RecoveryOperation.fromFlag(recops));
}
@@ -112,8 +114,36 @@ import java.util.Comparator;
return app_dispatch_handler;
}
- private final int handle_event_notify(int event) {
- return event_notify_handler.handleEvent(EventType.fromInt(event));
+ private final void handle_panic_event_notify() {
+ event_notify_handler.handlePanicEvent();
+ }
+
+ private final void handle_rep_client_event_notify() {
+ event_notify_handler.handleRepClientEvent();
+ }
+
+ private final void handle_rep_elected_event_notify() {
+ event_notify_handler.handleRepElectedEvent();
+ }
+
+ private final void handle_rep_master_event_notify() {
+ event_notify_handler.handleRepMasterEvent();
+ }
+
+ private final void handle_rep_new_master_event_notify(int envid) {
+ event_notify_handler.handleRepNewMasterEvent(envid);
+ }
+
+ private final void handle_rep_perm_failed_event_notify() {
+ event_notify_handler.handleRepPermFailedEvent();
+ }
+
+ private final void handle_rep_startup_done_event_notify() {
+ event_notify_handler.handleRepStartupDoneEvent();
+ }
+
+ private final void handle_write_failed_event_notify(int errno) {
+ event_notify_handler.handleWriteFailedEvent(errno);
}
public EventHandler get_event_notify() {
@@ -139,9 +169,29 @@ import java.util.Comparator;
}
private final void handle_error(String msg) {
+ StringBuffer tbuf = (StringBuffer) errMsg.get();
+ /*
+ * Populate the errMsg ThreadLocal on demand, since the
+ * callback can be made from different threads.
+ */
+ if (tbuf == null) {
+ tbuf = new StringBuffer();
+ errMsg.set(tbuf);
+ }
+ tbuf.append(msg);
error_handler.error(wrapper, this.errpfx, msg);
}
+ private final String get_err_msg(String orig_msg) {
+ String ret = null;
+ StringBuffer tbuf = (StringBuffer) errMsg.get();
+ if (tbuf != null) {
+ ret = tbuf.toString();
+ tbuf.delete(0, tbuf.length());
+ }
+ return orig_msg + ": " + ret;
+ }
+
public ErrorHandler get_errcall() {
return error_handler;
}
@@ -163,20 +213,20 @@ import java.util.Comparator;
}
private final int handle_rep_transport(DatabaseEntry control,
- DatabaseEntry rec,
- LogSequenceNumber lsn,
- int envid, int flags)
+ DatabaseEntry rec,
+ LogSequenceNumber lsn,
+ int envid, int flags)
throws DatabaseException {
return rep_transport_handler.send(wrapper,
control, rec, lsn, envid,
(flags & DbConstants.DB_REP_NOBUFFER) != 0,
- (flags & DbConstants.DB_REP_PERMANENT) != 0,
- (flags & DbConstants.DB_REP_ANYWHERE) != 0,
- (flags & DbConstants.DB_REP_REREQUEST) != 0);
+ (flags & DbConstants.DB_REP_PERMANENT) != 0,
+ (flags & DbConstants.DB_REP_ANYWHERE) != 0,
+ (flags & DbConstants.DB_REP_REREQUEST) != 0);
}
public void lock_vec(/*u_int32_t*/ int locker, int flags,
- LockRequest[] list, int offset, int count)
+ LockRequest[] list, int offset, int count)
throws DatabaseException {
db_javaJNI.DbEnv_lock_vec(swigCPtr, locker, flags, list,
offset, count);
@@ -209,7 +259,6 @@ import java.util.Comparator;
return error_stream;
}
-
public void set_message_stream(java.io.OutputStream stream) {
message_stream = stream;
final java.io.PrintWriter pw = new java.io.PrintWriter(stream);
@@ -248,8 +297,10 @@ import java.util.Comparator;
private BtreePrefixCalculator bt_prefix_handler;
private Comparator dup_compare_handler;
private FeedbackHandler db_feedback_handler;
+ private Comparator h_compare_handler;
private Hasher h_hash_handler;
private SecondaryKeyCreator seckey_create_handler;
+ private SecondaryMultiKeyCreator secmultikey_create_handler;
/* Called by the Db constructor */
private void initialize(DbEnv dbenv) {
@@ -305,7 +356,7 @@ import java.util.Comparator;
}
private final int handle_bt_prefix(DatabaseEntry dbt1,
- DatabaseEntry dbt2) {
+ DatabaseEntry dbt2) {
return bt_prefix_handler.prefix(wrapper, dbt1, dbt2);
}
@@ -325,6 +376,14 @@ import java.util.Comparator;
return db_feedback_handler;
}
+ private final int handle_h_compare(byte[] arr1, byte[] arr2) {
+ return h_compare_handler.compare(arr1, arr2);
+ }
+
+ public Comparator get_h_compare() {
+ return h_compare_handler;
+ }
+
private final int handle_dup_compare(byte[] arr1, byte[] arr2) {
return dup_compare_handler.compare(arr1, arr2);
}
@@ -341,19 +400,43 @@ import java.util.Comparator;
return h_hash_handler;
}
- private final int handle_seckey_create(DatabaseEntry key,
- DatabaseEntry data,
- DatabaseEntry result)
+ private final DatabaseEntry[] handle_seckey_create(
+ DatabaseEntry key,
+ DatabaseEntry data)
throws DatabaseException {
- return seckey_create_handler.createSecondaryKey(
- (SecondaryDatabase)wrapper, key, data, result) ?
- 0 : DbConstants.DB_DONOTINDEX;
+
+ if (secmultikey_create_handler != null) {
+ java.util.HashSet keySet = new java.util.HashSet();
+ secmultikey_create_handler.createSecondaryKeys(
+ (SecondaryDatabase)wrapper, key, data, keySet);
+ if (!keySet.isEmpty())
+ return (DatabaseEntry[])keySet.toArray(
+ new DatabaseEntry[keySet.size()]);
+ } else {
+ DatabaseEntry result = new DatabaseEntry();
+ if (seckey_create_handler.createSecondaryKey(
+ (SecondaryDatabase)wrapper, key, data, result)) {
+ DatabaseEntry[] results = { result };
+ return results;
+ }
+ }
+
+ return null;
}
public SecondaryKeyCreator get_seckey_create() {
return seckey_create_handler;
}
+ public SecondaryMultiKeyCreator get_secmultikey_create() {
+ return secmultikey_create_handler;
+ }
+
+ public void get_secmultikey_create(
+ SecondaryMultiKeyCreator secmultikey_create_handler) {
+ this.secmultikey_create_handler = secmultikey_create_handler;
+ }
+
public synchronized void remove(String file, String database, int flags)
throws DatabaseException, java.io.FileNotFoundException {
try {
diff --git a/db/libdb_java/db_java_wrap.c b/db/libdb_java/db_java_wrap.c
index 14253433b..7e047e52e 100644
--- a/db/libdb_java/db_java_wrap.c
+++ b/db/libdb_java/db_java_wrap.c
@@ -205,13 +205,14 @@ static jclass keyrange_class;
static jclass bt_stat_class, compact_class, h_stat_class, lock_stat_class;
static jclass log_stat_class, mpool_stat_class, mpool_fstat_class;
static jclass mutex_stat_class, qam_stat_class, rep_stat_class;
-static jclass rephost_class, seq_stat_class, txn_stat_class;
+static jclass repmgr_stat_class, rephost_class, seq_stat_class, txn_stat_class;
static jclass txn_active_class;
-static jclass lock_class, lockreq_class, rep_processmsg_class;
+static jclass lock_class, lockreq_class;
static jclass dbex_class, deadex_class, lockex_class, memex_class;
static jclass repdupmasterex_class, rephandledeadex_class;
-static jclass repholdelectionex_class, repjoinfailex_class, replockoutex_class;
-static jclass repunavailex_class;
+static jclass repholdelectionex_class, repjoinfailex_class;
+static jclass repleaseexpiredex_class, repleasetimeoutex_class;
+static jclass replockoutex_class, repunavailex_class;
static jclass runrecex_class, versionex_class;
static jclass filenotfoundex_class, illegalargex_class, outofmemerr_class;
static jclass bytearray_class, string_class, outputstream_class;
@@ -224,7 +225,6 @@ static jfieldID kr_less_fid, kr_equal_fid, kr_greater_fid;
static jfieldID lock_cptr_fid;
static jfieldID lockreq_op_fid, lockreq_modeflag_fid, lockreq_timeout_fid;
static jfieldID lockreq_obj_fid, lockreq_lock_fid;
-static jfieldID rep_processmsg_envid_fid;
static jfieldID rephost_port_fid, rephost_host_fid, rephost_eid_fid;
static jfieldID rephost_status_fid;
@@ -234,6 +234,7 @@ static jfieldID bt_stat_bt_version_fid;
static jfieldID bt_stat_bt_metaflags_fid;
static jfieldID bt_stat_bt_nkeys_fid;
static jfieldID bt_stat_bt_ndata_fid;
+static jfieldID bt_stat_bt_pagecnt_fid;
static jfieldID bt_stat_bt_pagesize_fid;
static jfieldID bt_stat_bt_minkey_fid;
static jfieldID bt_stat_bt_re_len_fid;
@@ -263,6 +264,7 @@ static jfieldID h_stat_hash_version_fid;
static jfieldID h_stat_hash_metaflags_fid;
static jfieldID h_stat_hash_nkeys_fid;
static jfieldID h_stat_hash_ndata_fid;
+static jfieldID h_stat_hash_pagecnt_fid;
static jfieldID h_stat_hash_pagesize_fid;
static jfieldID h_stat_hash_ffactor_fid;
static jfieldID h_stat_hash_buckets_fid;
@@ -280,9 +282,9 @@ static jfieldID lock_stat_st_maxlocks_fid;
static jfieldID lock_stat_st_maxlockers_fid;
static jfieldID lock_stat_st_maxobjects_fid;
static jfieldID lock_stat_st_nmodes_fid;
+static jfieldID lock_stat_st_nlockers_fid;
static jfieldID lock_stat_st_nlocks_fid;
static jfieldID lock_stat_st_maxnlocks_fid;
-static jfieldID lock_stat_st_nlockers_fid;
static jfieldID lock_stat_st_maxnlockers_fid;
static jfieldID lock_stat_st_nobjects_fid;
static jfieldID lock_stat_st_maxnobjects_fid;
@@ -297,19 +299,26 @@ static jfieldID lock_stat_st_locktimeout_fid;
static jfieldID lock_stat_st_nlocktimeouts_fid;
static jfieldID lock_stat_st_txntimeout_fid;
static jfieldID lock_stat_st_ntxntimeouts_fid;
+static jfieldID lock_stat_st_objs_wait_fid;
+static jfieldID lock_stat_st_objs_nowait_fid;
+static jfieldID lock_stat_st_lockers_wait_fid;
+static jfieldID lock_stat_st_lockers_nowait_fid;
+static jfieldID lock_stat_st_locks_wait_fid;
+static jfieldID lock_stat_st_locks_nowait_fid;
static jfieldID lock_stat_st_region_wait_fid;
static jfieldID lock_stat_st_region_nowait_fid;
+static jfieldID lock_stat_st_hash_len_fid;
static jfieldID lock_stat_st_regsize_fid;
static jfieldID log_stat_st_magic_fid;
static jfieldID log_stat_st_version_fid;
static jfieldID log_stat_st_mode_fid;
static jfieldID log_stat_st_lg_bsize_fid;
static jfieldID log_stat_st_lg_size_fid;
+static jfieldID log_stat_st_wc_bytes_fid;
+static jfieldID log_stat_st_wc_mbytes_fid;
static jfieldID log_stat_st_record_fid;
static jfieldID log_stat_st_w_bytes_fid;
static jfieldID log_stat_st_w_mbytes_fid;
-static jfieldID log_stat_st_wc_bytes_fid;
-static jfieldID log_stat_st_wc_mbytes_fid;
static jfieldID log_stat_st_wcount_fid;
static jfieldID log_stat_st_wcount_fill_fid;
static jfieldID log_stat_st_rcount_fid;
@@ -320,9 +329,9 @@ static jfieldID log_stat_st_cur_file_fid;
static jfieldID log_stat_st_cur_offset_fid;
static jfieldID log_stat_st_disk_file_fid;
static jfieldID log_stat_st_disk_offset_fid;
-static jfieldID log_stat_st_regsize_fid;
static jfieldID log_stat_st_maxcommitperflush_fid;
static jfieldID log_stat_st_mincommitperflush_fid;
+static jfieldID log_stat_st_regsize_fid;
static jfieldID mpool_fstat_file_name_fid;
static jfieldID mpool_fstat_st_pagesize_fid;
static jfieldID mpool_fstat_st_map_fid;
@@ -334,11 +343,12 @@ static jfieldID mpool_fstat_st_page_out_fid;
static jfieldID mpool_stat_st_gbytes_fid;
static jfieldID mpool_stat_st_bytes_fid;
static jfieldID mpool_stat_st_ncache_fid;
-static jfieldID mpool_stat_st_regsize_fid;
+static jfieldID mpool_stat_st_max_ncache_fid;
static jfieldID mpool_stat_st_mmapsize_fid;
static jfieldID mpool_stat_st_maxopenfd_fid;
static jfieldID mpool_stat_st_maxwrite_fid;
static jfieldID mpool_stat_st_maxwrite_sleep_fid;
+static jfieldID mpool_stat_st_pages_fid;
static jfieldID mpool_stat_st_map_fid;
static jfieldID mpool_stat_st_cache_hit_fid;
static jfieldID mpool_stat_st_cache_miss_fid;
@@ -348,7 +358,6 @@ static jfieldID mpool_stat_st_page_out_fid;
static jfieldID mpool_stat_st_ro_evict_fid;
static jfieldID mpool_stat_st_rw_evict_fid;
static jfieldID mpool_stat_st_page_trickle_fid;
-static jfieldID mpool_stat_st_pages_fid;
static jfieldID mpool_stat_st_page_clean_fid;
static jfieldID mpool_stat_st_page_dirty_fid;
static jfieldID mpool_stat_st_hash_buckets_fid;
@@ -370,6 +379,7 @@ static jfieldID mpool_stat_st_alloc_max_buckets_fid;
static jfieldID mpool_stat_st_alloc_pages_fid;
static jfieldID mpool_stat_st_alloc_max_pages_fid;
static jfieldID mpool_stat_st_io_wait_fid;
+static jfieldID mpool_stat_st_regsize_fid;
static jfieldID mutex_stat_st_mutex_align_fid;
static jfieldID mutex_stat_st_mutex_tas_spins_fid;
static jfieldID mutex_stat_st_mutex_cnt_fid;
@@ -392,6 +402,8 @@ static jfieldID qam_stat_qs_re_pad_fid;
static jfieldID qam_stat_qs_pgfree_fid;
static jfieldID qam_stat_qs_first_recno_fid;
static jfieldID qam_stat_qs_cur_recno_fid;
+static jfieldID rep_stat_st_log_queued_fid;
+static jfieldID rep_stat_st_startup_complete_fid;
static jfieldID rep_stat_st_status_fid;
static jfieldID rep_stat_st_next_lsn_fid;
static jfieldID rep_stat_st_waiting_lsn_fid;
@@ -410,7 +422,6 @@ static jfieldID rep_stat_st_client_svc_miss_fid;
static jfieldID rep_stat_st_gen_fid;
static jfieldID rep_stat_st_egen_fid;
static jfieldID rep_stat_st_log_duplicated_fid;
-static jfieldID rep_stat_st_log_queued_fid;
static jfieldID rep_stat_st_log_queued_max_fid;
static jfieldID rep_stat_st_log_queued_total_fid;
static jfieldID rep_stat_st_log_records_fid;
@@ -429,8 +440,8 @@ static jfieldID rep_stat_st_outdated_fid;
static jfieldID rep_stat_st_pg_duplicated_fid;
static jfieldID rep_stat_st_pg_records_fid;
static jfieldID rep_stat_st_pg_requested_fid;
-static jfieldID rep_stat_st_startup_complete_fid;
static jfieldID rep_stat_st_txns_applied_fid;
+static jfieldID rep_stat_st_startsync_delayed_fid;
static jfieldID rep_stat_st_elections_fid;
static jfieldID rep_stat_st_elections_won_fid;
static jfieldID rep_stat_st_election_cur_winner_fid;
@@ -444,6 +455,11 @@ static jfieldID rep_stat_st_election_tiebreaker_fid;
static jfieldID rep_stat_st_election_votes_fid;
static jfieldID rep_stat_st_election_sec_fid;
static jfieldID rep_stat_st_election_usec_fid;
+static jfieldID repmgr_stat_st_perm_failed_fid;
+static jfieldID repmgr_stat_st_msgs_queued_fid;
+static jfieldID repmgr_stat_st_msgs_dropped_fid;
+static jfieldID repmgr_stat_st_connection_drop_fid;
+static jfieldID repmgr_stat_st_connect_fail_fid;
static jfieldID seq_stat_st_wait_fid;
static jfieldID seq_stat_st_nowait_fid;
static jfieldID seq_stat_st_current_fid;
@@ -453,6 +469,7 @@ static jfieldID seq_stat_st_min_fid;
static jfieldID seq_stat_st_max_fid;
static jfieldID seq_stat_st_cache_size_fid;
static jfieldID seq_stat_st_flags_fid;
+static jfieldID txn_stat_st_nrestores_fid;
static jfieldID txn_stat_st_last_ckp_fid;
static jfieldID txn_stat_st_time_ckp_fid;
static jfieldID txn_stat_st_last_txnid_fid;
@@ -462,7 +479,6 @@ static jfieldID txn_stat_st_nbegins_fid;
static jfieldID txn_stat_st_ncommits_fid;
static jfieldID txn_stat_st_nactive_fid;
static jfieldID txn_stat_st_nsnapshot_fid;
-static jfieldID txn_stat_st_nrestores_fid;
static jfieldID txn_stat_st_maxnactive_fid;
static jfieldID txn_stat_st_maxnsnapshot_fid;
static jfieldID txn_stat_st_txnarray_fid;
@@ -483,18 +499,19 @@ static jfieldID txn_active_name_fid;
static jmethodID dbenv_construct, dbt_construct, dblsn_construct;
static jmethodID dbpreplist_construct, dbtxn_construct;
-static jmethodID bt_stat_construct, h_stat_construct;
+static jmethodID bt_stat_construct, get_err_msg_method, h_stat_construct;
static jmethodID lock_stat_construct, log_stat_construct;
static jmethodID mpool_stat_construct, mpool_fstat_construct;
static jmethodID mutex_stat_construct, qam_stat_construct;
-static jmethodID rep_stat_construct, seq_stat_construct;
+static jmethodID rep_stat_construct, repmgr_stat_construct, seq_stat_construct;
static jmethodID txn_stat_construct, txn_active_construct;
static jmethodID dbex_construct, deadex_construct, lockex_construct;
static jmethodID memex_construct, memex_update_method;
static jmethodID repdupmasterex_construct, rephandledeadex_construct;
static jmethodID repholdelectionex_construct, repjoinfailex_construct;
-static jmethodID rephost_construct;
-static jmethodID replockoutex_construct, repunavailex_construct;
+static jmethodID rephost_construct, repleaseexpiredex_construct;
+static jmethodID repleasetimeoutex_construct, replockoutex_construct;
+static jmethodID repunavailex_construct;
static jmethodID runrecex_construct, versionex_construct;
static jmethodID filenotfoundex_construct, illegalargex_construct;
static jmethodID outofmemerr_construct;
@@ -502,11 +519,17 @@ static jmethodID lock_construct;
static jmethodID app_dispatch_method, errcall_method, env_feedback_method;
static jmethodID msgcall_method, paniccall_method, rep_transport_method;
-static jmethodID event_notify_method;
+static jmethodID panic_event_notify_method, rep_client_event_notify_method;
+static jmethodID rep_elected_event_notify_method;
+static jmethodID rep_master_event_notify_method;
+static jmethodID rep_new_master_event_notify_method;
+static jmethodID rep_perm_failed_event_notify_method;
+static jmethodID rep_startup_done_event_notify_method;
+static jmethodID write_failed_event_notify_method;
static jmethodID append_recno_method, bt_compare_method, bt_prefix_method;
-static jmethodID db_feedback_method, dup_compare_method, h_hash_method;
-static jmethodID seckey_create_method;
+static jmethodID db_feedback_method, dup_compare_method, h_compare_method;
+static jmethodID h_hash_method, seckey_create_method;
static jmethodID outputstream_write_method;
@@ -532,6 +555,7 @@ const struct {
{ &mutex_stat_class, DB_PKG "MutexStats" },
{ &qam_stat_class, DB_PKG "QueueStats" },
{ &rep_stat_class, DB_PKG "ReplicationStats" },
+ { &repmgr_stat_class, DB_PKG "ReplicationManagerStats" },
{ &seq_stat_class, DB_PKG "SequenceStats" },
{ &txn_stat_class, DB_PKG "TransactionStats" },
{ &txn_active_class, DB_PKG "TransactionStats$Active" },
@@ -539,8 +563,6 @@ const struct {
{ &keyrange_class, DB_PKG "KeyRange" },
{ &lock_class, DB_PKG "internal/DbLock" },
{ &lockreq_class, DB_PKG "LockRequest" },
- { &rep_processmsg_class, DB_PKG "internal/DbEnv$RepProcessMessage" },
- { &rep_processmsg_class, DB_PKG "internal/DbEnv$RepProcessMessage" },
{ &dbex_class, DB_PKG "DatabaseException" },
{ &deadex_class, DB_PKG "DeadlockException" },
@@ -551,6 +573,8 @@ const struct {
{ &repholdelectionex_class, DB_PKG "ReplicationHoldElectionException" },
{ &rephost_class, DB_PKG "ReplicationHostAddress" },
{ &repjoinfailex_class, DB_PKG "ReplicationJoinFailureException" },
+ { &repleaseexpiredex_class, DB_PKG "ReplicationLeaseExpiredException" },
+ { &repleasetimeoutex_class, DB_PKG "ReplicationLeaseTimeoutException" },
{ &replockoutex_class, DB_PKG "ReplicationLockoutException" },
{ &repunavailex_class, DB_PKG "ReplicationSiteUnavailableException" },
{ &runrecex_class, DB_PKG "RunRecoveryException" },
@@ -604,6 +628,7 @@ const struct {
{ &bt_stat_bt_metaflags_fid, &bt_stat_class, "bt_metaflags", "I" },
{ &bt_stat_bt_nkeys_fid, &bt_stat_class, "bt_nkeys", "I" },
{ &bt_stat_bt_ndata_fid, &bt_stat_class, "bt_ndata", "I" },
+ { &bt_stat_bt_pagecnt_fid, &bt_stat_class, "bt_pagecnt", "I" },
{ &bt_stat_bt_pagesize_fid, &bt_stat_class, "bt_pagesize", "I" },
{ &bt_stat_bt_minkey_fid, &bt_stat_class, "bt_minkey", "I" },
{ &bt_stat_bt_re_len_fid, &bt_stat_class, "bt_re_len", "I" },
@@ -633,6 +658,7 @@ const struct {
{ &h_stat_hash_metaflags_fid, &h_stat_class, "hash_metaflags", "I" },
{ &h_stat_hash_nkeys_fid, &h_stat_class, "hash_nkeys", "I" },
{ &h_stat_hash_ndata_fid, &h_stat_class, "hash_ndata", "I" },
+ { &h_stat_hash_pagecnt_fid, &h_stat_class, "hash_pagecnt", "I" },
{ &h_stat_hash_pagesize_fid, &h_stat_class, "hash_pagesize", "I" },
{ &h_stat_hash_ffactor_fid, &h_stat_class, "hash_ffactor", "I" },
{ &h_stat_hash_buckets_fid, &h_stat_class, "hash_buckets", "I" },
@@ -650,9 +676,9 @@ const struct {
{ &lock_stat_st_maxlockers_fid, &lock_stat_class, "st_maxlockers", "I" },
{ &lock_stat_st_maxobjects_fid, &lock_stat_class, "st_maxobjects", "I" },
{ &lock_stat_st_nmodes_fid, &lock_stat_class, "st_nmodes", "I" },
+ { &lock_stat_st_nlockers_fid, &lock_stat_class, "st_nlockers", "I" },
{ &lock_stat_st_nlocks_fid, &lock_stat_class, "st_nlocks", "I" },
{ &lock_stat_st_maxnlocks_fid, &lock_stat_class, "st_maxnlocks", "I" },
- { &lock_stat_st_nlockers_fid, &lock_stat_class, "st_nlockers", "I" },
{ &lock_stat_st_maxnlockers_fid, &lock_stat_class, "st_maxnlockers", "I" },
{ &lock_stat_st_nobjects_fid, &lock_stat_class, "st_nobjects", "I" },
{ &lock_stat_st_maxnobjects_fid, &lock_stat_class, "st_maxnobjects", "I" },
@@ -667,19 +693,26 @@ const struct {
{ &lock_stat_st_nlocktimeouts_fid, &lock_stat_class, "st_nlocktimeouts", "I" },
{ &lock_stat_st_txntimeout_fid, &lock_stat_class, "st_txntimeout", "I" },
{ &lock_stat_st_ntxntimeouts_fid, &lock_stat_class, "st_ntxntimeouts", "I" },
+ { &lock_stat_st_objs_wait_fid, &lock_stat_class, "st_objs_wait", "I" },
+ { &lock_stat_st_objs_nowait_fid, &lock_stat_class, "st_objs_nowait", "I" },
+ { &lock_stat_st_lockers_wait_fid, &lock_stat_class, "st_lockers_wait", "I" },
+ { &lock_stat_st_lockers_nowait_fid, &lock_stat_class, "st_lockers_nowait", "I" },
+ { &lock_stat_st_locks_wait_fid, &lock_stat_class, "st_locks_wait", "I" },
+ { &lock_stat_st_locks_nowait_fid, &lock_stat_class, "st_locks_nowait", "I" },
{ &lock_stat_st_region_wait_fid, &lock_stat_class, "st_region_wait", "I" },
{ &lock_stat_st_region_nowait_fid, &lock_stat_class, "st_region_nowait", "I" },
+ { &lock_stat_st_hash_len_fid, &lock_stat_class, "st_hash_len", "I" },
{ &lock_stat_st_regsize_fid, &lock_stat_class, "st_regsize", "I" },
{ &log_stat_st_magic_fid, &log_stat_class, "st_magic", "I" },
{ &log_stat_st_version_fid, &log_stat_class, "st_version", "I" },
{ &log_stat_st_mode_fid, &log_stat_class, "st_mode", "I" },
{ &log_stat_st_lg_bsize_fid, &log_stat_class, "st_lg_bsize", "I" },
{ &log_stat_st_lg_size_fid, &log_stat_class, "st_lg_size", "I" },
+ { &log_stat_st_wc_bytes_fid, &log_stat_class, "st_wc_bytes", "I" },
+ { &log_stat_st_wc_mbytes_fid, &log_stat_class, "st_wc_mbytes", "I" },
{ &log_stat_st_record_fid, &log_stat_class, "st_record", "I" },
{ &log_stat_st_w_bytes_fid, &log_stat_class, "st_w_bytes", "I" },
{ &log_stat_st_w_mbytes_fid, &log_stat_class, "st_w_mbytes", "I" },
- { &log_stat_st_wc_bytes_fid, &log_stat_class, "st_wc_bytes", "I" },
- { &log_stat_st_wc_mbytes_fid, &log_stat_class, "st_wc_mbytes", "I" },
{ &log_stat_st_wcount_fid, &log_stat_class, "st_wcount", "I" },
{ &log_stat_st_wcount_fill_fid, &log_stat_class, "st_wcount_fill", "I" },
{ &log_stat_st_rcount_fid, &log_stat_class, "st_rcount", "I" },
@@ -690,9 +723,9 @@ const struct {
{ &log_stat_st_cur_offset_fid, &log_stat_class, "st_cur_offset", "I" },
{ &log_stat_st_disk_file_fid, &log_stat_class, "st_disk_file", "I" },
{ &log_stat_st_disk_offset_fid, &log_stat_class, "st_disk_offset", "I" },
- { &log_stat_st_regsize_fid, &log_stat_class, "st_regsize", "I" },
{ &log_stat_st_maxcommitperflush_fid, &log_stat_class, "st_maxcommitperflush", "I" },
{ &log_stat_st_mincommitperflush_fid, &log_stat_class, "st_mincommitperflush", "I" },
+ { &log_stat_st_regsize_fid, &log_stat_class, "st_regsize", "I" },
{ &mpool_fstat_file_name_fid, &mpool_fstat_class, "file_name", "Ljava/lang/String;" },
{ &mpool_fstat_st_pagesize_fid, &mpool_fstat_class, "st_pagesize", "I" },
{ &mpool_fstat_st_map_fid, &mpool_fstat_class, "st_map", "I" },
@@ -704,11 +737,12 @@ const struct {
{ &mpool_stat_st_gbytes_fid, &mpool_stat_class, "st_gbytes", "I" },
{ &mpool_stat_st_bytes_fid, &mpool_stat_class, "st_bytes", "I" },
{ &mpool_stat_st_ncache_fid, &mpool_stat_class, "st_ncache", "I" },
- { &mpool_stat_st_regsize_fid, &mpool_stat_class, "st_regsize", "I" },
+ { &mpool_stat_st_max_ncache_fid, &mpool_stat_class, "st_max_ncache", "I" },
{ &mpool_stat_st_mmapsize_fid, &mpool_stat_class, "st_mmapsize", "I" },
{ &mpool_stat_st_maxopenfd_fid, &mpool_stat_class, "st_maxopenfd", "I" },
{ &mpool_stat_st_maxwrite_fid, &mpool_stat_class, "st_maxwrite", "I" },
{ &mpool_stat_st_maxwrite_sleep_fid, &mpool_stat_class, "st_maxwrite_sleep", "I" },
+ { &mpool_stat_st_pages_fid, &mpool_stat_class, "st_pages", "I" },
{ &mpool_stat_st_map_fid, &mpool_stat_class, "st_map", "I" },
{ &mpool_stat_st_cache_hit_fid, &mpool_stat_class, "st_cache_hit", "I" },
{ &mpool_stat_st_cache_miss_fid, &mpool_stat_class, "st_cache_miss", "I" },
@@ -718,7 +752,6 @@ const struct {
{ &mpool_stat_st_ro_evict_fid, &mpool_stat_class, "st_ro_evict", "I" },
{ &mpool_stat_st_rw_evict_fid, &mpool_stat_class, "st_rw_evict", "I" },
{ &mpool_stat_st_page_trickle_fid, &mpool_stat_class, "st_page_trickle", "I" },
- { &mpool_stat_st_pages_fid, &mpool_stat_class, "st_pages", "I" },
{ &mpool_stat_st_page_clean_fid, &mpool_stat_class, "st_page_clean", "I" },
{ &mpool_stat_st_page_dirty_fid, &mpool_stat_class, "st_page_dirty", "I" },
{ &mpool_stat_st_hash_buckets_fid, &mpool_stat_class, "st_hash_buckets", "I" },
@@ -740,6 +773,7 @@ const struct {
{ &mpool_stat_st_alloc_pages_fid, &mpool_stat_class, "st_alloc_pages", "I" },
{ &mpool_stat_st_alloc_max_pages_fid, &mpool_stat_class, "st_alloc_max_pages", "I" },
{ &mpool_stat_st_io_wait_fid, &mpool_stat_class, "st_io_wait", "I" },
+ { &mpool_stat_st_regsize_fid, &mpool_stat_class, "st_regsize", "I" },
{ &mutex_stat_st_mutex_align_fid, &mutex_stat_class, "st_mutex_align", "I" },
{ &mutex_stat_st_mutex_tas_spins_fid, &mutex_stat_class, "st_mutex_tas_spins", "I" },
{ &mutex_stat_st_mutex_cnt_fid, &mutex_stat_class, "st_mutex_cnt", "I" },
@@ -762,6 +796,8 @@ const struct {
{ &qam_stat_qs_pgfree_fid, &qam_stat_class, "qs_pgfree", "I" },
{ &qam_stat_qs_first_recno_fid, &qam_stat_class, "qs_first_recno", "I" },
{ &qam_stat_qs_cur_recno_fid, &qam_stat_class, "qs_cur_recno", "I" },
+ { &rep_stat_st_log_queued_fid, &rep_stat_class, "st_log_queued", "I" },
+ { &rep_stat_st_startup_complete_fid, &rep_stat_class, "st_startup_complete", "I" },
{ &rep_stat_st_status_fid, &rep_stat_class, "st_status", "I" },
{ &rep_stat_st_next_lsn_fid, &rep_stat_class, "st_next_lsn", "L" DB_PKG "LogSequenceNumber;" },
{ &rep_stat_st_waiting_lsn_fid, &rep_stat_class, "st_waiting_lsn", "L" DB_PKG "LogSequenceNumber;" },
@@ -780,7 +816,6 @@ const struct {
{ &rep_stat_st_gen_fid, &rep_stat_class, "st_gen", "I" },
{ &rep_stat_st_egen_fid, &rep_stat_class, "st_egen", "I" },
{ &rep_stat_st_log_duplicated_fid, &rep_stat_class, "st_log_duplicated", "I" },
- { &rep_stat_st_log_queued_fid, &rep_stat_class, "st_log_queued", "I" },
{ &rep_stat_st_log_queued_max_fid, &rep_stat_class, "st_log_queued_max", "I" },
{ &rep_stat_st_log_queued_total_fid, &rep_stat_class, "st_log_queued_total", "I" },
{ &rep_stat_st_log_records_fid, &rep_stat_class, "st_log_records", "I" },
@@ -799,8 +834,8 @@ const struct {
{ &rep_stat_st_pg_duplicated_fid, &rep_stat_class, "st_pg_duplicated", "I" },
{ &rep_stat_st_pg_records_fid, &rep_stat_class, "st_pg_records", "I" },
{ &rep_stat_st_pg_requested_fid, &rep_stat_class, "st_pg_requested", "I" },
- { &rep_stat_st_startup_complete_fid, &rep_stat_class, "st_startup_complete", "I" },
{ &rep_stat_st_txns_applied_fid, &rep_stat_class, "st_txns_applied", "I" },
+ { &rep_stat_st_startsync_delayed_fid, &rep_stat_class, "st_startsync_delayed", "I" },
{ &rep_stat_st_elections_fid, &rep_stat_class, "st_elections", "I" },
{ &rep_stat_st_elections_won_fid, &rep_stat_class, "st_elections_won", "I" },
{ &rep_stat_st_election_cur_winner_fid, &rep_stat_class, "st_election_cur_winner", "I" },
@@ -814,6 +849,11 @@ const struct {
{ &rep_stat_st_election_votes_fid, &rep_stat_class, "st_election_votes", "I" },
{ &rep_stat_st_election_sec_fid, &rep_stat_class, "st_election_sec", "I" },
{ &rep_stat_st_election_usec_fid, &rep_stat_class, "st_election_usec", "I" },
+ { &repmgr_stat_st_perm_failed_fid, &repmgr_stat_class, "st_perm_failed", "I" },
+ { &repmgr_stat_st_msgs_queued_fid, &repmgr_stat_class, "st_msgs_queued", "I" },
+ { &repmgr_stat_st_msgs_dropped_fid, &repmgr_stat_class, "st_msgs_dropped", "I" },
+ { &repmgr_stat_st_connection_drop_fid, &repmgr_stat_class, "st_connection_drop", "I" },
+ { &repmgr_stat_st_connect_fail_fid, &repmgr_stat_class, "st_connect_fail", "I" },
{ &seq_stat_st_wait_fid, &seq_stat_class, "st_wait", "I" },
{ &seq_stat_st_nowait_fid, &seq_stat_class, "st_nowait", "I" },
{ &seq_stat_st_current_fid, &seq_stat_class, "st_current", "J" },
@@ -823,6 +863,7 @@ const struct {
{ &seq_stat_st_max_fid, &seq_stat_class, "st_max", "J" },
{ &seq_stat_st_cache_size_fid, &seq_stat_class, "st_cache_size", "I" },
{ &seq_stat_st_flags_fid, &seq_stat_class, "st_flags", "I" },
+ { &txn_stat_st_nrestores_fid, &txn_stat_class, "st_nrestores", "I" },
{ &txn_stat_st_last_ckp_fid, &txn_stat_class, "st_last_ckp", "L" DB_PKG "LogSequenceNumber;" },
{ &txn_stat_st_time_ckp_fid, &txn_stat_class, "st_time_ckp", "J" },
{ &txn_stat_st_last_txnid_fid, &txn_stat_class, "st_last_txnid", "I" },
@@ -832,7 +873,6 @@ const struct {
{ &txn_stat_st_ncommits_fid, &txn_stat_class, "st_ncommits", "I" },
{ &txn_stat_st_nactive_fid, &txn_stat_class, "st_nactive", "I" },
{ &txn_stat_st_nsnapshot_fid, &txn_stat_class, "st_nsnapshot", "I" },
- { &txn_stat_st_nrestores_fid, &txn_stat_class, "st_nrestores", "I" },
{ &txn_stat_st_maxnactive_fid, &txn_stat_class, "st_maxnactive", "I" },
{ &txn_stat_st_maxnsnapshot_fid, &txn_stat_class, "st_maxnsnapshot", "I" },
{ &txn_stat_st_txnarray_fid, &txn_stat_class, "st_txnarray", "[L" DB_PKG "TransactionStats$Active;" },
@@ -854,8 +894,7 @@ const struct {
{ &rephost_port_fid, &rephost_class, "port", "I" },
{ &rephost_host_fid, &rephost_class, "host", "Ljava/lang/String;" },
{ &rephost_eid_fid, &rephost_class, "eid", "I" },
- { &rephost_status_fid, &rephost_class, "status", "I" },
- { &rep_processmsg_envid_fid, &rep_processmsg_class, "envid", "I" }
+ { &rephost_status_fid, &rephost_class, "status", "I" }
};
const struct {
@@ -872,6 +911,8 @@ const struct {
{ &dbtxn_construct, &dbtxn_class, "<init>", "(JZ)V" },
{ &bt_stat_construct, &bt_stat_class, "<init>", "()V" },
+ { &get_err_msg_method, &dbenv_class, "get_err_msg",
+ "(Ljava/lang/String;)Ljava/lang/String;" },
{ &h_stat_construct, &h_stat_class, "<init>", "()V" },
{ &lock_stat_construct, &lock_stat_class, "<init>", "()V" },
{ &log_stat_construct, &log_stat_class, "<init>", "()V" },
@@ -880,6 +921,7 @@ const struct {
{ &mutex_stat_construct, &mutex_stat_class, "<init>", "()V" },
{ &qam_stat_construct, &qam_stat_class, "<init>", "()V" },
{ &rep_stat_construct, &rep_stat_class, "<init>", "()V" },
+ { &repmgr_stat_construct, &repmgr_stat_class, "<init>", "()V" },
{ &seq_stat_construct, &seq_stat_class, "<init>", "()V" },
{ &txn_stat_construct, &txn_stat_class, "<init>", "()V" },
{ &txn_active_construct, &txn_active_class, "<init>", "()V" },
@@ -905,6 +947,10 @@ const struct {
"(Ljava/lang/String;IL" DB_PKG "internal/DbEnv;)V" },
{ &repjoinfailex_construct, &repjoinfailex_class, "<init>",
"(Ljava/lang/String;IL" DB_PKG "internal/DbEnv;)V" },
+ { &repleaseexpiredex_construct, &repleaseexpiredex_class, "<init>",
+ "(Ljava/lang/String;IL" DB_PKG "internal/DbEnv;)V" },
+ { &repleasetimeoutex_construct, &repleasetimeoutex_class, "<init>",
+ "(Ljava/lang/String;IL" DB_PKG "internal/DbEnv;)V" },
{ &replockoutex_construct, &replockoutex_class, "<init>",
"(Ljava/lang/String;IL" DB_PKG "internal/DbEnv;)V" },
{ &repunavailex_construct, &repunavailex_class, "<init>",
@@ -924,8 +970,22 @@ const struct {
{ &app_dispatch_method, &dbenv_class, "handle_app_dispatch",
"(L" DB_PKG "DatabaseEntry;L" DB_PKG "LogSequenceNumber;I)I" },
- { &event_notify_method, &dbenv_class, "handle_event_notify",
- "(I)I" },
+ { &panic_event_notify_method, &dbenv_class, "handle_panic_event_notify",
+ "()V" },
+ { &rep_client_event_notify_method, &dbenv_class,
+ "handle_rep_client_event_notify", "()V" },
+ { &rep_elected_event_notify_method, &dbenv_class,
+ "handle_rep_elected_event_notify" ,"()V" },
+ { &rep_master_event_notify_method, &dbenv_class,
+ "handle_rep_master_event_notify", "()V" },
+ { &rep_new_master_event_notify_method, &dbenv_class,
+ "handle_rep_new_master_event_notify", "(I)V" },
+ { &rep_perm_failed_event_notify_method, &dbenv_class,
+ "handle_rep_perm_failed_event_notify", "()V" },
+ { &rep_startup_done_event_notify_method, &dbenv_class,
+ "handle_rep_startup_done_event_notify", "()V" },
+ { &write_failed_event_notify_method, &dbenv_class,
+ "handle_write_failed_event_notify", "(I)V" },
{ &env_feedback_method, &dbenv_class, "handle_env_feedback", "(II)V" },
{ &errcall_method, &dbenv_class, "handle_error",
"(Ljava/lang/String;)V" },
@@ -946,10 +1006,12 @@ const struct {
{ &db_feedback_method, &db_class, "handle_db_feedback", "(II)V" },
{ &dup_compare_method, &db_class, "handle_dup_compare",
"([B[B)I" },
+ { &h_compare_method, &db_class, "handle_h_compare",
+ "([B[B)I" },
{ &h_hash_method, &db_class, "handle_h_hash", "([BI)I" },
{ &seckey_create_method, &db_class, "handle_seckey_create",
- "(L" DB_PKG "DatabaseEntry;L" DB_PKG "DatabaseEntry;L"
- DB_PKG "DatabaseEntry;)I" },
+ "(L" DB_PKG "DatabaseEntry;L" DB_PKG "DatabaseEntry;)[L"
+ DB_PKG "DatabaseEntry;" },
{ &outputstream_write_method, &outputstream_class, "write", "([BII)V" }
};
@@ -1074,6 +1136,12 @@ static jthrowable __dbj_get_except(JNIEnv *jenv,
jmsg = (*jenv)->NewStringUTF(jenv, msg);
+ /* Retrieve error message logged by DB */
+ if (jdbenv != NULL) {
+ jmsg = (jstring) (*jenv)->CallNonvirtualObjectMethod(jenv,
+ jdbenv, dbenv_class, get_err_msg_method, jmsg);
+ }
+
switch (err) {
case EINVAL:
return (jthrowable)(*jenv)->NewObject(jenv,
@@ -1111,6 +1179,16 @@ static jthrowable __dbj_get_except(JNIEnv *jenv,
repjoinfailex_class, repjoinfailex_construct,
jmsg, err, jdbenv);
+ case DB_REP_LEASE_EXPIRED:
+ return (jthrowable)(*jenv)->NewObject(jenv,
+ repleaseexpiredex_class, repleaseexpiredex_construct,
+ jmsg, err, jdbenv);
+
+ case DB_REP_LEASE_TIMEOUT:
+ return (jthrowable)(*jenv)->NewObject(jenv,
+ repleasetimeoutex_class, repleasetimeoutex_construct,
+ jmsg, err, jdbenv);
+
case DB_REP_LOCKOUT:
return (jthrowable)(*jenv)->NewObject(jenv,
replockoutex_class, replockoutex_construct,
@@ -1752,21 +1830,49 @@ static void __dbj_event_notify(DB_ENV *dbenv, u_int32_t event_id, void * info)
{
JNIEnv *jenv = __dbj_get_jnienv();
jobject jdbenv = (jobject)DB_ENV_INTERNAL(dbenv);
- int ret;
- COMPQUIET(info, NULL);
-
- if(jdbenv == NULL)
+ if (jdbenv == NULL)
return ;
- ret = (*jenv)->CallNonvirtualIntMethod(jenv, jdbenv, dbenv_class,
- event_notify_method, event_id);
-
- if((*jenv)->ExceptionOccurred(jenv)) {
- /* The exception will be thrown, so this could be any error. */
- ret = EINVAL;
+ switch (event_id) {
+ case DB_EVENT_PANIC:
+ (*jenv)->CallNonvirtualVoidMethod(jenv, jdbenv,
+ dbenv_class, panic_event_notify_method);
+ break;
+ case DB_EVENT_REP_CLIENT:
+ (*jenv)->CallNonvirtualVoidMethod(jenv, jdbenv,
+ dbenv_class, rep_client_event_notify_method);
+ break;
+ case DB_EVENT_REP_ELECTED:
+ (*jenv)->CallNonvirtualVoidMethod(jenv, jdbenv,
+ dbenv_class, rep_elected_event_notify_method);
+ break;
+ case DB_EVENT_REP_MASTER:
+ (*jenv)->CallNonvirtualVoidMethod(jenv, jdbenv,
+ dbenv_class, rep_master_event_notify_method);
+ break;
+ case DB_EVENT_REP_NEWMASTER:
+ (*jenv)->CallNonvirtualVoidMethod(jenv, jdbenv,
+ dbenv_class, rep_new_master_event_notify_method,
+ *(int*)info);
+ break;
+ case DB_EVENT_REP_PERM_FAILED:
+ (*jenv)->CallNonvirtualVoidMethod(jenv, jdbenv,
+ dbenv_class, rep_perm_failed_event_notify_method);
+ break;
+ case DB_EVENT_REP_STARTUPDONE:
+ (*jenv)->CallNonvirtualVoidMethod(jenv, jdbenv,
+ dbenv_class, rep_startup_done_event_notify_method);
+ break;
+ case DB_EVENT_WRITE_FAILED:
+ (*jenv)->CallNonvirtualVoidMethod(jenv, jdbenv,
+ dbenv_class, write_failed_event_notify_method,
+ *(int*)info);
+ break;
+ default:
+ dbenv->errx(dbenv, "Unhandled event callback in the Java API");
+ DB_ASSERT(dbenv, 0);
}
- return ;
}
static int __dbj_rep_transport(DB_ENV *dbenv,
@@ -1818,8 +1924,11 @@ static int __dbj_seckey_create(DB *db,
JNIEnv *jenv = __dbj_get_jnienv();
jobject jdb = (jobject)DB_INTERNAL(db);
jobject jkey, jdata, jresult;
+ jobjectArray jskeys;
+ jsize i, num_skeys;
jbyteArray jkeyarr, jdataarr;
DBT_LOCKED lresult;
+ DBT *tresult;
int ret;
if (jdb == NULL)
@@ -1831,8 +1940,7 @@ static int __dbj_seckey_create(DB *db,
jdata = (data->app_data != NULL) ?
((DBT_LOCKED *)data->app_data)->jdbt :
(*jenv)->NewObject(jenv, dbt_class, dbt_construct);
- jresult = (*jenv)->NewObject(jenv, dbt_class, dbt_construct);
- if (jkey == NULL || jdata == NULL || jresult == NULL)
+ if (jkey == NULL || jdata == NULL)
return (ENOMEM); /* An exception is pending */
if (key->app_data == NULL) {
@@ -1846,11 +1954,25 @@ static int __dbj_seckey_create(DB *db,
return (ENOMEM); /* An exception is pending */
}
- ret = (int)(*jenv)->CallNonvirtualIntMethod(jenv, jdb, db_class,
- seckey_create_method, jkey, jdata, jresult);
+ jskeys = (jobjectArray)(*jenv)->CallNonvirtualObjectMethod(jenv,
+ jdb, db_class, seckey_create_method, jkey, jdata);
- if (ret != 0)
+ if (jskeys == NULL ||
+ (num_skeys = (*jenv)->GetArrayLength(jenv, jskeys)) == 0) {
+ ret = DB_DONOTINDEX;
goto err;
+ } else if (num_skeys == 1) {
+ memset(result, 0, sizeof (DBT));
+ tresult = result;
+ } else {
+ if ((ret = __os_umalloc(db->dbenv,
+ num_skeys * sizeof (DBT), &result->data)) != 0)
+ goto err;
+ memset(result->data, 0, num_skeys * sizeof (DBT));
+ result->size = num_skeys;
+ F_SET(result, DB_DBT_APPMALLOC | DB_DBT_MULTIPLE);
+ tresult = (DBT *)result->data;
+ }
if ((*jenv)->ExceptionOccurred(jenv)) {
/* The exception will be thrown, so this could be any error. */
@@ -1858,23 +1980,30 @@ static int __dbj_seckey_create(DB *db,
goto err;
}
- if ((ret = __dbj_dbt_copyin(jenv, &lresult, NULL, jresult, 0)) != 0)
- goto err;
+ for (i = 0; i < num_skeys; i++, tresult++) {
+ jresult = (*jenv)->GetObjectArrayElement(jenv, jskeys, i);
- if (lresult.dbt.size != 0) {
- /* If there's data, we need to take a copy of it. */
- memset(result, 0, sizeof (DBT));
- result->size = lresult.dbt.size;
if ((ret =
- __os_umalloc(NULL, result->size, &result->data)) != 0)
+ __dbj_dbt_copyin(jenv, &lresult, NULL, jresult, 0)) != 0)
goto err;
- if ((ret = __dbj_dbt_memcopy(&lresult.dbt, 0,
- result->data, result->size,
- DB_USERCOPY_GETDATA)) != 0)
- goto err;
- __dbj_dbt_release(jenv, jresult, &lresult.dbt, &lresult);
- (*jenv)->DeleteLocalRef(jenv, lresult.jarr);
- F_SET(result, DB_DBT_APPMALLOC);
+
+ if (lresult.dbt.size != 0) {
+ /* If there's data, we need to take a copy of it. */
+ tresult->size = lresult.dbt.size;
+ if ((ret = __os_umalloc(NULL,
+ tresult->size, &tresult->data)) != 0)
+ goto err;
+ if ((ret = __dbj_dbt_memcopy(&lresult.dbt, 0,
+ tresult->data, tresult->size,
+ DB_USERCOPY_GETDATA)) != 0)
+ goto err;
+ __dbj_dbt_release(jenv,
+ jresult, &lresult.dbt, &lresult);
+ (*jenv)->DeleteLocalRef(jenv, lresult.jarr);
+ F_SET(tresult, DB_DBT_APPMALLOC);
+ }
+
+ (*jenv)->DeleteLocalRef(jenv, jresult);
}
err: if (key->app_data == NULL) {
@@ -1885,7 +2014,6 @@ err: if (key->app_data == NULL) {
(*jenv)->DeleteLocalRef(jenv, jdataarr);
(*jenv)->DeleteLocalRef(jenv, jdata);
}
- (*jenv)->DeleteLocalRef(jenv, jresult);
return (ret);
}
@@ -1948,7 +2076,11 @@ err: (*jenv)->DeleteLocalRef(jenv, jdbtarr);
return (ret);
}
-static int __dbj_bt_compare(DB *db, const DBT *dbt1, const DBT *dbt2)
+/*
+ * Shared by __dbj_bt_compare and __dbj_h_compare
+ */
+static int __dbj_am_compare(DB *db, const DBT *dbt1, const DBT *dbt2,
+ jmethodID compare_method)
{
JNIEnv *jenv = __dbj_get_jnienv();
jobject jdb = (jobject)DB_INTERNAL(db);
@@ -1979,7 +2111,7 @@ static int __dbj_bt_compare(DB *db, const DBT *dbt1, const DBT *dbt2)
}
ret = (int)(*jenv)->CallNonvirtualIntMethod(jenv, jdb, db_class,
- bt_compare_method, jdbtarr1, jdbtarr2);
+ compare_method, jdbtarr1, jdbtarr2);
if ((*jenv)->ExceptionOccurred(jenv)) {
/* The exception will be thrown, so this could be any error. */
@@ -1994,6 +2126,11 @@ static int __dbj_bt_compare(DB *db, const DBT *dbt1, const DBT *dbt2)
return (ret);
}
+static int __dbj_bt_compare(DB *db, const DBT *dbt1, const DBT *dbt2)
+{
+ return __dbj_am_compare(db, dbt1, dbt2, bt_compare_method);
+}
+
static size_t __dbj_bt_prefix(DB *db, const DBT *dbt1, const DBT *dbt2)
{
JNIEnv *jenv = __dbj_get_jnienv();
@@ -2008,7 +2145,8 @@ static size_t __dbj_bt_prefix(DB *db, const DBT *dbt1, const DBT *dbt2)
if (dbt1->app_data != NULL)
jdbt1 = ((DBT_LOCKED *)dbt1->app_data)->jdbt;
else {
- if ((jdbt1 = (*jenv)->NewObject(jenv, dbt_class, dbt_construct)) == NULL)
+ if ((jdbt1 =
+ (*jenv)->NewObject(jenv, dbt_class, dbt_construct)) == NULL)
return (ENOMEM); /* An exception is pending */
__dbj_dbt_copyout(jenv, dbt1, &jdbtarr1, jdbt1);
if (jdbtarr1 == NULL)
@@ -2018,7 +2156,8 @@ static size_t __dbj_bt_prefix(DB *db, const DBT *dbt1, const DBT *dbt2)
if (dbt2->app_data != NULL)
jdbt2 = ((DBT_LOCKED *)dbt2->app_data)->jdbt;
else {
- if ((jdbt2 = (*jenv)->NewObject(jenv, dbt_class, dbt_construct)) == NULL)
+ if ((jdbt2 =
+ (*jenv)->NewObject(jenv, dbt_class, dbt_construct)) == NULL)
return (ENOMEM); /* An exception is pending */
__dbj_dbt_copyout(jenv, dbt2, &jdbtarr2, jdbt2);
if (jdbtarr2 == NULL)
@@ -2086,6 +2225,11 @@ static void __dbj_db_feedback(DB *db, int opcode, int percent)
db_feedback_method, opcode, percent);
}
+static int __dbj_h_compare(DB *db, const DBT *dbt1, const DBT *dbt2)
+{
+ return __dbj_am_compare(db, dbt1, dbt2, h_compare_method);
+}
+
static u_int32_t __dbj_h_hash(DB *db, const void *data, u_int32_t len)
{
JNIEnv *jenv = __dbj_get_jnienv();
@@ -2232,8 +2376,8 @@ SWIGINTERN void Db_err(struct Db *self,int error,char const *message){
SWIGINTERN void Db_errx(struct Db *self,char const *message){
self->errx(self, message);
}
-SWIGINTERN int_bool Db_get_transactional(struct Db *self){
- return self->get_transactional(self);
+SWIGINTERN int Db_exists(struct Db *self,DB_TXN *txnid,DBT *key,u_int32_t flags){
+ return self->exists(self, txnid, key, flags);
}
SWIGINTERN int Db_get(struct Db *self,DB_TXN *txnid,DBT *key,DBT *data,u_int32_t flags){
return self->get(self, txnid, key, data, flags);
@@ -2312,6 +2456,11 @@ SWIGINTERN int Db_get_re_delim(struct Db *self){
errno = self->get_re_delim(self, &ret);
return ret;
}
+SWIGINTERN DB_CACHE_PRIORITY Db_get_priority(struct Db *self){
+ DB_CACHE_PRIORITY ret;
+ errno = self->get_priority(self, &ret);
+ return ret;
+ }
SWIGINTERN u_int32_t Db_get_re_len(struct Db *self){
u_int32_t ret = 0;
errno = self->get_re_len(self, &ret);
@@ -2332,6 +2481,12 @@ SWIGINTERN u_int32_t Db_get_q_extentsize(struct Db *self){
errno = self->get_q_extentsize(self, &ret);
return ret;
}
+SWIGINTERN int_bool Db_get_multiple(struct Db *self){
+ return self->get_multiple(self);
+ }
+SWIGINTERN int_bool Db_get_transactional(struct Db *self){
+ return self->get_transactional(self);
+ }
SWIGINTERN DBTYPE Db_get_type(struct Db *self){
DBTYPE type = (DBTYPE)0;
errno = self->get_type(self, &type);
@@ -2390,6 +2545,9 @@ SWIGINTERN db_ret_t Db_set_feedback(struct Db *self,void (*db_feedback_fcn)(DB *
SWIGINTERN db_ret_t Db_set_flags(struct Db *self,u_int32_t flags){
return self->set_flags(self, flags);
}
+SWIGINTERN db_ret_t Db_set_h_compare(struct Db *self,int (*h_compare_fcn)(DB *,DBT const *,DBT const *)){
+ return self->set_h_compare(self, h_compare_fcn);
+ }
SWIGINTERN db_ret_t Db_set_h_ffactor(struct Db *self,u_int32_t h_ffactor){
return self->set_h_ffactor(self, h_ffactor);
}
@@ -2405,6 +2563,9 @@ SWIGINTERN db_ret_t Db_set_lorder(struct Db *self,int lorder){
SWIGINTERN db_ret_t Db_set_pagesize(struct Db *self,u_int32_t pagesize){
return self->set_pagesize(self, pagesize);
}
+SWIGINTERN db_ret_t Db_set_priority(struct Db *self,DB_CACHE_PRIORITY priority){
+ return self->set_priority(self, priority);
+ }
SWIGINTERN db_ret_t Db_set_re_delim(struct Db *self,int re_delim){
return self->set_re_delim(self, re_delim);
}
@@ -2452,29 +2613,37 @@ SWIGINTERN int_bool Db_verify(struct Db *self,char const *file,char const *datab
return 1;
}
SWIGINTERN db_ret_t Dbc_close(struct Dbc *self){
- return self->c_close(self);
+ return self->close(self);
}
SWIGINTERN db_recno_t Dbc_count(struct Dbc *self,u_int32_t flags){
db_recno_t count = 0;
- errno = self->c_count(self, &count, flags);
+ errno = self->count(self, &count, flags);
return count;
}
SWIGINTERN int Dbc_del(struct Dbc *self,u_int32_t flags){
- return self->c_del(self, flags);
+ return self->del(self, flags);
}
SWIGINTERN DBC *Dbc_dup(struct Dbc *self,u_int32_t flags){
DBC *newcurs = NULL;
- errno = self->c_dup(self, &newcurs, flags);
+ errno = self->dup(self, &newcurs, flags);
return newcurs;
}
SWIGINTERN int Dbc_get(struct Dbc *self,DBT *key,DBT *data,u_int32_t flags){
- return self->c_get(self, key, data, flags);
+ return self->get(self, key, data, flags);
+ }
+SWIGINTERN DB_CACHE_PRIORITY Dbc_get_priority(struct Dbc *self){
+ DB_CACHE_PRIORITY ret;
+ errno = self->get_priority(self, &ret);
+ return ret;
}
SWIGINTERN int Dbc_pget(struct Dbc *self,DBT *key,DBT *pkey,DBT *data,u_int32_t flags){
- return self->c_pget(self, key, pkey, data, flags);
+ return self->pget(self, key, pkey, data, flags);
}
SWIGINTERN int Dbc_put(struct Dbc *self,DBT *key,DBT *data,u_int32_t flags){
- return self->c_put(self, key, data, flags);
+ return self->put(self, key, data, flags);
+ }
+SWIGINTERN db_ret_t Dbc_set_priority(struct Dbc *self,DB_CACHE_PRIORITY priority){
+ return self->set_priority(self, priority);
}
SWIGINTERN struct DbEnv *new_DbEnv(u_int32_t flags){
DB_ENV *self = NULL;
@@ -2564,6 +2733,11 @@ SWIGINTERN db_ret_t DbEnv_set_cachesize(struct DbEnv *self,jlong bytes,int ncach
(u_int32_t)(bytes / GIGABYTE),
(u_int32_t)(bytes % GIGABYTE), ncache);
}
+SWIGINTERN db_ret_t DbEnv_set_cache_max(struct DbEnv *self,jlong bytes){
+ return self->set_cache_max(self,
+ (u_int32_t)(bytes / GIGABYTE),
+ (u_int32_t)(bytes % GIGABYTE));
+ }
SWIGINTERN db_ret_t DbEnv_set_data_dir(struct DbEnv *self,char const *dir){
return self->set_data_dir(self, dir);
}
@@ -2585,7 +2759,7 @@ SWIGINTERN db_ret_t DbEnv_set_feedback(struct DbEnv *self,void (*env_feedback_fc
SWIGINTERN db_ret_t DbEnv_set_mp_max_openfd(struct DbEnv *self,int maxopenfd){
return self->set_mp_max_openfd(self, maxopenfd);
}
-SWIGINTERN db_ret_t DbEnv_set_mp_max_write(struct DbEnv *self,int maxwrite,int maxwrite_sleep){
+SWIGINTERN db_ret_t DbEnv_set_mp_max_write(struct DbEnv *self,int maxwrite,db_timeout_t maxwrite_sleep){
return self->set_mp_max_write(self, maxwrite, maxwrite_sleep);
}
SWIGINTERN db_ret_t DbEnv_set_mp_mmapsize(struct DbEnv *self,size_t mp_mmapsize){
@@ -2777,20 +2951,27 @@ SWIGINTERN int DbEnv_get_cachesize_ncache(struct DbEnv *self){
errno = self->get_cachesize(self, NULL, NULL, &ret);
return ret;
}
+SWIGINTERN jlong DbEnv_get_cache_max(struct DbEnv *self){
+ u_int32_t gbytes, bytes;
+ errno = self->get_cache_max(self, &gbytes, &bytes);
+ return (jlong)gbytes * GIGABYTE + bytes;
+ }
SWIGINTERN int DbEnv_get_mp_max_openfd(struct DbEnv *self){
int ret;
errno = self->get_mp_max_openfd(self, &ret);
return ret;
}
SWIGINTERN int DbEnv_get_mp_max_write(struct DbEnv *self){
- int ret, junk;
- errno = self->get_mp_max_write(self, &ret, &junk);
- return ret;
+ int maxwrite;
+ db_timeout_t sleep;
+ errno = self->get_mp_max_write(self, &maxwrite, &sleep);
+ return maxwrite;
}
-SWIGINTERN int DbEnv_get_mp_max_write_sleep(struct DbEnv *self){
- int ret, junk;
- errno = self->get_mp_max_write(self, &junk, &ret);
- return ret;
+SWIGINTERN db_timeout_t DbEnv_get_mp_max_write_sleep(struct DbEnv *self){
+ int maxwrite;
+ db_timeout_t sleep;
+ errno = self->get_mp_max_write(self, &maxwrite, &sleep);
+ return sleep;
}
SWIGINTERN size_t DbEnv_get_mp_mmapsize(struct DbEnv *self){
size_t ret;
@@ -2900,12 +3081,10 @@ SWIGINTERN jlong DbEnv_rep_get_limit(struct DbEnv *self){
errno = self->rep_get_limit(self, &gbytes, &bytes);
return (jlong)gbytes * GIGABYTE + bytes;
}
-SWIGINTERN int DbEnv_rep_elect(struct DbEnv *self,int nsites,int nvotes,u_int32_t flags){
- int id;
- errno = self->rep_elect(self, nsites, nvotes, &id, flags);
- return id;
+SWIGINTERN db_ret_t DbEnv_rep_elect(struct DbEnv *self,int nsites,int nvotes,u_int32_t flags){
+ return self->rep_elect(self, nsites, nvotes, flags);
}
-SWIGINTERN int DbEnv_rep_process_message(struct DbEnv *self,DBT *control,DBT *rec,int *envid,DB_LSN *ret_lsn){
+SWIGINTERN int DbEnv_rep_process_message(struct DbEnv *self,DBT *control,DBT *rec,int envid,DB_LSN *ret_lsn){
return self->rep_process_message(self, control, rec, envid,
ret_lsn);
}
@@ -2915,6 +3094,9 @@ SWIGINTERN db_ret_t DbEnv_rep_flush(struct DbEnv *self){
SWIGINTERN db_ret_t DbEnv_rep_set_config(struct DbEnv *self,u_int32_t which,int_bool onoff){
return self->rep_set_config(self, which, onoff);
}
+SWIGINTERN db_ret_t DbEnv_rep_set_lease(struct DbEnv *self,u_int32_t clock_scale_factor,u_int32_t flags){
+ return self->rep_set_lease(self, clock_scale_factor, flags);
+ }
SWIGINTERN db_ret_t DbEnv_rep_start(struct DbEnv *self,DBT *cdata,u_int32_t flags){
return self->rep_start(self, cdata, flags);
}
@@ -2991,6 +3173,11 @@ SWIGINTERN struct __db_repmgr_sites DbEnv_repmgr_site_list(struct DbEnv *self){
SWIGINTERN db_ret_t DbEnv_repmgr_start(struct DbEnv *self,int nthreads,u_int32_t flags){
return self->repmgr_start(self, nthreads, flags);
}
+SWIGINTERN DB_REPMGR_STAT *DbEnv_repmgr_stat(struct DbEnv *self,u_int32_t flags){
+ DB_REPMGR_STAT *statp = NULL;
+ errno = self->repmgr_stat(self, &statp, flags);
+ return statp;
+ }
SWIGINTERN char const *DbEnv_strerror(int error){
return db_strerror(error);
}
@@ -3015,6 +3202,11 @@ SWIGINTERN db_ret_t DbLogc_close(struct DbLogc *self,u_int32_t flags){
SWIGINTERN int DbLogc_get(struct DbLogc *self,DB_LSN *lsn,DBT *data,u_int32_t flags){
return self->get(self, lsn, data, flags);
}
+SWIGINTERN u_int32_t DbLogc_version(struct DbLogc *self,u_int32_t flags){
+ u_int32_t result;
+ errno = self->version(self, &result, flags);
+ return result;
+ }
SWIGINTERN DB_CACHE_PRIORITY DbMpoolFile_get_priority(struct DbMpoolFile *self){
DB_CACHE_PRIORITY ret;
errno = self->get_priority(self, &ret);
@@ -3158,7 +3350,7 @@ JNIEXPORT jlong JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_new_1Db(JNIEn
}
-JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1associate(JNIEnv *jenv, jclass jcls, jlong jarg1, jlong jarg2, jlong jarg3, jobject jarg4, jint jarg5) {
+JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1associate(JNIEnv *jenv, jclass jcls, jlong jarg1, jlong jarg2, jlong jarg3, jboolean jarg4, jint jarg5) {
struct Db *arg1 = (struct Db *) 0 ;
DB_TXN *arg2 = (DB_TXN *) 0 ;
DB *arg3 = (DB *) 0 ;
@@ -3172,7 +3364,7 @@ JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1associate(
arg2 = *(DB_TXN **)&jarg2;
arg3 = *(DB **)&jarg3;
- arg4 = (jarg4 == NULL) ? NULL : __dbj_seckey_create;
+ arg4 = (jarg4 == JNI_TRUE) ? __dbj_seckey_create : NULL;
arg5 = (u_int32_t)jarg5;
@@ -3385,21 +3577,37 @@ JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1errx(JNIEn
}
-JNIEXPORT jboolean JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1get_1transactional(JNIEnv *jenv, jclass jcls, jlong jarg1) {
- jboolean jresult = 0 ;
+JNIEXPORT jint JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1exists(JNIEnv *jenv, jclass jcls, jlong jarg1, jlong jarg2, jobject jarg3, jint jarg4) {
+ jint jresult = 0 ;
struct Db *arg1 = (struct Db *) 0 ;
- int_bool result;
+ DB_TXN *arg2 = (DB_TXN *) 0 ;
+ DBT *arg3 = (DBT *) 0 ;
+ u_int32_t arg4 ;
+ int result;
+ DBT_LOCKED ldbt3 ;
(void)jenv;
(void)jcls;
arg1 = *(struct Db **)&jarg1;
+ arg2 = *(DB_TXN **)&jarg2;
+
+ if (__dbj_dbt_copyin(jenv, &ldbt3, &arg3, jarg3, 0) != 0) {
+ return 0; /* An exception will be pending. */
+ }
+ arg4 = (u_int32_t)jarg4;
if (jarg1 == 0) {
__dbj_throw(jenv, EINVAL, "call on closed handle", NULL, NULL);
return 0;
}
- result = (int_bool)Db_get_transactional(arg1);
- jresult = (result) ? JNI_TRUE : JNI_FALSE;
+
+ result = (int)Db_exists(arg1,arg2,arg3,arg4);
+ if (!DB_RETOK_EXISTS(result)) {
+ __dbj_throw(jenv, result, NULL, NULL, DB2JDBENV);
+ }
+
+ jresult = (jint)result;
+ __dbj_dbt_release(jenv, jarg3, arg3, &ldbt3);
return jresult;
}
@@ -3821,6 +4029,31 @@ JNIEXPORT jint JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1get_1re_1d
}
+JNIEXPORT jint JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1get_1priority(JNIEnv *jenv, jclass jcls, jlong jarg1) {
+ jint jresult = 0 ;
+ struct Db *arg1 = (struct Db *) 0 ;
+ DB_CACHE_PRIORITY result;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = *(struct Db **)&jarg1;
+
+ if (jarg1 == 0) {
+ __dbj_throw(jenv, EINVAL, "call on closed handle", NULL, NULL);
+ return 0;
+ }
+
+ errno = 0;
+ result = (DB_CACHE_PRIORITY)Db_get_priority(arg1);
+ if (!DB_RETOK_STD(errno)) {
+ __dbj_throw(jenv, errno, NULL, NULL, DB2JDBENV);
+ }
+
+ jresult = (jint)result;
+ return jresult;
+}
+
+
JNIEXPORT jint JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1get_1re_1len(JNIEnv *jenv, jclass jcls, jlong jarg1) {
jint jresult = 0 ;
struct Db *arg1 = (struct Db *) 0 ;
@@ -3921,6 +4154,44 @@ JNIEXPORT jint JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1get_1q_1ex
}
+JNIEXPORT jboolean JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1get_1multiple(JNIEnv *jenv, jclass jcls, jlong jarg1) {
+ jboolean jresult = 0 ;
+ struct Db *arg1 = (struct Db *) 0 ;
+ int_bool result;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = *(struct Db **)&jarg1;
+
+ if (jarg1 == 0) {
+ __dbj_throw(jenv, EINVAL, "call on closed handle", NULL, NULL);
+ return 0;
+ }
+ result = (int_bool)Db_get_multiple(arg1);
+ jresult = (result) ? JNI_TRUE : JNI_FALSE;
+ return jresult;
+}
+
+
+JNIEXPORT jboolean JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1get_1transactional(JNIEnv *jenv, jclass jcls, jlong jarg1) {
+ jboolean jresult = 0 ;
+ struct Db *arg1 = (struct Db *) 0 ;
+ int_bool result;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = *(struct Db **)&jarg1;
+
+ if (jarg1 == 0) {
+ __dbj_throw(jenv, EINVAL, "call on closed handle", NULL, NULL);
+ return 0;
+ }
+ result = (int_bool)Db_get_transactional(arg1);
+ jresult = (result) ? JNI_TRUE : JNI_FALSE;
+ return jresult;
+}
+
+
JNIEXPORT jint JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1get_1type(JNIEnv *jenv, jclass jcls, jlong jarg1) {
jint jresult = 0 ;
struct Db *arg1 = (struct Db *) 0 ;
@@ -4258,7 +4529,7 @@ JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1rename0(JN
}
-JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1set_1append_1recno(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg2) {
+JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1set_1append_1recno(JNIEnv *jenv, jclass jcls, jlong jarg1, jboolean jarg2) {
struct Db *arg1 = (struct Db *) 0 ;
int (*arg2)(DB *,DBT *,db_recno_t) = (int (*)(DB *,DBT *,db_recno_t)) 0 ;
db_ret_t result;
@@ -4267,7 +4538,7 @@ JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1set_1appen
(void)jcls;
arg1 = *(struct Db **)&jarg1;
- arg2 = (jarg2 == NULL) ? NULL : __dbj_append_recno;
+ arg2 = (jarg2 == JNI_TRUE) ? __dbj_append_recno : NULL;
if (jarg1 == 0) {
@@ -4283,7 +4554,7 @@ JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1set_1appen
}
-JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1set_1bt_1compare(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg2) {
+JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1set_1bt_1compare(JNIEnv *jenv, jclass jcls, jlong jarg1, jboolean jarg2) {
struct Db *arg1 = (struct Db *) 0 ;
int (*arg2)(DB *,DBT const *,DBT const *) = (int (*)(DB *,DBT const *,DBT const *)) 0 ;
db_ret_t result;
@@ -4292,7 +4563,7 @@ JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1set_1bt_1c
(void)jcls;
arg1 = *(struct Db **)&jarg1;
- arg2 = (jarg2 == NULL) ? NULL : __dbj_bt_compare;
+ arg2 = (jarg2 == JNI_TRUE) ? __dbj_bt_compare : NULL;
if (jarg1 == 0) {
@@ -4331,7 +4602,7 @@ JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1set_1bt_1m
}
-JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1set_1bt_1prefix(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg2) {
+JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1set_1bt_1prefix(JNIEnv *jenv, jclass jcls, jlong jarg1, jboolean jarg2) {
struct Db *arg1 = (struct Db *) 0 ;
size_t (*arg2)(DB *,DBT const *,DBT const *) = (size_t (*)(DB *,DBT const *,DBT const *)) 0 ;
db_ret_t result;
@@ -4340,7 +4611,7 @@ JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1set_1bt_1p
(void)jcls;
arg1 = *(struct Db **)&jarg1;
- arg2 = (jarg2 == NULL) ? NULL : __dbj_bt_prefix;
+ arg2 = (jarg2 == JNI_TRUE) ? __dbj_bt_prefix : NULL;
if (jarg1 == 0) {
@@ -4381,7 +4652,7 @@ JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1set_1cache
}
-JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1set_1dup_1compare(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg2) {
+JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1set_1dup_1compare(JNIEnv *jenv, jclass jcls, jlong jarg1, jboolean jarg2) {
struct Db *arg1 = (struct Db *) 0 ;
int (*arg2)(DB *,DBT const *,DBT const *) = (int (*)(DB *,DBT const *,DBT const *)) 0 ;
db_ret_t result;
@@ -4390,7 +4661,7 @@ JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1set_1dup_1
(void)jcls;
arg1 = *(struct Db **)&jarg1;
- arg2 = (jarg2 == NULL) ? NULL : __dbj_dup_compare;
+ arg2 = (jarg2 == JNI_TRUE) ? __dbj_dup_compare : NULL;
if (jarg1 == 0) {
@@ -4436,7 +4707,7 @@ JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1set_1encry
}
-JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1set_1feedback(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg2) {
+JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1set_1feedback(JNIEnv *jenv, jclass jcls, jlong jarg1, jboolean jarg2) {
struct Db *arg1 = (struct Db *) 0 ;
void (*arg2)(DB *,int,int) = (void (*)(DB *,int,int)) 0 ;
db_ret_t result;
@@ -4445,7 +4716,7 @@ JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1set_1feedb
(void)jcls;
arg1 = *(struct Db **)&jarg1;
- arg2 = (jarg2 == NULL) ? NULL : __dbj_db_feedback;
+ arg2 = (jarg2 == JNI_TRUE) ? __dbj_db_feedback : NULL;
if (jarg1 == 0) {
@@ -4484,6 +4755,31 @@ JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1set_1flags
}
+JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1set_1h_1compare(JNIEnv *jenv, jclass jcls, jlong jarg1, jboolean jarg2) {
+ struct Db *arg1 = (struct Db *) 0 ;
+ int (*arg2)(DB *,DBT const *,DBT const *) = (int (*)(DB *,DBT const *,DBT const *)) 0 ;
+ db_ret_t result;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = *(struct Db **)&jarg1;
+
+ arg2 = (jarg2 == JNI_TRUE) ? __dbj_h_compare : NULL;
+
+
+ if (jarg1 == 0) {
+ __dbj_throw(jenv, EINVAL, "call on closed handle", NULL, NULL);
+ return ;
+ }
+
+ result = (db_ret_t)Db_set_h_compare(arg1,arg2);
+ if (!DB_RETOK_STD(result)) {
+ __dbj_throw(jenv, result, NULL, NULL, DB2JDBENV);
+ }
+
+}
+
+
JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1set_1h_1ffactor(JNIEnv *jenv, jclass jcls, jlong jarg1, jint jarg2) {
struct Db *arg1 = (struct Db *) 0 ;
u_int32_t arg2 ;
@@ -4507,7 +4803,7 @@ JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1set_1h_1ff
}
-JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1set_1h_1hash(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg2) {
+JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1set_1h_1hash(JNIEnv *jenv, jclass jcls, jlong jarg1, jboolean jarg2) {
struct Db *arg1 = (struct Db *) 0 ;
u_int32_t (*arg2)(DB *,void const *,u_int32_t) = (u_int32_t (*)(DB *,void const *,u_int32_t)) 0 ;
db_ret_t result;
@@ -4516,7 +4812,7 @@ JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1set_1h_1ha
(void)jcls;
arg1 = *(struct Db **)&jarg1;
- arg2 = (jarg2 == NULL) ? NULL : __dbj_h_hash;
+ arg2 = (jarg2 == JNI_TRUE) ? __dbj_h_hash : NULL;
if (jarg1 == 0) {
@@ -4601,6 +4897,29 @@ JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1set_1pages
}
+JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1set_1priority(JNIEnv *jenv, jclass jcls, jlong jarg1, jint jarg2) {
+ struct Db *arg1 = (struct Db *) 0 ;
+ DB_CACHE_PRIORITY arg2 ;
+ db_ret_t result;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = *(struct Db **)&jarg1;
+ arg2 = (DB_CACHE_PRIORITY)jarg2;
+
+ if (jarg1 == 0) {
+ __dbj_throw(jenv, EINVAL, "call on closed handle", NULL, NULL);
+ return ;
+ }
+
+ result = (db_ret_t)Db_set_priority(arg1,arg2);
+ if (!DB_RETOK_STD(result)) {
+ __dbj_throw(jenv, result, NULL, NULL, DB2JDBENV);
+ }
+
+}
+
+
JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Db_1set_1re_1delim(JNIEnv *jenv, jclass jcls, jlong jarg1, jint jarg2) {
struct Db *arg1 = (struct Db *) 0 ;
int arg2 ;
@@ -5074,6 +5393,31 @@ JNIEXPORT jint JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Dbc_1get(JNIEn
}
+JNIEXPORT jint JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Dbc_1get_1priority(JNIEnv *jenv, jclass jcls, jlong jarg1) {
+ jint jresult = 0 ;
+ struct Dbc *arg1 = (struct Dbc *) 0 ;
+ DB_CACHE_PRIORITY result;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = *(struct Dbc **)&jarg1;
+
+ if (jarg1 == 0) {
+ __dbj_throw(jenv, EINVAL, "call on closed handle", NULL, NULL);
+ return 0;
+ }
+
+ errno = 0;
+ result = (DB_CACHE_PRIORITY)Dbc_get_priority(arg1);
+ if (!DB_RETOK_STD(errno)) {
+ __dbj_throw(jenv, errno, NULL, NULL, DBC2JDBENV);
+ }
+
+ jresult = (jint)result;
+ return jresult;
+}
+
+
JNIEXPORT jint JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Dbc_1pget(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg2, jobject jarg3, jobject jarg4, jint jarg5) {
jint jresult = 0 ;
struct Dbc *arg1 = (struct Dbc *) 0 ;
@@ -5161,6 +5505,30 @@ JNIEXPORT jint JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Dbc_1put(JNIEn
}
+JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_Dbc_1set_1priority(JNIEnv *jenv, jclass jcls, jlong jarg1, jint jarg2) {
+ struct Dbc *arg1 = (struct Dbc *) 0 ;
+ DB_CACHE_PRIORITY arg2 ;
+ db_ret_t result;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = *(struct Dbc **)&jarg1;
+ arg2 = (DB_CACHE_PRIORITY)jarg2;
+
+ if (jarg1 == 0) {
+ __dbj_throw(jenv, EINVAL, "call on closed handle", NULL, NULL);
+ return ;
+ }
+
+ errno = 0;
+ result = (db_ret_t)Dbc_set_priority(arg1,arg2);
+ if (!DB_RETOK_STD(errno)) {
+ __dbj_throw(jenv, errno, NULL, NULL, DBC2JDBENV);
+ }
+
+}
+
+
JNIEXPORT jlong JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_new_1DbEnv(JNIEnv *jenv, jclass jcls, jint jarg1) {
jlong jresult = 0 ;
u_int32_t arg1 ;
@@ -5733,6 +6101,29 @@ JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1ca
}
+JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1cache_1max(JNIEnv *jenv, jclass jcls, jlong jarg1, jlong jarg2) {
+ struct DbEnv *arg1 = (struct DbEnv *) 0 ;
+ jlong arg2 ;
+ db_ret_t result;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = *(struct DbEnv **)&jarg1;
+ arg2 = jarg2;
+
+ if (jarg1 == 0) {
+ __dbj_throw(jenv, EINVAL, "call on closed handle", NULL, NULL);
+ return ;
+ }
+
+ result = (db_ret_t)DbEnv_set_cache_max(arg1,arg2);
+ if (!DB_RETOK_STD(result)) {
+ __dbj_throw(jenv, result, NULL, NULL, JDBENV);
+ }
+
+}
+
+
JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1data_1dir(JNIEnv *jenv, jclass jcls, jlong jarg1, jstring jarg2) {
struct DbEnv *arg1 = (struct DbEnv *) 0 ;
char *arg2 = (char *) 0 ;
@@ -5816,7 +6207,7 @@ JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1en
}
-JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1errcall(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg2) {
+JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1errcall(JNIEnv *jenv, jclass jcls, jlong jarg1, jboolean jarg2) {
struct DbEnv *arg1 = (struct DbEnv *) 0 ;
void (*arg2)(DB_ENV const *,char const *,char const *) = (void (*)(DB_ENV const *,char const *,char const *)) 0 ;
@@ -5824,7 +6215,7 @@ JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1er
(void)jcls;
arg1 = *(struct DbEnv **)&jarg1;
- arg2 = (jarg2 == NULL) ? NULL : __dbj_error;
+ arg2 = (jarg2 == JNI_TRUE) ? __dbj_error : NULL;
if (jarg1 == 0) {
@@ -5860,7 +6251,7 @@ JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1fl
}
-JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1feedback(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg2) {
+JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1feedback(JNIEnv *jenv, jclass jcls, jlong jarg1, jboolean jarg2) {
struct DbEnv *arg1 = (struct DbEnv *) 0 ;
void (*arg2)(DB_ENV *,int,int) = (void (*)(DB_ENV *,int,int)) 0 ;
db_ret_t result;
@@ -5869,7 +6260,7 @@ JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1fe
(void)jcls;
arg1 = *(struct DbEnv **)&jarg1;
- arg2 = (jarg2 == NULL) ? NULL : __dbj_env_feedback;
+ arg2 = (jarg2 == JNI_TRUE) ? __dbj_env_feedback : NULL;
if (jarg1 == 0) {
@@ -5908,17 +6299,17 @@ JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1mp
}
-JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1mp_1max_1write(JNIEnv *jenv, jclass jcls, jlong jarg1, jint jarg2, jint jarg3) {
+JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1mp_1max_1write(JNIEnv *jenv, jclass jcls, jlong jarg1, jint jarg2, jlong jarg3) {
struct DbEnv *arg1 = (struct DbEnv *) 0 ;
int arg2 ;
- int arg3 ;
+ db_timeout_t arg3 ;
db_ret_t result;
(void)jenv;
(void)jcls;
arg1 = *(struct DbEnv **)&jarg1;
arg2 = (int)jarg2;
- arg3 = (int)jarg3;
+ arg3 = (db_timeout_t)jarg3;
if (jarg1 == 0) {
__dbj_throw(jenv, EINVAL, "call on closed handle", NULL, NULL);
@@ -5956,7 +6347,7 @@ JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1mp
}
-JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1msgcall(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg2) {
+JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1msgcall(JNIEnv *jenv, jclass jcls, jlong jarg1, jboolean jarg2) {
struct DbEnv *arg1 = (struct DbEnv *) 0 ;
void (*arg2)(DB_ENV const *,char const *) = (void (*)(DB_ENV const *,char const *)) 0 ;
@@ -5964,7 +6355,7 @@ JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1ms
(void)jcls;
arg1 = *(struct DbEnv **)&jarg1;
- arg2 = (jarg2 == NULL) ? NULL : __dbj_message;
+ arg2 = (jarg2 == JNI_TRUE) ? __dbj_message : NULL;
if (jarg1 == 0) {
@@ -5975,7 +6366,7 @@ JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1ms
}
-JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1paniccall(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg2) {
+JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1paniccall(JNIEnv *jenv, jclass jcls, jlong jarg1, jboolean jarg2) {
struct DbEnv *arg1 = (struct DbEnv *) 0 ;
void (*arg2)(DB_ENV *,int) = (void (*)(DB_ENV *,int)) 0 ;
db_ret_t result;
@@ -5984,7 +6375,7 @@ JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1pa
(void)jcls;
arg1 = *(struct DbEnv **)&jarg1;
- arg2 = (jarg2 == NULL) ? NULL : __dbj_panic;
+ arg2 = (jarg2 == JNI_TRUE) ? __dbj_panic : NULL;
if (jarg1 == 0) {
@@ -6133,7 +6524,7 @@ JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1tx
}
-JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1app_1dispatch(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg2) {
+JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1app_1dispatch(JNIEnv *jenv, jclass jcls, jlong jarg1, jboolean jarg2) {
struct DbEnv *arg1 = (struct DbEnv *) 0 ;
int (*arg2)(DB_ENV *,DBT *,DB_LSN *,db_recops) = (int (*)(DB_ENV *,DBT *,DB_LSN *,db_recops)) 0 ;
db_ret_t result;
@@ -6142,7 +6533,7 @@ JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1ap
(void)jcls;
arg1 = *(struct DbEnv **)&jarg1;
- arg2 = (jarg2 == NULL) ? NULL : __dbj_app_dispatch;
+ arg2 = (jarg2 == JNI_TRUE) ? __dbj_app_dispatch : NULL;
if (jarg1 == 0) {
@@ -6158,7 +6549,7 @@ JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1ap
}
-JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1event_1notify(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg2) {
+JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1event_1notify(JNIEnv *jenv, jclass jcls, jlong jarg1, jboolean jarg2) {
struct DbEnv *arg1 = (struct DbEnv *) 0 ;
void (*arg2)(DB_ENV *,u_int32_t,void *) = (void (*)(DB_ENV *,u_int32_t,void *)) 0 ;
db_ret_t result;
@@ -6167,7 +6558,7 @@ JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1ev
(void)jcls;
arg1 = *(struct DbEnv **)&jarg1;
- arg2 = (jarg2 == NULL) ? NULL : __dbj_event_notify;
+ arg2 = (jarg2 == JNI_TRUE) ? __dbj_event_notify : NULL;
if (jarg1 == 0) {
@@ -7318,6 +7709,31 @@ JNIEXPORT jint JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1get_1ca
}
+JNIEXPORT jlong JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1get_1cache_1max(JNIEnv *jenv, jclass jcls, jlong jarg1) {
+ jlong jresult = 0 ;
+ struct DbEnv *arg1 = (struct DbEnv *) 0 ;
+ jlong result;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = *(struct DbEnv **)&jarg1;
+
+ if (jarg1 == 0) {
+ __dbj_throw(jenv, EINVAL, "call on closed handle", NULL, NULL);
+ return 0;
+ }
+
+ errno = 0;
+ result = DbEnv_get_cache_max(arg1);
+ if (!DB_RETOK_STD(errno)) {
+ __dbj_throw(jenv, errno, NULL, NULL, JDBENV);
+ }
+
+ jresult = result;
+ return jresult;
+}
+
+
JNIEXPORT jint JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1get_1mp_1max_1openfd(JNIEnv *jenv, jclass jcls, jlong jarg1) {
jint jresult = 0 ;
struct DbEnv *arg1 = (struct DbEnv *) 0 ;
@@ -7368,10 +7784,10 @@ JNIEXPORT jint JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1get_1mp
}
-JNIEXPORT jint JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1get_1mp_1max_1write_1sleep(JNIEnv *jenv, jclass jcls, jlong jarg1) {
- jint jresult = 0 ;
+JNIEXPORT jlong JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1get_1mp_1max_1write_1sleep(JNIEnv *jenv, jclass jcls, jlong jarg1) {
+ jlong jresult = 0 ;
struct DbEnv *arg1 = (struct DbEnv *) 0 ;
- int result;
+ db_timeout_t result;
(void)jenv;
(void)jcls;
@@ -7383,12 +7799,12 @@ JNIEXPORT jint JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1get_1mp
}
errno = 0;
- result = (int)DbEnv_get_mp_max_write_sleep(arg1);
+ result = (db_timeout_t)DbEnv_get_mp_max_write_sleep(arg1);
if (!DB_RETOK_STD(errno)) {
__dbj_throw(jenv, errno, NULL, NULL, JDBENV);
}
- jresult = (jint)result;
+ jresult = (jlong)result;
return jresult;
}
@@ -8017,13 +8433,12 @@ JNIEXPORT jlong JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1rep_1g
}
-JNIEXPORT jint JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1rep_1elect(JNIEnv *jenv, jclass jcls, jlong jarg1, jint jarg2, jint jarg3, jint jarg4) {
- jint jresult = 0 ;
+JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1rep_1elect(JNIEnv *jenv, jclass jcls, jlong jarg1, jint jarg2, jint jarg3, jint jarg4) {
struct DbEnv *arg1 = (struct DbEnv *) 0 ;
int arg2 ;
int arg3 ;
u_int32_t arg4 ;
- int result;
+ db_ret_t result;
(void)jenv;
(void)jcls;
@@ -8034,31 +8449,27 @@ JNIEXPORT jint JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1rep_1el
if (jarg1 == 0) {
__dbj_throw(jenv, EINVAL, "call on closed handle", NULL, NULL);
- return 0;
+ return ;
}
- errno = 0;
- result = (int)DbEnv_rep_elect(arg1,arg2,arg3,arg4);
- if (!DB_RETOK_STD(errno)) {
- __dbj_throw(jenv, errno, NULL, NULL, JDBENV);
+ result = (db_ret_t)DbEnv_rep_elect(arg1,arg2,arg3,arg4);
+ if (!DB_RETOK_STD(result)) {
+ __dbj_throw(jenv, result, NULL, NULL, JDBENV);
}
- jresult = (jint)result;
- return jresult;
}
-JNIEXPORT jint JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1rep_1process_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg2, jobject jarg3, jobject jarg4, jobject jarg5) {
+JNIEXPORT jint JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1rep_1process_1message(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg2, jobject jarg3, jint jarg4, jobject jarg5) {
jint jresult = 0 ;
struct DbEnv *arg1 = (struct DbEnv *) 0 ;
DBT *arg2 = (DBT *) 0 ;
DBT *arg3 = (DBT *) 0 ;
- int *arg4 = (int *) 0 ;
+ int arg4 ;
DB_LSN *arg5 = (DB_LSN *) 0 ;
int result;
DBT_LOCKED ldbt2 ;
DBT_LOCKED ldbt3 ;
- int id4 ;
DB_LSN lsn5 ;
(void)jenv;
@@ -8072,10 +8483,7 @@ JNIEXPORT jint JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1rep_1pr
if (__dbj_dbt_copyin(jenv, &ldbt3, &arg3, jarg3, 0) != 0) {
return 0; /* An exception will be pending. */
}
-
- id4 = (*jenv)->GetIntField(jenv, jarg4, rep_processmsg_envid_fid);
- arg4 = &id4;
-
+ arg4 = (int)jarg4;
if (jarg5 == NULL) {
arg5 = NULL;
@@ -8104,9 +8512,6 @@ JNIEXPORT jint JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1rep_1pr
}
jresult = (jint)result;
-
- (*jenv)->SetIntField(jenv, jarg4, rep_processmsg_envid_fid, *arg4);
-
__dbj_dbt_release(jenv, jarg2, arg2, &ldbt2);
__dbj_dbt_release(jenv, jarg3, arg3, &ldbt3);
@@ -8166,6 +8571,31 @@ JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1rep_1se
}
+JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1rep_1set_1lease(JNIEnv *jenv, jclass jcls, jlong jarg1, jint jarg2, jint jarg3) {
+ struct DbEnv *arg1 = (struct DbEnv *) 0 ;
+ u_int32_t arg2 ;
+ u_int32_t arg3 ;
+ db_ret_t result;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = *(struct DbEnv **)&jarg1;
+ arg2 = (u_int32_t)jarg2;
+ arg3 = (u_int32_t)jarg3;
+
+ if (jarg1 == 0) {
+ __dbj_throw(jenv, EINVAL, "call on closed handle", NULL, NULL);
+ return ;
+ }
+
+ result = (db_ret_t)DbEnv_rep_set_lease(arg1,arg2,arg3);
+ if (!DB_RETOK_STD(result)) {
+ __dbj_throw(jenv, result, NULL, NULL, JDBENV);
+ }
+
+}
+
+
JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1rep_1start(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg2, jint jarg3) {
struct DbEnv *arg1 = (struct DbEnv *) 0 ;
DBT *arg2 = (DBT *) 0 ;
@@ -8326,7 +8756,7 @@ JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1set_1re
}
-JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1rep_1set_1transport(JNIEnv *jenv, jclass jcls, jlong jarg1, jint jarg2, jobject jarg3) {
+JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1rep_1set_1transport(JNIEnv *jenv, jclass jcls, jlong jarg1, jint jarg2, jboolean jarg3) {
struct DbEnv *arg1 = (struct DbEnv *) 0 ;
int arg2 ;
int (*arg3)(DB_ENV *,DBT const *,DBT const *,DB_LSN const *,int,u_int32_t) = (int (*)(DB_ENV *,DBT const *,DBT const *,DB_LSN const *,int,u_int32_t)) 0 ;
@@ -8337,7 +8767,7 @@ JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1rep_1se
arg1 = *(struct DbEnv **)&jarg1;
arg2 = (int)jarg2;
- arg3 = (jarg3 == NULL) ? NULL : __dbj_rep_transport;
+ arg3 = (jarg3 == JNI_TRUE) ? __dbj_rep_transport : NULL;
if (jarg1 == 0) {
@@ -8690,6 +9120,38 @@ JNIEXPORT void JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1repmgr_
}
+JNIEXPORT jobject JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1repmgr_1stat(JNIEnv *jenv, jclass jcls, jlong jarg1, jint jarg2) {
+ jobject jresult = 0 ;
+ struct DbEnv *arg1 = (struct DbEnv *) 0 ;
+ u_int32_t arg2 ;
+ DB_REPMGR_STAT *result = 0 ;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = *(struct DbEnv **)&jarg1;
+ arg2 = (u_int32_t)jarg2;
+
+ if (jarg1 == 0) {
+ __dbj_throw(jenv, EINVAL, "call on closed handle", NULL, NULL);
+ return 0;
+ }
+
+ errno = 0;
+ result = (DB_REPMGR_STAT *)DbEnv_repmgr_stat(arg1,arg2);
+ if (!DB_RETOK_STD(errno)) {
+ __dbj_throw(jenv, errno, NULL, NULL, JDBENV);
+ }
+
+
+ jresult = (*jenv)->NewObject(jenv, repmgr_stat_class, repmgr_stat_construct);
+ if (jresult != NULL)
+ __dbj_fill_repmgr_stat(jenv, jresult, result);
+ __os_ufree(NULL, result);
+
+ return jresult;
+}
+
+
JNIEXPORT jstring JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbEnv_1strerror(JNIEnv *jenv, jclass jcls, jint jarg1) {
jstring jresult = 0 ;
int arg1 ;
@@ -8849,6 +9311,33 @@ JNIEXPORT jint JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbLogc_1get(JN
}
+JNIEXPORT jint JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbLogc_1version(JNIEnv *jenv, jclass jcls, jlong jarg1, jint jarg2) {
+ jint jresult = 0 ;
+ struct DbLogc *arg1 = (struct DbLogc *) 0 ;
+ u_int32_t arg2 ;
+ u_int32_t result;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = *(struct DbLogc **)&jarg1;
+ arg2 = (u_int32_t)jarg2;
+
+ if (jarg1 == 0) {
+ __dbj_throw(jenv, EINVAL, "call on closed handle", NULL, NULL);
+ return 0;
+ }
+
+ errno = 0;
+ result = (u_int32_t)DbLogc_version(arg1,arg2);
+ if (!DB_RETOK_STD(errno)) {
+ __dbj_throw(jenv, errno, NULL, NULL, NULL);
+ }
+
+ jresult = (jint)result;
+ return jresult;
+}
+
+
JNIEXPORT jint JNICALL Java_com_sleepycat_db_internal_db_1javaJNI_DbMpoolFile_1get_1priority(JNIEnv *jenv, jclass jcls, jlong jarg1) {
jint jresult = 0 ;
struct DbMpoolFile *arg1 = (struct DbMpoolFile *) 0 ;
diff --git a/db/libdb_java/java_callbacks.i b/db/libdb_java/java_callbacks.i
index ae10f2062..c5dfcbbda 100644
--- a/db/libdb_java/java_callbacks.i
+++ b/db/libdb_java/java_callbacks.i
@@ -1,14 +1,15 @@
/* Callbacks */
%define JAVA_CALLBACK(_sig, _jclass, _name)
-JAVA_TYPEMAP(_sig, _jclass, jobject)
-%typemap(javain) _sig %{ (_name##_handler = $javainput) %}
+JAVA_TYPEMAP(_sig, _jclass, jboolean)
+%typemap(jtype) _sig "boolean"
+%typemap(javain) _sig %{ (_name##_handler = $javainput) != null %}
/*
* The Java object is stored in the Db or DbEnv class.
* Here we only care whether it is non-NULL.
*/
%typemap(in) _sig %{
- $1 = ($input == NULL) ? NULL : __dbj_##_name;
+ $1 = ($input == JNI_TRUE) ? __dbj_##_name : NULL;
%}
%enddef
@@ -96,21 +97,49 @@ static void __dbj_event_notify(DB_ENV *dbenv, u_int32_t event_id, void * info)
{
JNIEnv *jenv = __dbj_get_jnienv();
jobject jdbenv = (jobject)DB_ENV_INTERNAL(dbenv);
- int ret;
-
- COMPQUIET(info, NULL);
- if(jdbenv == NULL)
+ if (jdbenv == NULL)
return ;
- ret = (*jenv)->CallNonvirtualIntMethod(jenv, jdbenv, dbenv_class,
- event_notify_method, event_id);
-
- if((*jenv)->ExceptionOccurred(jenv)) {
- /* The exception will be thrown, so this could be any error. */
- ret = EINVAL;
+ switch (event_id) {
+ case DB_EVENT_PANIC:
+ (*jenv)->CallNonvirtualVoidMethod(jenv, jdbenv,
+ dbenv_class, panic_event_notify_method);
+ break;
+ case DB_EVENT_REP_CLIENT:
+ (*jenv)->CallNonvirtualVoidMethod(jenv, jdbenv,
+ dbenv_class, rep_client_event_notify_method);
+ break;
+ case DB_EVENT_REP_ELECTED:
+ (*jenv)->CallNonvirtualVoidMethod(jenv, jdbenv,
+ dbenv_class, rep_elected_event_notify_method);
+ break;
+ case DB_EVENT_REP_MASTER:
+ (*jenv)->CallNonvirtualVoidMethod(jenv, jdbenv,
+ dbenv_class, rep_master_event_notify_method);
+ break;
+ case DB_EVENT_REP_NEWMASTER:
+ (*jenv)->CallNonvirtualVoidMethod(jenv, jdbenv,
+ dbenv_class, rep_new_master_event_notify_method,
+ *(int*)info);
+ break;
+ case DB_EVENT_REP_PERM_FAILED:
+ (*jenv)->CallNonvirtualVoidMethod(jenv, jdbenv,
+ dbenv_class, rep_perm_failed_event_notify_method);
+ break;
+ case DB_EVENT_REP_STARTUPDONE:
+ (*jenv)->CallNonvirtualVoidMethod(jenv, jdbenv,
+ dbenv_class, rep_startup_done_event_notify_method);
+ break;
+ case DB_EVENT_WRITE_FAILED:
+ (*jenv)->CallNonvirtualVoidMethod(jenv, jdbenv,
+ dbenv_class, write_failed_event_notify_method,
+ *(int*)info);
+ break;
+ default:
+ dbenv->errx(dbenv, "Unhandled event callback in the Java API");
+ DB_ASSERT(dbenv, 0);
}
- return ;
}
static int __dbj_rep_transport(DB_ENV *dbenv,
@@ -162,8 +191,11 @@ static int __dbj_seckey_create(DB *db,
JNIEnv *jenv = __dbj_get_jnienv();
jobject jdb = (jobject)DB_INTERNAL(db);
jobject jkey, jdata, jresult;
+ jobjectArray jskeys;
+ jsize i, num_skeys;
jbyteArray jkeyarr, jdataarr;
DBT_LOCKED lresult;
+ DBT *tresult;
int ret;
if (jdb == NULL)
@@ -175,8 +207,7 @@ static int __dbj_seckey_create(DB *db,
jdata = (data->app_data != NULL) ?
((DBT_LOCKED *)data->app_data)->jdbt :
(*jenv)->NewObject(jenv, dbt_class, dbt_construct);
- jresult = (*jenv)->NewObject(jenv, dbt_class, dbt_construct);
- if (jkey == NULL || jdata == NULL || jresult == NULL)
+ if (jkey == NULL || jdata == NULL)
return (ENOMEM); /* An exception is pending */
if (key->app_data == NULL) {
@@ -190,11 +221,25 @@ static int __dbj_seckey_create(DB *db,
return (ENOMEM); /* An exception is pending */
}
- ret = (int)(*jenv)->CallNonvirtualIntMethod(jenv, jdb, db_class,
- seckey_create_method, jkey, jdata, jresult);
+ jskeys = (jobjectArray)(*jenv)->CallNonvirtualObjectMethod(jenv,
+ jdb, db_class, seckey_create_method, jkey, jdata);
- if (ret != 0)
+ if (jskeys == NULL ||
+ (num_skeys = (*jenv)->GetArrayLength(jenv, jskeys)) == 0) {
+ ret = DB_DONOTINDEX;
goto err;
+ } else if (num_skeys == 1) {
+ memset(result, 0, sizeof (DBT));
+ tresult = result;
+ } else {
+ if ((ret = __os_umalloc(db->dbenv,
+ num_skeys * sizeof (DBT), &result->data)) != 0)
+ goto err;
+ memset(result->data, 0, num_skeys * sizeof (DBT));
+ result->size = num_skeys;
+ F_SET(result, DB_DBT_APPMALLOC | DB_DBT_MULTIPLE);
+ tresult = (DBT *)result->data;
+ }
if ((*jenv)->ExceptionOccurred(jenv)) {
/* The exception will be thrown, so this could be any error. */
@@ -202,23 +247,30 @@ static int __dbj_seckey_create(DB *db,
goto err;
}
- if ((ret = __dbj_dbt_copyin(jenv, &lresult, NULL, jresult, 0)) != 0)
- goto err;
+ for (i = 0; i < num_skeys; i++, tresult++) {
+ jresult = (*jenv)->GetObjectArrayElement(jenv, jskeys, i);
- if (lresult.dbt.size != 0) {
- /* If there's data, we need to take a copy of it. */
- memset(result, 0, sizeof (DBT));
- result->size = lresult.dbt.size;
if ((ret =
- __os_umalloc(NULL, result->size, &result->data)) != 0)
+ __dbj_dbt_copyin(jenv, &lresult, NULL, jresult, 0)) != 0)
goto err;
- if ((ret = __dbj_dbt_memcopy(&lresult.dbt, 0,
- result->data, result->size,
- DB_USERCOPY_GETDATA)) != 0)
- goto err;
- __dbj_dbt_release(jenv, jresult, &lresult.dbt, &lresult);
- (*jenv)->DeleteLocalRef(jenv, lresult.jarr);
- F_SET(result, DB_DBT_APPMALLOC);
+
+ if (lresult.dbt.size != 0) {
+ /* If there's data, we need to take a copy of it. */
+ tresult->size = lresult.dbt.size;
+ if ((ret = __os_umalloc(NULL,
+ tresult->size, &tresult->data)) != 0)
+ goto err;
+ if ((ret = __dbj_dbt_memcopy(&lresult.dbt, 0,
+ tresult->data, tresult->size,
+ DB_USERCOPY_GETDATA)) != 0)
+ goto err;
+ __dbj_dbt_release(jenv,
+ jresult, &lresult.dbt, &lresult);
+ (*jenv)->DeleteLocalRef(jenv, lresult.jarr);
+ F_SET(tresult, DB_DBT_APPMALLOC);
+ }
+
+ (*jenv)->DeleteLocalRef(jenv, jresult);
}
err: if (key->app_data == NULL) {
@@ -229,7 +281,6 @@ err: if (key->app_data == NULL) {
(*jenv)->DeleteLocalRef(jenv, jdataarr);
(*jenv)->DeleteLocalRef(jenv, jdata);
}
- (*jenv)->DeleteLocalRef(jenv, jresult);
return (ret);
}
@@ -292,7 +343,11 @@ err: (*jenv)->DeleteLocalRef(jenv, jdbtarr);
return (ret);
}
-static int __dbj_bt_compare(DB *db, const DBT *dbt1, const DBT *dbt2)
+/*
+ * Shared by __dbj_bt_compare and __dbj_h_compare
+ */
+static int __dbj_am_compare(DB *db, const DBT *dbt1, const DBT *dbt2,
+ jmethodID compare_method)
{
JNIEnv *jenv = __dbj_get_jnienv();
jobject jdb = (jobject)DB_INTERNAL(db);
@@ -323,7 +378,7 @@ static int __dbj_bt_compare(DB *db, const DBT *dbt1, const DBT *dbt2)
}
ret = (int)(*jenv)->CallNonvirtualIntMethod(jenv, jdb, db_class,
- bt_compare_method, jdbtarr1, jdbtarr2);
+ compare_method, jdbtarr1, jdbtarr2);
if ((*jenv)->ExceptionOccurred(jenv)) {
/* The exception will be thrown, so this could be any error. */
@@ -338,6 +393,11 @@ static int __dbj_bt_compare(DB *db, const DBT *dbt1, const DBT *dbt2)
return (ret);
}
+static int __dbj_bt_compare(DB *db, const DBT *dbt1, const DBT *dbt2)
+{
+ return __dbj_am_compare(db, dbt1, dbt2, bt_compare_method);
+}
+
static size_t __dbj_bt_prefix(DB *db, const DBT *dbt1, const DBT *dbt2)
{
JNIEnv *jenv = __dbj_get_jnienv();
@@ -352,7 +412,8 @@ static size_t __dbj_bt_prefix(DB *db, const DBT *dbt1, const DBT *dbt2)
if (dbt1->app_data != NULL)
jdbt1 = ((DBT_LOCKED *)dbt1->app_data)->jdbt;
else {
- if ((jdbt1 = (*jenv)->NewObject(jenv, dbt_class, dbt_construct)) == NULL)
+ if ((jdbt1 =
+ (*jenv)->NewObject(jenv, dbt_class, dbt_construct)) == NULL)
return (ENOMEM); /* An exception is pending */
__dbj_dbt_copyout(jenv, dbt1, &jdbtarr1, jdbt1);
if (jdbtarr1 == NULL)
@@ -362,7 +423,8 @@ static size_t __dbj_bt_prefix(DB *db, const DBT *dbt1, const DBT *dbt2)
if (dbt2->app_data != NULL)
jdbt2 = ((DBT_LOCKED *)dbt2->app_data)->jdbt;
else {
- if ((jdbt2 = (*jenv)->NewObject(jenv, dbt_class, dbt_construct)) == NULL)
+ if ((jdbt2 =
+ (*jenv)->NewObject(jenv, dbt_class, dbt_construct)) == NULL)
return (ENOMEM); /* An exception is pending */
__dbj_dbt_copyout(jenv, dbt2, &jdbtarr2, jdbt2);
if (jdbtarr2 == NULL)
@@ -430,6 +492,11 @@ static void __dbj_db_feedback(DB *db, int opcode, int percent)
db_feedback_method, opcode, percent);
}
+static int __dbj_h_compare(DB *db, const DBT *dbt1, const DBT *dbt2)
+{
+ return __dbj_am_compare(db, dbt1, dbt2, h_compare_method);
+}
+
static u_int32_t __dbj_h_hash(DB *db, const void *data, u_int32_t len)
{
JNIEnv *jenv = __dbj_get_jnienv();
@@ -472,12 +539,17 @@ JAVA_CALLBACK(int (*send)(DB_ENV *, const DBT *, const DBT *,
/*
* Db.associate is a special case, because the handler must be set in the
- * secondary DB - that's what we have in the callback.
+ * secondary DB - that's what we have in the callback. In addition, there
+ * are two flavors of callback (single key and multi-key), so we need to
+ * check for both types when working out whether the C callback should
+ * be NULL. Note that this implies that the multi-key callback will be set
+ * on the secondary database *before* associate is called.
*/
JAVA_CALLBACK(int (*callback)(DB *, const DBT *, const DBT *, DBT *),
com.sleepycat.db.SecondaryKeyCreator, seckey_create)
%typemap(javain) int (*callback)(DB *, const DBT *, const DBT *, DBT *)
- %{ (secondary.seckey_create_handler = $javainput) %}
+ %{ (secondary.seckey_create_handler = $javainput) != null ||
+ (secondary.secmultikey_create_handler != null) %}
JAVA_CALLBACK(int (*db_append_recno_fcn)(DB *, DBT *, db_recno_t),
com.sleepycat.db.RecordNumberAppender, append_recno)
@@ -489,5 +561,7 @@ JAVA_CALLBACK(int (*dup_compare_fcn)(DB *, const DBT *, const DBT *),
java.util.Comparator, dup_compare)
JAVA_CALLBACK(void (*db_feedback_fcn)(DB *, int, int),
com.sleepycat.db.FeedbackHandler, db_feedback)
+JAVA_CALLBACK(int (*h_compare_fcn)(DB *, const DBT *, const DBT *),
+ java.util.Comparator, h_compare)
JAVA_CALLBACK(u_int32_t (*h_hash_fcn)(DB *, const void *, u_int32_t),
com.sleepycat.db.Hasher, h_hash)
diff --git a/db/libdb_java/java_except.i b/db/libdb_java/java_except.i
index c90e4cc1f..f15e5580f 100644
--- a/db/libdb_java/java_except.i
+++ b/db/libdb_java/java_except.i
@@ -65,6 +65,12 @@ static jthrowable __dbj_get_except(JNIEnv *jenv,
jmsg = (*jenv)->NewStringUTF(jenv, msg);
+ /* Retrieve error message logged by DB */
+ if (jdbenv != NULL) {
+ jmsg = (jstring) (*jenv)->CallNonvirtualObjectMethod(jenv,
+ jdbenv, dbenv_class, get_err_msg_method, jmsg);
+ }
+
switch (err) {
case EINVAL:
return (jthrowable)(*jenv)->NewObject(jenv,
@@ -102,6 +108,16 @@ static jthrowable __dbj_get_except(JNIEnv *jenv,
repjoinfailex_class, repjoinfailex_construct,
jmsg, err, jdbenv);
+ case DB_REP_LEASE_EXPIRED:
+ return (jthrowable)(*jenv)->NewObject(jenv,
+ repleaseexpiredex_class, repleaseexpiredex_construct,
+ jmsg, err, jdbenv);
+
+ case DB_REP_LEASE_TIMEOUT:
+ return (jthrowable)(*jenv)->NewObject(jenv,
+ repleasetimeoutex_class, repleasetimeoutex_construct,
+ jmsg, err, jdbenv);
+
case DB_REP_LOCKOUT:
return (jthrowable)(*jenv)->NewObject(jenv,
replockoutex_class, replockoutex_construct,
diff --git a/db/libdb_java/java_stat.i b/db/libdb_java/java_stat.i
index e932f5e23..409e2488e 100644
--- a/db/libdb_java/java_stat.i
+++ b/db/libdb_java/java_stat.i
@@ -90,6 +90,7 @@ JAVA_TYPEMAP(DB_MPOOL_FSTAT **, com.sleepycat.db.CacheFileStats[], jobjectArray)
JAVA_STAT_CLASS(DB_MUTEX_STAT *, com.sleepycat.db.MutexStats, mutex_stat)
JAVA_STAT_CLASS(DB_REP_STAT *, com.sleepycat.db.ReplicationStats, rep_stat)
+JAVA_STAT_CLASS(DB_REPMGR_STAT *, com.sleepycat.db.ReplicationManagerStats, repmgr_stat)
JAVA_STAT_CLASS(DB_SEQUENCE_STAT *, com.sleepycat.db.SequenceStats, seq_stat)
JAVA_TYPEMAP(DB_TXN_STAT *, com.sleepycat.db.TransactionStats, jobject)
%typemap(out) DB_TXN_STAT * {
diff --git a/db/libdb_java/java_stat_auto.c b/db/libdb_java/java_stat_auto.c
index b3de2a958..e7c7dfcb2 100644
--- a/db/libdb_java/java_stat_auto.c
+++ b/db/libdb_java/java_stat_auto.c
@@ -3,8 +3,7 @@
*
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2002-2006
- * Oracle Corporation. All rights reserved.
+ * Copyright (c) 2002,2007 Oracle. All rights reserved.
*/
static int __dbj_fill_bt_stat(JNIEnv *jnienv,
jobject jobj, struct __db_bt_stat *statp) {
@@ -13,6 +12,7 @@ static int __dbj_fill_bt_stat(JNIEnv *jnienv,
JAVADB_STAT_INT(jnienv, jobj, bt_stat_bt_metaflags_fid, statp, bt_metaflags);
JAVADB_STAT_INT(jnienv, jobj, bt_stat_bt_nkeys_fid, statp, bt_nkeys);
JAVADB_STAT_INT(jnienv, jobj, bt_stat_bt_ndata_fid, statp, bt_ndata);
+ JAVADB_STAT_INT(jnienv, jobj, bt_stat_bt_pagecnt_fid, statp, bt_pagecnt);
JAVADB_STAT_INT(jnienv, jobj, bt_stat_bt_pagesize_fid, statp, bt_pagesize);
JAVADB_STAT_INT(jnienv, jobj, bt_stat_bt_minkey_fid, statp, bt_minkey);
JAVADB_STAT_INT(jnienv, jobj, bt_stat_bt_re_len_fid, statp, bt_re_len);
@@ -50,6 +50,7 @@ static int __dbj_fill_h_stat(JNIEnv *jnienv,
JAVADB_STAT_INT(jnienv, jobj, h_stat_hash_metaflags_fid, statp, hash_metaflags);
JAVADB_STAT_INT(jnienv, jobj, h_stat_hash_nkeys_fid, statp, hash_nkeys);
JAVADB_STAT_INT(jnienv, jobj, h_stat_hash_ndata_fid, statp, hash_ndata);
+ JAVADB_STAT_INT(jnienv, jobj, h_stat_hash_pagecnt_fid, statp, hash_pagecnt);
JAVADB_STAT_INT(jnienv, jobj, h_stat_hash_pagesize_fid, statp, hash_pagesize);
JAVADB_STAT_INT(jnienv, jobj, h_stat_hash_ffactor_fid, statp, hash_ffactor);
JAVADB_STAT_INT(jnienv, jobj, h_stat_hash_buckets_fid, statp, hash_buckets);
@@ -71,9 +72,9 @@ static int __dbj_fill_lock_stat(JNIEnv *jnienv,
JAVADB_STAT_INT(jnienv, jobj, lock_stat_st_maxlockers_fid, statp, st_maxlockers);
JAVADB_STAT_INT(jnienv, jobj, lock_stat_st_maxobjects_fid, statp, st_maxobjects);
JAVADB_STAT_INT(jnienv, jobj, lock_stat_st_nmodes_fid, statp, st_nmodes);
+ JAVADB_STAT_INT(jnienv, jobj, lock_stat_st_nlockers_fid, statp, st_nlockers);
JAVADB_STAT_INT(jnienv, jobj, lock_stat_st_nlocks_fid, statp, st_nlocks);
JAVADB_STAT_INT(jnienv, jobj, lock_stat_st_maxnlocks_fid, statp, st_maxnlocks);
- JAVADB_STAT_INT(jnienv, jobj, lock_stat_st_nlockers_fid, statp, st_nlockers);
JAVADB_STAT_INT(jnienv, jobj, lock_stat_st_maxnlockers_fid, statp, st_maxnlockers);
JAVADB_STAT_INT(jnienv, jobj, lock_stat_st_nobjects_fid, statp, st_nobjects);
JAVADB_STAT_INT(jnienv, jobj, lock_stat_st_maxnobjects_fid, statp, st_maxnobjects);
@@ -88,8 +89,15 @@ static int __dbj_fill_lock_stat(JNIEnv *jnienv,
JAVADB_STAT_INT(jnienv, jobj, lock_stat_st_nlocktimeouts_fid, statp, st_nlocktimeouts);
JAVADB_STAT_INT(jnienv, jobj, lock_stat_st_txntimeout_fid, statp, st_txntimeout);
JAVADB_STAT_INT(jnienv, jobj, lock_stat_st_ntxntimeouts_fid, statp, st_ntxntimeouts);
+ JAVADB_STAT_INT(jnienv, jobj, lock_stat_st_objs_wait_fid, statp, st_objs_wait);
+ JAVADB_STAT_INT(jnienv, jobj, lock_stat_st_objs_nowait_fid, statp, st_objs_nowait);
+ JAVADB_STAT_INT(jnienv, jobj, lock_stat_st_lockers_wait_fid, statp, st_lockers_wait);
+ JAVADB_STAT_INT(jnienv, jobj, lock_stat_st_lockers_nowait_fid, statp, st_lockers_nowait);
+ JAVADB_STAT_INT(jnienv, jobj, lock_stat_st_locks_wait_fid, statp, st_locks_wait);
+ JAVADB_STAT_INT(jnienv, jobj, lock_stat_st_locks_nowait_fid, statp, st_locks_nowait);
JAVADB_STAT_INT(jnienv, jobj, lock_stat_st_region_wait_fid, statp, st_region_wait);
JAVADB_STAT_INT(jnienv, jobj, lock_stat_st_region_nowait_fid, statp, st_region_nowait);
+ JAVADB_STAT_INT(jnienv, jobj, lock_stat_st_hash_len_fid, statp, st_hash_len);
JAVADB_STAT_INT(jnienv, jobj, lock_stat_st_regsize_fid, statp, st_regsize);
return (0);
}
@@ -100,11 +108,11 @@ static int __dbj_fill_log_stat(JNIEnv *jnienv,
JAVADB_STAT_INT(jnienv, jobj, log_stat_st_mode_fid, statp, st_mode);
JAVADB_STAT_INT(jnienv, jobj, log_stat_st_lg_bsize_fid, statp, st_lg_bsize);
JAVADB_STAT_INT(jnienv, jobj, log_stat_st_lg_size_fid, statp, st_lg_size);
+ JAVADB_STAT_INT(jnienv, jobj, log_stat_st_wc_bytes_fid, statp, st_wc_bytes);
+ JAVADB_STAT_INT(jnienv, jobj, log_stat_st_wc_mbytes_fid, statp, st_wc_mbytes);
JAVADB_STAT_INT(jnienv, jobj, log_stat_st_record_fid, statp, st_record);
JAVADB_STAT_INT(jnienv, jobj, log_stat_st_w_bytes_fid, statp, st_w_bytes);
JAVADB_STAT_INT(jnienv, jobj, log_stat_st_w_mbytes_fid, statp, st_w_mbytes);
- JAVADB_STAT_INT(jnienv, jobj, log_stat_st_wc_bytes_fid, statp, st_wc_bytes);
- JAVADB_STAT_INT(jnienv, jobj, log_stat_st_wc_mbytes_fid, statp, st_wc_mbytes);
JAVADB_STAT_INT(jnienv, jobj, log_stat_st_wcount_fid, statp, st_wcount);
JAVADB_STAT_INT(jnienv, jobj, log_stat_st_wcount_fill_fid, statp, st_wcount_fill);
JAVADB_STAT_INT(jnienv, jobj, log_stat_st_rcount_fid, statp, st_rcount);
@@ -115,9 +123,9 @@ static int __dbj_fill_log_stat(JNIEnv *jnienv,
JAVADB_STAT_INT(jnienv, jobj, log_stat_st_cur_offset_fid, statp, st_cur_offset);
JAVADB_STAT_INT(jnienv, jobj, log_stat_st_disk_file_fid, statp, st_disk_file);
JAVADB_STAT_INT(jnienv, jobj, log_stat_st_disk_offset_fid, statp, st_disk_offset);
- JAVADB_STAT_INT(jnienv, jobj, log_stat_st_regsize_fid, statp, st_regsize);
JAVADB_STAT_INT(jnienv, jobj, log_stat_st_maxcommitperflush_fid, statp, st_maxcommitperflush);
JAVADB_STAT_INT(jnienv, jobj, log_stat_st_mincommitperflush_fid, statp, st_mincommitperflush);
+ JAVADB_STAT_INT(jnienv, jobj, log_stat_st_regsize_fid, statp, st_regsize);
return (0);
}
static int __dbj_fill_mpool_fstat(JNIEnv *jnienv,
@@ -137,11 +145,12 @@ static int __dbj_fill_mpool_stat(JNIEnv *jnienv,
JAVADB_STAT_INT(jnienv, jobj, mpool_stat_st_gbytes_fid, statp, st_gbytes);
JAVADB_STAT_INT(jnienv, jobj, mpool_stat_st_bytes_fid, statp, st_bytes);
JAVADB_STAT_INT(jnienv, jobj, mpool_stat_st_ncache_fid, statp, st_ncache);
- JAVADB_STAT_INT(jnienv, jobj, mpool_stat_st_regsize_fid, statp, st_regsize);
+ JAVADB_STAT_INT(jnienv, jobj, mpool_stat_st_max_ncache_fid, statp, st_max_ncache);
JAVADB_STAT_INT(jnienv, jobj, mpool_stat_st_mmapsize_fid, statp, st_mmapsize);
JAVADB_STAT_INT(jnienv, jobj, mpool_stat_st_maxopenfd_fid, statp, st_maxopenfd);
JAVADB_STAT_INT(jnienv, jobj, mpool_stat_st_maxwrite_fid, statp, st_maxwrite);
JAVADB_STAT_INT(jnienv, jobj, mpool_stat_st_maxwrite_sleep_fid, statp, st_maxwrite_sleep);
+ JAVADB_STAT_INT(jnienv, jobj, mpool_stat_st_pages_fid, statp, st_pages);
JAVADB_STAT_INT(jnienv, jobj, mpool_stat_st_map_fid, statp, st_map);
JAVADB_STAT_INT(jnienv, jobj, mpool_stat_st_cache_hit_fid, statp, st_cache_hit);
JAVADB_STAT_INT(jnienv, jobj, mpool_stat_st_cache_miss_fid, statp, st_cache_miss);
@@ -151,7 +160,6 @@ static int __dbj_fill_mpool_stat(JNIEnv *jnienv,
JAVADB_STAT_INT(jnienv, jobj, mpool_stat_st_ro_evict_fid, statp, st_ro_evict);
JAVADB_STAT_INT(jnienv, jobj, mpool_stat_st_rw_evict_fid, statp, st_rw_evict);
JAVADB_STAT_INT(jnienv, jobj, mpool_stat_st_page_trickle_fid, statp, st_page_trickle);
- JAVADB_STAT_INT(jnienv, jobj, mpool_stat_st_pages_fid, statp, st_pages);
JAVADB_STAT_INT(jnienv, jobj, mpool_stat_st_page_clean_fid, statp, st_page_clean);
JAVADB_STAT_INT(jnienv, jobj, mpool_stat_st_page_dirty_fid, statp, st_page_dirty);
JAVADB_STAT_INT(jnienv, jobj, mpool_stat_st_hash_buckets_fid, statp, st_hash_buckets);
@@ -173,6 +181,7 @@ static int __dbj_fill_mpool_stat(JNIEnv *jnienv,
JAVADB_STAT_INT(jnienv, jobj, mpool_stat_st_alloc_pages_fid, statp, st_alloc_pages);
JAVADB_STAT_INT(jnienv, jobj, mpool_stat_st_alloc_max_pages_fid, statp, st_alloc_max_pages);
JAVADB_STAT_INT(jnienv, jobj, mpool_stat_st_io_wait_fid, statp, st_io_wait);
+ JAVADB_STAT_INT(jnienv, jobj, mpool_stat_st_regsize_fid, statp, st_regsize);
return (0);
}
static int __dbj_fill_mutex_stat(JNIEnv *jnienv,
@@ -207,6 +216,8 @@ static int __dbj_fill_qam_stat(JNIEnv *jnienv,
}
static int __dbj_fill_rep_stat(JNIEnv *jnienv,
jobject jobj, struct __db_rep_stat *statp) {
+ JAVADB_STAT_INT(jnienv, jobj, rep_stat_st_log_queued_fid, statp, st_log_queued);
+ JAVADB_STAT_INT(jnienv, jobj, rep_stat_st_startup_complete_fid, statp, st_startup_complete);
JAVADB_STAT_INT(jnienv, jobj, rep_stat_st_status_fid, statp, st_status);
JAVADB_STAT_LSN(jnienv, jobj, rep_stat_st_next_lsn_fid, statp, st_next_lsn);
JAVADB_STAT_LSN(jnienv, jobj, rep_stat_st_waiting_lsn_fid, statp, st_waiting_lsn);
@@ -225,7 +236,6 @@ static int __dbj_fill_rep_stat(JNIEnv *jnienv,
JAVADB_STAT_INT(jnienv, jobj, rep_stat_st_gen_fid, statp, st_gen);
JAVADB_STAT_INT(jnienv, jobj, rep_stat_st_egen_fid, statp, st_egen);
JAVADB_STAT_INT(jnienv, jobj, rep_stat_st_log_duplicated_fid, statp, st_log_duplicated);
- JAVADB_STAT_INT(jnienv, jobj, rep_stat_st_log_queued_fid, statp, st_log_queued);
JAVADB_STAT_INT(jnienv, jobj, rep_stat_st_log_queued_max_fid, statp, st_log_queued_max);
JAVADB_STAT_INT(jnienv, jobj, rep_stat_st_log_queued_total_fid, statp, st_log_queued_total);
JAVADB_STAT_INT(jnienv, jobj, rep_stat_st_log_records_fid, statp, st_log_records);
@@ -244,8 +254,8 @@ static int __dbj_fill_rep_stat(JNIEnv *jnienv,
JAVADB_STAT_INT(jnienv, jobj, rep_stat_st_pg_duplicated_fid, statp, st_pg_duplicated);
JAVADB_STAT_INT(jnienv, jobj, rep_stat_st_pg_records_fid, statp, st_pg_records);
JAVADB_STAT_INT(jnienv, jobj, rep_stat_st_pg_requested_fid, statp, st_pg_requested);
- JAVADB_STAT_INT(jnienv, jobj, rep_stat_st_startup_complete_fid, statp, st_startup_complete);
JAVADB_STAT_INT(jnienv, jobj, rep_stat_st_txns_applied_fid, statp, st_txns_applied);
+ JAVADB_STAT_INT(jnienv, jobj, rep_stat_st_startsync_delayed_fid, statp, st_startsync_delayed);
JAVADB_STAT_INT(jnienv, jobj, rep_stat_st_elections_fid, statp, st_elections);
JAVADB_STAT_INT(jnienv, jobj, rep_stat_st_elections_won_fid, statp, st_elections_won);
JAVADB_STAT_INT(jnienv, jobj, rep_stat_st_election_cur_winner_fid, statp, st_election_cur_winner);
@@ -261,6 +271,15 @@ static int __dbj_fill_rep_stat(JNIEnv *jnienv,
JAVADB_STAT_INT(jnienv, jobj, rep_stat_st_election_usec_fid, statp, st_election_usec);
return (0);
}
+static int __dbj_fill_repmgr_stat(JNIEnv *jnienv,
+ jobject jobj, struct __db_repmgr_stat *statp) {
+ JAVADB_STAT_INT(jnienv, jobj, repmgr_stat_st_perm_failed_fid, statp, st_perm_failed);
+ JAVADB_STAT_INT(jnienv, jobj, repmgr_stat_st_msgs_queued_fid, statp, st_msgs_queued);
+ JAVADB_STAT_INT(jnienv, jobj, repmgr_stat_st_msgs_dropped_fid, statp, st_msgs_dropped);
+ JAVADB_STAT_INT(jnienv, jobj, repmgr_stat_st_connection_drop_fid, statp, st_connection_drop);
+ JAVADB_STAT_INT(jnienv, jobj, repmgr_stat_st_connect_fail_fid, statp, st_connect_fail);
+ return (0);
+}
static int __dbj_fill_seq_stat(JNIEnv *jnienv,
jobject jobj, struct __db_seq_stat *statp) {
JAVADB_STAT_INT(jnienv, jobj, seq_stat_st_wait_fid, statp, st_wait);
@@ -276,6 +295,7 @@ static int __dbj_fill_seq_stat(JNIEnv *jnienv,
}
static int __dbj_fill_txn_stat(JNIEnv *jnienv,
jobject jobj, struct __db_txn_stat *statp) {
+ JAVADB_STAT_INT(jnienv, jobj, txn_stat_st_nrestores_fid, statp, st_nrestores);
JAVADB_STAT_LSN(jnienv, jobj, txn_stat_st_last_ckp_fid, statp, st_last_ckp);
JAVADB_STAT_LONG(jnienv, jobj, txn_stat_st_time_ckp_fid, statp, st_time_ckp);
JAVADB_STAT_INT(jnienv, jobj, txn_stat_st_last_txnid_fid, statp, st_last_txnid);
@@ -285,7 +305,6 @@ static int __dbj_fill_txn_stat(JNIEnv *jnienv,
JAVADB_STAT_INT(jnienv, jobj, txn_stat_st_ncommits_fid, statp, st_ncommits);
JAVADB_STAT_INT(jnienv, jobj, txn_stat_st_nactive_fid, statp, st_nactive);
JAVADB_STAT_INT(jnienv, jobj, txn_stat_st_nsnapshot_fid, statp, st_nsnapshot);
- JAVADB_STAT_INT(jnienv, jobj, txn_stat_st_nrestores_fid, statp, st_nrestores);
JAVADB_STAT_INT(jnienv, jobj, txn_stat_st_maxnactive_fid, statp, st_maxnactive);
JAVADB_STAT_INT(jnienv, jobj, txn_stat_st_maxnsnapshot_fid, statp, st_maxnsnapshot);
JAVADB_STAT_ACTIVE(jnienv, jobj, txn_stat_st_txnarray_fid, statp, st_txnarray);
diff --git a/db/libdb_java/java_typemaps.i b/db/libdb_java/java_typemaps.i
index 89a572886..2dd41f7c2 100644
--- a/db/libdb_java/java_typemaps.i
+++ b/db/libdb_java/java_typemaps.i
@@ -722,16 +722,6 @@ out0: return;
}
%}
-JAVA_TYPEMAP(int *envid, DbEnv.RepProcessMessage, jobject)
-%typemap(in) int *envid (int id) %{
- id = (*jenv)->GetIntField(jenv, $input, rep_processmsg_envid_fid);
- $1 = &id;
-%}
-
-%typemap(argout) int *envid %{
- (*jenv)->SetIntField(jenv, $input, rep_processmsg_envid_fid, *$1);
-%}
-
JAVA_TYPEMAP(struct __db_repmgr_sites,
com.sleepycat.db.ReplicationHostAddress[], jobjectArray)
%typemap(out) struct __db_repmgr_sites
diff --git a/db/libdb_java/java_util.i b/db/libdb_java/java_util.i
index 2a9c27c45..0313b853a 100644
--- a/db/libdb_java/java_util.i
+++ b/db/libdb_java/java_util.i
@@ -2,6 +2,11 @@
static {
/* An alternate library name can be specified via a property. */
String libname;
+ int v_major, v_minor, v_patch;
+
+ v_major = DbConstants.DB_VERSION_MAJOR;
+ v_minor = DbConstants.DB_VERSION_MINOR;
+ v_patch = DbConstants.DB_VERSION_PATCH;
if ((libname =
System.getProperty("sleepycat.db.libfile")) != null)
@@ -16,9 +21,7 @@
* On Windows, library name is something like
* "libdb_java42.dll" or "libdb_java42d.dll".
*/
- libname = "libdb_java" +
- DbConstants.DB_VERSION_MAJOR +
- DbConstants.DB_VERSION_MINOR;
+ libname = "libdb_java" + v_major + v_minor;
try {
System.loadLibrary(libname);
@@ -36,18 +39,22 @@
* "libdb_java-3.0.so".
*/
System.loadLibrary("db_java-" +
- DbConstants.DB_VERSION_MAJOR + "." +
- DbConstants.DB_VERSION_MINOR);
+ v_major + "." + v_minor);
}
}
initialize();
- if (DbEnv_get_version_major() != DbConstants.DB_VERSION_MAJOR ||
- DbEnv_get_version_minor() != DbConstants.DB_VERSION_MINOR ||
- DbEnv_get_version_patch() != DbConstants.DB_VERSION_PATCH)
+ if (DbEnv_get_version_major() != v_major ||
+ DbEnv_get_version_minor() != v_minor ||
+ DbEnv_get_version_patch() != v_patch)
throw new RuntimeException(
- "Berkeley DB library version doesn't match Java classes");
+ "Berkeley DB library version " +
+ DbEnv_get_version_major() + "." +
+ DbEnv_get_version_minor() + "." +
+ DbEnv_get_version_patch() +
+ " doesn't match Java class library version " +
+ v_major + "." + v_minor + "." + v_patch);
}
static native final void initialize();
@@ -75,13 +82,14 @@ static jclass keyrange_class;
static jclass bt_stat_class, compact_class, h_stat_class, lock_stat_class;
static jclass log_stat_class, mpool_stat_class, mpool_fstat_class;
static jclass mutex_stat_class, qam_stat_class, rep_stat_class;
-static jclass rephost_class, seq_stat_class, txn_stat_class;
+static jclass repmgr_stat_class, rephost_class, seq_stat_class, txn_stat_class;
static jclass txn_active_class;
-static jclass lock_class, lockreq_class, rep_processmsg_class;
+static jclass lock_class, lockreq_class;
static jclass dbex_class, deadex_class, lockex_class, memex_class;
static jclass repdupmasterex_class, rephandledeadex_class;
-static jclass repholdelectionex_class, repjoinfailex_class, replockoutex_class;
-static jclass repunavailex_class;
+static jclass repholdelectionex_class, repjoinfailex_class;
+static jclass repleaseexpiredex_class, repleasetimeoutex_class;
+static jclass replockoutex_class, repunavailex_class;
static jclass runrecex_class, versionex_class;
static jclass filenotfoundex_class, illegalargex_class, outofmemerr_class;
static jclass bytearray_class, string_class, outputstream_class;
@@ -94,7 +102,6 @@ static jfieldID kr_less_fid, kr_equal_fid, kr_greater_fid;
static jfieldID lock_cptr_fid;
static jfieldID lockreq_op_fid, lockreq_modeflag_fid, lockreq_timeout_fid;
static jfieldID lockreq_obj_fid, lockreq_lock_fid;
-static jfieldID rep_processmsg_envid_fid;
static jfieldID rephost_port_fid, rephost_host_fid, rephost_eid_fid;
static jfieldID rephost_status_fid;
@@ -104,6 +111,7 @@ static jfieldID bt_stat_bt_version_fid;
static jfieldID bt_stat_bt_metaflags_fid;
static jfieldID bt_stat_bt_nkeys_fid;
static jfieldID bt_stat_bt_ndata_fid;
+static jfieldID bt_stat_bt_pagecnt_fid;
static jfieldID bt_stat_bt_pagesize_fid;
static jfieldID bt_stat_bt_minkey_fid;
static jfieldID bt_stat_bt_re_len_fid;
@@ -133,6 +141,7 @@ static jfieldID h_stat_hash_version_fid;
static jfieldID h_stat_hash_metaflags_fid;
static jfieldID h_stat_hash_nkeys_fid;
static jfieldID h_stat_hash_ndata_fid;
+static jfieldID h_stat_hash_pagecnt_fid;
static jfieldID h_stat_hash_pagesize_fid;
static jfieldID h_stat_hash_ffactor_fid;
static jfieldID h_stat_hash_buckets_fid;
@@ -150,9 +159,9 @@ static jfieldID lock_stat_st_maxlocks_fid;
static jfieldID lock_stat_st_maxlockers_fid;
static jfieldID lock_stat_st_maxobjects_fid;
static jfieldID lock_stat_st_nmodes_fid;
+static jfieldID lock_stat_st_nlockers_fid;
static jfieldID lock_stat_st_nlocks_fid;
static jfieldID lock_stat_st_maxnlocks_fid;
-static jfieldID lock_stat_st_nlockers_fid;
static jfieldID lock_stat_st_maxnlockers_fid;
static jfieldID lock_stat_st_nobjects_fid;
static jfieldID lock_stat_st_maxnobjects_fid;
@@ -167,19 +176,26 @@ static jfieldID lock_stat_st_locktimeout_fid;
static jfieldID lock_stat_st_nlocktimeouts_fid;
static jfieldID lock_stat_st_txntimeout_fid;
static jfieldID lock_stat_st_ntxntimeouts_fid;
+static jfieldID lock_stat_st_objs_wait_fid;
+static jfieldID lock_stat_st_objs_nowait_fid;
+static jfieldID lock_stat_st_lockers_wait_fid;
+static jfieldID lock_stat_st_lockers_nowait_fid;
+static jfieldID lock_stat_st_locks_wait_fid;
+static jfieldID lock_stat_st_locks_nowait_fid;
static jfieldID lock_stat_st_region_wait_fid;
static jfieldID lock_stat_st_region_nowait_fid;
+static jfieldID lock_stat_st_hash_len_fid;
static jfieldID lock_stat_st_regsize_fid;
static jfieldID log_stat_st_magic_fid;
static jfieldID log_stat_st_version_fid;
static jfieldID log_stat_st_mode_fid;
static jfieldID log_stat_st_lg_bsize_fid;
static jfieldID log_stat_st_lg_size_fid;
+static jfieldID log_stat_st_wc_bytes_fid;
+static jfieldID log_stat_st_wc_mbytes_fid;
static jfieldID log_stat_st_record_fid;
static jfieldID log_stat_st_w_bytes_fid;
static jfieldID log_stat_st_w_mbytes_fid;
-static jfieldID log_stat_st_wc_bytes_fid;
-static jfieldID log_stat_st_wc_mbytes_fid;
static jfieldID log_stat_st_wcount_fid;
static jfieldID log_stat_st_wcount_fill_fid;
static jfieldID log_stat_st_rcount_fid;
@@ -190,9 +206,9 @@ static jfieldID log_stat_st_cur_file_fid;
static jfieldID log_stat_st_cur_offset_fid;
static jfieldID log_stat_st_disk_file_fid;
static jfieldID log_stat_st_disk_offset_fid;
-static jfieldID log_stat_st_regsize_fid;
static jfieldID log_stat_st_maxcommitperflush_fid;
static jfieldID log_stat_st_mincommitperflush_fid;
+static jfieldID log_stat_st_regsize_fid;
static jfieldID mpool_fstat_file_name_fid;
static jfieldID mpool_fstat_st_pagesize_fid;
static jfieldID mpool_fstat_st_map_fid;
@@ -204,11 +220,12 @@ static jfieldID mpool_fstat_st_page_out_fid;
static jfieldID mpool_stat_st_gbytes_fid;
static jfieldID mpool_stat_st_bytes_fid;
static jfieldID mpool_stat_st_ncache_fid;
-static jfieldID mpool_stat_st_regsize_fid;
+static jfieldID mpool_stat_st_max_ncache_fid;
static jfieldID mpool_stat_st_mmapsize_fid;
static jfieldID mpool_stat_st_maxopenfd_fid;
static jfieldID mpool_stat_st_maxwrite_fid;
static jfieldID mpool_stat_st_maxwrite_sleep_fid;
+static jfieldID mpool_stat_st_pages_fid;
static jfieldID mpool_stat_st_map_fid;
static jfieldID mpool_stat_st_cache_hit_fid;
static jfieldID mpool_stat_st_cache_miss_fid;
@@ -218,7 +235,6 @@ static jfieldID mpool_stat_st_page_out_fid;
static jfieldID mpool_stat_st_ro_evict_fid;
static jfieldID mpool_stat_st_rw_evict_fid;
static jfieldID mpool_stat_st_page_trickle_fid;
-static jfieldID mpool_stat_st_pages_fid;
static jfieldID mpool_stat_st_page_clean_fid;
static jfieldID mpool_stat_st_page_dirty_fid;
static jfieldID mpool_stat_st_hash_buckets_fid;
@@ -240,6 +256,7 @@ static jfieldID mpool_stat_st_alloc_max_buckets_fid;
static jfieldID mpool_stat_st_alloc_pages_fid;
static jfieldID mpool_stat_st_alloc_max_pages_fid;
static jfieldID mpool_stat_st_io_wait_fid;
+static jfieldID mpool_stat_st_regsize_fid;
static jfieldID mutex_stat_st_mutex_align_fid;
static jfieldID mutex_stat_st_mutex_tas_spins_fid;
static jfieldID mutex_stat_st_mutex_cnt_fid;
@@ -262,6 +279,8 @@ static jfieldID qam_stat_qs_re_pad_fid;
static jfieldID qam_stat_qs_pgfree_fid;
static jfieldID qam_stat_qs_first_recno_fid;
static jfieldID qam_stat_qs_cur_recno_fid;
+static jfieldID rep_stat_st_log_queued_fid;
+static jfieldID rep_stat_st_startup_complete_fid;
static jfieldID rep_stat_st_status_fid;
static jfieldID rep_stat_st_next_lsn_fid;
static jfieldID rep_stat_st_waiting_lsn_fid;
@@ -280,7 +299,6 @@ static jfieldID rep_stat_st_client_svc_miss_fid;
static jfieldID rep_stat_st_gen_fid;
static jfieldID rep_stat_st_egen_fid;
static jfieldID rep_stat_st_log_duplicated_fid;
-static jfieldID rep_stat_st_log_queued_fid;
static jfieldID rep_stat_st_log_queued_max_fid;
static jfieldID rep_stat_st_log_queued_total_fid;
static jfieldID rep_stat_st_log_records_fid;
@@ -299,8 +317,8 @@ static jfieldID rep_stat_st_outdated_fid;
static jfieldID rep_stat_st_pg_duplicated_fid;
static jfieldID rep_stat_st_pg_records_fid;
static jfieldID rep_stat_st_pg_requested_fid;
-static jfieldID rep_stat_st_startup_complete_fid;
static jfieldID rep_stat_st_txns_applied_fid;
+static jfieldID rep_stat_st_startsync_delayed_fid;
static jfieldID rep_stat_st_elections_fid;
static jfieldID rep_stat_st_elections_won_fid;
static jfieldID rep_stat_st_election_cur_winner_fid;
@@ -314,6 +332,11 @@ static jfieldID rep_stat_st_election_tiebreaker_fid;
static jfieldID rep_stat_st_election_votes_fid;
static jfieldID rep_stat_st_election_sec_fid;
static jfieldID rep_stat_st_election_usec_fid;
+static jfieldID repmgr_stat_st_perm_failed_fid;
+static jfieldID repmgr_stat_st_msgs_queued_fid;
+static jfieldID repmgr_stat_st_msgs_dropped_fid;
+static jfieldID repmgr_stat_st_connection_drop_fid;
+static jfieldID repmgr_stat_st_connect_fail_fid;
static jfieldID seq_stat_st_wait_fid;
static jfieldID seq_stat_st_nowait_fid;
static jfieldID seq_stat_st_current_fid;
@@ -323,6 +346,7 @@ static jfieldID seq_stat_st_min_fid;
static jfieldID seq_stat_st_max_fid;
static jfieldID seq_stat_st_cache_size_fid;
static jfieldID seq_stat_st_flags_fid;
+static jfieldID txn_stat_st_nrestores_fid;
static jfieldID txn_stat_st_last_ckp_fid;
static jfieldID txn_stat_st_time_ckp_fid;
static jfieldID txn_stat_st_last_txnid_fid;
@@ -332,7 +356,6 @@ static jfieldID txn_stat_st_nbegins_fid;
static jfieldID txn_stat_st_ncommits_fid;
static jfieldID txn_stat_st_nactive_fid;
static jfieldID txn_stat_st_nsnapshot_fid;
-static jfieldID txn_stat_st_nrestores_fid;
static jfieldID txn_stat_st_maxnactive_fid;
static jfieldID txn_stat_st_maxnsnapshot_fid;
static jfieldID txn_stat_st_txnarray_fid;
@@ -353,18 +376,19 @@ static jfieldID txn_active_name_fid;
static jmethodID dbenv_construct, dbt_construct, dblsn_construct;
static jmethodID dbpreplist_construct, dbtxn_construct;
-static jmethodID bt_stat_construct, h_stat_construct;
+static jmethodID bt_stat_construct, get_err_msg_method, h_stat_construct;
static jmethodID lock_stat_construct, log_stat_construct;
static jmethodID mpool_stat_construct, mpool_fstat_construct;
static jmethodID mutex_stat_construct, qam_stat_construct;
-static jmethodID rep_stat_construct, seq_stat_construct;
+static jmethodID rep_stat_construct, repmgr_stat_construct, seq_stat_construct;
static jmethodID txn_stat_construct, txn_active_construct;
static jmethodID dbex_construct, deadex_construct, lockex_construct;
static jmethodID memex_construct, memex_update_method;
static jmethodID repdupmasterex_construct, rephandledeadex_construct;
static jmethodID repholdelectionex_construct, repjoinfailex_construct;
-static jmethodID rephost_construct;
-static jmethodID replockoutex_construct, repunavailex_construct;
+static jmethodID rephost_construct, repleaseexpiredex_construct;
+static jmethodID repleasetimeoutex_construct, replockoutex_construct;
+static jmethodID repunavailex_construct;
static jmethodID runrecex_construct, versionex_construct;
static jmethodID filenotfoundex_construct, illegalargex_construct;
static jmethodID outofmemerr_construct;
@@ -372,11 +396,17 @@ static jmethodID lock_construct;
static jmethodID app_dispatch_method, errcall_method, env_feedback_method;
static jmethodID msgcall_method, paniccall_method, rep_transport_method;
-static jmethodID event_notify_method;
+static jmethodID panic_event_notify_method, rep_client_event_notify_method;
+static jmethodID rep_elected_event_notify_method;
+static jmethodID rep_master_event_notify_method;
+static jmethodID rep_new_master_event_notify_method;
+static jmethodID rep_perm_failed_event_notify_method;
+static jmethodID rep_startup_done_event_notify_method;
+static jmethodID write_failed_event_notify_method;
static jmethodID append_recno_method, bt_compare_method, bt_prefix_method;
-static jmethodID db_feedback_method, dup_compare_method, h_hash_method;
-static jmethodID seckey_create_method;
+static jmethodID db_feedback_method, dup_compare_method, h_compare_method;
+static jmethodID h_hash_method, seckey_create_method;
static jmethodID outputstream_write_method;
@@ -402,6 +432,7 @@ const struct {
{ &mutex_stat_class, DB_PKG "MutexStats" },
{ &qam_stat_class, DB_PKG "QueueStats" },
{ &rep_stat_class, DB_PKG "ReplicationStats" },
+ { &repmgr_stat_class, DB_PKG "ReplicationManagerStats" },
{ &seq_stat_class, DB_PKG "SequenceStats" },
{ &txn_stat_class, DB_PKG "TransactionStats" },
{ &txn_active_class, DB_PKG "TransactionStats$Active" },
@@ -409,8 +440,6 @@ const struct {
{ &keyrange_class, DB_PKG "KeyRange" },
{ &lock_class, DB_PKG "internal/DbLock" },
{ &lockreq_class, DB_PKG "LockRequest" },
- { &rep_processmsg_class, DB_PKG "internal/DbEnv$RepProcessMessage" },
- { &rep_processmsg_class, DB_PKG "internal/DbEnv$RepProcessMessage" },
{ &dbex_class, DB_PKG "DatabaseException" },
{ &deadex_class, DB_PKG "DeadlockException" },
@@ -421,6 +450,8 @@ const struct {
{ &repholdelectionex_class, DB_PKG "ReplicationHoldElectionException" },
{ &rephost_class, DB_PKG "ReplicationHostAddress" },
{ &repjoinfailex_class, DB_PKG "ReplicationJoinFailureException" },
+ { &repleaseexpiredex_class, DB_PKG "ReplicationLeaseExpiredException" },
+ { &repleasetimeoutex_class, DB_PKG "ReplicationLeaseTimeoutException" },
{ &replockoutex_class, DB_PKG "ReplicationLockoutException" },
{ &repunavailex_class, DB_PKG "ReplicationSiteUnavailableException" },
{ &runrecex_class, DB_PKG "RunRecoveryException" },
@@ -474,6 +505,7 @@ const struct {
{ &bt_stat_bt_metaflags_fid, &bt_stat_class, "bt_metaflags", "I" },
{ &bt_stat_bt_nkeys_fid, &bt_stat_class, "bt_nkeys", "I" },
{ &bt_stat_bt_ndata_fid, &bt_stat_class, "bt_ndata", "I" },
+ { &bt_stat_bt_pagecnt_fid, &bt_stat_class, "bt_pagecnt", "I" },
{ &bt_stat_bt_pagesize_fid, &bt_stat_class, "bt_pagesize", "I" },
{ &bt_stat_bt_minkey_fid, &bt_stat_class, "bt_minkey", "I" },
{ &bt_stat_bt_re_len_fid, &bt_stat_class, "bt_re_len", "I" },
@@ -503,6 +535,7 @@ const struct {
{ &h_stat_hash_metaflags_fid, &h_stat_class, "hash_metaflags", "I" },
{ &h_stat_hash_nkeys_fid, &h_stat_class, "hash_nkeys", "I" },
{ &h_stat_hash_ndata_fid, &h_stat_class, "hash_ndata", "I" },
+ { &h_stat_hash_pagecnt_fid, &h_stat_class, "hash_pagecnt", "I" },
{ &h_stat_hash_pagesize_fid, &h_stat_class, "hash_pagesize", "I" },
{ &h_stat_hash_ffactor_fid, &h_stat_class, "hash_ffactor", "I" },
{ &h_stat_hash_buckets_fid, &h_stat_class, "hash_buckets", "I" },
@@ -520,9 +553,9 @@ const struct {
{ &lock_stat_st_maxlockers_fid, &lock_stat_class, "st_maxlockers", "I" },
{ &lock_stat_st_maxobjects_fid, &lock_stat_class, "st_maxobjects", "I" },
{ &lock_stat_st_nmodes_fid, &lock_stat_class, "st_nmodes", "I" },
+ { &lock_stat_st_nlockers_fid, &lock_stat_class, "st_nlockers", "I" },
{ &lock_stat_st_nlocks_fid, &lock_stat_class, "st_nlocks", "I" },
{ &lock_stat_st_maxnlocks_fid, &lock_stat_class, "st_maxnlocks", "I" },
- { &lock_stat_st_nlockers_fid, &lock_stat_class, "st_nlockers", "I" },
{ &lock_stat_st_maxnlockers_fid, &lock_stat_class, "st_maxnlockers", "I" },
{ &lock_stat_st_nobjects_fid, &lock_stat_class, "st_nobjects", "I" },
{ &lock_stat_st_maxnobjects_fid, &lock_stat_class, "st_maxnobjects", "I" },
@@ -537,19 +570,26 @@ const struct {
{ &lock_stat_st_nlocktimeouts_fid, &lock_stat_class, "st_nlocktimeouts", "I" },
{ &lock_stat_st_txntimeout_fid, &lock_stat_class, "st_txntimeout", "I" },
{ &lock_stat_st_ntxntimeouts_fid, &lock_stat_class, "st_ntxntimeouts", "I" },
+ { &lock_stat_st_objs_wait_fid, &lock_stat_class, "st_objs_wait", "I" },
+ { &lock_stat_st_objs_nowait_fid, &lock_stat_class, "st_objs_nowait", "I" },
+ { &lock_stat_st_lockers_wait_fid, &lock_stat_class, "st_lockers_wait", "I" },
+ { &lock_stat_st_lockers_nowait_fid, &lock_stat_class, "st_lockers_nowait", "I" },
+ { &lock_stat_st_locks_wait_fid, &lock_stat_class, "st_locks_wait", "I" },
+ { &lock_stat_st_locks_nowait_fid, &lock_stat_class, "st_locks_nowait", "I" },
{ &lock_stat_st_region_wait_fid, &lock_stat_class, "st_region_wait", "I" },
{ &lock_stat_st_region_nowait_fid, &lock_stat_class, "st_region_nowait", "I" },
+ { &lock_stat_st_hash_len_fid, &lock_stat_class, "st_hash_len", "I" },
{ &lock_stat_st_regsize_fid, &lock_stat_class, "st_regsize", "I" },
{ &log_stat_st_magic_fid, &log_stat_class, "st_magic", "I" },
{ &log_stat_st_version_fid, &log_stat_class, "st_version", "I" },
{ &log_stat_st_mode_fid, &log_stat_class, "st_mode", "I" },
{ &log_stat_st_lg_bsize_fid, &log_stat_class, "st_lg_bsize", "I" },
{ &log_stat_st_lg_size_fid, &log_stat_class, "st_lg_size", "I" },
+ { &log_stat_st_wc_bytes_fid, &log_stat_class, "st_wc_bytes", "I" },
+ { &log_stat_st_wc_mbytes_fid, &log_stat_class, "st_wc_mbytes", "I" },
{ &log_stat_st_record_fid, &log_stat_class, "st_record", "I" },
{ &log_stat_st_w_bytes_fid, &log_stat_class, "st_w_bytes", "I" },
{ &log_stat_st_w_mbytes_fid, &log_stat_class, "st_w_mbytes", "I" },
- { &log_stat_st_wc_bytes_fid, &log_stat_class, "st_wc_bytes", "I" },
- { &log_stat_st_wc_mbytes_fid, &log_stat_class, "st_wc_mbytes", "I" },
{ &log_stat_st_wcount_fid, &log_stat_class, "st_wcount", "I" },
{ &log_stat_st_wcount_fill_fid, &log_stat_class, "st_wcount_fill", "I" },
{ &log_stat_st_rcount_fid, &log_stat_class, "st_rcount", "I" },
@@ -560,9 +600,9 @@ const struct {
{ &log_stat_st_cur_offset_fid, &log_stat_class, "st_cur_offset", "I" },
{ &log_stat_st_disk_file_fid, &log_stat_class, "st_disk_file", "I" },
{ &log_stat_st_disk_offset_fid, &log_stat_class, "st_disk_offset", "I" },
- { &log_stat_st_regsize_fid, &log_stat_class, "st_regsize", "I" },
{ &log_stat_st_maxcommitperflush_fid, &log_stat_class, "st_maxcommitperflush", "I" },
{ &log_stat_st_mincommitperflush_fid, &log_stat_class, "st_mincommitperflush", "I" },
+ { &log_stat_st_regsize_fid, &log_stat_class, "st_regsize", "I" },
{ &mpool_fstat_file_name_fid, &mpool_fstat_class, "file_name", "Ljava/lang/String;" },
{ &mpool_fstat_st_pagesize_fid, &mpool_fstat_class, "st_pagesize", "I" },
{ &mpool_fstat_st_map_fid, &mpool_fstat_class, "st_map", "I" },
@@ -574,11 +614,12 @@ const struct {
{ &mpool_stat_st_gbytes_fid, &mpool_stat_class, "st_gbytes", "I" },
{ &mpool_stat_st_bytes_fid, &mpool_stat_class, "st_bytes", "I" },
{ &mpool_stat_st_ncache_fid, &mpool_stat_class, "st_ncache", "I" },
- { &mpool_stat_st_regsize_fid, &mpool_stat_class, "st_regsize", "I" },
+ { &mpool_stat_st_max_ncache_fid, &mpool_stat_class, "st_max_ncache", "I" },
{ &mpool_stat_st_mmapsize_fid, &mpool_stat_class, "st_mmapsize", "I" },
{ &mpool_stat_st_maxopenfd_fid, &mpool_stat_class, "st_maxopenfd", "I" },
{ &mpool_stat_st_maxwrite_fid, &mpool_stat_class, "st_maxwrite", "I" },
{ &mpool_stat_st_maxwrite_sleep_fid, &mpool_stat_class, "st_maxwrite_sleep", "I" },
+ { &mpool_stat_st_pages_fid, &mpool_stat_class, "st_pages", "I" },
{ &mpool_stat_st_map_fid, &mpool_stat_class, "st_map", "I" },
{ &mpool_stat_st_cache_hit_fid, &mpool_stat_class, "st_cache_hit", "I" },
{ &mpool_stat_st_cache_miss_fid, &mpool_stat_class, "st_cache_miss", "I" },
@@ -588,7 +629,6 @@ const struct {
{ &mpool_stat_st_ro_evict_fid, &mpool_stat_class, "st_ro_evict", "I" },
{ &mpool_stat_st_rw_evict_fid, &mpool_stat_class, "st_rw_evict", "I" },
{ &mpool_stat_st_page_trickle_fid, &mpool_stat_class, "st_page_trickle", "I" },
- { &mpool_stat_st_pages_fid, &mpool_stat_class, "st_pages", "I" },
{ &mpool_stat_st_page_clean_fid, &mpool_stat_class, "st_page_clean", "I" },
{ &mpool_stat_st_page_dirty_fid, &mpool_stat_class, "st_page_dirty", "I" },
{ &mpool_stat_st_hash_buckets_fid, &mpool_stat_class, "st_hash_buckets", "I" },
@@ -610,6 +650,7 @@ const struct {
{ &mpool_stat_st_alloc_pages_fid, &mpool_stat_class, "st_alloc_pages", "I" },
{ &mpool_stat_st_alloc_max_pages_fid, &mpool_stat_class, "st_alloc_max_pages", "I" },
{ &mpool_stat_st_io_wait_fid, &mpool_stat_class, "st_io_wait", "I" },
+ { &mpool_stat_st_regsize_fid, &mpool_stat_class, "st_regsize", "I" },
{ &mutex_stat_st_mutex_align_fid, &mutex_stat_class, "st_mutex_align", "I" },
{ &mutex_stat_st_mutex_tas_spins_fid, &mutex_stat_class, "st_mutex_tas_spins", "I" },
{ &mutex_stat_st_mutex_cnt_fid, &mutex_stat_class, "st_mutex_cnt", "I" },
@@ -632,6 +673,8 @@ const struct {
{ &qam_stat_qs_pgfree_fid, &qam_stat_class, "qs_pgfree", "I" },
{ &qam_stat_qs_first_recno_fid, &qam_stat_class, "qs_first_recno", "I" },
{ &qam_stat_qs_cur_recno_fid, &qam_stat_class, "qs_cur_recno", "I" },
+ { &rep_stat_st_log_queued_fid, &rep_stat_class, "st_log_queued", "I" },
+ { &rep_stat_st_startup_complete_fid, &rep_stat_class, "st_startup_complete", "I" },
{ &rep_stat_st_status_fid, &rep_stat_class, "st_status", "I" },
{ &rep_stat_st_next_lsn_fid, &rep_stat_class, "st_next_lsn", "L" DB_PKG "LogSequenceNumber;" },
{ &rep_stat_st_waiting_lsn_fid, &rep_stat_class, "st_waiting_lsn", "L" DB_PKG "LogSequenceNumber;" },
@@ -650,7 +693,6 @@ const struct {
{ &rep_stat_st_gen_fid, &rep_stat_class, "st_gen", "I" },
{ &rep_stat_st_egen_fid, &rep_stat_class, "st_egen", "I" },
{ &rep_stat_st_log_duplicated_fid, &rep_stat_class, "st_log_duplicated", "I" },
- { &rep_stat_st_log_queued_fid, &rep_stat_class, "st_log_queued", "I" },
{ &rep_stat_st_log_queued_max_fid, &rep_stat_class, "st_log_queued_max", "I" },
{ &rep_stat_st_log_queued_total_fid, &rep_stat_class, "st_log_queued_total", "I" },
{ &rep_stat_st_log_records_fid, &rep_stat_class, "st_log_records", "I" },
@@ -669,8 +711,8 @@ const struct {
{ &rep_stat_st_pg_duplicated_fid, &rep_stat_class, "st_pg_duplicated", "I" },
{ &rep_stat_st_pg_records_fid, &rep_stat_class, "st_pg_records", "I" },
{ &rep_stat_st_pg_requested_fid, &rep_stat_class, "st_pg_requested", "I" },
- { &rep_stat_st_startup_complete_fid, &rep_stat_class, "st_startup_complete", "I" },
{ &rep_stat_st_txns_applied_fid, &rep_stat_class, "st_txns_applied", "I" },
+ { &rep_stat_st_startsync_delayed_fid, &rep_stat_class, "st_startsync_delayed", "I" },
{ &rep_stat_st_elections_fid, &rep_stat_class, "st_elections", "I" },
{ &rep_stat_st_elections_won_fid, &rep_stat_class, "st_elections_won", "I" },
{ &rep_stat_st_election_cur_winner_fid, &rep_stat_class, "st_election_cur_winner", "I" },
@@ -684,6 +726,11 @@ const struct {
{ &rep_stat_st_election_votes_fid, &rep_stat_class, "st_election_votes", "I" },
{ &rep_stat_st_election_sec_fid, &rep_stat_class, "st_election_sec", "I" },
{ &rep_stat_st_election_usec_fid, &rep_stat_class, "st_election_usec", "I" },
+ { &repmgr_stat_st_perm_failed_fid, &repmgr_stat_class, "st_perm_failed", "I" },
+ { &repmgr_stat_st_msgs_queued_fid, &repmgr_stat_class, "st_msgs_queued", "I" },
+ { &repmgr_stat_st_msgs_dropped_fid, &repmgr_stat_class, "st_msgs_dropped", "I" },
+ { &repmgr_stat_st_connection_drop_fid, &repmgr_stat_class, "st_connection_drop", "I" },
+ { &repmgr_stat_st_connect_fail_fid, &repmgr_stat_class, "st_connect_fail", "I" },
{ &seq_stat_st_wait_fid, &seq_stat_class, "st_wait", "I" },
{ &seq_stat_st_nowait_fid, &seq_stat_class, "st_nowait", "I" },
{ &seq_stat_st_current_fid, &seq_stat_class, "st_current", "J" },
@@ -693,6 +740,7 @@ const struct {
{ &seq_stat_st_max_fid, &seq_stat_class, "st_max", "J" },
{ &seq_stat_st_cache_size_fid, &seq_stat_class, "st_cache_size", "I" },
{ &seq_stat_st_flags_fid, &seq_stat_class, "st_flags", "I" },
+ { &txn_stat_st_nrestores_fid, &txn_stat_class, "st_nrestores", "I" },
{ &txn_stat_st_last_ckp_fid, &txn_stat_class, "st_last_ckp", "L" DB_PKG "LogSequenceNumber;" },
{ &txn_stat_st_time_ckp_fid, &txn_stat_class, "st_time_ckp", "J" },
{ &txn_stat_st_last_txnid_fid, &txn_stat_class, "st_last_txnid", "I" },
@@ -702,7 +750,6 @@ const struct {
{ &txn_stat_st_ncommits_fid, &txn_stat_class, "st_ncommits", "I" },
{ &txn_stat_st_nactive_fid, &txn_stat_class, "st_nactive", "I" },
{ &txn_stat_st_nsnapshot_fid, &txn_stat_class, "st_nsnapshot", "I" },
- { &txn_stat_st_nrestores_fid, &txn_stat_class, "st_nrestores", "I" },
{ &txn_stat_st_maxnactive_fid, &txn_stat_class, "st_maxnactive", "I" },
{ &txn_stat_st_maxnsnapshot_fid, &txn_stat_class, "st_maxnsnapshot", "I" },
{ &txn_stat_st_txnarray_fid, &txn_stat_class, "st_txnarray", "[L" DB_PKG "TransactionStats$Active;" },
@@ -724,8 +771,7 @@ const struct {
{ &rephost_port_fid, &rephost_class, "port", "I" },
{ &rephost_host_fid, &rephost_class, "host", "Ljava/lang/String;" },
{ &rephost_eid_fid, &rephost_class, "eid", "I" },
- { &rephost_status_fid, &rephost_class, "status", "I" },
- { &rep_processmsg_envid_fid, &rep_processmsg_class, "envid", "I" }
+ { &rephost_status_fid, &rephost_class, "status", "I" }
};
const struct {
@@ -742,6 +788,8 @@ const struct {
{ &dbtxn_construct, &dbtxn_class, "<init>", "(JZ)V" },
{ &bt_stat_construct, &bt_stat_class, "<init>", "()V" },
+ { &get_err_msg_method, &dbenv_class, "get_err_msg",
+ "(Ljava/lang/String;)Ljava/lang/String;" },
{ &h_stat_construct, &h_stat_class, "<init>", "()V" },
{ &lock_stat_construct, &lock_stat_class, "<init>", "()V" },
{ &log_stat_construct, &log_stat_class, "<init>", "()V" },
@@ -750,6 +798,7 @@ const struct {
{ &mutex_stat_construct, &mutex_stat_class, "<init>", "()V" },
{ &qam_stat_construct, &qam_stat_class, "<init>", "()V" },
{ &rep_stat_construct, &rep_stat_class, "<init>", "()V" },
+ { &repmgr_stat_construct, &repmgr_stat_class, "<init>", "()V" },
{ &seq_stat_construct, &seq_stat_class, "<init>", "()V" },
{ &txn_stat_construct, &txn_stat_class, "<init>", "()V" },
{ &txn_active_construct, &txn_active_class, "<init>", "()V" },
@@ -775,6 +824,10 @@ const struct {
"(Ljava/lang/String;IL" DB_PKG "internal/DbEnv;)V" },
{ &repjoinfailex_construct, &repjoinfailex_class, "<init>",
"(Ljava/lang/String;IL" DB_PKG "internal/DbEnv;)V" },
+ { &repleaseexpiredex_construct, &repleaseexpiredex_class, "<init>",
+ "(Ljava/lang/String;IL" DB_PKG "internal/DbEnv;)V" },
+ { &repleasetimeoutex_construct, &repleasetimeoutex_class, "<init>",
+ "(Ljava/lang/String;IL" DB_PKG "internal/DbEnv;)V" },
{ &replockoutex_construct, &replockoutex_class, "<init>",
"(Ljava/lang/String;IL" DB_PKG "internal/DbEnv;)V" },
{ &repunavailex_construct, &repunavailex_class, "<init>",
@@ -794,8 +847,22 @@ const struct {
{ &app_dispatch_method, &dbenv_class, "handle_app_dispatch",
"(L" DB_PKG "DatabaseEntry;L" DB_PKG "LogSequenceNumber;I)I" },
- { &event_notify_method, &dbenv_class, "handle_event_notify",
- "(I)I" },
+ { &panic_event_notify_method, &dbenv_class, "handle_panic_event_notify",
+ "()V" },
+ { &rep_client_event_notify_method, &dbenv_class,
+ "handle_rep_client_event_notify", "()V" },
+ { &rep_elected_event_notify_method, &dbenv_class,
+ "handle_rep_elected_event_notify" ,"()V" },
+ { &rep_master_event_notify_method, &dbenv_class,
+ "handle_rep_master_event_notify", "()V" },
+ { &rep_new_master_event_notify_method, &dbenv_class,
+ "handle_rep_new_master_event_notify", "(I)V" },
+ { &rep_perm_failed_event_notify_method, &dbenv_class,
+ "handle_rep_perm_failed_event_notify", "()V" },
+ { &rep_startup_done_event_notify_method, &dbenv_class,
+ "handle_rep_startup_done_event_notify", "()V" },
+ { &write_failed_event_notify_method, &dbenv_class,
+ "handle_write_failed_event_notify", "(I)V" },
{ &env_feedback_method, &dbenv_class, "handle_env_feedback", "(II)V" },
{ &errcall_method, &dbenv_class, "handle_error",
"(Ljava/lang/String;)V" },
@@ -816,10 +883,12 @@ const struct {
{ &db_feedback_method, &db_class, "handle_db_feedback", "(II)V" },
{ &dup_compare_method, &db_class, "handle_dup_compare",
"([B[B)I" },
+ { &h_compare_method, &db_class, "handle_h_compare",
+ "([B[B)I" },
{ &h_hash_method, &db_class, "handle_h_hash", "([BI)I" },
{ &seckey_create_method, &db_class, "handle_seckey_create",
- "(L" DB_PKG "DatabaseEntry;L" DB_PKG "DatabaseEntry;L"
- DB_PKG "DatabaseEntry;)I" },
+ "(L" DB_PKG "DatabaseEntry;L" DB_PKG "DatabaseEntry;)[L"
+ DB_PKG "DatabaseEntry;" },
{ &outputstream_write_method, &outputstream_class, "write", "([BII)V" }
};