mirror of
https://github.com/zitadel/zitadel.git
synced 2025-12-06 17:12:22 +00:00
fix: use a single translator for middleware (#10633)
# Which Problems Are Solved
Comparing the v3 and v4 deployments we noticed an increase in memory
usage. A first analysis revealed that it might be related to the
(multiple) initialization of the `i18n.Translator`, partially related
# How the Problems Are Solved
Initialize the tranlator once (apart from the translator interceptor,
which uses context / request specific information) and pass it to all
necessary middleware.
# Additional Changes
Removed unnecessary error return parameter from the translator
initialization.
# Additional Context
- noticed internally
- backport to v4.x
(cherry picked from commit a0c3ccecf7)
This commit is contained in:
@@ -16,12 +16,14 @@ import (
|
||||
"github.com/zitadel/zitadel/internal/api/scim/metadata"
|
||||
"github.com/zitadel/zitadel/internal/api/scim/schemas"
|
||||
"github.com/zitadel/zitadel/internal/api/scim/serrors"
|
||||
"github.com/zitadel/zitadel/internal/i18n"
|
||||
"github.com/zitadel/zitadel/internal/zerrors"
|
||||
)
|
||||
|
||||
type BulkHandler struct {
|
||||
cfg *scim_config.BulkConfig
|
||||
handlersByPluralResourceName map[schemas.ScimResourceTypePlural]RawResourceHandlerAdapter
|
||||
translator *i18n.Translator
|
||||
}
|
||||
|
||||
type BulkRequest struct {
|
||||
@@ -56,6 +58,7 @@ func (r *BulkRequest) GetSchemas() []schemas.ScimSchemaType {
|
||||
|
||||
func NewBulkHandler(
|
||||
cfg scim_config.BulkConfig,
|
||||
translator *i18n.Translator,
|
||||
handlers ...RawResourceHandlerAdapter,
|
||||
) *BulkHandler {
|
||||
handlersByPluralResourceName := make(map[schemas.ScimResourceTypePlural]RawResourceHandlerAdapter, len(handlers))
|
||||
@@ -66,6 +69,7 @@ func NewBulkHandler(
|
||||
return &BulkHandler{
|
||||
&cfg,
|
||||
handlersByPluralResourceName,
|
||||
translator,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -140,7 +144,7 @@ func (h *BulkHandler) processOperation(ctx context.Context, op *BulkRequestOpera
|
||||
|
||||
opResp.Status = strconv.Itoa(statusCode)
|
||||
if err != nil {
|
||||
opResp.Error = serrors.MapToScimError(ctx, err)
|
||||
opResp.Error = serrors.MapToScimError(ctx, h.translator, err)
|
||||
opResp.Status = opResp.Error.Status
|
||||
}
|
||||
}()
|
||||
|
||||
Reference in New Issue
Block a user