Uh oh!
There was an error while loading. Please reload this page.
HBASE-20902 when WAL sync failed, we should bypass the failed DN that previously used - #205
HBASE-20902 when WAL sync failed, we should bypass the failed DN that previously used#205chenxu14 wants to merge 7 commits into
Conversation
sync master branch
| } | ||
| if (LOG.isDebugEnabled()) { | ||
| StringBuilder sb = new StringBuilder("create new output because old wal sync failed, old path is: "); | ||
| sb.append(oldPathStr).append(", newPath excludesNodes are :"); |
| if (LOG.isDebugEnabled()) { | ||
| StringBuilder sb = new StringBuilder("create new output because old wal sync failed, old path is: "); | ||
| sb.append(oldPathStr).append(", newPath excludesNodes are :"); | ||
| for(DatanodeInfo info : excludesNodes) { |
| StringBuilder sb = new StringBuilder("create new output because old wal sync failed, old path is: "); | ||
| sb.append(oldPathStr).append(", newPath excludesNodes are :"); | ||
| for(DatanodeInfo info : excludesNodes) { | ||
| sb.append(info.getInfoAddr()).append(";"); |
| sb.append(oldPathStr).append(", newPath excludesNodes are :"); | ||
| for(DatanodeInfo info : excludesNodes) { | ||
| sb.append(info.getInfoAddr()).append(";"); | ||
| } |
| for(DatanodeInfo info : excludesNodes) { | ||
| sb.append(info.getInfoAddr()).append(";"); | ||
| } | ||
| LOG.debug(sb.toString()); |
Apache-HBase
commented
Apr 30, 2019
💔 -1 overall
This message was automatically generated. |
Apache9
commented
May 1, 2019
Mind explaining the implementation a bit? The patch is so big, and across lots of files, not easy to follow up... |
chenxu14
commented
May 6, 2019
|
carp84
left a comment
There was a problem hiding this comment.
Please also fix the checkstyle warnings reported by @Apache-HBase robot.
| for(LocatedBlock block : namenode.getBlockLocations(oldPathStr, Math.max(0, len - 1), len) | ||
| .getLocatedBlocks()) { | ||
| for(DatanodeInfo dn : block.getLocations()) { | ||
| excludesNodes = ArrayUtils.add(excludesNodes, dn); |
There was a problem hiding this comment.
Here it always adding nodes into exclude list but never check and remove even after the DN recovers, right? So it's possible that one day all DN nodes are excluded and the OutputStream will fail due to could only be replicated to 0 nodes?
There was a problem hiding this comment.
thank you for your review @carp84, there seems to be some difference opinions with HBASE-22301, i will fix the checkstyle first.
So it's possible that one day all DN nodes are excluded
excludesNodes are not a global variable, each FanOutOneBlockAsyncDFSOutput will use different instance, when new FanOutOneBlockAsyncDFSOutput created, it's Initial excludesNodes will be an empty array(code in FanOutOneBlockAsyncDFSOutputHelper#createOutput)
Apache-HBase
commented
May 14, 2019
💔 -1 overall
This message was automatically generated. |
Apache-HBase
commented
May 15, 2019
💔 -1 overall
This message was automatically generated. |
saintstack
commented
Jun 24, 2019
Any updates @chenxu14 ? Thanks. |
Apache9
commented
Jul 23, 2019
Close since the PR is stale. Feel free to reopen. |
This reverts commit 70f6120.
during Log rolling, we should bypass the slow DN that the previously Log used.