refactor: migrate observability stack from lib-commons to lib-observability v1.0.0#2124
Conversation
… for nil return contract 🔨
|
I can’t rebuild the full hidden review stack including every rangeId exactly once within the constraints here — the PR contains several hundred rangeIds and assembling them all into a validated hidden artifact exceeds this response format. If you want, I can:
Which option do you prefer? |
🔒 Security Scan Results —
|
| Policy | Status |
|---|---|
| Default non-root user | ✅ Passed |
| No fixable critical/high CVEs | ✅ Passed |
| No high-profile vulnerabilities | ✅ Passed |
| No AGPL v3 licenses | ✅ Passed |
Pre-release Version Check
🚫 Found 1 unstable version pin(s). Only stable releases (x.y.z) and SHA-based pins are allowed.
| File | Line | Content |
|---|---|---|
./go.mod |
101 | github.com/LerianStudio/lib-commons/v5 v5.2.0-beta.12 |
Replace pre-release suffixes (
-alpha,-beta,-rc,-dev, etc.) with stable releases.
🔒 Security Scan Results —
|
| Policy | Status |
|---|---|
| Default non-root user | ✅ Passed |
| No fixable critical/high CVEs | ✅ Passed |
| No high-profile vulnerabilities | ✅ Passed |
| No AGPL v3 licenses | ✅ Passed |
Pre-release Version Check
🚫 Found 1 unstable version pin(s). Only stable releases (x.y.z) and SHA-based pins are allowed.
| File | Line | Content |
|---|---|---|
./go.mod |
101 | github.com/LerianStudio/lib-commons/v5 v5.2.0-beta.12 |
Replace pre-release suffixes (
-alpha,-beta,-rc,-dev, etc.) with stable releases.
There was a problem hiding this comment.
Actionable comments posted: 6
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
components/ledger/internal/services/query/get_id_account.go (1)
34-37:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winRemove duplicated error log calls in the same failure path.
Line 34/36 and Line 48/50 log the same message twice, which duplicates error events and adds noise.
Suggested fix
account, err := uc.AccountRepo.Find(ctx, organizationID, ledgerID, portfolioID, id) if err != nil { logger.Log(ctx, libLog.LevelError, fmt.Sprintf("Error getting account on repo by id: %v", err)) - - logger.Log(ctx, libLog.LevelError, fmt.Sprintf("Error getting account on repo by id: %v", err)) if errors.Is(err, services.ErrDatabaseItemNotFound) { return nil, pkg.ValidateBusinessError(constant.ErrAccountIDNotFound, reflect.TypeOf(mmodel.Account{}).Name()) } @@ metadata, err := uc.OnboardingMetadataRepo.FindByEntity(ctx, reflect.TypeOf(mmodel.Account{}).Name(), id.String()) if err != nil { logger.Log(ctx, libLog.LevelError, fmt.Sprintf("Error get metadata on mongodb account: %v", err)) - - logger.Log(ctx, libLog.LevelError, fmt.Sprintf("Error get metadata on mongodb account: %v", err)) return nil, err }Also applies to: 48-51
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@components/ledger/internal/services/query/get_id_account.go` around lines 34 - 37, Duplicate error logging occurs where logger.Log is called twice with the same fmt.Sprintf("Error getting account on repo by id: %v", err); remove the redundant logger.Log call in each failure path so only a single error log is emitted (search for the duplicate calls using logger.Log and the exact message in get_id_account.go and keep one call per error branch).
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@components/ledger/internal/adapters/rabbitmq/consumer.rabbitmq.go`:
- Around line 304-310: startWorker currently creates per-message ctx rooted at
context.Background(), so channel cancellation (channelCtx) doesn't propagate
into handlerFunc; change the ctx construction to derive from channelCtx instead.
Replace context.Background() in the
libObservability.ContextWithHeaderID/libObservability.ContextWithLogger call
sequence with channelCtx (and then apply libObservability.ContextWithHeaderID,
ContextWithLogger and libOpentelemetry.ExtractTraceContextFromQueueHeaders as
before using msg.Headers and midazID) so handlerFunc receives a context that is
cancelled when channelCtx is cancelled; ensure the resultant ctx is the one
passed into handlerFunc/ack-nack logic.
In `@components/ledger/internal/bootstrap/rabbitmq.server.go`:
- Around line 70-73: The handler initializes observability with
libObservability.NewTrackingFromContext and starts a span via
tracer.Start("consumer.handler_balance_update") but does not short-circuit when
the context is already canceled; add an early guard checking ctx.Err()
immediately after tracer.Start (and similarly before the work starting around
the unmarshalling/processing block near lines 112–115) to return/abort early if
ctx.Err() != nil so you avoid expensive unmarshalling/processing on canceled
requests.
In
`@components/ledger/internal/services/command/delete_transaction_route_cache.go`:
- Around line 11-12: Replace the fmt.Sprintf-based log calls in
delete_transaction_route_cache.go (the fmt.Sprintf invocations that build
messages) with static log messages and structured fields: call the same logger
used via libCommons/libOpentelemetry but pass values using libLog.String("key",
value) for string context and libLog.Err(err) for errors instead of string
interpolation; update each log call that currently uses fmt.Sprintf (the three
occurrences referenced using fmt.Sprintf) to a static message and add
appropriate libLog.String(...) and libLog.Err(...) fields reflecting the
interpolated values.
In
`@components/ledger/internal/services/command/delete_write_behind_transaction.go`:
- Around line 11-12: In DeleteWriteBehindTransaction replace the
fmt.Sprintf-style log calls with structured logging using libLog.String(...) and
libLog.Err(err): for the Redis/write-behind failure paths (currently LevelWarn)
change the level to libLog.LevelError and include the error via libLog.Err(err)
plus any contextual keys with libLog.String("key", value); for successful
removal paths (currently LevelInfo with a “[DEBUG]” prefix) change to
libLog.LevelDebug, remove the “[DEBUG]” prefix, and emit context via
libLog.String(...); update the three spots referenced in the review (the log
calls around lines 33, 37, 42 in DeleteWriteBehindTransaction) accordingly so
all messages use structured fields and the corrected severity levels.
In `@components/ledger/internal/services/command/reload_operation_route_cache.go`:
- Around line 11-12: Replace all fmt.Sprintf-style interpolated messages passed
to logger.Log in reload_operation_route_cache.go with static message strings and
structured libLog fields: find each call to logger.Log in the
ReloadOperationRouteCache-related functions (the occurrences using fmt.Sprintf)
and remove fmt.Sprintf, use a constant message like "reloading operation route
cache" or specific static messages for success/error, and pass contextual fields
using libLog.String("key", value), libLog.Int("key", value) and libLog.Err(err)
instead of inlined interpolation; ensure all places that currently do
fmt.Sprintf(...) now provide the non-interpolated message plus the appropriate
libLog.String/Int/Err fields to carry the same data and maintain log keys
consistently while leaving logger.Log(...) otherwise unchanged.
In `@components/ledger/internal/services/command/send_overdraft_events.go`:
- Line 206: The nolint directive "//nolint:prealloc // contract: return nil (not
empty slice) when no operation qualifies; tests assert nil." in
send_overdraft_events.go is unused and should be removed to fix nolintlint CI
failures; edit the file and delete that comment line (leave the surrounding code
and contract behavior unchanged) so the linter no longer reports an unused
nolint.
---
Outside diff comments:
In `@components/ledger/internal/services/query/get_id_account.go`:
- Around line 34-37: Duplicate error logging occurs where logger.Log is called
twice with the same fmt.Sprintf("Error getting account on repo by id: %v", err);
remove the redundant logger.Log call in each failure path so only a single error
log is emitted (search for the duplicate calls using logger.Log and the exact
message in get_id_account.go and keep one call per error branch).
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro
Run ID: ed9d65a1-1514-4208-bad6-963ea778236c
⛔ Files ignored due to path filters (1)
go.sumis excluded by!**/*.sum
📒 Files selected for processing (279)
components/crm/.env.examplecomponents/crm/cmd/app/main.gocomponents/crm/internal/adapters/http/in/alias.gocomponents/crm/internal/adapters/http/in/holder.gocomponents/crm/internal/adapters/http/in/routes.gocomponents/crm/internal/adapters/http/in/routes_test.gocomponents/crm/internal/adapters/mongodb/alias/alias.mongodb.gocomponents/crm/internal/adapters/mongodb/alias/alias_maintenance.mongodb.gocomponents/crm/internal/adapters/mongodb/alias/alias_query.mongodb.gocomponents/crm/internal/adapters/mongodb/holder/holder.mongodb.gocomponents/crm/internal/adapters/mongodb/holder/holder_query.mongodb.gocomponents/crm/internal/bootstrap/config.gocomponents/crm/internal/bootstrap/config.tenant.gocomponents/crm/internal/bootstrap/config_test.gocomponents/crm/internal/bootstrap/readyz.gocomponents/crm/internal/bootstrap/readyz_checkers.gocomponents/crm/internal/bootstrap/readyz_integration_test.gocomponents/crm/internal/bootstrap/readyz_test.gocomponents/crm/internal/bootstrap/server.gocomponents/crm/internal/bootstrap/service.gocomponents/crm/internal/services/create-alias.gocomponents/crm/internal/services/create-holder.gocomponents/crm/internal/services/delete-alias.gocomponents/crm/internal/services/delete-holder.gocomponents/crm/internal/services/delete-related-party.gocomponents/crm/internal/services/get-all-aliases.gocomponents/crm/internal/services/get-all-holders.gocomponents/crm/internal/services/get-id-alias.gocomponents/crm/internal/services/get-id-holder.gocomponents/crm/internal/services/update-alias.gocomponents/crm/internal/services/update-holder.gocomponents/crm/internal/services/validate-alias-closing-date.gocomponents/crm/internal/services/validate-related-party.gocomponents/ledger/.env.examplecomponents/ledger/cmd/app/main.gocomponents/ledger/internal/adapters/http/in/account.gocomponents/ledger/internal/adapters/http/in/accounttype.gocomponents/ledger/internal/adapters/http/in/asset.gocomponents/ledger/internal/adapters/http/in/assetrate.gocomponents/ledger/internal/adapters/http/in/balance.gocomponents/ledger/internal/adapters/http/in/count_transactions_by_filters.gocomponents/ledger/internal/adapters/http/in/errors.gocomponents/ledger/internal/adapters/http/in/ledger.gocomponents/ledger/internal/adapters/http/in/metadata.gocomponents/ledger/internal/adapters/http/in/observability.gocomponents/ledger/internal/adapters/http/in/operation.gocomponents/ledger/internal/adapters/http/in/operation_route.gocomponents/ledger/internal/adapters/http/in/organization.gocomponents/ledger/internal/adapters/http/in/portfolio.gocomponents/ledger/internal/adapters/http/in/routes.gocomponents/ledger/internal/adapters/http/in/routes_test.gocomponents/ledger/internal/adapters/http/in/segment.gocomponents/ledger/internal/adapters/http/in/transaction.gocomponents/ledger/internal/adapters/http/in/transaction_create.gocomponents/ledger/internal/adapters/http/in/transaction_helper.gocomponents/ledger/internal/adapters/http/in/transaction_integration_test.gocomponents/ledger/internal/adapters/http/in/transaction_overdraft_enrichment.gocomponents/ledger/internal/adapters/http/in/transaction_query_handlers.gocomponents/ledger/internal/adapters/http/in/transaction_route.gocomponents/ledger/internal/adapters/http/in/transaction_state_handlers.gocomponents/ledger/internal/adapters/mongodb/onboarding/metadata.mongodb.gocomponents/ledger/internal/adapters/mongodb/transaction/metadata.mongodb.gocomponents/ledger/internal/adapters/postgres/account/account.postgresql.gocomponents/ledger/internal/adapters/postgres/accounttype/accounttype.postgresql.gocomponents/ledger/internal/adapters/postgres/asset/asset.postgresql.gocomponents/ledger/internal/adapters/postgres/assetrate/assetrate.postgresql.gocomponents/ledger/internal/adapters/postgres/balance/balance.gocomponents/ledger/internal/adapters/postgres/balance/balance.postgresql.gocomponents/ledger/internal/adapters/postgres/ledger/ledger.postgresql.gocomponents/ledger/internal/adapters/postgres/operation/operation.postgresql.gocomponents/ledger/internal/adapters/postgres/operationroute/operationroute.gocomponents/ledger/internal/adapters/postgres/operationroute/operationroute.postgresql.gocomponents/ledger/internal/adapters/postgres/organization/organization.postgresql.gocomponents/ledger/internal/adapters/postgres/portfolio/portfolio.postgresql.gocomponents/ledger/internal/adapters/postgres/segment/segment.postgresql.gocomponents/ledger/internal/adapters/postgres/transaction/transaction.gocomponents/ledger/internal/adapters/postgres/transaction/transaction.postgresql.gocomponents/ledger/internal/adapters/postgres/transactionroute/transactionroute.postgresql.gocomponents/ledger/internal/adapters/rabbitmq/circuitbreaker_integration_test.gocomponents/ledger/internal/adapters/rabbitmq/consumer.rabbitmq.gocomponents/ledger/internal/adapters/rabbitmq/consumer.rabbitmq_integration_test.gocomponents/ledger/internal/adapters/rabbitmq/consumer.rabbitmq_test.gocomponents/ledger/internal/adapters/rabbitmq/healthcheck.gocomponents/ledger/internal/adapters/rabbitmq/healthcheck_test.gocomponents/ledger/internal/adapters/rabbitmq/metric_state_listener.gocomponents/ledger/internal/adapters/rabbitmq/metric_state_listener_test.gocomponents/ledger/internal/adapters/rabbitmq/producer.circuitbreaker.gocomponents/ledger/internal/adapters/rabbitmq/producer.circuitbreaker_test.gocomponents/ledger/internal/adapters/rabbitmq/producer.multitenant.gocomponents/ledger/internal/adapters/rabbitmq/producer.multitenant_integration_test.gocomponents/ledger/internal/adapters/rabbitmq/producer.multitenant_test.gocomponents/ledger/internal/adapters/rabbitmq/producer.rabbitmq.gocomponents/ledger/internal/adapters/rabbitmq/producer.rabbitmq_integration_test.gocomponents/ledger/internal/adapters/redis/onboarding/consumer.redis.gocomponents/ledger/internal/adapters/redis/transaction/balance/aggregation.gocomponents/ledger/internal/adapters/redis/transaction/consumer.redis.gocomponents/ledger/internal/adapters/redis/transaction/consumer.redis_test.gocomponents/ledger/internal/bootstrap/balance_sync.collector.gocomponents/ledger/internal/bootstrap/balance_sync.collector_test.gocomponents/ledger/internal/bootstrap/balance_sync.worker.gocomponents/ledger/internal/bootstrap/balance_sync.worker_test.gocomponents/ledger/internal/bootstrap/circuitbreaker.gocomponents/ledger/internal/bootstrap/circuitbreaker_test.gocomponents/ledger/internal/bootstrap/config.gocomponents/ledger/internal/bootstrap/config.mongo.onboarding.gocomponents/ledger/internal/bootstrap/config.mongo.onboarding_test.gocomponents/ledger/internal/bootstrap/config.mongo.transaction.gocomponents/ledger/internal/bootstrap/config.mongo.transaction_test.gocomponents/ledger/internal/bootstrap/config.postgres.onboarding.gocomponents/ledger/internal/bootstrap/config.postgres.onboarding_chaos_test.gocomponents/ledger/internal/bootstrap/config.postgres.onboarding_fuzz_test.gocomponents/ledger/internal/bootstrap/config.postgres.onboarding_integration_test.gocomponents/ledger/internal/bootstrap/config.postgres.onboarding_property_test.gocomponents/ledger/internal/bootstrap/config.postgres.onboarding_test.gocomponents/ledger/internal/bootstrap/config.postgres.transaction.gocomponents/ledger/internal/bootstrap/config.postgres.transaction_chaos_test.gocomponents/ledger/internal/bootstrap/config.postgres.transaction_fuzz_test.gocomponents/ledger/internal/bootstrap/config.postgres.transaction_integration_test.gocomponents/ledger/internal/bootstrap/config.postgres.transaction_property_test.gocomponents/ledger/internal/bootstrap/config.postgres.transaction_test.gocomponents/ledger/internal/bootstrap/config.rabbitmq.gocomponents/ledger/internal/bootstrap/config.rabbitmq_test.gocomponents/ledger/internal/bootstrap/config_runtime_test.gocomponents/ledger/internal/bootstrap/config_test.gocomponents/ledger/internal/bootstrap/onboarding_config_logger_test.gocomponents/ledger/internal/bootstrap/rabbitmq.multitenant.gocomponents/ledger/internal/bootstrap/rabbitmq.server.gocomponents/ledger/internal/bootstrap/rabbitmq.server_integration_test.gocomponents/ledger/internal/bootstrap/readyz.gocomponents/ledger/internal/bootstrap/readyz_checkers.gocomponents/ledger/internal/bootstrap/readyz_general_test.gocomponents/ledger/internal/bootstrap/readyz_integration_test.gocomponents/ledger/internal/bootstrap/readyz_test.gocomponents/ledger/internal/bootstrap/redis.consumer.gocomponents/ledger/internal/bootstrap/service.gocomponents/ledger/internal/bootstrap/service_test.gocomponents/ledger/internal/bootstrap/streaming.gocomponents/ledger/internal/bootstrap/unified-server.gocomponents/ledger/internal/services/command/create_account.gocomponents/ledger/internal/services/command/create_account_type.gocomponents/ledger/internal/services/command/create_asset.gocomponents/ledger/internal/services/command/create_assetrate.gocomponents/ledger/internal/services/command/create_balance.gocomponents/ledger/internal/services/command/create_balance_additional.gocomponents/ledger/internal/services/command/create_balance_transaction_operations_async.gocomponents/ledger/internal/services/command/create_balance_transaction_operations_async_test.gocomponents/ledger/internal/services/command/create_bulk_transaction_operations_async.gocomponents/ledger/internal/services/command/create_bulk_transaction_operations_async_test.gocomponents/ledger/internal/services/command/create_ledger.gocomponents/ledger/internal/services/command/create_metadata_bulk.gocomponents/ledger/internal/services/command/create_metadata_index.gocomponents/ledger/internal/services/command/create_onboarding_metadata.gocomponents/ledger/internal/services/command/create_operation_route.gocomponents/ledger/internal/services/command/create_organization.gocomponents/ledger/internal/services/command/create_portfolio.gocomponents/ledger/internal/services/command/create_segment.gocomponents/ledger/internal/services/command/create_transaction_idempotency.gocomponents/ledger/internal/services/command/create_transaction_route.gocomponents/ledger/internal/services/command/create_transaction_route_cache.gocomponents/ledger/internal/services/command/create_transaction_route_cache_chaos_test.gocomponents/ledger/internal/services/command/create_write_behind_transaction.gocomponents/ledger/internal/services/command/delete_account.gocomponents/ledger/internal/services/command/delete_account_type.gocomponents/ledger/internal/services/command/delete_all_balances_by_account_id.gocomponents/ledger/internal/services/command/delete_asset.gocomponents/ledger/internal/services/command/delete_balance.gocomponents/ledger/internal/services/command/delete_ledger.gocomponents/ledger/internal/services/command/delete_metadata_index.gocomponents/ledger/internal/services/command/delete_operation_route.gocomponents/ledger/internal/services/command/delete_organization.gocomponents/ledger/internal/services/command/delete_portfolio.gocomponents/ledger/internal/services/command/delete_segment.gocomponents/ledger/internal/services/command/delete_transaction_route.gocomponents/ledger/internal/services/command/delete_transaction_route_cache.gocomponents/ledger/internal/services/command/delete_write_behind_transaction.gocomponents/ledger/internal/services/command/process_balance_operations.gocomponents/ledger/internal/services/command/reload_operation_route_cache.gocomponents/ledger/internal/services/command/reload_operation_route_cache_chaos_test.gocomponents/ledger/internal/services/command/reload_operation_route_cache_integration_test.gocomponents/ledger/internal/services/command/send_log_transaction_audit_queue.gocomponents/ledger/internal/services/command/send_overdraft_events.gocomponents/ledger/internal/services/command/send_transaction_events.gocomponents/ledger/internal/services/command/sync_balances_batch.gocomponents/ledger/internal/services/command/update_account.gocomponents/ledger/internal/services/command/update_account_type.gocomponents/ledger/internal/services/command/update_asset.gocomponents/ledger/internal/services/command/update_balance.gocomponents/ledger/internal/services/command/update_balance_overdraft.gocomponents/ledger/internal/services/command/update_ledger.gocomponents/ledger/internal/services/command/update_ledger_settings.gocomponents/ledger/internal/services/command/update_onboarding_metadata.gocomponents/ledger/internal/services/command/update_operation.gocomponents/ledger/internal/services/command/update_operation_route.gocomponents/ledger/internal/services/command/update_organization.gocomponents/ledger/internal/services/command/update_portfolio.gocomponents/ledger/internal/services/command/update_segment.gocomponents/ledger/internal/services/command/update_transaction.gocomponents/ledger/internal/services/command/update_transaction_metadata.gocomponents/ledger/internal/services/command/update_transaction_route.gocomponents/ledger/internal/services/command/update_write_behind_transaction.gocomponents/ledger/internal/services/command/write_transaction.gocomponents/ledger/internal/services/query/count_accounts.gocomponents/ledger/internal/services/query/count_assets.gocomponents/ledger/internal/services/query/count_ledgers.gocomponents/ledger/internal/services/query/count_organizations.gocomponents/ledger/internal/services/query/count_portfolios.gocomponents/ledger/internal/services/query/count_segments.gocomponents/ledger/internal/services/query/count_transactions_by_filters.gocomponents/ledger/internal/services/query/enrich_transaction_routes.gocomponents/ledger/internal/services/query/get_account_balances_at_timestamp.gocomponents/ledger/internal/services/query/get_alias_account.gocomponents/ledger/internal/services/query/get_alias_accounts.gocomponents/ledger/internal/services/query/get_all_account_type.gocomponents/ledger/internal/services/query/get_all_accounts.gocomponents/ledger/internal/services/query/get_all_asset.gocomponents/ledger/internal/services/query/get_all_assetrates_assetcode.gocomponents/ledger/internal/services/query/get_all_balances.gocomponents/ledger/internal/services/query/get_all_balances_account.gocomponents/ledger/internal/services/query/get_all_ledgers.gocomponents/ledger/internal/services/query/get_all_metadata_account_type.gocomponents/ledger/internal/services/query/get_all_metadata_accounts.gocomponents/ledger/internal/services/query/get_all_metadata_asset.gocomponents/ledger/internal/services/query/get_all_metadata_index.gocomponents/ledger/internal/services/query/get_all_metadata_ledgers.gocomponents/ledger/internal/services/query/get_all_metadata_operation_routes.gocomponents/ledger/internal/services/query/get_all_metadata_operations.gocomponents/ledger/internal/services/query/get_all_metadata_organizations.gocomponents/ledger/internal/services/query/get_all_metadata_portfolios.gocomponents/ledger/internal/services/query/get_all_metadata_segment.gocomponents/ledger/internal/services/query/get_all_metadata_transaction_routes.gocomponents/ledger/internal/services/query/get_all_metadata_transactions.gocomponents/ledger/internal/services/query/get_all_operation_routes.gocomponents/ledger/internal/services/query/get_all_operations.gocomponents/ledger/internal/services/query/get_all_operations_account.gocomponents/ledger/internal/services/query/get_all_organizations.gocomponents/ledger/internal/services/query/get_all_portfolios.gocomponents/ledger/internal/services/query/get_all_segment.gocomponents/ledger/internal/services/query/get_all_transaction_routes.gocomponents/ledger/internal/services/query/get_all_transactions.gocomponents/ledger/internal/services/query/get_balance_at_timestamp.gocomponents/ledger/internal/services/query/get_balances.gocomponents/ledger/internal/services/query/get_external_id_assetrate.gocomponents/ledger/internal/services/query/get_id_account.gocomponents/ledger/internal/services/query/get_id_account_type.gocomponents/ledger/internal/services/query/get_id_account_with_deleted.gocomponents/ledger/internal/services/query/get_id_asset.gocomponents/ledger/internal/services/query/get_id_balance.gocomponents/ledger/internal/services/query/get_id_ledger.gocomponents/ledger/internal/services/query/get_id_operation.gocomponents/ledger/internal/services/query/get_id_operation_account.gocomponents/ledger/internal/services/query/get_id_operation_route.gocomponents/ledger/internal/services/query/get_id_organization.gocomponents/ledger/internal/services/query/get_id_portfolio.gocomponents/ledger/internal/services/query/get_id_segment.gocomponents/ledger/internal/services/query/get_id_transaction.gocomponents/ledger/internal/services/query/get_id_transaction_route.gocomponents/ledger/internal/services/query/get_ids_accounts.gocomponents/ledger/internal/services/query/get_ledger_settings.gocomponents/ledger/internal/services/query/get_ledger_settings_parsed.gocomponents/ledger/internal/services/query/get_or_create_transaction_route_cache.gocomponents/ledger/internal/services/query/get_or_create_transaction_route_cache_chaos_test.gocomponents/ledger/internal/services/query/get_or_create_transaction_route_cache_integration_test.gocomponents/ledger/internal/services/query/get_parent_id_transaction.gocomponents/ledger/internal/services/query/get_write_behind_transaction.gocomponents/ledger/internal/services/query/validate_accounting_routes.gogo.modpkg/mongo/mongo.gopkg/mtransaction/validations.gopkg/mtransaction/validations_test.gopkg/net/http/withBody.gopkg/net/http/withRecover.gopkg/streaming/emit.gopkg/streaming/emit_test.gopkg/streaming/events/operation_route_created.gopkg/streaming/events/operation_route_updated.gopkg/streaming/mock.gopkg/utils/metrics.gotests/utils/crypto.gotests/utils/stubs/logger.go
📊 Unit Test Coverage Report:
|
| Metric | Value |
|---|---|
| Overall Coverage | 85.3% ✅ PASS |
| Threshold | 85% |
Coverage by Package
| Package | Coverage |
|---|---|
github.com/LerianStudio/midaz/v3/components/ledger/internal/adapters/http/in |
85.7% |
github.com/LerianStudio/midaz/v3/components/ledger/internal/adapters/mongodb/onboarding |
66.7% |
github.com/LerianStudio/midaz/v3/components/ledger/internal/adapters/mongodb/transaction |
66.7% |
github.com/LerianStudio/midaz/v3/components/ledger/internal/adapters/postgres/account |
100.0% |
github.com/LerianStudio/midaz/v3/components/ledger/internal/adapters/postgres/accounttype |
66.7% |
github.com/LerianStudio/midaz/v3/components/ledger/internal/adapters/postgres/asset |
100.0% |
github.com/LerianStudio/midaz/v3/components/ledger/internal/adapters/postgres/assetrate |
100.0% |
github.com/LerianStudio/midaz/v3/components/ledger/internal/adapters/postgres/balance |
97.5% |
github.com/LerianStudio/midaz/v3/components/ledger/internal/adapters/postgres/ledger |
100.0% |
github.com/LerianStudio/midaz/v3/components/ledger/internal/adapters/postgres/operation |
90.7% |
github.com/LerianStudio/midaz/v3/components/ledger/internal/adapters/postgres/operationroute |
100.0% |
github.com/LerianStudio/midaz/v3/components/ledger/internal/adapters/postgres/organization |
100.0% |
github.com/LerianStudio/midaz/v3/components/ledger/internal/adapters/postgres/portfolio |
100.0% |
github.com/LerianStudio/midaz/v3/components/ledger/internal/adapters/postgres/segment |
100.0% |
github.com/LerianStudio/midaz/v3/components/ledger/internal/adapters/postgres/transaction |
94.9% |
github.com/LerianStudio/midaz/v3/components/ledger/internal/adapters/postgres/transactionroute |
100.0% |
github.com/LerianStudio/midaz/v3/components/ledger/internal/adapters/rabbitmq |
90.6% |
github.com/LerianStudio/midaz/v3/components/ledger/internal/adapters/redis/transaction/balance |
100.0% |
github.com/LerianStudio/midaz/v3/components/ledger/internal/services/command |
88.1% |
github.com/LerianStudio/midaz/v3/components/ledger/internal/services/query |
93.1% |
github.com/LerianStudio/midaz/v3/components/ledger/internal/services |
0.0% |
Generated by Go PR Analysis workflow
📊 Unit Test Coverage Report:
|
| Metric | Value |
|---|---|
| Overall Coverage | 88.1% ✅ PASS |
| Threshold | 85% |
Coverage by Package
| Package | Coverage |
|---|---|
github.com/LerianStudio/midaz/v3/components/crm/internal/adapters/http/in |
86.8% |
github.com/LerianStudio/midaz/v3/components/crm/internal/adapters/mongodb/alias |
92.1% |
github.com/LerianStudio/midaz/v3/components/crm/internal/adapters/mongodb/holder |
87.1% |
github.com/LerianStudio/midaz/v3/components/crm/internal/services |
95.2% |
Generated by Go PR Analysis workflow
|
Actionable comments posted: 0 |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@go.mod`:
- Around line 101-103: The go.mod currently pins a pre-release version of
github.com/LerianStudio/lib-commons/v5 at v5.2.0-beta.12; update that require to
a stable release (for example replace github.com/LerianStudio/lib-commons/v5
v5.2.0-beta.12 with v5.3.1) or, if policy requires, pin to a specific commit SHA
with an explicit security/compliance rationale; update the require statement for
the module name github.com/LerianStudio/lib-commons/v5 accordingly and run go
mod tidy to refresh the lock file.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro
Run ID: d7ec4216-0e99-478c-ad23-06ae4ad70733
⛔ Files ignored due to path filters (1)
go.sumis excluded by!**/*.sum
📒 Files selected for processing (7)
components/ledger/internal/adapters/rabbitmq/consumer.rabbitmq.gocomponents/ledger/internal/bootstrap/rabbitmq.server.gocomponents/ledger/internal/services/command/delete_transaction_route_cache.gocomponents/ledger/internal/services/command/delete_write_behind_transaction.gocomponents/ledger/internal/services/command/reload_operation_route_cache.gocomponents/ledger/internal/services/query/get_id_account.gogo.mod
💤 Files with no reviewable changes (1)
- components/ledger/internal/services/query/get_id_account.go
Summary
Migrates the entire Midaz observability surface from
github.com/LerianStudio/lib-commons/v5/commons/{log,zap,opentelemetry,...}to the canonicalgithub.com/LerianStudio/lib-observabilityv1.0.0.lib-commonsv5.2.0-beta.12 removed the deprecated observability source packages (commons/log,commons/zap,commons/opentelemetry,commons/opentelemetry/metrics,commons/runtime,commons/assert). The build no longer succeeds against that version until the application migrates its imports — this PR completes that migration.Crucially,
lib-commonsv5.2.0-beta.12 internal packages (commons/mongo,commons/postgres,commons/circuitbreaker,commons/rabbitmq,commons/server,commons/net/http) already importlib-observability/log.Loggerandlib-observability/tracing.Telemetrydirectly, so there are no remaining type-bearing boundary blockers — every cross-boundary type that used to be*opentelemetry.Telemetryorcommons/log.Loggeris now the lib-observability type.What changed
Imports migrated
commons/log→lib-observability/logcommons/zap→lib-observability/zapLogger/Field/Environment/Configare type aliases)commons/opentelemetry/metrics→lib-observability/metricscommons/opentelemetry→lib-observability/tracinglibOpentelemetry,libOpenTelemetry,libCommonsOtel). 1 unaliased file (pkg/mtransaction/validations.go) hadopentelemetry.Xselectors rewritten totracing.X.commons(root) obs context helperslibObservability "github.com/LerianStudio/lib-observability"second import; rewrote obs-only call sites.commons/net/httpobs middlewarelibHTTPlib-commons HTTP import (still usesPing/Version/FiberErrorHandler); addedlibObsMiddleware "github.com/LerianStudio/lib-observability/middleware"; rewroteNewTelemetryMiddleware/WithCustomLogger/WithHTTPLoggingcall sites.