diff --git a/components/ledger/internal/api/v2/controllers_transactions.go b/components/ledger/internal/api/v2/controllers_transactions.go index 04df47e044..eef1d5688f 100644 --- a/components/ledger/internal/api/v2/controllers_transactions.go +++ b/components/ledger/internal/api/v2/controllers_transactions.go @@ -6,6 +6,7 @@ import ( "math/big" "net/http" + "github.com/formancehq/stack/libs/go-libs/contextutil" "github.com/formancehq/stack/libs/go-libs/pointer" "github.com/formancehq/stack/libs/go-libs/bun/bunpaginate" @@ -101,7 +102,9 @@ func postTransaction(w http.ResponseWriter, r *http.Request) { return } - res, err := l.CreateTransaction(r.Context(), getCommandParameters(r), *payload.ToRunScript()) + ctx, _ := contextutil.Detached(r.Context()) + + res, err := l.CreateTransaction(ctx, getCommandParameters(r), *payload.ToRunScript()) if err != nil { switch { case engine.IsCommandError(err): diff --git a/components/ledger/internal/storage/ledgerstore/logs.go b/components/ledger/internal/storage/ledgerstore/logs.go index f01507d81d..2dd8e4ddfa 100644 --- a/components/ledger/internal/storage/ledgerstore/logs.go +++ b/components/ledger/internal/storage/ledgerstore/logs.go @@ -112,7 +112,6 @@ func (store *Store) InsertLogs(ctx context.Context, activeLogs ...*ledger.Chaine }(), } }))). - On("CONFLICT (idempotency_key) DO NOTHING"). Exec(ctx) return err } diff --git a/components/ledger/internal/storage/ledgerstore/logs_test.go b/components/ledger/internal/storage/ledgerstore/logs_test.go index cd566bb48e..43034d0e2e 100644 --- a/components/ledger/internal/storage/ledgerstore/logs_test.go +++ b/components/ledger/internal/storage/ledgerstore/logs_test.go @@ -85,29 +85,6 @@ func TestGetLastLog(t *testing.T) { require.Equal(t, tx1.Timestamp, lastLog.Data.(ledger.NewTransactionLogPayload).Transaction.Timestamp) } -func TestInsertLogSameIdempotencyKey(t *testing.T) { - t.Parallel() - store := newLedgerStore(t) - - logTx := ledger.NewTransactionLog( - ledger.NewTransaction(). - WithPostings( - ledger.NewPosting("world", "bank", "USD", big.NewInt(100)), - ), - map[string]metadata.Metadata{}, - ) - log := logTx.WithIdempotencyKey("test") - - appendLog(t, store, log.ChainLog(nil), log.ChainLog(nil)) - - logs, err := store.GetLogs(context.Background(), NewGetLogsQuery(PaginatedQueryOptions[any]{ - PageSize: 10, - })) - require.NoError(t, err) - require.Len(t, logs.Data, 1) - require.Equal(t, logs.Data[0].Log, *logTx) -} - func TestReadLogWithIdempotencyKey(t *testing.T) { t.Parallel() store := newLedgerStore(t) @@ -126,8 +103,7 @@ func TestReadLogWithIdempotencyKey(t *testing.T) { lastLog, err := store.ReadLogWithIdempotencyKey(context.Background(), "test") require.NoError(t, err) require.NotNil(t, lastLog) - require.Len(t, ret, 1) - require.Equal(t, *ret[0], *lastLog) + require.Equal(t, *ret, *lastLog) } func TestGetLogs(t *testing.T) { diff --git a/components/ledger/internal/storage/ledgerstore/main_test.go b/components/ledger/internal/storage/ledgerstore/main_test.go index cb93db6cb2..ffc473a42b 100644 --- a/components/ledger/internal/storage/ledgerstore/main_test.go +++ b/components/ledger/internal/storage/ledgerstore/main_test.go @@ -98,8 +98,8 @@ func newLedgerStore(t T, hooks ...bun.QueryHook) *Store { return store } -func appendLog(t *testing.T, store *Store, logs ...*ledger.ChainedLog) []*ledger.ChainedLog { - err := store.InsertLogs(context.Background(), logs...) +func appendLog(t *testing.T, store *Store, log *ledger.ChainedLog) *ledger.ChainedLog { + err := store.InsertLogs(context.Background(), log) require.NoError(t, err) - return logs + return log }