diff --git a/weed/command/filer_remote_gateway_buckets.go b/weed/command/filer_remote_gateway_buckets.go index 61bb1e434..af851e2b9 100644 --- a/weed/command/filer_remote_gateway_buckets.go +++ b/weed/command/filer_remote_gateway_buckets.go @@ -86,12 +86,26 @@ func (option *RemoteGatewayOptions) makeBucketedEventProcessor(filerSource *sour return nil } } - if *option.createBucketRandomSuffix { - // https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html - if len(bucketName)+5 > 63 { - bucketName = bucketName[:58] + + bucketPath := util.FullPath(option.bucketsDir).Child(entry.Name) + remoteLocation, found := option.mappings.Mappings[string(bucketPath)] + if !found { + if *option.createBucketRandomSuffix { + // https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html + if len(bucketName)+5 > 63 { + bucketName = bucketName[:58] + } + bucketName = fmt.Sprintf("%s-%04d", bucketName, rand.Uint32()%10000) + } + remoteLocation = &remote_pb.RemoteStorageLocation{ + Name: *option.createBucketAt, + Bucket: bucketName, + Path: "/", } - bucketName = fmt.Sprintf("%s-%04d", bucketName, rand.Uint32()%10000) + // need to add new mapping here before getting updates from metadata tailing + option.mappings.Mappings[string(bucketPath)] = remoteLocation + } else { + bucketName = remoteLocation.Bucket } glog.V(0).Infof("create bucket %s", bucketName) @@ -99,16 +113,6 @@ func (option *RemoteGatewayOptions) makeBucketedEventProcessor(filerSource *sour return fmt.Errorf("create bucket %s in %s: %v", bucketName, remoteConf.Name, err) } - bucketPath := util.FullPath(option.bucketsDir).Child(entry.Name) - remoteLocation := &remote_pb.RemoteStorageLocation{ - Name: *option.createBucketAt, - Bucket: bucketName, - Path: "/", - } - - // need to add new mapping here before getting upates from metadata tailing - option.mappings.Mappings[string(bucketPath)] = remoteLocation - return filer.InsertMountMapping(option, string(bucketPath), remoteLocation) }