[
https://issues.apache.org/jira/browse/HDFS-10533?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Mingliang Liu updated HDFS-10533:
---------------------------------
Attachment: HDFS-10533.000.patch
The v0 patch briefly explains our idea. Specially, the immutable
{{DistCpOptions}} is user interface for input options. We encapsulate (and
hide) it in a {{DistCpContext}} class along with mutable variables like
{{sourcePaths}}, {{targetPathExists}} and {{preserveRawXattrs}}.
There are open questions for discussion though:
# Some of the distcp options were badly named, e.g. {{syncFolder <--> update}},
we can name them consistently here
# Option {{blocking}} is reversely set and used, which is confusing
# {{-delete}} and {{-diff}} are mutually exclusive. For backward compatibility,
we ignored the {{-delete}} option (see [HDFS-10397] and [HDFS-10556] for more
discussion), instead of throwing an IllegalArgumentException. I suggest we
throw error as a long-term and REAL fix.
> Make DistCpOptions class immutable
> ----------------------------------
>
> Key: HDFS-10533
> URL: https://issues.apache.org/jira/browse/HDFS-10533
> Project: Hadoop HDFS
> Issue Type: Improvement
> Components: distcp
> Reporter: Mingliang Liu
> Assignee: Mingliang Liu
> Attachments: HDFS-10533.000.patch
>
>
> Currently the {{DistCpOptions}} class encapsulates all DistCp options, which
> may be set from command-line (via the {{OptionsParser}}) or may be set
> manually (eg construct an instance and call setters). As there are multiple
> option fields and more (e.g. [HDFS-9868], [HDFS-10314]) to add, validating
> them can be cumbersome. Ideally, the {{DistCpOptions}} object should be
> immutable. The benefits are:
> # {{DistCpOptions}} is simple and easier to use and share, plus it scales well
> # validation is automatic, e.g. manually constructed {{DistCpOptions}} gets
> validated before usage
> # validation error message is well-defined which does not depend on the order
> of setters
> This jira is to track the effort of making the {{DistCpOptions}} immutable by
> using a Builder pattern for creation.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]