[ 
https://issues.apache.org/jira/browse/HDFS-13934?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17167094#comment-17167094
 ] 

Ayush Saxena commented on HDFS-13934:
-------------------------------------

Hi [~ste...@apache.org], [~fabbri] 
 This tends to break {{TestHDFSContractMultipartUploader.testConcurrentUploads}}
 Should be a test only issue, I guess :
{code:java}
    eventually(timeToBecomeConsistentMillis(),
        () -> verifyFileLength(file, size2),
        new LambdaTestUtils.ProportionalRetryInterval(
            CONSISTENCY_INTERVAL, timeToBecomeConsistentMillis() == 0 ?
            CONSISTENCY_INTERVAL :
            timeToBecomeConsistentMillis())); // This is 0 for HDFS
{code}
The reason being {{timeToBecomeConsistentMillis()}} is 0, and there is 
{{PreCondition}} check in {{LambdaTestUtils.ProportionalRetryInterval}} making 
sure it shouldn't be 0,
 Earlier that {{LambdaTestUtils.FixedRetryInterval}} was being used, which 
didn't had this issue
 We can change back to it?, or handle this specifically for HDFS?

This test is even extended by {{ITestS3AContractMultipartUploader}} which I can 
not verify, and any change here would impact that as well, So, would be good if 
either of you, help fix this.

Ref : 
[https://builds.apache.org/job/PreCommit-HDFS-Build/29566/testReport/org.apache.hadoop.fs.contract.hdfs/TestHDFSContractMultipartUploader/testConcurrentUploads/]

> Multipart uploaders to be created through API call to FileSystem/FileContext, 
> not service loader
> ------------------------------------------------------------------------------------------------
>
>                 Key: HDFS-13934
>                 URL: https://issues.apache.org/jira/browse/HDFS-13934
>             Project: Hadoop HDFS
>          Issue Type: Sub-task
>          Components: fs, fs/s3, hdfs
>    Affects Versions: 3.2.0
>            Reporter: Steve Loughran
>            Assignee: Steve Loughran
>            Priority: Major
>             Fix For: 3.3.1
>
>
> the Multipart Uploaders are created via service loaders. This is troublesome
> # HADOOP-12636, HADOOP-13323, HADOOP-13625 highlight how the load process 
> forces the transient loading of dependencies.  If a dependent class cannot be 
> loaded (e.g aws-sdk is not on the classpath), that service won't load. 
> Without error handling round the load process, this stops any uploader from 
> loading. Even with that error handling, the performance hit of that load, 
> especially with reshaded dependencies, hurts performance (HADOOP-13138).
> # it makes wrapping the the load with any filter impossible, stops transitive 
> binding through viewFS, mocking, etc.
> # It complicates security in a kerberized world. If you have an FS instance 
> of user A, then you should be able to create an MPU instance with that user's 
> permissions. currently, if a service were to try to create one, you'd be 
> looking at doAs() games around the service loading, and a more complex bind 
> process.
> Proposed
> # remove the service loader mech entirely
> # add to FS & FC as createMultipartUploader(path) call, which will create one 
> bound to the current FS, with its permissions, DTs, etc.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org

Reply via email to