[
https://issues.apache.org/jira/browse/HBASE-20280?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16415876#comment-16415876
]
Zach York commented on HBASE-20280:
-----------------------------------
Yes, the fix for reopening files when a closed channel exception occurs causes
this. Yes, this is normal when the thread is interrupted, but with BucketCache
causes closed channel exceptions to be thrown after this.
The initial fix is still valid, but needs to not include
ClosedByInterruptException otherwise we will never break out of the loop.
> Fix possibility of deadlocking in refreshFileConnections when prefetch is
> enabled
> ---------------------------------------------------------------------------------
>
> Key: HBASE-20280
> URL: https://issues.apache.org/jira/browse/HBASE-20280
> Project: HBase
> Issue Type: Bug
> Components: BucketCache
> Affects Versions: 2.0.0-beta-2, 1.4.2
> Reporter: Zach York
> Assignee: Zach York
> Priority: Major
> Attachments: HBASE-20280.master.001.patch
>
>
> When prefetch on open is specified, there is a deadlocking case
> where if the prefetch is cancelled, the PrefetchExecutor interrupts
> the threads if necessary, when that happens in FileIOEngine, it
> causes an ClosedByInterruptException which is a subclass of
> ClosedChannelException. If we retry all ClosedChannelExceptions,
> this will lock as this access is expected to be interrupted.
> This change removes calling refreshFileConnections for
> ClosedByInterruptExceptions.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)