HDFS-10448. CacheManager#addInternal tracks bytesNeeded incorrectly when dealing with replication factors other than 1 (Yiqun Lin via cmccabe)

This commit is contained in:
Colin Patrick Mccabe 2016-06-20 18:25:09 -07:00
parent 7adc4d1769
commit 46f1602e89

View File

@ -396,8 +396,7 @@ private void checkLimit(CachePool pool, String path,
if (pool.getLimit() == CachePoolInfo.LIMIT_UNLIMITED) {
return;
}
if (pool.getBytesNeeded() + (stats.getBytesNeeded() * replication) > pool
.getLimit()) {
if (pool.getBytesNeeded() + stats.getBytesNeeded() > pool.getLimit()) {
throw new InvalidRequestException("Caching path " + path + " of size "
+ stats.getBytesNeeded() / replication + " bytes at replication "
+ replication + " would exceed pool " + pool.getPoolName()
@ -441,7 +440,7 @@ private CacheDirectiveStats computeNeeded(String path, short replication) {
}
}
return new CacheDirectiveStats.Builder()
.setBytesNeeded(requestedBytes)
.setBytesNeeded(requestedBytes * replication)
.setFilesCached(requestedFiles)
.build();
}