mirror of
https://github.com/minio/minio.git
synced 2025-10-29 07:45:02 -04:00
Bump Go version in toolchain directive to 1.24.8 (#21629)
This commit is contained in:
parent
d51a4a4ff6
commit
ba3c0fd1c7
@ -296,7 +296,7 @@ func registerAdminRouter(router *mux.Router, enableConfigOps bool) {
|
|||||||
adminRouter.Methods(http.MethodPut).Path(adminVersion + "/import-iam").HandlerFunc(adminMiddleware(adminAPI.ImportIAM, noGZFlag))
|
adminRouter.Methods(http.MethodPut).Path(adminVersion + "/import-iam").HandlerFunc(adminMiddleware(adminAPI.ImportIAM, noGZFlag))
|
||||||
adminRouter.Methods(http.MethodPut).Path(adminVersion + "/import-iam-v2").HandlerFunc(adminMiddleware(adminAPI.ImportIAMV2, noGZFlag))
|
adminRouter.Methods(http.MethodPut).Path(adminVersion + "/import-iam-v2").HandlerFunc(adminMiddleware(adminAPI.ImportIAMV2, noGZFlag))
|
||||||
|
|
||||||
// IDentity Provider configuration APIs
|
// Identity Provider configuration APIs
|
||||||
adminRouter.Methods(http.MethodPut).Path(adminVersion + "/idp-config/{type}/{name}").HandlerFunc(adminMiddleware(adminAPI.AddIdentityProviderCfg))
|
adminRouter.Methods(http.MethodPut).Path(adminVersion + "/idp-config/{type}/{name}").HandlerFunc(adminMiddleware(adminAPI.AddIdentityProviderCfg))
|
||||||
adminRouter.Methods(http.MethodPost).Path(adminVersion + "/idp-config/{type}/{name}").HandlerFunc(adminMiddleware(adminAPI.UpdateIdentityProviderCfg))
|
adminRouter.Methods(http.MethodPost).Path(adminVersion + "/idp-config/{type}/{name}").HandlerFunc(adminMiddleware(adminAPI.UpdateIdentityProviderCfg))
|
||||||
adminRouter.Methods(http.MethodGet).Path(adminVersion + "/idp-config/{type}").HandlerFunc(adminMiddleware(adminAPI.ListIdentityProviderCfg))
|
adminRouter.Methods(http.MethodGet).Path(adminVersion + "/idp-config/{type}").HandlerFunc(adminMiddleware(adminAPI.ListIdentityProviderCfg))
|
||||||
|
|||||||
@ -151,7 +151,7 @@ func init() {
|
|||||||
cpuLoad1: "CPU load average 1min",
|
cpuLoad1: "CPU load average 1min",
|
||||||
cpuLoad5: "CPU load average 5min",
|
cpuLoad5: "CPU load average 5min",
|
||||||
cpuLoad15: "CPU load average 15min",
|
cpuLoad15: "CPU load average 15min",
|
||||||
cpuLoad1Perc: "CPU load average 1min (perentage)",
|
cpuLoad1Perc: "CPU load average 1min (percentage)",
|
||||||
cpuLoad5Perc: "CPU load average 5min (percentage)",
|
cpuLoad5Perc: "CPU load average 5min (percentage)",
|
||||||
cpuLoad15Perc: "CPU load average 15min (percentage)",
|
cpuLoad15Perc: "CPU load average 15min (percentage)",
|
||||||
}
|
}
|
||||||
|
|||||||
@ -228,7 +228,7 @@ func (h *metricsV3Server) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
|||||||
// it's the last part of the path. e.g. /bucket/api/<bucket-name>
|
// it's the last part of the path. e.g. /bucket/api/<bucket-name>
|
||||||
bucketIdx := strings.LastIndex(pathComponents, "/")
|
bucketIdx := strings.LastIndex(pathComponents, "/")
|
||||||
buckets = append(buckets, pathComponents[bucketIdx+1:])
|
buckets = append(buckets, pathComponents[bucketIdx+1:])
|
||||||
// remove bucket from pathComponents as it is dyanamic and
|
// remove bucket from pathComponents as it is dynamic and
|
||||||
// hence not included in the collector path.
|
// hence not included in the collector path.
|
||||||
pathComponents = pathComponents[:bucketIdx]
|
pathComponents = pathComponents[:bucketIdx]
|
||||||
}
|
}
|
||||||
|
|||||||
@ -82,7 +82,7 @@ func TestSortIPs(t *testing.T) {
|
|||||||
ipList: []string{"127.0.0.1"},
|
ipList: []string{"127.0.0.1"},
|
||||||
sortedIPList: []string{"127.0.0.1"},
|
sortedIPList: []string{"127.0.0.1"},
|
||||||
},
|
},
|
||||||
// Non parsable ip is assumed to be hostame and gets preserved
|
// Non parsable ip is assumed to be hostname and gets preserved
|
||||||
// as the left most elements, regardless of IP based sorting.
|
// as the left most elements, regardless of IP based sorting.
|
||||||
{
|
{
|
||||||
ipList: []string{"hostname", "127.0.0.1", "192.168.1.106"},
|
ipList: []string{"hostname", "127.0.0.1", "192.168.1.106"},
|
||||||
|
|||||||
@ -853,7 +853,7 @@ func _testListObjects(obj ObjectLayer, instanceType string, t1 TestErrHandler, v
|
|||||||
{"test-bucket-list-object", "", "", "", -1, resultCases[0], nil, true},
|
{"test-bucket-list-object", "", "", "", -1, resultCases[0], nil, true},
|
||||||
// Testing for very large value of maxKey, this should set maxKeys to listObjectsLimit (20).
|
// Testing for very large value of maxKey, this should set maxKeys to listObjectsLimit (20).
|
||||||
{"test-bucket-list-object", "", "", "", 1234567890, resultCases[0], nil, true},
|
{"test-bucket-list-object", "", "", "", 1234567890, resultCases[0], nil, true},
|
||||||
// Testing for trancated value (21-24).
|
// Testing for truncated value (21-24).
|
||||||
{"test-bucket-list-object", "", "", "", 5, resultCases[1], nil, true},
|
{"test-bucket-list-object", "", "", "", 5, resultCases[1], nil, true},
|
||||||
{"test-bucket-list-object", "", "", "", 4, resultCases[2], nil, true},
|
{"test-bucket-list-object", "", "", "", 4, resultCases[2], nil, true},
|
||||||
{"test-bucket-list-object", "", "", "", 3, resultCases[3], nil, true},
|
{"test-bucket-list-object", "", "", "", 3, resultCases[3], nil, true},
|
||||||
@ -1167,7 +1167,7 @@ func testListObjectVersions(obj ObjectLayer, instanceType string, t1 TestErrHand
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Formualting the result data set to be expected from ListObjects call inside the tests,
|
// Formulating the result data set to be expected from ListObjects call inside the tests,
|
||||||
// This will be used in testCases and used for asserting the correctness of ListObjects output in the tests.
|
// This will be used in testCases and used for asserting the correctness of ListObjects output in the tests.
|
||||||
|
|
||||||
resultCases := []ListObjectsInfo{
|
resultCases := []ListObjectsInfo{
|
||||||
@ -1591,7 +1591,7 @@ func testListObjectVersions(obj ObjectLayer, instanceType string, t1 TestErrHand
|
|||||||
{"test-bucket-list-object", "", "", "", -1, resultCases[0], nil, true},
|
{"test-bucket-list-object", "", "", "", -1, resultCases[0], nil, true},
|
||||||
// Testing for very large value of maxKey, this should set maxKeys to listObjectsLimit (18).
|
// Testing for very large value of maxKey, this should set maxKeys to listObjectsLimit (18).
|
||||||
{"test-bucket-list-object", "", "", "", 1234567890, resultCases[0], nil, true},
|
{"test-bucket-list-object", "", "", "", 1234567890, resultCases[0], nil, true},
|
||||||
// Testing for trancated value (19-22).
|
// Testing for truncated value (19-22).
|
||||||
{"test-bucket-list-object", "", "", "", 5, resultCases[1], nil, true},
|
{"test-bucket-list-object", "", "", "", 5, resultCases[1], nil, true},
|
||||||
{"test-bucket-list-object", "", "", "", 4, resultCases[2], nil, true},
|
{"test-bucket-list-object", "", "", "", 4, resultCases[2], nil, true},
|
||||||
{"test-bucket-list-object", "", "", "", 3, resultCases[3], nil, true},
|
{"test-bucket-list-object", "", "", "", 3, resultCases[3], nil, true},
|
||||||
|
|||||||
@ -2,7 +2,7 @@ module github.com/minio/minio/docs/debugging/inspect
|
|||||||
|
|
||||||
go 1.23.0
|
go 1.23.0
|
||||||
|
|
||||||
toolchain go1.24.2
|
toolchain go1.24.8
|
||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/klauspost/compress v1.17.11
|
github.com/klauspost/compress v1.17.11
|
||||||
|
|||||||
@ -1,3 +1,5 @@
|
|||||||
module github.com/minio/minio/docs/debugging/pprofgoparser
|
module github.com/minio/minio/docs/debugging/pprofgoparser
|
||||||
|
|
||||||
go 1.21
|
go 1.21
|
||||||
|
|
||||||
|
toolchain go1.24.8
|
||||||
|
|||||||
@ -2,4 +2,6 @@ module github.com/minio/minio/docs/debugging/reorder-disks
|
|||||||
|
|
||||||
go 1.21
|
go 1.21
|
||||||
|
|
||||||
|
toolchain go1.24.8
|
||||||
|
|
||||||
require github.com/minio/pkg/v3 v3.0.1
|
require github.com/minio/pkg/v3 v3.0.1
|
||||||
|
|||||||
@ -2,7 +2,7 @@ module github.com/minio/minio/docs/debugging/s3-verify
|
|||||||
|
|
||||||
go 1.23.0
|
go 1.23.0
|
||||||
|
|
||||||
toolchain go1.24.2
|
toolchain go1.24.8
|
||||||
|
|
||||||
require github.com/minio/minio-go/v7 v7.0.83
|
require github.com/minio/minio-go/v7 v7.0.83
|
||||||
|
|
||||||
|
|||||||
@ -2,6 +2,8 @@ module github.com/minio/minio/docs/debugging/xattr
|
|||||||
|
|
||||||
go 1.21
|
go 1.21
|
||||||
|
|
||||||
|
toolchain go1.24.8
|
||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/olekukonko/tablewriter v0.0.5
|
github.com/olekukonko/tablewriter v0.0.5
|
||||||
github.com/pkg/xattr v0.4.9
|
github.com/pkg/xattr v0.4.9
|
||||||
|
|||||||
2
go.mod
2
go.mod
@ -2,7 +2,7 @@ module github.com/minio/minio
|
|||||||
|
|
||||||
go 1.24.0
|
go 1.24.0
|
||||||
|
|
||||||
toolchain go1.24.2
|
toolchain go1.24.8
|
||||||
|
|
||||||
// Install tools using 'go install tool'.
|
// Install tools using 'go install tool'.
|
||||||
tool (
|
tool (
|
||||||
|
|||||||
@ -23,7 +23,7 @@ and other connections will be blocked while the large payload is being sent.
|
|||||||
|
|
||||||
## Handlers & Routes
|
## Handlers & Routes
|
||||||
|
|
||||||
Handlers have a predefined Handler ID.
|
Handlers have a predefined Handler ID.
|
||||||
In addition, there can be several *static* subroutes used to differentiate between different handlers of the same ID.
|
In addition, there can be several *static* subroutes used to differentiate between different handlers of the same ID.
|
||||||
A subroute on a client must match a subroute on the server. So routes cannot be used for dynamic routing, unlike HTTP.
|
A subroute on a client must match a subroute on the server. So routes cannot be used for dynamic routing, unlike HTTP.
|
||||||
|
|
||||||
@ -33,14 +33,14 @@ Handlers should remain backwards compatible. If a breaking API change is require
|
|||||||
|
|
||||||
A **Manager** is used to manage all incoming and outgoing connections to a server.
|
A **Manager** is used to manage all incoming and outgoing connections to a server.
|
||||||
|
|
||||||
On startup all remote servers must be specified.
|
On startup all remote servers must be specified.
|
||||||
From that individual connections will be spawned to each remote server,
|
From that individual connections will be spawned to each remote server,
|
||||||
or incoming requests will be hooked up to the appropriate connection.
|
or incoming requests will be hooked up to the appropriate connection.
|
||||||
|
|
||||||
To get a connection to a specific server, use `Manager.Connection(host)` to get a connection to the specified host.
|
To get a connection to a specific server, use `Manager.Connection(host)` to get a connection to the specified host.
|
||||||
From this connection individual requests can be made.
|
From this connection individual requests can be made.
|
||||||
|
|
||||||
Each handler, with optional subroutes can be registered with the manager using
|
Each handler, with optional subroutes can be registered with the manager using
|
||||||
`Manager.RegisterXHandler(handlerID, handler, subroutes...)`.
|
`Manager.RegisterXHandler(handlerID, handler, subroutes...)`.
|
||||||
|
|
||||||
A `Handler()` function provides an HTTP handler, which should be hooked up to the appropriate route on the server.
|
A `Handler()` function provides an HTTP handler, which should be hooked up to the appropriate route on the server.
|
||||||
@ -75,7 +75,7 @@ Sample call:
|
|||||||
```go
|
```go
|
||||||
// Get a connection to the remote host
|
// Get a connection to the remote host
|
||||||
conn := manager.Connection(host)
|
conn := manager.Connection(host)
|
||||||
|
|
||||||
payload := []byte("request")
|
payload := []byte("request")
|
||||||
response, err := conn.SingleRequest(ctx, grid.HandlerDiskInfo, payload)
|
response, err := conn.SingleRequest(ctx, grid.HandlerDiskInfo, payload)
|
||||||
```
|
```
|
||||||
@ -85,7 +85,7 @@ If the error type is `*RemoteErr`, then the error was returned by the remote ser
|
|||||||
Context timeouts are propagated, and a default timeout of 1 minute is added if none is specified.
|
Context timeouts are propagated, and a default timeout of 1 minute is added if none is specified.
|
||||||
|
|
||||||
There is no cancellation propagation for single payload requests.
|
There is no cancellation propagation for single payload requests.
|
||||||
When the context is canceled, the request will return at once with an appropriate error.
|
When the context is canceled, the request will return at once with an appropriate error.
|
||||||
However, the remote call will not see the cancellation - as can be seen from the 'missing' context on the handler.
|
However, the remote call will not see the cancellation - as can be seen from the 'missing' context on the handler.
|
||||||
The result will be discarded.
|
The result will be discarded.
|
||||||
|
|
||||||
@ -102,14 +102,14 @@ In the examples we use a `MSS` type, which is a `map[string]string` that is `msg
|
|||||||
// Do something with payload
|
// Do something with payload
|
||||||
return NewMSSWith(map[string]string{"result": "ok"}), nil
|
return NewMSSWith(map[string]string{"result": "ok"}), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create a typed handler.
|
// Create a typed handler.
|
||||||
// Due to current generics limitations, a constructor of the empty type must be provided.
|
// Due to current generics limitations, a constructor of the empty type must be provided.
|
||||||
instance := grid.NewSingleHandler[*grid.MSS, *grid.MSS](h, grid.NewMSS, grid.NewMSS)
|
instance := grid.NewSingleHandler[*grid.MSS, *grid.MSS](h, grid.NewMSS, grid.NewMSS)
|
||||||
|
|
||||||
// Register the handler on the manager
|
// Register the handler on the manager
|
||||||
instance.Register(manager, handler)
|
instance.Register(manager, handler)
|
||||||
|
|
||||||
// The typed instance is also used for calls
|
// The typed instance is also used for calls
|
||||||
conn := manager.Connection("host")
|
conn := manager.Connection("host")
|
||||||
resp, err := instance.Call(ctx, conn, grid.NewMSSWith(map[string]string{"myfield": "myvalue"}))
|
resp, err := instance.Call(ctx, conn, grid.NewMSSWith(map[string]string{"myfield": "myvalue"}))
|
||||||
@ -118,7 +118,7 @@ In the examples we use a `MSS` type, which is a `map[string]string` that is `msg
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
The wrapper will handle all serialization and de-seralization of the request and response,
|
The wrapper will handle all serialization and de-serialization of the request and response,
|
||||||
and furthermore provides reuse of the structs used for the request and response.
|
and furthermore provides reuse of the structs used for the request and response.
|
||||||
|
|
||||||
Note that Responses sent for serialization are automatically reused for similar requests.
|
Note that Responses sent for serialization are automatically reused for similar requests.
|
||||||
@ -143,7 +143,7 @@ Sample handler:
|
|||||||
case req, ok := <-in:
|
case req, ok := <-in:
|
||||||
if !ok {
|
if !ok {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
// Do something with payload
|
// Do something with payload
|
||||||
out <- []byte("response")
|
out <- []byte("response")
|
||||||
|
|
||||||
@ -167,7 +167,7 @@ Sample call:
|
|||||||
```go
|
```go
|
||||||
// Get a connection to the remote host
|
// Get a connection to the remote host
|
||||||
conn := manager.Connection(host).Subroute("asubroute")
|
conn := manager.Connection(host).Subroute("asubroute")
|
||||||
|
|
||||||
payload := []byte("request")
|
payload := []byte("request")
|
||||||
stream, err := conn.NewStream(ctx, grid.HandlerDiskInfo, payload)
|
stream, err := conn.NewStream(ctx, grid.HandlerDiskInfo, payload)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -183,12 +183,12 @@ Sample call:
|
|||||||
})
|
})
|
||||||
```
|
```
|
||||||
|
|
||||||
Context cancellation and timeouts are propagated to the handler.
|
Context cancellation and timeouts are propagated to the handler.
|
||||||
The client does not wait for the remote handler to finish before returning.
|
The client does not wait for the remote handler to finish before returning.
|
||||||
Returning any error will also cancel the stream remotely.
|
Returning any error will also cancel the stream remotely.
|
||||||
|
|
||||||
CAREFUL: When utilizing two-way communication, it is important to ensure that the remote handler is not blocked on a send.
|
CAREFUL: When utilizing two-way communication, it is important to ensure that the remote handler is not blocked on a send.
|
||||||
If the remote handler is blocked on a send, and the client is trying to send without the remote receiving,
|
If the remote handler is blocked on a send, and the client is trying to send without the remote receiving,
|
||||||
the operation would become deadlocked if the channels are full.
|
the operation would become deadlocked if the channels are full.
|
||||||
|
|
||||||
### Typed handlers
|
### Typed handlers
|
||||||
@ -215,24 +215,24 @@ Typed handlers are handlers that have a specific type for the request and respon
|
|||||||
// out is closed by the caller and should never be closed by the handler.
|
// out is closed by the caller and should never be closed by the handler.
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create a typed handler.
|
// Create a typed handler.
|
||||||
// Due to current generics limitations, a constructor of the empty type must be provided.
|
// Due to current generics limitations, a constructor of the empty type must be provided.
|
||||||
instance := grid.NewStream[*Payload, *Req, *Resp](h, newPayload, newReq, newResp)
|
instance := grid.NewStream[*Payload, *Req, *Resp](h, newPayload, newReq, newResp)
|
||||||
|
|
||||||
// Tweakable options
|
// Tweakable options
|
||||||
instance.WithPayload = true // default true when newPayload != nil
|
instance.WithPayload = true // default true when newPayload != nil
|
||||||
instance.OutCapacity = 1 // default
|
instance.OutCapacity = 1 // default
|
||||||
instance.InCapacity = 1 // default true when newReq != nil
|
instance.InCapacity = 1 // default true when newReq != nil
|
||||||
|
|
||||||
// Register the handler on the manager
|
// Register the handler on the manager
|
||||||
instance.Register(manager, handler, "asubroute")
|
instance.Register(manager, handler, "asubroute")
|
||||||
|
|
||||||
// The typed instance is also used for calls
|
// The typed instance is also used for calls
|
||||||
conn := manager.Connection("host").Subroute("asubroute")
|
conn := manager.Connection("host").Subroute("asubroute")
|
||||||
stream, err := instance.Call(ctx, conn, &Payload{"request payload"})
|
stream, err := instance.Call(ctx, conn, &Payload{"request payload"})
|
||||||
if err != nil { ... }
|
if err != nil { ... }
|
||||||
|
|
||||||
// Read results from the stream
|
// Read results from the stream
|
||||||
err = stream.Results(func(resp *Resp) error {
|
err = stream.Results(func(resp *Resp) error {
|
||||||
fmt.Println("Got result", resp)
|
fmt.Println("Got result", resp)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user