[ https://issues.apache.org/jira/browse/HDFS-14701?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Wei-Chiu Chuang updated HDFS-14701: ----------------------------------- Resolution: Fixed Fix Version/s: 3.3.0 Status: Resolved (was: Patch Available) Pushed 002 to trunk. Thanks [~leosun08] for the patch! > Change Log Level to warn in SlotReleaser > ---------------------------------------- > > Key: HDFS-14701 > URL: https://issues.apache.org/jira/browse/HDFS-14701 > Project: Hadoop HDFS > Issue Type: Improvement > Reporter: Lisheng Sun > Assignee: Lisheng Sun > Priority: Minor > Fix For: 3.3.0 > > Attachments: HDFS-14701.001.patch, HDFS-14701.002.patch > > > if the corresponding DataNode has been stopped or restarted and DFSClient > close shared memory segment,releaseShortCircuitFds API throw expection and > log a ERROR Message. I think it should not be a ERROR log,and that log a warn > log is more reasonable. > {code:java} > // @Override > public void run() { > LOG.trace("{}: about to release {}", ShortCircuitCache.this, slot); > final DfsClientShm shm = (DfsClientShm)slot.getShm(); > final DomainSocket shmSock = shm.getPeer().getDomainSocket(); > final String path = shmSock.getPath(); > boolean success = false; > try (DomainSocket sock = DomainSocket.connect(path); > DataOutputStream out = new DataOutputStream( > new BufferedOutputStream(sock.getOutputStream()))) { > new Sender(out).releaseShortCircuitFds(slot.getSlotId()); > DataInputStream in = new DataInputStream(sock.getInputStream()); > ReleaseShortCircuitAccessResponseProto resp = > ReleaseShortCircuitAccessResponseProto.parseFrom( > PBHelperClient.vintPrefixed(in)); > if (resp.getStatus() != Status.SUCCESS) { > String error = resp.hasError() ? resp.getError() : "(unknown)"; > throw new IOException(resp.getStatus().toString() + ": " + error); > } > LOG.trace("{}: released {}", this, slot); > success = true; > } catch (IOException e) { > LOG.error(ShortCircuitCache.this + ": failed to release " + > "short-circuit shared memory slot " + slot + " by sending " + > "ReleaseShortCircuitAccessRequestProto to " + path + > ". Closing shared memory segment.", e); > } finally { > if (success) { > shmManager.freeSlot(slot); > } else { > shm.getEndpointShmManager().shutdown(shm); > } > } > } > {code} > *exception stack:* > {code:java} > 2019-08-05,15:28:03,838 ERROR [ShortCircuitCache_SlotReleaser] > org.apache.hadoop.hdfs.shortcircuit.ShortCircuitCache: > ShortCircuitCache(0x65849546): failed to release short-circuit shared memory > slot Slot(slotIdx=62, shm=DfsClientShm(70593ef8b3d84cba3c2f0a1e81377eb1)) by > sending ReleaseShortCircuitAccessRequestProto to > /home/work/app/hdfs/c3micloudsrv-hdd/datanode/dn_socket. Closing shared > memory segment. > java.io.IOException: ERROR_INVALID: there is no shared memory segment > registered with shmId 70593ef8b3d84cba3c2f0a1e81377eb1 > {code} > -- This message was sent by Atlassian JIRA (v7.6.14#76016) --------------------------------------------------------------------- To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org