av9ash/GitBugs huggingface dataset:
Bug: Test failure as failed request body counted in byte received metric - ITestAbfsNetworkStatistics#testAbfsHttpResponseStatistics
Status: Resolved | Priority: Major | Resolution: Fixed
Created: 25/Aug/20 22:11
Affects Version/s: 3.3.0

Bytes received counter increments for every request response received. 

[https://github.com/apache/hadoop/blob/d23cc9d85d887f01d72180bdf1af87dfdee15c5a/hadoop-tools/hadoop-azure/src/main/java/org/apache/hadoop/fs/azurebfs/services/AbfsRestOperation.java#L251]

This increments even for failed requests. 

Observed during testing done for HADOOP-17215. A request failed with 409 Conflict contains response body as below:

{"error":\{"code":"PathAlreadyExists","message":"The specified path already exists.\nRequestId:c3b2c55c-b01f-0061-7b31-7b6ee3000000\nTime:2020-08-25T22:44:07.2356054Z"}}

The error body of 168 size is incremented in bytes_received counter. 

This also breaks the testcase testAbfsHttpResponseStatistics. 
{code:java}
[ERROR] Tests run: 2, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 22.746 s <<< FAILURE! - in org.apache.hadoop.fs.azurebfs.ITestAbfsNetworkStatistics[ERROR] Tests run: 2, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 22.746 s <<< FAILURE! - in org.apache.hadoop.fs.azurebfs.ITestAbfsNetworkStatistics[ERROR] testAbfsHttpResponseStatistics(org.apache.hadoop.fs.azurebfs.ITestAbfsNetworkStatistics)  Time elapsed: 13.183 s  <<< FAILURE!java.lang.AssertionError: Mismatch in bytes_received expected:<143> but was:<311> at org.junit.Assert.fail(Assert.java:88) at org.junit.Assert.failNotEquals(Assert.java:834) at org.junit.Assert.assertEquals(Assert.java:645) at org.apache.hadoop.fs.azurebfs.AbstractAbfsIntegrationTest.assertAbfsStatistics(AbstractAbfsIntegrationTest.java:445) at org.apache.hadoop.fs.azurebfs.ITestAbfsNetworkStatistics.testAbfsHttpResponseStatistics(ITestAbfsNetworkStatistics.java:291)
{code}
[~mehakmeetSingh] - is the bytes_received counter increment for failed requests an expected behaviour ?
Bug: Allow file system caching to be disabled for all file systems
Status: Open | Priority: Major | Resolution: 
Created: 18/Aug/20 19:29
Affects Version/s: 3.3.0

Right now, FileSystem.get(URI uri, Configuration conf) allows caching of file systems to be disabled per scheme.

We can introduce a new global conf to disable caching for all FileSystem, the default would be false (or do not disable cache gobally).
Bug: ViewFs#getDelegationTokens should include fallback fs tokens as well.
Status: Open | Priority: Major | Resolution: 
Created: 02/Sep/20 02:40

 

getDelegationTokens API is using getMountPoints API and return tokens by iterating over.

But getMountPoints will not include fallbackfs. So, it will miss the tokens from fallback fs.
{code:java}
@Override
public List<Token<?>> getDelegationTokens(String renewer) throws IOException {
 List<InodeTree.MountPoint<AbstractFileSystem>> mountPoints = 
 fsState.getMountPoints();
 int initialListSize = 0;
 for (InodeTree.MountPoint<AbstractFileSystem> im : mountPoints) {
 initialListSize += im.target.targetDirLinkList.length; 
 }
 List<Token<?>> result = new ArrayList<Token<?>>(initialListSize);
 for ( int i = 0; i < mountPoints.size(); ++i ) {
 List<Token<?>> tokens = 
 mountPoints.get(i).target.targetFileSystem.getDelegationTokens(renewer);
 if (tokens != null) {
 result.addAll(tokens);
 }
 }
 return result;
}
{code}
Bug: Adding Context class for AbfsClient to pass AbfsConfigurations to limit number of parameters 
Status: Resolved | Priority: Major | Resolution: Fixed
Created: 09/Aug/20 23:57
Affects Version/s: 3.3.0

To limit the growing number of parameters in AbfsClient for AbfsConfigurations, introducing a context class to pass the AbfsConfigurations from.

This would help in passing the AbfsConfigurations to further classes like AbfsRestOperation and AbfsHttpOperation also.
Bug: Fix unit test of HDFS-13934
Status: Resolved | Priority: Major | Resolution: Duplicate
Created: 27/Aug/20 09:45

unit test failed of org.apache.hadoop.fs.contract.AbstractContractMultipartUploaderTest#testConcurrentUploads.

Exception:
{code:java}
java.lang.IllegalArgumentExceptionjava.lang.IllegalArgumentException at com.google.common.base.Preconditions.checkArgument(Preconditions.java:127) at org.apache.hadoop.test.LambdaTestUtils$ProportionalRetryInterval.<init>(LambdaTestUtils.java:907) at org.apache.hadoop.fs.contract.AbstractContractMultipartUploaderTest.testConcurrentUploads(AbstractContractMultipartUploaderTest.java:815){code}
h3. Reason:
{code:java}
public ProportionalRetryInterval(int intervalMillis,
    int maxIntervalMillis) {
  Preconditions.checkArgument(intervalMillis > 0);
  Preconditions.checkArgument(maxIntervalMillis > 0);
  this.intervalMillis = intervalMillis;
  this.current = intervalMillis;
  this.maxIntervalMillis = maxIntervalMillis;
}{code}
The constructor of ProportionalRetryInterval requires maxIntervalMillis> 0. But TestHDFSContractMultipartUploader does not override the timeToBecomeConsistentMillis method, so maxIntervalMillis = 0
Bug: empty getDefaultExtension() is ignored
Status: Open | Priority: Major | Resolution: 
Created: 27/Aug/20 03:53
Affects Version/s: 3.1.3

Use case - source files are gz-compressed but have no extensions.

Attempt to auto-decompress them through 
{code:java}
package com.my.codec.test

import org.apache.hadoop.io.compress.GzipCodec

class GZCodec extends GzipCodec {
  override def getDefaultExtension(): String = ""
 }
{code}
 (notice empty getDefaultExtension ) and then setting *io.compression.codecs* to com.my.codec.test.GZCodec makes no effect 

Similar tests with one-character encoding for last possible names makes it work. So only the empty-string getDefaultExtension case is broken. 

I guess the issue is somewhere in [https://github.com/c9n/hadoop/blob/master/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/compress/CompressionCodecFactory.java#L109] 

but it's not obvious. 

Folks have built some workarounds using custom readers, for example, 
 # [https://daynebatten.com/2015/11/override-hadoop-compression-codec-file-extension/]
 # [https://stackoverflow.com/questions/52011697/how-to-read-a-compressed-gzip-file-without-extension-in-spark?rq=1] 

Hopefully it would be an easy fix to support empty getDefaultExtension?
Bug: Bug in preserving Directory Attributes in DistCp with Atomic Copy
Status: Resolved | Priority: Major | Resolution: Fixed
Created: 11/Jul/20 04:55
Affects Version/s: 3.1.2

Description:

In case of Atomic Copy the copied data is commited and post that the preserve directory attributes runs. Preserving directory attributes is done over work path and not final path. I have fixed the base directory to point towards final path.
Bug: backport HADOOP-15691 PathCapabilities API to branch-3.2
Status: Resolved | Priority: Major | Resolution: Fixed
Created: 17/Aug/20 10:38
Affects Version/s: 3.2.1

Backport the PathCapabilities API of HADOOP-15691 as a precursor to the HADOOP-13230 backport, so making it easier to probe FS abilities.

going back further than is may be hard, but we'll see
Bug: ABFS : Add support for authentication mechanism at container level
Status: Open | Priority: Major | Resolution: 
Created: 17/Aug/20 11:55
Affects Version/s: 3.3.0

ABFS supports using various authentication mechanisms at storage level. 

As part of access level policies , application might have access to various containers belonging to same storage account using different authentication mechanisms. For one container application can have read, write etc , for other it may have only read permission. Application should be able to leverage authentication mechanisms for same storage account at container level.

One should be able to use SAS as authentication mechanism for one container & OAuth as authentication mechanism for another container.
Bug: Renaming a file under a sibling empty directory doesn't delete dest dir's marker
Status: Resolved | Priority: Major | Resolution: Duplicate
Created: 10/Aug/20 19:03
Affects Version/s: 3.1.3

This has probably existed for a long time -the fact that nobody has noticed is probably just luck.

Probably came with the *fix* of HADOOP-15079.

Given 

* a base directory /base
* A file /base/file
* an empty directory /base/empty (with empty dir marker)
* if you rename base/file under base/empty (key: with the dir passed in, not the full filename) the file is moved, but the marker /base/empty/ is not

The issue is that the  delete/recreate markers compares src and dest parent for equivalence when skipping marker delete, but if the final path of the rename is *under* the path "dst" then the comparison is wrong -it must be on the parent of the final path, not the path handed to rename()

{code}
    if (!src.getParent().equals(dst.getParent())) {
      LOG.debug("source & dest parents are different; fix up dir markers");
      deleteUnnecessaryFakeDirectories(dst.getParent());
      maybeCreateFakeParentDirectory(src);
    }
{code}
Bug: Unauthenticated users are not authorized to access this page message is misleading in HttpServer2.java
Status: Patch Available | Priority: Major | Resolution: 
Created: 21/Jul/20 09:07

Recently one of the users were misled by the message "Unauthenticated users are not authorized to access this page" when the user was not an admin user.
At that point the user is authenticated but has no admin access, so it's actually not an authentication issue but an authorization issue.
Also, 401 as error code would be better.
Something like "User is unauthorized to access the page" would help to users to find out what is the problem during access an http endpoint.
Bug: Decrease size of s3a dependencies
Status: Resolved | Priority: Major | Resolution: Won't Fix
Created: 10/Aug/20 17:22

S3A currently has a dependency on the aws-java-sdk-bundle, which includes the SDKs for all AWS services. The jar file for the current version is about 120 MB, but continues to grow (the latest is about 170 MB). Organic growth is expected as more and more AWS services are created.

The aws-java-sdk-bundle jar file is shaded as well, so it includes all transitive dependencies.

It would be nice if S3A could depend on smaller jar files in order to decrease the size of jar files pulled in transitively by clients. Decreasing the size of dependencies is particularly important for Docker files, where image pull times can be affected by image size.

One solution here would be for S3A to publish its own shaded jar which includes the SDKs for all needed AWS Services (e.g. S3, DynamoDB, etc.) along with the transitive dependencies for the individual SDKs.
Bug: ABFS: Test failure: Disable ITestAzureBlobFileSystemDelegationSAS tests
Status: Resolved | Priority: Major | Resolution: Works for Me
Created: 23/Jul/20 07:31

ITestAzureBlobFileSystemDelegationSAS has tests for the SAS feature in preview stage. The tests should not run until the API version reflects the one in preview as when run against production clusters they will fail.
Bug: Create Classes to wrap Guava code replacement
Status: Open | Priority: Major | Resolution: 
Created: 01/Jul/20 14:19

Usage of Guava APIs in hadoop may not have one line replacement in Java8+. We need to create some classes to wrap those common functionalities instead of reinventing the wheel everywhere.
For example, we should have new package {{package org.apache.hadoop.util.collections}}.
Then we create classes like {{MultiMap}} which may have the entire implementation from scratch or we can use Apache Commons Collections 4.4 API.
The Pros of using wrapper is to avoid adding more dependencies in POM if we vote to use a third party jar.
Bug: UGI Credentials#addToken silently overrides the token with same service name
Status: Open | Priority: Major | Resolution: 
Created: 09/Jul/20 12:44

UGI Credentials#addToken silently overrides the token with same service name.

{code:java}
public void addToken(Text alias, Token<? extends TokenIdentifier> t) {
  if (t == null) {
    LOG.warn("Null token ignored for " + alias);
  } else if (tokenMap.put(alias, t) != null) {
    // Update private tokens
    Map<Text, Token<? extends TokenIdentifier>> tokensToAdd =
        new HashMap<>();
    for (Map.Entry<Text, Token<? extends TokenIdentifier>> e :
        tokenMap.entrySet()) {
      Token<? extends TokenIdentifier> token = e.getValue();
      if (token.isPrivateCloneOf(alias)) {
        tokensToAdd.put(e.getKey(), t.privateClone(token.getService()));
      }
    }
    tokenMap.putAll(tokensToAdd);
  }
} 
{code}
 
There are tokens which does not have service name like YARN_AM_RM_TOKEN, Localizer and these tokens gets overridden and causes access issues later which are tough to debug.

1. Need to check if they can be added with some random unique name.
2. Or at least a error message should be logged.
Bug:  ITestS3AConfiguration.testProxyConnection failing when s3a bucket probe disabled
Status: Open | Priority: Minor | Resolution: 
Created: 14/Aug/20 11:16
Affects Version/s: 3.4.0

Failure of {{testProxyConnection(org.apache.hadoop.fs.s3a.ITestS3AConfiguration)}} when bucket probes set to

{code}
  <property>
    <name>fs.s3a.bucket.probe</name>
    <value>0</value>
  </property>   
{code}

and s3guard disabled
Bug: S3A (async) ObjectListingIterator to block in hasNext() for results
Status: Open | Priority: Minor | Resolution: 
Created: 03/Sep/20 12:29
Affects Version/s: 3.4.0

HADOOP-17074 made listing async in S3A, but the iterator's hasNext Call doesn't wait for the result. If invoked on an empty path it *may* return when it should be failing.

Note: surfaced in code review, not seen in the wild and all our tests were happy
Bug: Fix outdated properties of journal node when perform rollback
Status: Resolved | Priority: Minor | Resolution: Fixed
Created: 21/Jul/20 06:38

When rollback HDFS cluster, properties in JNStorage won't be refreshed after the storage dir changed. It leads to exceptions when starting namenode.

The exception like:
{code:java}
2020-07-09 19:04:12,810 FATAL [IPC Server handler 105 on 8022] org.apache.hadoop.hdfs.server.namenode.FSEditLog: Error: recoverUnfinalizedSegments failed for required journal (JournalAndStream(mgr=QJM to [10.0.118.217:8485, 10.0.117.208:8485, 10.0.118.179:8485], stream=null))
org.apache.hadoop.hdfs.qjournal.client.QuorumException: Got too many exceptions to achieve quorum size 2/3. 3 exceptions thrown:
10.0.118.217:8485: Incompatible namespaceID for journal Storage Directory /mnt/vdc-11176G-0/dfs/jn/nameservicetest1: NameNode has nsId 647617129 but storage has nsId 0
	at org.apache.hadoop.hdfs.qjournal.server.JNStorage.checkConsistentNamespace(JNStorage.java:236)
	at org.apache.hadoop.hdfs.qjournal.server.Journal.newEpoch(Journal.java:300)
	at org.apache.hadoop.hdfs.qjournal.server.JournalNodeRpcServer.newEpoch(JournalNodeRpcServer.java:136)
	at org.apache.hadoop.hdfs.qjournal.protocolPB.QJournalProtocolServerSideTranslatorPB.newEpoch(QJournalProtocolServerSideTranslatorPB.java:133)
	at org.apache.hadoop.hdfs.qjournal.protocol.QJournalProtocolProtos$QJournalProtocolService$2.callBlockingMethod(QJournalProtocolProtos.java:25417)
	at org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:617)
	at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:1073)
	at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2278)
	at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2274)
	at java.security.AccessController.doPrivileged(Native Method)
	at javax.security.auth.Subject.doAs(Subject.java:422)
	at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1924)
	at org.apache.hadoop.ipc.Server$Handler.run(Server.java:2274)
{code}
Bug: Fix spotbugs warnings surfaced after upgrade to 4.0.6
Status: Resolved | Priority: Minor | Resolution: Fixed
Created: 17/Jul/20 11:04
Affects Version/s: 3.2.3

Spotbugs 4.0.6 generated additional warnings.
{noformat}
$ find . -name findbugsXml.xml | xargs -n 1 /opt/spotbugs-4.0.6/bin/convertXmlToText -longBugCodes
M D DLS_DEAD_LOCAL_STORE DLS: Dead store to $L5 in org.apache.hadoop.ipc.Server$ConnectionManager.decrUserConnections(String)  At Server.java:[line 3729]
M D DLS_DEAD_LOCAL_STORE DLS: Dead store to $L5 in org.apache.hadoop.ipc.Server$ConnectionManager.incrUserConnections(String)  At Server.java:[line 3717]
H D NP_METHOD_PARAMETER_TIGHTENS_ANNOTATION NP: Method org.apache.hadoop.hdfs.server.datanode.checker.DatasetVolumeChecker$ResultHandler.onSuccess(Object) overrides the nullness annotation of parameter $L1 in an incompatible way  At DatasetVolumeChecker.java:[line 322]
H D NP_METHOD_PARAMETER_TIGHTENS_ANNOTATION NP: Method org.apache.hadoop.hdfs.server.datanode.checker.DatasetVolumeChecker$ResultHandler.onSuccess(VolumeCheckResult) overrides the nullness annotation of parameter result in an incompatible way  At DatasetVolumeChecker.java:[lines 358-376]
M D NP_METHOD_PARAMETER_TIGHTENS_ANNOTATION NP: Method org.apache.hadoop.hdfs.server.datanode.checker.ThrottledAsyncChecker$2.onSuccess(Object) overrides the nullness annotation of parameter result in an incompatible way  At ThrottledAsyncChecker.java:[lines 170-175]
M D DLS_DEAD_LOCAL_STORE DLS: Dead store to $L8 in org.apache.hadoop.hdfs.server.namenode.FSEditLogLoader.incrOpCount(FSEditLogOpCodes, EnumMap, Step, StartupProgress$Counter)  At FSEditLogLoader.java:[line 1241]
M D NP_PARAMETER_MUST_BE_NONNULL_BUT_MARKED_AS_NULLABLE NP: result must be non-null but is marked as nullable  At LocatedFileStatusFetcher.java:[lines 380-397]
M D NP_PARAMETER_MUST_BE_NONNULL_BUT_MARKED_AS_NULLABLE NP: result must be non-null but is marked as nullable  At LocatedFileStatusFetcher.java:[lines 291-309]
M D DLS_DEAD_LOCAL_STORE DLS: Dead store to $L6 in org.apache.hadoop.yarn.sls.SLSRunner.increaseQueueAppNum(String)  At SLSRunner.java:[line 816]
H C UMAC_UNCALLABLE_METHOD_OF_ANONYMOUS_CLASS UMAC: Uncallable method org.apache.hadoop.yarn.server.timelineservice.reader.TestTimelineReaderWebServicesHBaseStorage$1.getInstance() defined in anonymous class  At TestTimelineReaderWebServicesHBaseStorage.java:[line 87]
M D DLS_DEAD_LOCAL_STORE DLS: Dead store to entities in org.apache.hadoop.yarn.server.timelineservice.storage.TestTimelineReaderHBaseDown.checkQuery(HBaseTimelineReaderImpl)  At TestTimelineReaderHBaseDown.java:[line 190]
M V EI_EXPOSE_REP EI: org.apache.hadoop.fs.cosn.CosNInputStream$ReadBuffer.getBuffer() may expose internal representation by returning CosNInputStream$ReadBuffer.buffer  At CosNInputStream.java:[line 87]
{noformat}
Bug: Add Capability To Get Text Length
Status: Resolved | Priority: Minor | Resolution: Fixed
Created: 20/Jul/20 19:59
Affects Version/s: 3.4.0

The Hadoop {{Text}} class contains an array of byte which contain a UTF-8 encoded string.  However, there is no way to quickly get the length of that string.  One can get the number of bytes in the byte array, but to figure out the length of the String, it needs to be decoded first.  In this simple example, sorting the {{Text}} objects by String length, the String needs to be decoded from the byte array repeatedly.  This was brought to my attention based on [HIVE-23870].

{code:java}
  public static void main(String[] args) {
    List<Text> list = Arrays.asList(new Text("1"), new Text("22"), new Text("333"));
    list.sort((Text t1, Text t2) -> t1.toString().length() - t2.toString().length());
  }
{code}

Also helpful if I want to check the last letter in the {{Text}} object repeatedly:

{code:java}
    Text t = new Text("4444");
    System.out.println(t.charAt(t.toString().length() - 1));
{code}
Bug: Dead link in hadoop-kms/index.md.vm
Status: Resolved | Priority: Minor | Resolution: Fixed
Created: 22/Jul/20 09:43
Affects Version/s: 3.3.1

There is a dead link (https://hadoop.apache.org/hadoop-project-dist/hadoop-common/CredentialProviderAPI.html) in https://hadoop.apache.org/docs/r3.3.0/hadoop-kms/index.html#KMS_over_HTTPS_.28SSL.29

The link should be https://hadoop.apache.org/docs/r3.3.0/hadoop-project-dist/hadoop-common/CredentialProviderAPI.html
Bug: libzstd-dev should be used instead of libzstd1-dev on Ubuntu 18.04 or higher
Status: Resolved | Priority: Minor | Resolution: Fixed
Created: 24/Sep/20 05:36
Affects Version/s: 3.4.0

libzstd1-dev is a transitional package on Ubuntu 18.04.
It is better to use libzstd-dev instead of libzstd1-dev in the Dockerfile (dev-support/docker/Dockerfile).
Bug: Re-enable optimized copyFromLocal implementation in S3AFileSystem
Status: Resolved | Priority: Minor | Resolution: Fixed
Created: 17/Jul/20 19:29
Affects Version/s: 3.2.1

It looks like HADOOP-15932 disabled the optimized copyFromLocal implementation in S3A for correctness reasons.  innerCopyFromLocalFile should be fixed and re-enabled. The current implementation uses FileSystem.copyFromLocal which will open an input stream from the local fs and an output stream to the destination fs, and then call IOUtils.copyBytes. With default configs, this will cause S3A to read the file into memory, write it back to a file on the local fs, and then when the file is closed, upload it to S3.

The optimized version of copyFromLocal in innerCopyFromLocalFile, directly creates a PutObjectRequest request with the local file as the input.
Bug: JAVA_HOME with spaces not supported
Status: Open | Priority: Minor | Resolution: 
Created: 26/Aug/20 16:26
Affects Version/s: 3.3.0

When running on Windows, if JAVA_HOME contains a space (which is frequently since the default Java install path is "C:\Program Files\Java", running Hadoop fails to run. 

!image-2020-08-26-12-24-04-118.png!
Bug: Failure of ITestAssumeRole.testRestrictedCommitActions 
Status: Resolved | Priority: Minor | Resolution: Fixed
Created: 25/Aug/20 18:03
Affects Version/s: 3.3.1

Counter of progress callbacks of parallel commits was 1, not two. As the callback wasn't using an atomic long, likely to be a (rare) race condition.

see in HADOOP-16830 test run; looks unrelated but I'll add the fix there anyway so I can see if it goes away.
Bug: transient ITestS3AFileContextStatistics failure -read buffer not filled
Status: Resolved | Priority: Minor | Resolution: Won't Fix
Created: 16/Sep/20 13:25
Affects Version/s: 3.4.0

Transient failure of test suite ITestS3AFileContextStatistics; read() didn't get the full buffer filled up. 

Note: Something is clearly odd on my dev setup, there's clearly smaller packets coming in. read() is free to return as much bytes as it has, but I've never seen this under-reporting until recently.
Bug: ABFS: configure output stream thread pool
Status: Resolved | Priority: Minor | Resolution: Fixed
Created: 30/Jul/20 12:46
Affects Version/s: 3.3.0

{code}
fs.azure.write.max.concurrent.requests -number of concurrent requests a single stream may POST at
fs.azure.write.max.requests.to.queue -number of blocks which will be queued before the client blocks.
{code}

the amount of memory consumed is fs.azure.write.max.concurrent.requests * fs.azure.write.max.requests.to.queue (default= 8MB)
Bug: Handle transient stream read failures in FileSystem contract tests
Status: Resolved | Priority: Minor | Resolution: Fixed
Created: 03/Aug/20 18:45
Affects Version/s: 3.3.0

Seen 2x recently, failure in ITestS3AContractUnbuffer as not enough data came back in the read. 

The contract test assumes that stream.read() will return everything, but it could be some buffering problem. Proposed: switch to ReadFully to see if it is a quirk of the read/get or is something actually wrong with the production code.
Bug: add way for s3a to recognise buckets with "." in name and switch to path access
Status: Resolved | Priority: Minor | Resolution: Won't Fix
Created: 06/Aug/20 15:59
Affects Version/s: 3.3.0

# AWS has, historically, allowed buckets with '.' in their name (along with other non-DNS valid chars)
# none of which work with virtual hostname S3 clients -you have to enable path style access
# which we can't do on a per-bucket basis, as the logic there doesn't support buckets with '.' in the name (think about it...)
# and we can't blindly say "use path access everywhere", because all buckets created on/after 2020-10-01 won't work that way