@@ -8354,7 +8354,7 @@ void setErasureCodingPolicy(final String srcArg, final String ecPolicyName,
83548354 FileStatus resultingStat = null ;
83558355 final FSPermissionChecker pc = getPermissionChecker ();
83568356 FSPermissionChecker .setOperationType (operationName );
8357- writeLock ();
8357+ writeLock (FSNamesystemLockMode . FS );
83588358 try {
83598359 checkOperation (OperationCategory .WRITE );
83608360 checkNameNodeSafeMode ("Cannot set erasure coding policy on " + srcArg );
@@ -8364,7 +8364,7 @@ void setErasureCodingPolicy(final String srcArg, final String ecPolicyName,
83648364 logAuditEvent (false , operationName , srcArg );
83658365 throw ace ;
83668366 } finally {
8367- writeUnlock (operationName ,
8367+ writeUnlock (FSNamesystemLockMode . FS , operationName ,
83688368 getLockReportInfoSupplier (srcArg , null , resultingStat ));
83698369 }
83708370 getEditLog ().logSync ();
@@ -8387,7 +8387,7 @@ AddErasureCodingPolicyResponse[] addErasureCodingPolicies(
83878387 checkErasureCodingSupported (operationName );
83888388 List <AddErasureCodingPolicyResponse > responses =
83898389 new ArrayList <>(policies .length );
8390- writeLock ();
8390+ writeLock (FSNamesystemLockMode . FS );
83918391 try {
83928392 checkOperation (OperationCategory .WRITE );
83938393 checkNameNodeSafeMode ("Cannot add erasure coding policy" );
@@ -8403,7 +8403,7 @@ AddErasureCodingPolicyResponse[] addErasureCodingPolicies(
84038403 }
84048404 }
84058405 } finally {
8406- writeUnlock (operationName ,
8406+ writeUnlock (FSNamesystemLockMode . FS , operationName ,
84078407 getLockReportInfoSupplier (addECPolicyNames .toString ()));
84088408 }
84098409 getEditLog ().logSync ();
@@ -8423,15 +8423,15 @@ void removeErasureCodingPolicy(String ecPolicyName,
84238423 final String operationName = "removeErasureCodingPolicy" ;
84248424 checkOperation (OperationCategory .WRITE );
84258425 checkErasureCodingSupported (operationName );
8426- writeLock ();
8426+ writeLock (FSNamesystemLockMode . FS );
84278427 try {
84288428 checkOperation (OperationCategory .WRITE );
84298429 checkNameNodeSafeMode ("Cannot remove erasure coding policy "
84308430 + ecPolicyName );
84318431 FSDirErasureCodingOp .removeErasureCodingPolicy (this , ecPolicyName ,
84328432 logRetryCache );
84338433 } finally {
8434- writeUnlock (operationName , getLockReportInfoSupplier (ecPolicyName ));
8434+ writeUnlock (FSNamesystemLockMode . FS , operationName , getLockReportInfoSupplier (ecPolicyName ));
84358435 }
84368436 getEditLog ().logSync ();
84378437 logAuditEvent (true , operationName , ecPolicyName , null , null );
@@ -8452,15 +8452,16 @@ boolean enableErasureCodingPolicy(String ecPolicyName,
84528452 checkErasureCodingSupported (operationName );
84538453 boolean success = false ;
84548454 try {
8455- writeLock ();
8455+ writeLock (FSNamesystemLockMode . FS );
84568456 try {
84578457 checkOperation (OperationCategory .WRITE );
84588458 checkNameNodeSafeMode ("Cannot enable erasure coding policy "
84598459 + ecPolicyName );
84608460 success = FSDirErasureCodingOp .enableErasureCodingPolicy (this ,
84618461 ecPolicyName , logRetryCache );
84628462 } finally {
8463- writeUnlock (operationName , getLockReportInfoSupplier (ecPolicyName ));
8463+ writeUnlock (FSNamesystemLockMode .FS , operationName ,
8464+ getLockReportInfoSupplier (ecPolicyName ));
84648465 }
84658466 } catch (AccessControlException ace ) {
84668467 logAuditEvent (false , operationName , ecPolicyName );
@@ -8487,15 +8488,16 @@ boolean disableErasureCodingPolicy(String ecPolicyName,
84878488 checkErasureCodingSupported (operationName );
84888489 boolean success = false ;
84898490 try {
8490- writeLock ();
8491+ writeLock (FSNamesystemLockMode . FS );
84918492 try {
84928493 checkOperation (OperationCategory .WRITE );
84938494 checkNameNodeSafeMode ("Cannot disable erasure coding policy "
84948495 + ecPolicyName );
84958496 success = FSDirErasureCodingOp .disableErasureCodingPolicy (this ,
84968497 ecPolicyName , logRetryCache );
84978498 } finally {
8498- writeUnlock (operationName , getLockReportInfoSupplier (ecPolicyName ));
8499+ writeUnlock (FSNamesystemLockMode .FS , operationName ,
8500+ getLockReportInfoSupplier (ecPolicyName ));
84998501 }
85008502 } catch (AccessControlException ace ) {
85018503 logAuditEvent (false , operationName , ecPolicyName );
@@ -8524,14 +8526,14 @@ void unsetErasureCodingPolicy(final String srcArg,
85248526 FileStatus resultingStat = null ;
85258527 final FSPermissionChecker pc = getPermissionChecker ();
85268528 FSPermissionChecker .setOperationType (operationName );
8527- writeLock ();
8529+ writeLock (FSNamesystemLockMode . FS );
85288530 try {
85298531 checkOperation (OperationCategory .WRITE );
85308532 checkNameNodeSafeMode ("Cannot unset erasure coding policy on " + srcArg );
85318533 resultingStat = FSDirErasureCodingOp .unsetErasureCodingPolicy (this ,
85328534 srcArg , pc , logRetryCache );
85338535 } finally {
8534- writeUnlock (operationName ,
8536+ writeUnlock (FSNamesystemLockMode . FS , operationName ,
85358537 getLockReportInfoSupplier (srcArg , null , resultingStat ));
85368538 }
85378539 getEditLog ().logSync ();
@@ -8551,7 +8553,7 @@ public ECTopologyVerifierResult getECTopologyResultForPolicies(
85518553 checkSuperuserPrivilege (operationName );
85528554 checkOperation (OperationCategory .UNCHECKED );
85538555 ECTopologyVerifierResult result ;
8554- readLock ();
8556+ readLock (FSNamesystemLockMode . FS );
85558557 try {
85568558 checkOperation (OperationCategory .UNCHECKED );
85578559 // If no policy name is specified return the result
@@ -8574,7 +8576,7 @@ public ECTopologyVerifierResult getECTopologyResultForPolicies(
85748576 .getECTopologyVerifierResult (numOfRacks , numOfDataNodes , policies );
85758577 }
85768578 } finally {
8577- readUnlock (operationName , getLockReportInfoSupplier (null ));
8579+ readUnlock (FSNamesystemLockMode . FS , operationName , getLockReportInfoSupplier (null ));
85788580 }
85798581 logAuditEvent (true , operationName , null );
85808582 return result ;
@@ -8591,15 +8593,15 @@ ErasureCodingPolicy getErasureCodingPolicy(String src)
85918593 checkErasureCodingSupported (operationName );
85928594 final FSPermissionChecker pc = getPermissionChecker ();
85938595 FSPermissionChecker .setOperationType (operationName );
8594- readLock ();
8596+ readLock (FSNamesystemLockMode . FS );
85958597 try {
85968598 checkOperation (OperationCategory .READ );
85978599 final ErasureCodingPolicy ret =
85988600 FSDirErasureCodingOp .getErasureCodingPolicy (this , src , pc );
85998601 success = true ;
86008602 return ret ;
86018603 } finally {
8602- readUnlock (operationName , getLockReportInfoSupplier (src ));
8604+ readUnlock (FSNamesystemLockMode . FS , operationName , getLockReportInfoSupplier (src ));
86038605 logAuditEvent (success , operationName , src );
86048606 }
86058607 }
@@ -8612,15 +8614,15 @@ ErasureCodingPolicyInfo[] getErasureCodingPolicies() throws IOException {
86128614 boolean success = false ;
86138615 checkOperation (OperationCategory .READ );
86148616 checkErasureCodingSupported (operationName );
8615- readLock ();
8617+ readLock (FSNamesystemLockMode . FS );
86168618 try {
86178619 checkOperation (OperationCategory .READ );
86188620 final ErasureCodingPolicyInfo [] ret =
86198621 FSDirErasureCodingOp .getErasureCodingPolicies (this );
86208622 success = true ;
86218623 return ret ;
86228624 } finally {
8623- readUnlock (operationName , getLockReportInfoSupplier (null ));
8625+ readUnlock (FSNamesystemLockMode . FS , operationName , getLockReportInfoSupplier (null ));
86248626 logAuditEvent (success , operationName , null );
86258627 }
86268628 }
@@ -8633,15 +8635,15 @@ Map<String, String> getErasureCodingCodecs() throws IOException {
86338635 boolean success = false ;
86348636 checkOperation (OperationCategory .READ );
86358637 checkErasureCodingSupported (operationName );
8636- readLock ();
8638+ readLock (FSNamesystemLockMode . FS );
86378639 try {
86388640 checkOperation (OperationCategory .READ );
86398641 final Map <String , String > ret =
86408642 FSDirErasureCodingOp .getErasureCodingCodecs (this );
86418643 success = true ;
86428644 return ret ;
86438645 } finally {
8644- readUnlock (operationName , getLockReportInfoSupplier (null ));
8646+ readUnlock (FSNamesystemLockMode . FS , operationName , getLockReportInfoSupplier (null ));
86458647 logAuditEvent (success , operationName , null );
86468648 }
86478649 }
0 commit comments