[
https://issues.apache.org/jira/browse/HDFS-5182?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13867073#comment-13867073
]
Todd Lipcon commented on HDFS-5182:
-----------------------------------
bq. it will check to see if the segment is anchorable, and increment the anchor
count before performing the mmap. The anchor count will stay incremented until
the mmap is closed.
That seems much longer than necessary -- don't we want clients to be able to
keep mmaps around in their cache for very long periods of time? And then, when
the user requests the read, we can "anchor" the mmap only for the duration of
time for which the user holds onto the zero-copy buffer? Once the user returns
the zero-copy buffer, we can decrement the count and allow the DN to evict the
block from the cache.
bq. One exception is if the client passes the ReadOption.SKIP_CHECKSUMS flag.
In that case, we do not need to consult the anchor flag because we are willing
to tolerate bad data being returned or SIGBUS.
I disagree on this. Just because you want to skip checksumming doesn't mean you
can tolerate SIGBUS. For example, many file formats have their own checksums,
so we can safely skip HDFS checksumming, but we still want to ensure that we're
only reading locked (i.e safe) memory via mmap.
bq. The only function of this socket is to cause a close notification to be
sent to the datanode when the client closes (or vice versa). (When a UNIX
domain socket closes, the remote end gets a close notification).
Maybe this can be put into a separate JIRA, and first implement just a very
simple timeout-based mechanism? The DN could change the anchor flag to a magic
value which invalidates the segment and then close it after some amount of
time. Then if the client looks at it again it will know to invalidate.
> BlockReaderLocal must allow zero-copy reads only when the DN believes it's
> valid
> ---------------------------------------------------------------------------------
>
> Key: HDFS-5182
> URL: https://issues.apache.org/jira/browse/HDFS-5182
> Project: Hadoop HDFS
> Issue Type: Sub-task
> Components: hdfs-client
> Affects Versions: 3.0.0
> Reporter: Colin Patrick McCabe
> Assignee: Colin Patrick McCabe
>
> BlockReaderLocal must allow zero-copy reads only when the DN believes it's
> valid. This implies adding a new field to the response to
> REQUEST_SHORT_CIRCUIT_FDS. We also need some kind of heartbeat from the
> client to the DN, so that the DN can inform the client when the mapped region
> is no longer locked into memory.
--
This message was sent by Atlassian JIRA
(v6.1.5#6160)