apache/hadoop · error · RuntimeException
configured value {}for dfs.datanode.cache.revocation.polling
Error message
configured value {}for dfs.datanode.cache.revocation.polling.ms is too high. It must not be more than half of the value of dfs.datanode.cache.revocation.timeout.ms. Reconfigure this to {} What it means
Error "configured value {}for dfs.datanode.cache.revocation.polling.ms is too high. It must not be more than half of the value of dfs.datanode.cache.revocation.timeout.ms. Reconfigure this to {}" thrown in apache/hadoop.
Source
Thrown at hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/fsdataset/impl/FsDatasetCache.java:174
.setNameFormat("FsDatasetCache-%d-" + dataset.toString())
.build();
this.uncachingExecutor = new ThreadPoolExecutor(
0, 1,
60, TimeUnit.SECONDS,
new LinkedBlockingQueue<Runnable>(),
workerFactory);
this.uncachingExecutor.allowCoreThreadTimeOut(true);
this.deferredUncachingExecutor = new ScheduledThreadPoolExecutor(
1, workerFactory);
this.revocationMs = dataset.datanode.getConf().getLong(
DFS_DATANODE_CACHE_REVOCATION_TIMEOUT_MS,
DFS_DATANODE_CACHE_REVOCATION_TIMEOUT_MS_DEFAULT);
long confRevocationPollingMs = dataset.datanode.getConf().getLong(
DFS_DATANODE_CACHE_REVOCATION_POLLING_MS,
DFS_DATANODE_CACHE_REVOCATION_POLLING_MS_DEFAULT);
long minRevocationPollingMs = revocationMs / 2;
if (minRevocationPollingMs < confRevocationPollingMs) {
throw new RuntimeException("configured value " +
confRevocationPollingMs + "for " +
DFS_DATANODE_CACHE_REVOCATION_POLLING_MS +
" is too high. It must not be more than half of the " +
"value of " + DFS_DATANODE_CACHE_REVOCATION_TIMEOUT_MS +
". Reconfigure this to " + minRevocationPollingMs);
}
this.revocationPollingMs = confRevocationPollingMs;
this.cacheLoader = MappableBlockLoaderFactory.createCacheLoader(
this.getDnConf());
// Both lazy writer and read cache are sharing this statistics.
this.memCacheStats = cacheLoader.initialize(this.getDnConf());
}
/**
* For persistent memory cache, create cache subdirectory specified with
* blockPoolId to store cache data.
* Recover the status of cache in persistent memory, if any.View on GitHub (pinned to 2add963021)
Solutions
- Set dfs.datanode.cache.revocation.polling.ms to a value no greater than half of dfs.datanode.cache.revocation.timeout.ms.
- Alternatively increase dfs.datanode.cache.revocation.timeout.ms so the polling interval is proportionally smaller.
When it happens
Trigger: DataNode startup when dfs.datanode.cache.revocation.polling.ms is configured larger than half of dfs.datanode.cache.revocation.timeout.ms.
Common situations: See trigger scenarios.
Understand the failure class
- Timeouts: ETIMEDOUT, deadlines, and hung requests — what actually expires when a request times out.
AI-assisted analysis of apache/hadoop@2add963021 (2026-08-22).
Data as JSON: /api/errors/bfe9f60b1b2925e5.
Report an issue: GitHub.