final ColumnFamilyOptions columnFamilyOptions) {
super(newOptions(dbOptions.nativeHandle_,
columnFamilyOptions.nativeHandle_));
- env_ = Env.getDefault();
+ env_ = dbOptions.getEnv() != null ? dbOptions.getEnv() : Env.getDefault();
}
/**
}
}
}
+
+ @Test
+ public void mixedOptionsEnvTest() {
+ try (final ColumnFamilyOptions cfOptions = new ColumnFamilyOptions();
+ final DBOptions dbOptions = new DBOptions()) {
+ assertThat(dbOptions.getEnv()).isNotNull();
+ assertThat(dbOptions.getEnv()).isSameAs(Env.getDefault());
+ final Env memEnv = new RocksMemEnv(Env.getDefault());
+
+ try (final Options options = new Options(dbOptions, cfOptions)) {
+ assertThat(options.getEnv()).isSameAs(Env.getDefault());
+ }
+
+ dbOptions.setEnv(memEnv);
+ memEnv.setBackgroundThreads(4, Priority.LOW);
+ Env.getDefault().setBackgroundThreads(2, Priority.HIGH);
+ assertThat(dbOptions.getEnv().getBackgroundThreads(Priority.LOW)).isEqualTo(4);
+ assertThat(dbOptions.getEnv().getBackgroundThreads(Priority.HIGH)).isEqualTo(2);
+ assertThat(Env.getDefault().getBackgroundThreads(Priority.LOW)).isEqualTo(4);
+ assertThat(Env.getDefault().getBackgroundThreads(Priority.HIGH)).isEqualTo(2);
+
+ try (final Options options = new Options(dbOptions, cfOptions)) {
+ assertThat(options.getEnv().getBackgroundThreads(Priority.LOW)).isEqualTo(4);
+ assertThat(options.getEnv().getBackgroundThreads(Priority.HIGH)).isEqualTo(2);
+
+ assertThat(options.getEnv()).isNotSameAs(Env.getDefault());
+ assertThat(options.getEnv()).isSameAs(memEnv);
+ }
+ }
+ }
}