[
https://issues.apache.org/jira/browse/HADOOP-14756?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16431433#comment-16431433
]
Aaron Fabbri commented on HADOOP-14756:
---------------------------------------
Hey [~gabor.bota] thank you for looking at this.
{quote}In case the "isNew" flag implementation is needed I assume it would be
an additional attribute in dynamodb table for the entries. Is this correct?
{quote}
I don't think there is anything to do here, or it is pretty low priority. I
will explain, just for history's sake:
When writing the code, I observed a small optimization: Consider mkdir()
codepath. Since it is a new dir, we know it is empty, and thus its contents are
"fully cached" or "authoritative" in the MetadataStore. I.e.
{color:#654982}After {{fs.mkdir(new_dir_path)}}, then
fs.getMetadataStore().listChildren(new_dir_path).isAuthoritative() should be
true if the metadata store supports authoritative mode (if it persists the
isAuthoritative bit).{color}
Today, a fs client can accomplish this with two calls (in pseudocode):
metadataStore.put(new PathMetadata(new_dir_path))
metadataStore.put(new DirListingMetadata(new_dir_path, children={},
isAuthoritative=true) // <-- all this just to set auth. bit
Instead, if {{put(PathMetadata)}} had a second parameter, {{boolean isNew}} we
could skip the second call to {{put(DirListingMetadata)}}, potentially making
mkdirs() codepath faster and saving a DynamoDB write.
I don't think there is any additional new state that needs to be stored in the
database--it would be covered by the isAuthoritative (i.e. isFullyCached) bit
on a directory path.
So it is not a required change, only a low-priority optimization for codepaths
that create empty directories.
I'll comment on patch separately.
> S3Guard: expose capability query in MetadataStore and add tests of
> authoritative mode
> -------------------------------------------------------------------------------------
>
> Key: HADOOP-14756
> URL: https://issues.apache.org/jira/browse/HADOOP-14756
> Project: Hadoop Common
> Issue Type: Sub-task
> Components: fs/s3
> Affects Versions: 3.0.0-beta1
> Reporter: Steve Loughran
> Assignee: Gabor Bota
> Priority: Major
> Attachments: HADOOP-14756.001.patch
>
>
> {{MetadataStoreTestBase.testListChildren}} would be improved with the ability
> to query the features offered by the store, and the outcome of {{put()}}, so
> probe the correctness of the authoritative mode
> # Add predicate to MetadataStore interface
> {{supportsAuthoritativeDirectories()}} or similar
> # If #1 is true, assert that directory is fully cached after changes
> # Add "isNew" flag to MetadataStore.put(DirListingMetadata); use to verify
> when changes are made
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]