Merge pull request #15252 from jasontedor/indexing-memory-controller-check-idle-simplification

Simplify IndexingMemoryController#checkIdle
This commit is contained in:
Jason Tedor 2015-12-04 16:11:04 -05:00
commit 3ab7451ca5
2 changed files with 17 additions and 27 deletions

View File

@ -286,33 +286,23 @@ public class IndexingMemoryController extends AbstractLifecycleComponent<Indexin
return System.nanoTime();
}
/** ask this shard to check now whether it is inactive, and reduces its indexing and translog buffers if so. returns Boolean.TRUE if
* it did deactive, Boolean.FALSE if it did not, and null if the shard is unknown */
protected Boolean checkIdle(IndexShard shard) {
String ignoreReason = null; // eclipse compiler does not know it is really final
if (shard != null) {
try {
if (shard.checkIdle()) {
logger.debug("marking shard {} as inactive (inactive_time[{}]) indexing wise",
shard.shardId(),
shard.getInactiveTime());
return Boolean.TRUE;
}
return Boolean.FALSE;
} catch (EngineClosedException e) {
// ignore
ignoreReason = "EngineClosedException";
} catch (FlushNotAllowedEngineException e) {
// ignore
ignoreReason = "FlushNotAllowedEngineException";
/**
* ask this shard to check now whether it is inactive, and reduces its indexing and translog buffers if so.
* return false if the shard is not idle, otherwise true
*/
protected boolean checkIdle(IndexShard shard) {
try {
boolean idle = shard.checkIdle();
if (idle && logger.isDebugEnabled()) {
logger.debug("marking shard {} as inactive (inactive_time[{}]) indexing wise",
shard.shardId(),
shard.getInactiveTime());
}
} else {
ignoreReason = "shard not found";
return idle;
} catch (EngineClosedException | FlushNotAllowedEngineException e) {
logger.trace("ignore [{}] while marking shard {} as inactive", e.getClass().getSimpleName(), shard.shardId());
return true;
}
if (ignoreReason != null) {
logger.trace("ignore [{}] while marking shard {} as inactive", ignoreReason, shard.shardId());
}
return null;
}
@Override

View File

@ -93,11 +93,11 @@ public class IndexingMemoryControllerTests extends ESSingleNodeTestCase {
}
@Override
protected Boolean checkIdle(IndexShard shard) {
protected boolean checkIdle(IndexShard shard) {
final TimeValue inactiveTime = settings.getAsTime(IndexShard.INDEX_SHARD_INACTIVE_TIME_SETTING, TimeValue.timeValueMinutes(5));
Long ns = lastIndexTimeNanos.get(shard);
if (ns == null) {
return null;
return true;
} else if (currentTimeInNanos() - ns >= inactiveTime.nanos()) {
indexingBuffers.put(shard, INACTIVE);
translogBuffers.put(shard, INACTIVE);