int db_txn_commit(DB_txn *const txn) {
	int rc = mdberr(lsmdb_autocompact((LSMDB_txn *)txn));
	if(rc < 0) {
		lsmdb_txn_abort((LSMDB_txn *)txn);
		return rc;
	}
	return mdberr(lsmdb_txn_commit((LSMDB_txn *)txn));
}
Beispiel #2
0
static void test_write(LSMDB_env *const env) {
	uint8_t k[KEY_SIZE];
	uint8_t d[DATA_SIZE] = {};

	for(int i = 0; i < WRITES / TXN_SIZE; ++i) {
		LSMDB_txn *txn;
		chk( lsmdb_txn_begin(env, NULL, MDB_RDWR, &txn) );

		for(int j = 0; j < TXN_SIZE; ++j) {
			GENKEY(k);

			MDB_val key = { sizeof(k), &k };
			MDB_val data = { sizeof(d), &d };
			chk( lsmdb_put(txn, &key, &data, PUT_FLAGS) );
		}

		chk( lsmdb_autocompact(txn) );
		lsmdb_txn_commit(txn);
	}
}