|
@@ -71,6 +71,8 @@ import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_NAMENODE_MAX_OBJECTS_KEY;
|
|
|
import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_NAMENODE_NAME_DIR_KEY;
|
|
|
import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_NAMENODE_RESOURCE_CHECK_INTERVAL_DEFAULT;
|
|
|
import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_NAMENODE_RESOURCE_CHECK_INTERVAL_KEY;
|
|
|
+import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_NAMENODE_WRITE_LOCK_REPORTING_THRESHOLD_MS_KEY;
|
|
|
+import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_NAMENODE_WRITE_LOCK_REPORTING_THRESHOLD_MS_DEFAULT;
|
|
|
import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_NAMENODE_RETRY_CACHE_EXPIRYTIME_MILLIS_DEFAULT;
|
|
|
import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_NAMENODE_RETRY_CACHE_EXPIRYTIME_MILLIS_KEY;
|
|
|
import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_NAMENODE_RETRY_CACHE_HEAP_PERCENT_DEFAULT;
|
|
@@ -819,6 +821,10 @@ public class FSNamesystem implements Namesystem, FSNamesystemMBean,
|
|
|
DFS_NAMENODE_MAX_LOCK_HOLD_TO_RELEASE_LEASE_MS_KEY,
|
|
|
DFS_NAMENODE_MAX_LOCK_HOLD_TO_RELEASE_LEASE_MS_DEFAULT);
|
|
|
|
|
|
+ this.writeLockReportingThreshold = conf.getLong(
|
|
|
+ DFS_NAMENODE_WRITE_LOCK_REPORTING_THRESHOLD_MS_KEY,
|
|
|
+ DFS_NAMENODE_WRITE_LOCK_REPORTING_THRESHOLD_MS_DEFAULT);
|
|
|
+
|
|
|
// For testing purposes, allow the DT secret manager to be started regardless
|
|
|
// of whether security is enabled.
|
|
|
alwaysUseDelegationTokensForTests = conf.getBoolean(
|
|
@@ -1498,7 +1504,7 @@ public class FSNamesystem implements Namesystem, FSNamesystemMBean,
|
|
|
}
|
|
|
|
|
|
/** Threshold (ms) for long holding write lock report. */
|
|
|
- static final short WRITELOCK_REPORTING_THRESHOLD = 1000;
|
|
|
+ private long writeLockReportingThreshold;
|
|
|
/** Last time stamp for write lock. Keep the longest one for multi-entrance.*/
|
|
|
private long writeLockHeldTimeStamp;
|
|
|
|
|
@@ -1532,7 +1538,7 @@ public class FSNamesystem implements Namesystem, FSNamesystemMBean,
|
|
|
|
|
|
this.fsLock.writeLock().unlock();
|
|
|
|
|
|
- if (needReport && writeLockInterval >= WRITELOCK_REPORTING_THRESHOLD) {
|
|
|
+ if (needReport && writeLockInterval >= this.writeLockReportingThreshold) {
|
|
|
LOG.info("FSNamesystem write lock held for " + writeLockInterval +
|
|
|
" ms via\n" + StringUtils.getStackTrace(Thread.currentThread()));
|
|
|
}
|