Skip to content

Commit

Permalink
Upgrading to JE 4.1.17
Browse files Browse the repository at this point in the history
  • Loading branch information
vinothchandar committed Oct 19, 2012
1 parent 0d449a7 commit 07e509d
Show file tree
Hide file tree
Showing 8 changed files with 159 additions and 1 deletion.
2 changes: 1 addition & 1 deletion .classpath
Expand Up @@ -40,7 +40,7 @@
<classpathentry kind="lib" path="lib/protobuf-java-2.3.0.jar"/>
<classpathentry kind="lib" path="contrib/ec2-testing/lib/typica.jar"/>
<classpathentry kind="lib" path="lib/google-collect-1.0.jar"/>
<classpathentry kind="lib" path="lib/je-4.0.92.jar"/>
<classpathentry kind="lib" path="lib/je-4.1.17.jar"/>
<classpathentry kind="lib" path="lib/paranamer-2.1.jar"/>
<classpathentry kind="lib" path="lib/jackson-mapper-asl-1.4.0.jar"/>
<classpathentry kind="lib" path="lib/jackson-core-asl-1.4.0.jar"/>
Expand Down
Binary file removed lib/je-4.0.92.jar
Binary file not shown.
Binary file added lib/je-4.1.17.jar
Binary file not shown.
62 changes: 62 additions & 0 deletions src/java/voldemort/server/VoldemortConfig.java
Expand Up @@ -87,6 +87,9 @@ public class VoldemortConfig implements Serializable {
private long bdbStatsCacheTtlMs;
private boolean bdbExposeSpaceUtilization;
private long bdbMinimumSharedCache;
private boolean bdbCleanerLazyMigration;
private boolean bdbCacheModeEvictLN;
private boolean bdbMinimizeScanImpact;

private String mysqlUsername;
private String mysqlPassword;
Expand Down Expand Up @@ -233,6 +236,9 @@ public VoldemortConfig(Props props) {
this.bdbStatsCacheTtlMs = props.getLong("bdb.stats.cache.ttl.ms", 5 * Time.MS_PER_SECOND);
this.bdbExposeSpaceUtilization = props.getBoolean("bdb.expose.space.utilization", true);
this.bdbMinimumSharedCache = props.getLong("bdb.minimum.shared.cache", 0);
this.bdbCleanerLazyMigration = props.getBoolean("bdb.cleaner.lazy.migration", true);
this.bdbCacheModeEvictLN = props.getBoolean("bdb.cache.evictln", false);
this.bdbMinimizeScanImpact = props.getBoolean("bdb.minimize.scan.impact", false);

this.readOnlyBackups = props.getInt("readonly.backups", 1);
this.readOnlySearchStrategy = props.getString("readonly.search.strategy",
Expand Down Expand Up @@ -821,6 +827,62 @@ public void setBdbBtreeFanout(int bdbBtreeFanout) {
this.bdbBtreeFanout = bdbBtreeFanout;
}

/**
* If true, Cleaner offloads some work to application threads, to keep up
* with the write rate.
*
* <ul>
* <li>property: "bdb.cleaner.lazy.migration"</li>
* <li>default : true</li>
* </ul>
*
* @return
*/
public boolean getBdbCleanerLazyMigration() {
return bdbCleanerLazyMigration;
}

public final void setBdbCleanerLazyMigration(boolean bdbCleanerLazyMigration) {
this.bdbCleanerLazyMigration = bdbCleanerLazyMigration;
}

/**
* If true, BDB will not cache data in the JVM.
*
* <ul>
* <li>Property : "bdb.cache.evictln"</li>
* <li>Default : false</li>
* </ul>
*
* @return
*/
public boolean getBdbCacheModeEvictLN() {
return bdbCacheModeEvictLN;
}

public void setBdbCacheModeEvictLN(boolean bdbCacheModeEvictLN) {
this.bdbCacheModeEvictLN = bdbCacheModeEvictLN;
}

/**
* If true, attempts are made to minimize impact to BDB cache during scan
* jobs
*
* <ul>
* <li>Property : "bdb.minimize.scan.impact"</li>
* <li>Default : false</li>
* </ul>
*
* @return
*/
public boolean getBdbMinimizeScanImpact() {
return bdbMinimizeScanImpact;
}

public void setBdbMinimizeScanImpact(boolean bdbMinimizeScanImpact) {
this.bdbMinimizeScanImpact = bdbMinimizeScanImpact;
}

/**
* The comfortable number of threads the threadpool will attempt to
* maintain. Specified by "core.threads" default: max(1, floor(0.5 *
Expand Down
11 changes: 11 additions & 0 deletions src/java/voldemort/store/bdb/BdbRuntimeConfig.java
Expand Up @@ -14,10 +14,12 @@ public class BdbRuntimeConfig {
public static final long DEFAULT_STATS_CACHE_TTL_MS = 5 * Time.MS_PER_SECOND;
public static final LockMode DEFAULT_LOCK_MODE = LockMode.READ_UNCOMMITTED;
public static final boolean DEFAULT_EXPOSE_SPACE_UTIL = true;
public static final boolean DEFAULT_MINIMIZE_SCAN_IMPACT = false;

private long statsCacheTtlMs = DEFAULT_STATS_CACHE_TTL_MS;
private LockMode lockMode = DEFAULT_LOCK_MODE;
private boolean exposeSpaceUtil = DEFAULT_EXPOSE_SPACE_UTIL;
private boolean minimizeScanImpact = DEFAULT_MINIMIZE_SCAN_IMPACT;

public BdbRuntimeConfig() {

Expand All @@ -29,6 +31,7 @@ public BdbRuntimeConfig(VoldemortConfig config) {
setLockMode(lockMode);
setStatsCacheTtlMs(config.getBdbStatsCacheTtlMs());
setExposeSpaceUtil(config.getBdbExposeSpaceUtilization());
setMinimizeScanImpact(config.getBdbMinimizeScanImpact());
}

public long getStatsCacheTtlMs() {
Expand Down Expand Up @@ -56,4 +59,12 @@ public void setExposeSpaceUtil(boolean expose) {
public boolean getExposeSpaceUtil() {
return this.exposeSpaceUtil;
}

public boolean getMinimizeScanImpact() {
return minimizeScanImpact;
}

public void setMinimizeScanImpact(boolean minimizeScanImpact) {
this.minimizeScanImpact = minimizeScanImpact;
}
}
7 changes: 7 additions & 0 deletions src/java/voldemort/store/bdb/BdbStorageConfiguration.java
Expand Up @@ -37,6 +37,7 @@
import voldemort.utils.Time;

import com.google.common.collect.Maps;
import com.sleepycat.je.CacheMode;
import com.sleepycat.je.Database;
import com.sleepycat.je.DatabaseConfig;
import com.sleepycat.je.DatabaseException;
Expand Down Expand Up @@ -107,8 +108,14 @@ public BdbStorageConfiguration(VoldemortConfig config) {
Integer.toString(config.getBdbLogFaultReadSize()));
environmentConfig.setConfigParam(EnvironmentConfig.LOG_ITERATOR_READ_SIZE,
Integer.toString(config.getBdbLogIteratorReadSize()));
environmentConfig.setConfigParam(EnvironmentConfig.CLEANER_LAZY_MIGRATION,
Boolean.toString(config.getBdbCleanerLazyMigration()));

environmentConfig.setLockTimeout(config.getBdbLockTimeoutMs(), TimeUnit.MILLISECONDS);
if(config.getBdbCacheModeEvictLN()) {
environmentConfig.setCacheMode(CacheMode.EVICT_LN);
}

databaseConfig = new DatabaseConfig();
databaseConfig.setAllowCreate(true);
databaseConfig.setSortedDuplicates(false);
Expand Down
9 changes: 9 additions & 0 deletions src/java/voldemort/store/bdb/BdbStorageEngine.java
Expand Up @@ -51,6 +51,7 @@
import voldemort.versioning.Version;
import voldemort.versioning.Versioned;

import com.sleepycat.je.CacheMode;
import com.sleepycat.je.Cursor;
import com.sleepycat.je.Database;
import com.sleepycat.je.DatabaseEntry;
Expand Down Expand Up @@ -78,6 +79,7 @@ public class BdbStorageEngine implements StorageEngine<ByteArray, byte[], byte[]
private final LockMode readLockMode;
private final BdbEnvironmentStats bdbEnvironmentStats;
private final AtomicBoolean isTruncating = new AtomicBoolean(false);
private final boolean minimizeScanImpact;

public BdbStorageEngine(String name,
Environment environment,
Expand All @@ -91,6 +93,7 @@ public BdbStorageEngine(String name,
this.bdbEnvironmentStats = new BdbEnvironmentStats(environment,
config.getStatsCacheTtlMs(),
config.getExposeSpaceUtil());
this.minimizeScanImpact = config.getMinimizeScanImpact();
}

public String getName() {
Expand All @@ -100,6 +103,9 @@ public String getName() {
public ClosableIterator<Pair<ByteArray, Versioned<byte[]>>> entries() {
try {
Cursor cursor = getBdbDatabase().openCursor(null, null);
// evict data brought in by the cursor walk right away
if(this.minimizeScanImpact)
cursor.setCacheMode(CacheMode.EVICT_BIN);
return new BdbEntriesIterator(cursor);
} catch(DatabaseException e) {
logger.error(e);
Expand All @@ -110,6 +116,9 @@ public ClosableIterator<Pair<ByteArray, Versioned<byte[]>>> entries() {
public ClosableIterator<ByteArray> keys() {
try {
Cursor cursor = getBdbDatabase().openCursor(null, null);
// evict data brought in by the cursor walk right away
if(this.minimizeScanImpact)
cursor.setCacheMode(CacheMode.EVICT_BIN);
return new BdbKeysIterator(cursor);
} catch(DatabaseException e) {
logger.error(e);
Expand Down
69 changes: 69 additions & 0 deletions src/java/voldemort/store/bdb/stats/BdbEnvironmentStats.java
Expand Up @@ -97,6 +97,60 @@ public long getEvictedLNs() {
return getFastStats().getNEvictPasses();
}

@JmxGetter(name = "BINFetches")
public long getBINFetches() {
return getFastStats().getNBINsFetch();
}

@JmxGetter(name = "BINFetchMisses")
public long getBINFetchMisses() {
return getFastStats().getNBINsFetchMiss();
}

@JmxGetter(name = "INFetches")
public long getINFetches() {
return getFastStats().getNUpperINsFetch();
}

@JmxGetter(name = "INFetchMisses")
public long getINFetchMisses() {
return getFastStats().getNUpperINsFetchMiss();
}

@JmxGetter(name = "LNFetches")
public long getLNFetches() {
return getFastStats().getNLNsFetch();
}

@JmxGetter(name = "LNFetchMisses")
public long getLNFetchMisses() {
return getFastStats().getNLNsFetchMiss();
}

@JmxGetter(name = "CachedBINs")
public long getCachedBINs() {
return getFastStats().getNCachedBINs();
}

@JmxGetter(name = "CachedINs")
public long getCachedUpperINs() {
return getFastStats().getNCachedUpperINs();
}

@JmxGetter(name = "EvictedBINs")
public long getEvictedBINs() {
EnvironmentStats stats = getFastStats();
return stats.getNBINsEvictedCacheMode() + stats.getNBINsEvictedCritical()
+ stats.getNBINsEvictedDaemon() + stats.getNBINsEvictedManual();
}

@JmxGetter(name = "EvictedINs")
public long getEvictedINs() {
EnvironmentStats stats = getFastStats();
return stats.getNUpperINsEvictedCacheMode() + stats.getNUpperINsEvictedCritical()
+ stats.getNUpperINsEvictedDaemon() + stats.getNUpperINsEvictedManual();
}

// 2. IO
@JmxGetter(name = "NumRandomWrites")
public long getNumRandomWrites() {
Expand Down Expand Up @@ -299,6 +353,21 @@ public double getPercentageUtilization() {
return safeGetPercentage(getTotalSpaceUtilized(), getTotalSpace());
}

@JmxGetter(name = "PercentageBINMiss")
public double getPercentageBINMiss() {
return safeGetPercentage(getBINFetchMisses(), getBINFetches());
}

@JmxGetter(name = "PercentageINMiss")
public double getPercentageINMiss() {
return safeGetPercentage(getINFetchMisses(), getINFetches());
}

@JmxGetter(name = "PercentageLNMiss")
public double getPercentageLNMiss() {
return safeGetPercentage(getLNFetchMisses(), getLNFetches());
}

public static double safeGetPercentage(long rawNum, long total) {
return total == 0 ? 0.0d : rawNum / (float) total;
}
Expand Down

0 comments on commit 07e509d

Please sign in to comment.