Unable to compile RocksDBLite with JNI support.
- 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
Assessment
This issue has not been assessed yet.