The occurrence of panic in the PutObjectLegalHold and PutObjectRetention operations #605

Closed
opened 2025-01-22 08:05:49 +00:00 by r.loginov · 0 comments
Member

If the object has the Quota limit reached status, then a panic occurs in s3-gw when performing PutObjectLegalHold or PutObjectRetention operations.

Expected Behavior

If the object has the Quota limit reached status, then PutObjectLegalHold or PutObjectRetention operations should not cause panic. They must be committed with an error exceeding the limit.

Current Behavior

When performing PutObjectLegalHold or PutObjectRetention operations, a panic occurs here. To be more specific, then prm.Payload == nil.
Stacktrace:

янв 22 08:37:49  frostfs-s3-gw[3342026]:  panic: runtime error: invalid memory address or nil pointer dereference
янв 22 08:37:49  frostfs-s3-gw[3342026]:  
янв 22 08:37:49  frostfs-s3-gw[3342026]:  -> io.discard.ReadFrom
янв 22 08:37:49  frostfs-s3-gw[3342026]:  ->   io/io.go:666
янв 22 08:37:49  frostfs-s3-gw[3342026]:     io.copyBuffer
янв 22 08:37:49  frostfs-s3-gw[3342026]:       io/io.go:415
янв 22 08:37:49  frostfs-s3-gw[3342026]:     io.Copy
янв 22 08:37:49  frostfs-s3-gw[3342026]:       io/io.go:388
янв 22 08:37:49  frostfs-s3-gw[3342026]:     git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api/layer.(*Layer).objectPutAndHash
янв 22 08:37:49  frostfs-s3-gw[3342026]:       git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api/layer/object.go:528
янв 22 08:37:49  frostfs-s3-gw[3342026]:     git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api/layer.(*Layer).putLockObject
янв 22 08:37:49  frostfs-s3-gw[3342026]:       git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api/layer/system_object.go:131
янв 22 08:37:49  frostfs-s3-gw[3342026]:     git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api/layer.(*Layer).PutLockInfo
янв 22 08:37:49  frostfs-s3-gw[3342026]:       git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api/layer/system_object.go:84
янв 22 08:37:49  frostfs-s3-gw[3342026]:     git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api/handler.(*handler).PutObjectLegalHoldHandler
янв 22 08:37:49  frostfs-s3-gw[3342026]:       git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api/handler/locking.go:157
янв 22 08:37:49  frostfs-s3-gw[3342026]:     net/http.HandlerFunc.ServeHTTP
янв 22 08:37:49  frostfs-s3-gw[3342026]:       net/http/server.go:2171
янв 22 08:37:49  frostfs-s3-gw[3342026]:     git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api.objectRouter.func2.named.7
янв 22 08:37:49  frostfs-s3-gw[3342026]:       git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api/router.go:227
янв 22 08:37:49  frostfs-s3-gw[3342026]:     net/http.HandlerFunc.ServeHTTP
янв 22 08:37:49  frostfs-s3-gw[3342026]:       net/http/server.go:2171
янв 22 08:37:49  frostfs-s3-gw[3342026]:     git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api.(*HandlerFilters).ServeHTTP
янв 22 08:37:49  frostfs-s3-gw[3342026]:       git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api/router_filter.go:133
янв 22 08:37:49  frostfs-s3-gw[3342026]:     github.com/go-chi/chi/v5.(*ChainHandler).ServeHTTP
янв 22 08:37:49  frostfs-s3-gw[3342026]:       github.com/go-chi/chi/v5@v5.0.8/chain.go:31
янв 22 08:37:49  frostfs-s3-gw[3342026]:     github.com/go-chi/chi/v5.(*Mux).routeHTTP
янв 22 08:37:49  frostfs-s3-gw[3342026]:       github.com/go-chi/chi/v5@v5.0.8/mux.go:444
янв 22 08:37:49  frostfs-s3-gw[3342026]:     net/http.HandlerFunc.ServeHTTP
янв 22 08:37:49  frostfs-s3-gw[3342026]:       net/http/server.go:2171
янв 22 08:37:49  frostfs-s3-gw[3342026]:     github.com/go-chi/chi/v5.(*Mux).ServeHTTP
янв 22 08:37:49  frostfs-s3-gw[3342026]:       github.com/go-chi/chi/v5@v5.0.8/mux.go:73
янв 22 08:37:49  frostfs-s3-gw[3342026]:     github.com/go-chi/chi/v5.(*Mux).Mount.func1
янв 22 08:37:49  frostfs-s3-gw[3342026]:       github.com/go-chi/chi/v5@v5.0.8/mux.go:316
янв 22 08:37:49  frostfs-s3-gw[3342026]:     net/http.HandlerFunc.ServeHTTP
янв 22 08:37:49  frostfs-s3-gw[3342026]:       net/http/server.go:2171
янв 22 08:37:49  frostfs-s3-gw[3342026]:     github.com/go-chi/chi/v5.(*Mux).routeHTTP
янв 22 08:37:49  frostfs-s3-gw[3342026]:       github.com/go-chi/chi/v5@v5.0.8/mux.go:444
янв 22 08:37:49  frostfs-s3-gw[3342026]:     net/http.HandlerFunc.ServeHTTP
янв 22 08:37:49  frostfs-s3-gw[3342026]:       net/http/server.go:2171
янв 22 08:37:49  frostfs-s3-gw[3342026]:     git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api.bucketRouter.WrapHandler.func5.1
янв 22 08:37:49  frostfs-s3-gw[3342026]:       git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api/middleware/middleware.go:16
янв 22 08:37:49  frostfs-s3-gw[3342026]:     net/http.HandlerFunc.ServeHTTP
янв 22 08:37:49  frostfs-s3-gw[3342026]:       net/http/server.go:2171
янв 22 08:37:49  frostfs-s3-gw[3342026]:     github.com/go-chi/chi/v5.(*Mux).ServeHTTP
янв 22 08:37:49  frostfs-s3-gw[3342026]:       github.com/go-chi/chi/v5@v5.0.8/mux.go:73
янв 22 08:37:49  frostfs-s3-gw[3342026]:     github.com/go-chi/chi/v5.(*Mux).Mount.func1
янв 22 08:37:49  frostfs-s3-gw[3342026]:       github.com/go-chi/chi/v5@v5.0.8/mux.go:316
янв 22 08:37:49  frostfs-s3-gw[3342026]:     net/http.HandlerFunc.ServeHTTP
янв 22 08:37:49  frostfs-s3-gw[3342026]:       net/http/server.go:2171
янв 22 08:37:49  frostfs-s3-gw[3342026]:     github.com/go-chi/chi/v5.(*Mux).routeHTTP
янв 22 08:37:49  frostfs-s3-gw[3342026]:       github.com/go-chi/chi/v5@v5.0.8/mux.go:444
янв 22 08:37:49  frostfs-s3-gw[3342026]:     net/http.HandlerFunc.ServeHTTP
янв 22 08:37:49  frostfs-s3-gw[3342026]:       net/http/server.go:2171
янв 22 08:37:49  frostfs-s3-gw[3342026]:     github.com/go-chi/chi/v5.(*Mux).ServeHTTP
янв 22 08:37:49  frostfs-s3-gw[3342026]:       github.com/go-chi/chi/v5@v5.0.8/mux.go:73
янв 22 08:37:49  frostfs-s3-gw[3342026]:     git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api.(*globalRouter).ServeHTTP
янв 22 08:37:49  frostfs-s3-gw[3342026]:       git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api/router.go:219
янв 22 08:37:49  frostfs-s3-gw[3342026]:     github.com/go-chi/chi/v5.(*Mux).Mount.func1
янв 22 08:37:49  frostfs-s3-gw[3342026]:       github.com/go-chi/chi/v5@v5.0.8/mux.go:316
янв 22 08:37:49  frostfs-s3-gw[3342026]:     net/http.HandlerFunc.ServeHTTP
янв 22 08:37:49  frostfs-s3-gw[3342026]:       net/http/server.go:2171
янв 22 08:37:49  frostfs-s3-gw[3342026]:     github.com/go-chi/chi/v5.(*Mux).routeHTTP
янв 22 08:37:49  frostfs-s3-gw[3342026]:       github.com/go-chi/chi/v5@v5.0.8/mux.go:444
янв 22 08:37:49  frostfs-s3-gw[3342026]:     net/http.HandlerFunc.ServeHTTP
янв 22 08:37:49  frostfs-s3-gw[3342026]:       net/http/server.go:2171
янв 22 08:37:49  frostfs-s3-gw[3342026]:     git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api.NewRouter.PolicyCheck.func8.1
янв 22 08:37:49  frostfs-s3-gw[3342026]:       git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api/middleware/policy.go:101
янв 22 08:37:49  frostfs-s3-gw[3342026]:     net/http.HandlerFunc.ServeHTTP
янв 22 08:37:49  frostfs-s3-gw[3342026]:       net/http/server.go:2171
янв 22 08:37:49  frostfs-s3-gw[3342026]:     git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api.NewRouter.PrepareAddressStyle.func7.1
янв 22 08:37:49 frostfs-s3-gw[3342026]:       git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api/middleware/address_style.go:41
янв 22 08:37:49 frostfs-s3-gw[3342026]:     net/http.HandlerFunc.ServeHTTP
янв 22 08:37:49 frostfs-s3-gw[3342026]:       net/http/server.go:2171
янв 22 08:37:49 frostfs-s3-gw[3342026]:     git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api.NewRouter.FrostfsIDValidation.func6.1
янв 22 08:37:49 frostfs-s3-gw[3342026]:       git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api/middleware/auth.go:105
янв 22 08:37:49 frostfs-s3-gw[3342026]:     net/http.HandlerFunc.ServeHTTP
янв 22 08:37:49 frostfs-s3-gw[3342026]:       net/http/server.go:2171
янв 22 08:37:49 frostfs-s3-gw[3342026]:     git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api.NewRouter.Auth.func5.1
янв 22 08:37:49 frostfs-s3-gw[3342026]:       git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api/middleware/auth.go:77
янв 22 08:37:49 frostfs-s3-gw[3342026]:     net/http.HandlerFunc.ServeHTTP
янв 22 08:37:49 frostfs-s3-gw[3342026]:       net/http/server.go:2171
янв 22 08:37:49 frostfs-s3-gw[3342026]:     git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api.NewRouter.LogSuccessResponse.func4.1
янв 22 08:37:49 frostfs-s3-gw[3342026]:       git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api/middleware/response.go:303
янв 22 08:37:49  frostfs-s3-gw[3342026]:     net/http.HandlerFunc.ServeHTTP
янв 22 08:37:49  frostfs-s3-gw[3342026]:       net/http/server.go:2171
янв 22 08:37:49  frostfs-s3-gw[3342026]:     git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api/middleware.stats.func1
янв 22 08:37:49  frostfs-s3-gw[3342026]:       git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api/middleware/metrics.go:75
янв 22 08:37:49  frostfs-s3-gw[3342026]:     net/http.HandlerFunc.ServeHTTP
янв 22 08:37:49  frostfs-s3-gw[3342026]:       net/http/server.go:2171
янв 22 08:37:49  frostfs-s3-gw[3342026]:     github.com/go-chi/chi/v5/middleware.Recoverer.func1
янв 22 08:37:49  frostfs-s3-gw[3342026]:       github.com/go-chi/chi/v5@v5.0.8/middleware/recoverer.go:43
янв 22 08:37:49  frostfs-s3-gw[3342026]:     net/http.HandlerFunc.ServeHTTP
янв 22 08:37:49  frostfs-s3-gw[3342026]:       net/http/server.go:2171
янв 22 08:37:49  frostfs-s3-gw[3342026]:     github.com/go-chi/chi/v5/middleware.ThrottleWithOpts.func1.1
янв 22 08:37:49  frostfs-s3-gw[3342026]:       github.com/go-chi/chi/v5@v5.0.8/middleware/throttle.go:100
янв 22 08:37:49  frostfs-s3-gw[3342026]:     net/http.HandlerFunc.ServeHTTP
янв 22 08:37:49  frostfs-s3-gw[3342026]:       net/http/server.go:2171
янв 22 08:37:49  frostfs-s3-gw[3342026]:     git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api.NewRouter.Request.func2.1
янв 22 08:37:49  frostfs-s3-gw[3342026]:       git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api/middleware/reqinfo.go:204
янв 22 08:37:49  frostfs-s3-gw[3342026]:     net/http.HandlerFunc.ServeHTTP
янв 22 08:37:49  frostfs-s3-gw[3342026]:       net/http/server.go:2171
янв 22 08:37:49  frostfs-s3-gw[3342026]:     git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api.NewRouter.LogHTTP.func1.1
янв 22 08:37:49  frostfs-s3-gw[3342026]:       git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api/middleware/log_http_stub.go:29
янв 22 08:37:49  frostfs-s3-gw[3342026]:     net/http.HandlerFunc.ServeHTTP
янв 22 08:37:49  frostfs-s3-gw[3342026]:       net/http/server.go:2171
янв 22 08:37:49  frostfs-s3-gw[3342026]:     github.com/go-chi/chi/v5.(*Mux).ServeHTTP
янв 22 08:37:49  frostfs-s3-gw[3342026]:       github.com/go-chi/chi/v5@v5.0.8/mux.go:90
янв 22 08:37:49  frostfs-s3-gw[3342026]:     net/http.serverHandler.ServeHTTP
янв 22 08:37:49  frostfs-s3-gw[3342026]:       net/http/server.go:3142
янв 22 08:37:49  frostfs-s3-gw[3342026]:     net/http.(*conn).serve
янв 22 08:37:49  frostfs-s3-gw[3342026]:       net/http/server.go:2044
янв 22 08:37:49  frostfs-s3-gw[3342026]:     created by net/http.(*Server).Serve in goroutine 494
янв 22 08:37:49  frostfs-s3-gw[3342026]:       net/http/server.go:3290

Steps to Reproduce (for bugs)

  1. Creating a bucket with blocking enabled.
aws s3api create-bucket --bucket cats --object-lock-enabled-for-bucket --endpoint <s3_endpoint>
  1. Enabling versioning.
aws s3api put-bucket-versioning --bucket cats --versioning-configuration Status=Enabled --endpoint <s3_endpoint>
  1. Uploading an object.
aws s3api put-object --bucket cats14 --key cat --body <body> --endpoint <s3_endpoint>
  1. Install a local overlay on the bucket that prohibits Put Object operations with the status Quota limit reached.
  2. Call the PutObjectLegalHold or PutObjectRetention operation.
aws s3api put-object-legal-hold --bucket cats --key cat --legal-hold Status=ON --endpoint <s3_endpoint>

aws s3api put-object-retention --bucket cats --key cat --retention '{"Mode":"GOVERNANCE","RetainUntilDate":"2025-12-31T23:59:59Z"}' --endpoint <s3_endpoint>
If the object has the `Quota limit reached` status, then a panic occurs in s3-gw when performing `PutObjectLegalHold` or `PutObjectRetention` operations. ## Expected Behavior If the object has the `Quota limit reached` status, then `PutObjectLegalHold` or `PutObjectRetention` operations should not cause panic. They must be committed with an error exceeding the limit. ## Current Behavior When performing `PutObjectLegalHold` or `PutObjectRetention` operations, a panic occurs [here](https://git.frostfs.info/TrueCloudLab/frostfs-s3-gw/src/branch/master/api/layer/object.go#L528). To be more specific, then `prm.Payload == nil`. Stacktrace: ``` янв 22 08:37:49 frostfs-s3-gw[3342026]: panic: runtime error: invalid memory address or nil pointer dereference янв 22 08:37:49 frostfs-s3-gw[3342026]: янв 22 08:37:49 frostfs-s3-gw[3342026]: -> io.discard.ReadFrom янв 22 08:37:49 frostfs-s3-gw[3342026]: -> io/io.go:666 янв 22 08:37:49 frostfs-s3-gw[3342026]: io.copyBuffer янв 22 08:37:49 frostfs-s3-gw[3342026]: io/io.go:415 янв 22 08:37:49 frostfs-s3-gw[3342026]: io.Copy янв 22 08:37:49 frostfs-s3-gw[3342026]: io/io.go:388 янв 22 08:37:49 frostfs-s3-gw[3342026]: git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api/layer.(*Layer).objectPutAndHash янв 22 08:37:49 frostfs-s3-gw[3342026]: git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api/layer/object.go:528 янв 22 08:37:49 frostfs-s3-gw[3342026]: git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api/layer.(*Layer).putLockObject янв 22 08:37:49 frostfs-s3-gw[3342026]: git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api/layer/system_object.go:131 янв 22 08:37:49 frostfs-s3-gw[3342026]: git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api/layer.(*Layer).PutLockInfo янв 22 08:37:49 frostfs-s3-gw[3342026]: git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api/layer/system_object.go:84 янв 22 08:37:49 frostfs-s3-gw[3342026]: git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api/handler.(*handler).PutObjectLegalHoldHandler янв 22 08:37:49 frostfs-s3-gw[3342026]: git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api/handler/locking.go:157 янв 22 08:37:49 frostfs-s3-gw[3342026]: net/http.HandlerFunc.ServeHTTP янв 22 08:37:49 frostfs-s3-gw[3342026]: net/http/server.go:2171 янв 22 08:37:49 frostfs-s3-gw[3342026]: git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api.objectRouter.func2.named.7 янв 22 08:37:49 frostfs-s3-gw[3342026]: git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api/router.go:227 янв 22 08:37:49 frostfs-s3-gw[3342026]: net/http.HandlerFunc.ServeHTTP янв 22 08:37:49 frostfs-s3-gw[3342026]: net/http/server.go:2171 янв 22 08:37:49 frostfs-s3-gw[3342026]: git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api.(*HandlerFilters).ServeHTTP янв 22 08:37:49 frostfs-s3-gw[3342026]: git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api/router_filter.go:133 янв 22 08:37:49 frostfs-s3-gw[3342026]: github.com/go-chi/chi/v5.(*ChainHandler).ServeHTTP янв 22 08:37:49 frostfs-s3-gw[3342026]: github.com/go-chi/chi/v5@v5.0.8/chain.go:31 янв 22 08:37:49 frostfs-s3-gw[3342026]: github.com/go-chi/chi/v5.(*Mux).routeHTTP янв 22 08:37:49 frostfs-s3-gw[3342026]: github.com/go-chi/chi/v5@v5.0.8/mux.go:444 янв 22 08:37:49 frostfs-s3-gw[3342026]: net/http.HandlerFunc.ServeHTTP янв 22 08:37:49 frostfs-s3-gw[3342026]: net/http/server.go:2171 янв 22 08:37:49 frostfs-s3-gw[3342026]: github.com/go-chi/chi/v5.(*Mux).ServeHTTP янв 22 08:37:49 frostfs-s3-gw[3342026]: github.com/go-chi/chi/v5@v5.0.8/mux.go:73 янв 22 08:37:49 frostfs-s3-gw[3342026]: github.com/go-chi/chi/v5.(*Mux).Mount.func1 янв 22 08:37:49 frostfs-s3-gw[3342026]: github.com/go-chi/chi/v5@v5.0.8/mux.go:316 янв 22 08:37:49 frostfs-s3-gw[3342026]: net/http.HandlerFunc.ServeHTTP янв 22 08:37:49 frostfs-s3-gw[3342026]: net/http/server.go:2171 янв 22 08:37:49 frostfs-s3-gw[3342026]: github.com/go-chi/chi/v5.(*Mux).routeHTTP янв 22 08:37:49 frostfs-s3-gw[3342026]: github.com/go-chi/chi/v5@v5.0.8/mux.go:444 янв 22 08:37:49 frostfs-s3-gw[3342026]: net/http.HandlerFunc.ServeHTTP янв 22 08:37:49 frostfs-s3-gw[3342026]: net/http/server.go:2171 янв 22 08:37:49 frostfs-s3-gw[3342026]: git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api.bucketRouter.WrapHandler.func5.1 янв 22 08:37:49 frostfs-s3-gw[3342026]: git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api/middleware/middleware.go:16 янв 22 08:37:49 frostfs-s3-gw[3342026]: net/http.HandlerFunc.ServeHTTP янв 22 08:37:49 frostfs-s3-gw[3342026]: net/http/server.go:2171 янв 22 08:37:49 frostfs-s3-gw[3342026]: github.com/go-chi/chi/v5.(*Mux).ServeHTTP янв 22 08:37:49 frostfs-s3-gw[3342026]: github.com/go-chi/chi/v5@v5.0.8/mux.go:73 янв 22 08:37:49 frostfs-s3-gw[3342026]: github.com/go-chi/chi/v5.(*Mux).Mount.func1 янв 22 08:37:49 frostfs-s3-gw[3342026]: github.com/go-chi/chi/v5@v5.0.8/mux.go:316 янв 22 08:37:49 frostfs-s3-gw[3342026]: net/http.HandlerFunc.ServeHTTP янв 22 08:37:49 frostfs-s3-gw[3342026]: net/http/server.go:2171 янв 22 08:37:49 frostfs-s3-gw[3342026]: github.com/go-chi/chi/v5.(*Mux).routeHTTP янв 22 08:37:49 frostfs-s3-gw[3342026]: github.com/go-chi/chi/v5@v5.0.8/mux.go:444 янв 22 08:37:49 frostfs-s3-gw[3342026]: net/http.HandlerFunc.ServeHTTP янв 22 08:37:49 frostfs-s3-gw[3342026]: net/http/server.go:2171 янв 22 08:37:49 frostfs-s3-gw[3342026]: github.com/go-chi/chi/v5.(*Mux).ServeHTTP янв 22 08:37:49 frostfs-s3-gw[3342026]: github.com/go-chi/chi/v5@v5.0.8/mux.go:73 янв 22 08:37:49 frostfs-s3-gw[3342026]: git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api.(*globalRouter).ServeHTTP янв 22 08:37:49 frostfs-s3-gw[3342026]: git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api/router.go:219 янв 22 08:37:49 frostfs-s3-gw[3342026]: github.com/go-chi/chi/v5.(*Mux).Mount.func1 янв 22 08:37:49 frostfs-s3-gw[3342026]: github.com/go-chi/chi/v5@v5.0.8/mux.go:316 янв 22 08:37:49 frostfs-s3-gw[3342026]: net/http.HandlerFunc.ServeHTTP янв 22 08:37:49 frostfs-s3-gw[3342026]: net/http/server.go:2171 янв 22 08:37:49 frostfs-s3-gw[3342026]: github.com/go-chi/chi/v5.(*Mux).routeHTTP янв 22 08:37:49 frostfs-s3-gw[3342026]: github.com/go-chi/chi/v5@v5.0.8/mux.go:444 янв 22 08:37:49 frostfs-s3-gw[3342026]: net/http.HandlerFunc.ServeHTTP янв 22 08:37:49 frostfs-s3-gw[3342026]: net/http/server.go:2171 янв 22 08:37:49 frostfs-s3-gw[3342026]: git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api.NewRouter.PolicyCheck.func8.1 янв 22 08:37:49 frostfs-s3-gw[3342026]: git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api/middleware/policy.go:101 янв 22 08:37:49 frostfs-s3-gw[3342026]: net/http.HandlerFunc.ServeHTTP янв 22 08:37:49 frostfs-s3-gw[3342026]: net/http/server.go:2171 янв 22 08:37:49 frostfs-s3-gw[3342026]: git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api.NewRouter.PrepareAddressStyle.func7.1 янв 22 08:37:49 frostfs-s3-gw[3342026]: git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api/middleware/address_style.go:41 янв 22 08:37:49 frostfs-s3-gw[3342026]: net/http.HandlerFunc.ServeHTTP янв 22 08:37:49 frostfs-s3-gw[3342026]: net/http/server.go:2171 янв 22 08:37:49 frostfs-s3-gw[3342026]: git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api.NewRouter.FrostfsIDValidation.func6.1 янв 22 08:37:49 frostfs-s3-gw[3342026]: git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api/middleware/auth.go:105 янв 22 08:37:49 frostfs-s3-gw[3342026]: net/http.HandlerFunc.ServeHTTP янв 22 08:37:49 frostfs-s3-gw[3342026]: net/http/server.go:2171 янв 22 08:37:49 frostfs-s3-gw[3342026]: git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api.NewRouter.Auth.func5.1 янв 22 08:37:49 frostfs-s3-gw[3342026]: git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api/middleware/auth.go:77 янв 22 08:37:49 frostfs-s3-gw[3342026]: net/http.HandlerFunc.ServeHTTP янв 22 08:37:49 frostfs-s3-gw[3342026]: net/http/server.go:2171 янв 22 08:37:49 frostfs-s3-gw[3342026]: git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api.NewRouter.LogSuccessResponse.func4.1 янв 22 08:37:49 frostfs-s3-gw[3342026]: git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api/middleware/response.go:303 янв 22 08:37:49 frostfs-s3-gw[3342026]: net/http.HandlerFunc.ServeHTTP янв 22 08:37:49 frostfs-s3-gw[3342026]: net/http/server.go:2171 янв 22 08:37:49 frostfs-s3-gw[3342026]: git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api/middleware.stats.func1 янв 22 08:37:49 frostfs-s3-gw[3342026]: git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api/middleware/metrics.go:75 янв 22 08:37:49 frostfs-s3-gw[3342026]: net/http.HandlerFunc.ServeHTTP янв 22 08:37:49 frostfs-s3-gw[3342026]: net/http/server.go:2171 янв 22 08:37:49 frostfs-s3-gw[3342026]: github.com/go-chi/chi/v5/middleware.Recoverer.func1 янв 22 08:37:49 frostfs-s3-gw[3342026]: github.com/go-chi/chi/v5@v5.0.8/middleware/recoverer.go:43 янв 22 08:37:49 frostfs-s3-gw[3342026]: net/http.HandlerFunc.ServeHTTP янв 22 08:37:49 frostfs-s3-gw[3342026]: net/http/server.go:2171 янв 22 08:37:49 frostfs-s3-gw[3342026]: github.com/go-chi/chi/v5/middleware.ThrottleWithOpts.func1.1 янв 22 08:37:49 frostfs-s3-gw[3342026]: github.com/go-chi/chi/v5@v5.0.8/middleware/throttle.go:100 янв 22 08:37:49 frostfs-s3-gw[3342026]: net/http.HandlerFunc.ServeHTTP янв 22 08:37:49 frostfs-s3-gw[3342026]: net/http/server.go:2171 янв 22 08:37:49 frostfs-s3-gw[3342026]: git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api.NewRouter.Request.func2.1 янв 22 08:37:49 frostfs-s3-gw[3342026]: git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api/middleware/reqinfo.go:204 янв 22 08:37:49 frostfs-s3-gw[3342026]: net/http.HandlerFunc.ServeHTTP янв 22 08:37:49 frostfs-s3-gw[3342026]: net/http/server.go:2171 янв 22 08:37:49 frostfs-s3-gw[3342026]: git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api.NewRouter.LogHTTP.func1.1 янв 22 08:37:49 frostfs-s3-gw[3342026]: git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api/middleware/log_http_stub.go:29 янв 22 08:37:49 frostfs-s3-gw[3342026]: net/http.HandlerFunc.ServeHTTP янв 22 08:37:49 frostfs-s3-gw[3342026]: net/http/server.go:2171 янв 22 08:37:49 frostfs-s3-gw[3342026]: github.com/go-chi/chi/v5.(*Mux).ServeHTTP янв 22 08:37:49 frostfs-s3-gw[3342026]: github.com/go-chi/chi/v5@v5.0.8/mux.go:90 янв 22 08:37:49 frostfs-s3-gw[3342026]: net/http.serverHandler.ServeHTTP янв 22 08:37:49 frostfs-s3-gw[3342026]: net/http/server.go:3142 янв 22 08:37:49 frostfs-s3-gw[3342026]: net/http.(*conn).serve янв 22 08:37:49 frostfs-s3-gw[3342026]: net/http/server.go:2044 янв 22 08:37:49 frostfs-s3-gw[3342026]: created by net/http.(*Server).Serve in goroutine 494 янв 22 08:37:49 frostfs-s3-gw[3342026]: net/http/server.go:3290 ``` ## Steps to Reproduce (for bugs) 1. Creating a bucket with blocking enabled. ``` aws s3api create-bucket --bucket cats --object-lock-enabled-for-bucket --endpoint <s3_endpoint> ``` 2. Enabling versioning. ``` aws s3api put-bucket-versioning --bucket cats --versioning-configuration Status=Enabled --endpoint <s3_endpoint> ``` 3. Uploading an object. ``` aws s3api put-object --bucket cats14 --key cat --body <body> --endpoint <s3_endpoint> ``` 4. Install a local overlay on the bucket that prohibits Put Object operations with the status `Quota limit reached`. 5. Call the `PutObjectLegalHold` or `PutObjectRetention` operation. ``` aws s3api put-object-legal-hold --bucket cats --key cat --legal-hold Status=ON --endpoint <s3_endpoint> aws s3api put-object-retention --bucket cats --key cat --retention '{"Mode":"GOVERNANCE","RetainUntilDate":"2025-12-31T23:59:59Z"}' --endpoint <s3_endpoint> ```
r.loginov added the
bug
label 2025-01-22 08:05:49 +00:00
r.loginov self-assigned this 2025-01-23 13:09:39 +00:00
alexvanin added this to the v0.32.2 milestone 2025-01-29 14:03:50 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: TrueCloudLab/frostfs-s3-gw#605
No description provided.