mnpoonia commented on PR #8580:
URL: https://github.com/apache/hbase/pull/8580#issuecomment-5476813329
> This only happens for FSHLog?
**Yes — this is FSHLog-only.**
`FSHLog#getPipeline()` delegated directly to Hadoop's
`DFSOutputStream#getPipeline()`, which can legitimately return `null` (streamer
closed, or no block pipeline currently established) — that's the
crash site.
`AsyncFSWAL#getPipeline()` is unaffected:
```java
DatanodeInfo[] getPipeline() {
return output != null ? output.getPipeline() : new DatanodeInfo[0];
}
```
where `output` is one of:
- `FanOutOneBlockAsyncDFSOutput#getPipeline()` → returns `locations`, set
once in the constructor and never nulled
- `WrapperAsyncFSOutput#getPipeline()` → always returns `new
DatanodeInfo[0]`
Neither can return `null`, and `AsyncFSWAL` already null-guards the
`output` reference itself. So only the sync WAL implementation (`FSHLog`) could
propagate a null pipeline into the null-intolerant
`Arrays.stream(...)` call — `AsyncFSWAL` was never at risk.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]