@@ -8319,7 +8319,7 @@ void setErasureCodingPolicy(final String srcArg, final String ecPolicyName,
83198319 FileStatus resultingStat = null ;
83208320 final FSPermissionChecker pc = getPermissionChecker ();
83218321 FSPermissionChecker .setOperationType (operationName );
8322- writeLock ();
8322+ writeLock (FSNamesystemLockMode . FS );
83238323 try {
83248324 checkOperation (OperationCategory .WRITE );
83258325 checkNameNodeSafeMode ("Cannot set erasure coding policy on " + srcArg );
@@ -8329,7 +8329,7 @@ void setErasureCodingPolicy(final String srcArg, final String ecPolicyName,
83298329 logAuditEvent (false , operationName , srcArg );
83308330 throw ace ;
83318331 } finally {
8332- writeUnlock (operationName ,
8332+ writeUnlock (FSNamesystemLockMode . FS , operationName ,
83338333 getLockReportInfoSupplier (srcArg , null , resultingStat ));
83348334 }
83358335 getEditLog ().logSync ();
@@ -8352,7 +8352,7 @@ AddErasureCodingPolicyResponse[] addErasureCodingPolicies(
83528352 checkErasureCodingSupported (operationName );
83538353 List <AddErasureCodingPolicyResponse > responses =
83548354 new ArrayList <>(policies .length );
8355- writeLock ();
8355+ writeLock (FSNamesystemLockMode . FS );
83568356 try {
83578357 checkOperation (OperationCategory .WRITE );
83588358 checkNameNodeSafeMode ("Cannot add erasure coding policy" );
@@ -8368,7 +8368,7 @@ AddErasureCodingPolicyResponse[] addErasureCodingPolicies(
83688368 }
83698369 }
83708370 } finally {
8371- writeUnlock (operationName ,
8371+ writeUnlock (FSNamesystemLockMode . FS , operationName ,
83728372 getLockReportInfoSupplier (addECPolicyNames .toString ()));
83738373 }
83748374 getEditLog ().logSync ();
@@ -8388,15 +8388,15 @@ void removeErasureCodingPolicy(String ecPolicyName,
83888388 final String operationName = "removeErasureCodingPolicy" ;
83898389 checkOperation (OperationCategory .WRITE );
83908390 checkErasureCodingSupported (operationName );
8391- writeLock ();
8391+ writeLock (FSNamesystemLockMode . FS );
83928392 try {
83938393 checkOperation (OperationCategory .WRITE );
83948394 checkNameNodeSafeMode ("Cannot remove erasure coding policy "
83958395 + ecPolicyName );
83968396 FSDirErasureCodingOp .removeErasureCodingPolicy (this , ecPolicyName ,
83978397 logRetryCache );
83988398 } finally {
8399- writeUnlock (operationName , getLockReportInfoSupplier (ecPolicyName ));
8399+ writeUnlock (FSNamesystemLockMode . FS , operationName , getLockReportInfoSupplier (ecPolicyName ));
84008400 }
84018401 getEditLog ().logSync ();
84028402 logAuditEvent (true , operationName , ecPolicyName , null , null );
@@ -8417,15 +8417,16 @@ boolean enableErasureCodingPolicy(String ecPolicyName,
84178417 checkErasureCodingSupported (operationName );
84188418 boolean success = false ;
84198419 try {
8420- writeLock ();
8420+ writeLock (FSNamesystemLockMode . FS );
84218421 try {
84228422 checkOperation (OperationCategory .WRITE );
84238423 checkNameNodeSafeMode ("Cannot enable erasure coding policy "
84248424 + ecPolicyName );
84258425 success = FSDirErasureCodingOp .enableErasureCodingPolicy (this ,
84268426 ecPolicyName , logRetryCache );
84278427 } finally {
8428- writeUnlock (operationName , getLockReportInfoSupplier (ecPolicyName ));
8428+ writeUnlock (FSNamesystemLockMode .FS , operationName ,
8429+ getLockReportInfoSupplier (ecPolicyName ));
84298430 }
84308431 } catch (AccessControlException ace ) {
84318432 logAuditEvent (false , operationName , ecPolicyName );
@@ -8452,15 +8453,16 @@ boolean disableErasureCodingPolicy(String ecPolicyName,
84528453 checkErasureCodingSupported (operationName );
84538454 boolean success = false ;
84548455 try {
8455- writeLock ();
8456+ writeLock (FSNamesystemLockMode . FS );
84568457 try {
84578458 checkOperation (OperationCategory .WRITE );
84588459 checkNameNodeSafeMode ("Cannot disable erasure coding policy "
84598460 + ecPolicyName );
84608461 success = FSDirErasureCodingOp .disableErasureCodingPolicy (this ,
84618462 ecPolicyName , logRetryCache );
84628463 } finally {
8463- writeUnlock (operationName , getLockReportInfoSupplier (ecPolicyName ));
8464+ writeUnlock (FSNamesystemLockMode .FS , operationName ,
8465+ getLockReportInfoSupplier (ecPolicyName ));
84648466 }
84658467 } catch (AccessControlException ace ) {
84668468 logAuditEvent (false , operationName , ecPolicyName );
@@ -8489,14 +8491,14 @@ void unsetErasureCodingPolicy(final String srcArg,
84898491 FileStatus resultingStat = null ;
84908492 final FSPermissionChecker pc = getPermissionChecker ();
84918493 FSPermissionChecker .setOperationType (operationName );
8492- writeLock ();
8494+ writeLock (FSNamesystemLockMode . FS );
84938495 try {
84948496 checkOperation (OperationCategory .WRITE );
84958497 checkNameNodeSafeMode ("Cannot unset erasure coding policy on " + srcArg );
84968498 resultingStat = FSDirErasureCodingOp .unsetErasureCodingPolicy (this ,
84978499 srcArg , pc , logRetryCache );
84988500 } finally {
8499- writeUnlock (operationName ,
8501+ writeUnlock (FSNamesystemLockMode . FS , operationName ,
85008502 getLockReportInfoSupplier (srcArg , null , resultingStat ));
85018503 }
85028504 getEditLog ().logSync ();
@@ -8516,7 +8518,7 @@ public ECTopologyVerifierResult getECTopologyResultForPolicies(
85168518 checkSuperuserPrivilege (operationName );
85178519 checkOperation (OperationCategory .UNCHECKED );
85188520 ECTopologyVerifierResult result ;
8519- readLock ();
8521+ readLock (FSNamesystemLockMode . FS );
85208522 try {
85218523 checkOperation (OperationCategory .UNCHECKED );
85228524 // If no policy name is specified return the result
@@ -8539,7 +8541,7 @@ public ECTopologyVerifierResult getECTopologyResultForPolicies(
85398541 .getECTopologyVerifierResult (numOfRacks , numOfDataNodes , policies );
85408542 }
85418543 } finally {
8542- readUnlock (operationName , getLockReportInfoSupplier (null ));
8544+ readUnlock (FSNamesystemLockMode . FS , operationName , getLockReportInfoSupplier (null ));
85438545 }
85448546 logAuditEvent (true , operationName , null );
85458547 return result ;
@@ -8556,15 +8558,15 @@ ErasureCodingPolicy getErasureCodingPolicy(String src)
85568558 checkErasureCodingSupported (operationName );
85578559 final FSPermissionChecker pc = getPermissionChecker ();
85588560 FSPermissionChecker .setOperationType (operationName );
8559- readLock ();
8561+ readLock (FSNamesystemLockMode . FS );
85608562 try {
85618563 checkOperation (OperationCategory .READ );
85628564 final ErasureCodingPolicy ret =
85638565 FSDirErasureCodingOp .getErasureCodingPolicy (this , src , pc );
85648566 success = true ;
85658567 return ret ;
85668568 } finally {
8567- readUnlock (operationName , getLockReportInfoSupplier (src ));
8569+ readUnlock (FSNamesystemLockMode . FS , operationName , getLockReportInfoSupplier (src ));
85688570 logAuditEvent (success , operationName , src );
85698571 }
85708572 }
@@ -8577,15 +8579,15 @@ ErasureCodingPolicyInfo[] getErasureCodingPolicies() throws IOException {
85778579 boolean success = false ;
85788580 checkOperation (OperationCategory .READ );
85798581 checkErasureCodingSupported (operationName );
8580- readLock ();
8582+ readLock (FSNamesystemLockMode . FS );
85818583 try {
85828584 checkOperation (OperationCategory .READ );
85838585 final ErasureCodingPolicyInfo [] ret =
85848586 FSDirErasureCodingOp .getErasureCodingPolicies (this );
85858587 success = true ;
85868588 return ret ;
85878589 } finally {
8588- readUnlock (operationName , getLockReportInfoSupplier (null ));
8590+ readUnlock (FSNamesystemLockMode . FS , operationName , getLockReportInfoSupplier (null ));
85898591 logAuditEvent (success , operationName , null );
85908592 }
85918593 }
@@ -8598,15 +8600,15 @@ Map<String, String> getErasureCodingCodecs() throws IOException {
85988600 boolean success = false ;
85998601 checkOperation (OperationCategory .READ );
86008602 checkErasureCodingSupported (operationName );
8601- readLock ();
8603+ readLock (FSNamesystemLockMode . FS );
86028604 try {
86038605 checkOperation (OperationCategory .READ );
86048606 final Map <String , String > ret =
86058607 FSDirErasureCodingOp .getErasureCodingCodecs (this );
86068608 success = true ;
86078609 return ret ;
86088610 } finally {
8609- readUnlock (operationName , getLockReportInfoSupplier (null ));
8611+ readUnlock (FSNamesystemLockMode . FS , operationName , getLockReportInfoSupplier (null ));
86108612 logAuditEvent (success , operationName , null );
86118613 }
86128614 }
0 commit comments