[ 
https://issues.apache.org/jira/browse/HADOOP-9565?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Steve Loughran updated HADOOP-9565:
-----------------------------------
    Attachment: HADOOP-9565-010.patch

Patch 010: resetting everything and starting again with nothing but an API to 
query a filesystem for features. This is a WiP again, up for feedback.

* {{boolean FileSystem.hasFeature(Path, String)}} lets you see if the bit of an 
FS under a path has a feature
* Feature names in {{FileSystemFeatures}} are pretty much a copy and paste of 
{{org.apache.hadoop.fs.contract.ContractOptions}}.
* The base class mechanism for setting up feature resolution, 
{{FeatureResolver}} is driven off XML configuration files; with a setup 
mechanism which allows for subclasses to dynamically redefine the features, 
such as when setting up a local FS.

All the work of defining features is already in the contract tests; I've just 
pulled their declarations into the production hadoop-common, hadoop-hdfs-client 
JARs, not the test JARs, and modified the two migrated FS's contracts to load 
in the new XML file as well as the old one.

One big difference is in resolution of a feature: when a feature is looked for 
it first looks for the schema-specific option 
{{fs.hdfs.contract.supports-atomic-rename}} before falling back to look for 
{{fs.contract.supports-atomic-rename}}, which is where a default can be 
defined. 

This allows for  per-FS values to be set in core-default.xml, 

{code}
# default: listings work
fs.contract.supports-consistent-listing  = false
# but not S3A
fs.s3a.contract.supports-consistent-listing  = false
{code}

And overridden in core-site.xml, as it'd be in a deployment against WDC's 
servers

{code}
fs.s3a.contract.supports-consistent-listing  = true
{code}


And it permits S3A per-bucket override for deployments where only some buckets 
are consistent, such as "stevel-s3guard"

{code}
fs.s3a.bucket.stevel-s3guard.contract.supports-consistent-listing  = true
{code}

Although the feature resolver is driven purely by the loaded hash of config 
options, because the lookup is via the FS instance, it has the option of being 
dynamic: per-path, on-demand evaluation rather than on construction probes for 
OS type, ....

Also, the underlying feature resolver has a Java 8 optional API, so it can 
return yes/no/don't know, the idea being "no" can be normative.



> Add a Blobstore interface to add to blobstore FileSystems
> ---------------------------------------------------------
>
>                 Key: HADOOP-9565
>                 URL: https://issues.apache.org/jira/browse/HADOOP-9565
>             Project: Hadoop Common
>          Issue Type: Improvement
>          Components: fs, fs/s3, fs/swift
>    Affects Versions: 2.6.0
>            Reporter: Steve Loughran
>            Assignee: Thomas Demoor
>         Attachments: HADOOP-9565-001.patch, HADOOP-9565-002.patch, 
> HADOOP-9565-003.patch, HADOOP-9565-004.patch, HADOOP-9565-005.patch, 
> HADOOP-9565-006.patch, HADOOP-9565-008.patch, HADOOP-9565-010.patch, 
> HADOOP-9565-branch-2-007.patch
>
>
> We can make the fact that some {{FileSystem}} implementations are really 
> blobstores, with different atomicity and consistency guarantees, by adding a 
> {{Blobstore}} interface to add to them. 
> This could also be a place to add a {{Copy(Path,Path)}} method, assuming that 
> all blobstores implement at server-side copy operation as a substitute for 
> rename.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to