filerS3Options.iamReadOnly=cmdFiler.Flag.Bool("s3.iam.readOnly",true,"disable IAM write operations on this server")
filerS3Options.portIceberg=cmdFiler.Flag.Int("s3.port.iceberg",8181,"Iceberg REST Catalog server listen port (0 to disable)")
filerS3Options.externalUrl=cmdFiler.Flag.String("s3.externalUrl","","the external URL clients use to connect (e.g. https://api.example.com:9000). Used for S3 signature verification behind a reverse proxy. Falls back to S3_EXTERNAL_URL env var.")
filerS3Options.defaultFileMode=cmdFiler.Flag.String("s3.defaultFileMode","","default file mode for S3 uploaded objects, e.g. 0660, 0644, 0666")
// start webdav on filer
filerStartWebDav=cmdFiler.Flag.Bool("webdav",false,"whether to start webdav gateway")
miniS3Options.externalUrl=cmdMini.Flag.String("s3.externalUrl","","the external URL clients use to connect (e.g. https://api.example.com:9000). Used for S3 signature verification behind a reverse proxy. Falls back to S3_EXTERNAL_URL env var.")
miniS3Options.defaultFileMode=cmdMini.Flag.String("s3.defaultFileMode","","default file mode for S3 uploaded objects, e.g. 0660, 0644, 0666")
// In mini mode, S3 uses the shared debug server started at line 681, not its own separate debug server
miniS3Options.debug=new(bool)// explicitly false
miniS3Options.debugPort=cmdMini.Flag.Int("s3.debug.port",6060,"http port for debugging (unused in mini mode)")
// Flags are registered in multiple commands: s3.go (standalone), server.go, filer.go, and mini.go.
// When adding a new field, update all four flag registration sites.
typeS3Optionsstruct{
filer*string
bindIp*string
@ -68,6 +72,7 @@ type S3Options struct {
debugPort*int
cipher*bool
externalUrl*string
defaultFileMode*string
}
funcinit(){
@ -103,6 +108,7 @@ func init() {
s3StandaloneOptions.debugPort=cmdS3.Flag.Int("debug.port",6060,"http port for debugging")
s3StandaloneOptions.cipher=cmdS3.Flag.Bool("encryptVolumeData",false,"encrypt data on volume servers")
s3StandaloneOptions.externalUrl=cmdS3.Flag.String("externalUrl","","the external URL clients use to connect (e.g. https://api.example.com:9000). Used for S3 signature verification behind a reverse proxy. Falls back to S3_EXTERNAL_URL env var.")
s3StandaloneOptions.defaultFileMode=cmdS3.Flag.String("defaultFileMode","","default file mode for S3 uploaded objects, e.g. 0660, 0644, 0666")
s3Options.iamReadOnly=cmdServer.Flag.Bool("s3.iam.readOnly",true,"disable IAM write operations on this server")
s3Options.cipher=cmdServer.Flag.Bool("s3.encryptVolumeData",false,"encrypt data on volume servers for S3 uploads")
s3Options.externalUrl=cmdServer.Flag.String("s3.externalUrl","","the external URL clients use to connect (e.g. https://api.example.com:9000). Used for S3 signature verification behind a reverse proxy. Falls back to S3_EXTERNAL_URL env var.")
s3Options.defaultFileMode=cmdServer.Flag.String("s3.defaultFileMode","","default file mode for S3 uploaded objects, e.g. 0660, 0644, 0666")
sftpOptions.port=cmdServer.Flag.Int("sftp.port",2022,"SFTP server listen port")
sftpOptions.sshPrivateKey=cmdServer.Flag.String("sftp.sshPrivateKey","","path to the SSH private key file for host authentication")
returnfmt.Errorf("failed to update .versions directory metadata: %v",err)
}
}elseifhasDeleteMarkers||!isLast{
// Delete markers still exist in the .versions directory, or the listing was
// truncated so there may be more entries. Either way, keep the directory.
glog.V(2).Infof("updateLatestVersionAfterDeletion: no content versions found for %s/%s but .versions directory still has entries (deleteMarkers=%v, isLast=%v), keeping directory",
bucket,object,hasDeleteMarkers,isLast)
}else{
// No versions left - delete the .versions metadata file entirely
// This prevents clients from seeing an empty .versions file
glog.V(2).Infof("updateLatestVersionAfterDeletion: no versions left for %s/%s, deleting .versions metadata file",bucket,object)
// No entries at all - delete the .versions directory entirely
glog.V(2).Infof("updateLatestVersionAfterDeletion: no versions left for %s/%s, deleting .versions directory",bucket,object)