facebook / facebook/rocksdb

Unable to compile RocksDBLite with JNI support.

Open
#4,620 3 comments 1 reaction 0 assignees View on GitHub
java-api up-for-grabs
Dominant language
C++
Stars
32.1k
Forks
6.9k
Avg merge
32m
Merged PRs (30d)
1

Description

Unable to compile RocksDBLite with JNI support because of unresolved references to transaction-related classes from JNI libraries. Transactions are not supported in RocksDBLite. However, JNI libraries refer to transaction-related code covered with `#ifndef ROCKSDB_LITE ... #endif` directives. This functionality must be disabled in JNI classes when they are compiled for RocksDBLite.

### Expected behavior

RocksDBLite must compile with JNI support. Code of JNI classes, which refers to transactions, must be excluded from compilation with `#ifndef ROCKSDB_LITE ... #endif` directives.

### Actual behavior

Attempts to build RocksDBLite with JNI support lead to compilation errors.

### Steps to reproduce the behavior

Try to compile RocksDb with flags `-DROCKSDB_LITE=1`, `-DJNI=1`, and `-DWITHJNI=1` and get the following compilation errors:

`D:/Src/rocksdb/java/rocksjni/portal.h:1567:14: error: no member named 'WriteBatchWithIndex' in namespace 'rocksdb'
rocksdb::WriteBatchWithIndex*, WriteBatchWithIndexJni> {
~~~~~~~~~^
D:/Src/rocksdb/java/rocksjni/portal.h:1567:60: error: expected class name
rocksdb::WriteBatchWithIndex*, WriteBatchWithIndexJni> {
^
D:/Src/rocksdb/java/rocksjni/portal.h:1579:12: error: 'RocksDBNativeClass' is not a class, namespace, or enumeration
return RocksDBNativeClass::getJClass(env,
^
D:/Src/rocksdb/java/rocksjni/portal.h:75:42: note: 'RocksDBNativeClass' declared here
template class RocksDBNativeClass : public JavaClass {
^
D:/Src/rocksdb/java/rocksjni/portal.h:1623:34: error: expected expression
rocksdb::BackupableDBOptions*, BackupableDBOptionsJni> {
^
D:/Src/rocksdb/java/rocksjni/portal.h:1623:14: error: no member named 'BackupableDBOptions' in namespace 'rocksdb'
rocksdb::BackupableDBOptions*, BackupableDBOptionsJni> {
~~~~~~~~~^
D:/Src/rocksdb/java/rocksjni/portal.h:1623:60: error: expected class name
rocksdb::BackupableDBOptions*, BackupableDBOptionsJni> {
^
D:/Src/rocksdb/java/rocksjni/portal.h:1635:12: error: 'RocksDBNativeClass' is not a class, namespace, or enumeration
return RocksDBNativeClass::getJClass(env,
^
D:/Src/rocksdb/java/rocksjni/portal.h:75:42: note: 'RocksDBNativeClass' declared here
template class RocksDBNativeClass : public JavaClass {
^
D:/Src/rocksdb/java/rocksjni/portal.h:1642:27: error: expected expression
rocksdb::BackupEngine*, BackupEngineJni> {
^
D:/Src/rocksdb/java/rocksjni/portal.h:1642:14: error: no member named 'BackupEngine' in namespace 'rocksdb'
rocksdb::BackupEngine*, BackupEngineJni> {
~~~~~~~~~^
D:/Src/rocksdb/java/rocksjni/portal.h:1642:46: error: expected class name
rocksdb::BackupEngine*, BackupEngineJni> {
^
D:/Src/rocksdb/java/rocksjni/portal.h:1654:12: error: 'RocksDBNativeClass' is not a class, namespace, or enumeration
return RocksDBNativeClass::getJClass(env, "org/rocksdb/BackupEngine");
^
D:/Src/rocksdb/java/rocksjni/portal.h:75:42: note: 'RocksDBNativeClass' declared here
template class RocksDBNativeClass : public JavaClass {
^
D:/Src/rocksdb/java/rocksjni/portal.h:1814:20: error: no type named 'TransactionNotifierJniCallback' in namespace 'rocksdb'
const rocksdb::TransactionNotifierJniCallback*,
~~~~~~~~~^
D:/Src/rocksdb/java/rocksjni/portal.h:1815:37: error: expected class name
AbstractTransactionNotifierJni> {
^
D:/Src/rocksdb/java/rocksjni/portal.h:1818:12: error: 'RocksDBNativeClass' is not a class, namespace, or enumeration
return RocksDBNativeClass::getJClass(env,
^
D:/Src/rocksdb/java/rocksjni/portal.h:75:42: note: 'RocksDBNativeClass' declared here
template class RocksDBNativeClass : public JavaClass {
^
D:/Src/rocksdb/java/rocksjni/portal.h:2455:19: error: unknown type name 'BackupInfo'; did you mean 'BackupInfoJni'?
std::vector backup_infos) {
^~~~~~~~~~
BackupInfoJni
D:/Src/rocksdb/java/rocksjni/portal.h:2378:7: note: 'BackupInfoJni' declared here
class BackupInfoJni : public JavaClass {
^
D:/Src/rocksdb/java/rocksjni/portal.h:2488:28: error: no member named 'backup_id' in 'rocksdb::BackupInfoJni'
env, backup_info.backup_id, backup_info.timestamp, backup_info.size,
~~~~~~~~~~~ ^
D:/Src/rocksdb/java/rocksjni/portal.h:2488:51: error: no member named 'timestamp' in 'rocksdb::BackupInfoJni'
env, backup_info.backup_id, backup_info.timestamp, backup_info.size,
~~~~~~~~~~~ ^
D:/Src/rocksdb/java/rocksjni/portal.h:2488:74: error: no member named 'size' in 'rocksdb::BackupInfoJni'
env, backup_info.backup_id, backup_info.timestamp, backup_info.size,`

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.