[ 
https://issues.apache.org/jira/browse/HDFS-14429?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17065375#comment-17065375
 ] 

dark_num edited comment on HDFS-14429 at 3/24/20, 7:30 AM:
-----------------------------------------------------------

{code:java}
// Why not use this method to judge the replica state
// It also include the "MAINTENANCE" case, avoid wrong calculation
if (result == AddBlockResult.ADDED) {
  curReplicaDelta = (node.isInService()) ? 1 : 0;
  //...
}

public enum AdminStates {
  NORMAL("In Service"),
  DECOMMISSION_INPROGRESS("Decommission In Progress"),
  DECOMMISSIONED("Decommissioned"),
  ENTERING_MAINTENANCE("Entering Maintenance"),
  IN_MAINTENANCE("In Maintenance");
  //...
}{code}
[~caiyicong] Thank you for your efforts and look forward to your reply,  

 


was (Author: dark_num):
{code:java}
// Why not use this method to judge the replica state
// It also include the "MAINTENANCE" case, avoid wrong calculation
if (result == AddBlockResult.ADDED) {
  curReplicaDelta = (node.isInService()) ? 0 : 1;
  //...
}

public enum AdminStates {
  NORMAL("In Service"),
  DECOMMISSION_INPROGRESS("Decommission In Progress"),
  DECOMMISSIONED("Decommissioned"),
  ENTERING_MAINTENANCE("Entering Maintenance"),
  IN_MAINTENANCE("In Maintenance");
  //...
}{code}
[~caiyicong] Thank you for your efforts and look forward to your reply,  

 

> Block remain in COMMITTED but not COMPLETE caused by Decommission
> -----------------------------------------------------------------
>
>                 Key: HDFS-14429
>                 URL: https://issues.apache.org/jira/browse/HDFS-14429
>             Project: Hadoop HDFS
>          Issue Type: Bug
>    Affects Versions: 2.9.2
>            Reporter: Yicong Cai
>            Assignee: Yicong Cai
>            Priority: Major
>             Fix For: 2.10.0, 3.3.0, 3.2.1, 2.9.3, 3.1.3
>
>         Attachments: HDFS-14429.01.patch, HDFS-14429.02.patch, 
> HDFS-14429.03.patch, HDFS-14429.branch-2.01.patch, 
> HDFS-14429.branch-2.02.patch
>
>
> In the following scenario, the Block will remain in the COMMITTED but not 
> COMPLETE state and cannot be closed properly:
>  # Client writes Block(bk1) to three data nodes (dn1/dn2/dn3).
>  # bk1 has been completely written to three data nodes, and the data node 
> succeeds FinalizeBlock, joins IBR and waits to report to NameNode.
>  # The client commits bk1 after receiving the ACK.
>  # When the DN has not been reported to the IBR, all three nodes dn1/dn2/dn3 
> enter Decommissioning.
>  # The DN reports the IBR, but the block cannot be completed normally.
>  
> Then it will lead to the following related exceptions:
> {panel:title=Exception}
> 2019-04-02 13:40:31,882 INFO namenode.FSNamesystem 
> (FSNamesystem.java:checkBlocksComplete(2790)) - BLOCK* 
> blk_4313483521_3245321090 is COMMITTED but not COMPLETE(numNodes= 3 >= 
> minimum = 1) in file xxx
> 2019-04-02 13:40:31,882 INFO ipc.Server (Server.java:logException(2650)) - 
> IPC Server handler 499 on 8020, call Call#122552 Retry#0 
> org.apache.hadoop.hdfs.protocol.ClientProtocol.addBlock from xxx:47615
> org.apache.hadoop.hdfs.server.namenode.NotReplicatedYetException: Not 
> replicated yet: xxx
>  at 
> org.apache.hadoop.hdfs.server.namenode.FSDirWriteFileOp.validateAddBlock(FSDirWriteFileOp.java:171)
>  at 
> org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(FSNamesystem.java:2579)
>  at 
> org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.addBlock(NameNodeRpcServer.java:846)
>  at 
> org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.addBlock(ClientNamenodeProtocolServerSideTranslatorPB.java:510)
>  at 
> org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos$ClientNamenodeProtocol$2.callBlockingMethod(ClientNamenodeProtocolProtos.java)
>  at 
> org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:503)
>  at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:989)
>  at org.apache.hadoop.ipc.Server$RpcCall.run(Server.java:871)
>  at org.apache.hadoop.ipc.Server$RpcCall.run(Server.java:817)
>  at java.security.AccessController.doPrivileged(Native Method)
>  at javax.security.auth.Subject.doAs(Subject.java:415)
>  at 
> org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1893)
>  at org.apache.hadoop.ipc.Server$Handler.run(Server.java:2606)
> {panel}
> And will cause the scenario described in HDFS-12747
> The root cause is that addStoredBlock does not consider the case where the 
> replications are in Decommission.
> This problem needs to be fixed like HDFS-11499.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org

Reply via email to