[
https://issues.apache.org/jira/browse/HDFS-6803?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14092958#comment-14092958
]
Steve Loughran commented on HDFS-6803:
--------------------------------------
I'm very tempted to push for a lax model which says
# either the preads block or they are concurrent if the FS supports
# preads and classic (read@pos) reads may be concurrent or blocking
# getPos() may expose the position of a positioned read
I know #3 goes up against all the rules of hiding things, but think of this: if
we mandate that {{getPos()}} hides all intermediate positions on pread, then
any class which uses the base implementation of seek+read+seek will require
{{getPos()}} to be synced with the read, which implies that :
{{getPos()}} may block for an arbitrary amount of time if another thread is
attempting to perform a positioned read and is having some problem
communicating with the far end.
Is that something we really want? Is it something people expect?
> Documenting DFSClient#DFSInputStream expectations reading and preading in
> concurrent context
> --------------------------------------------------------------------------------------------
>
> Key: HDFS-6803
> URL: https://issues.apache.org/jira/browse/HDFS-6803
> Project: Hadoop HDFS
> Issue Type: Sub-task
> Components: hdfs-client
> Affects Versions: 2.4.1
> Reporter: stack
> Attachments: DocumentingDFSClientDFSInputStream (1).pdf
>
>
> Reviews of the patch posted the parent task suggest that we be more explicit
> about how DFSIS is expected to behave when being read by contending threads.
> It is also suggested that presumptions made internally be made explicit
> documenting expectations.
> Before we put up a patch we've made a document of assertions we'd like to
> make into tenets of DFSInputSteam. If agreement, we'll attach to this issue
> a patch that weaves the assumptions into DFSIS as javadoc and class comments.
--
This message was sent by Atlassian JIRA
(v6.2#6252)