Skip to content

Commit 7b43a96

Browse files
committed
feat: make tracing of logs import more granular
1 parent df6d0d7 commit 7b43a96

File tree

1 file changed

+57
-54
lines changed

1 file changed

+57
-54
lines changed

internal/controller/ledger/controller_default.go

Lines changed: 57 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -195,69 +195,72 @@ func (ctrl *DefaultController) Import(ctx context.Context, stream chan ledger.Lo
195195
}
196196

197197
func (ctrl *DefaultController) importLog(ctx context.Context, log ledger.Log) error {
198-
switch payload := log.Data.(type) {
199-
case ledger.CreatedTransaction:
200-
logging.FromContext(ctx).Debugf("Importing transaction %d", *payload.Transaction.ID)
201-
if err := ctrl.store.CommitTransaction(ctx, &payload.Transaction, payload.AccountMetadata); err != nil {
202-
return fmt.Errorf("failed to commit transaction: %w", err)
203-
}
204-
logging.FromContext(ctx).Debugf("Imported transaction %d", *payload.Transaction.ID)
205-
case ledger.RevertedTransaction:
206-
logging.FromContext(ctx).Debugf("Reverting transaction %d", *payload.RevertedTransaction.ID)
207-
_, _, err := ctrl.store.RevertTransaction(
208-
ctx,
209-
*payload.RevertedTransaction.ID,
210-
*payload.RevertedTransaction.RevertedAt,
211-
)
212-
if err != nil {
213-
return fmt.Errorf("failed to revert transaction: %w", err)
214-
}
215-
if err := ctrl.store.CommitTransaction(ctx, &payload.RevertTransaction, nil); err != nil {
216-
return fmt.Errorf("failed to commit transaction: %w", err)
217-
}
218-
case ledger.SavedMetadata:
219-
switch payload.TargetType {
220-
case ledger.MetaTargetTypeTransaction:
221-
logging.FromContext(ctx).Debugf("Saving metadata of transaction %d", payload.TargetID)
222-
if _, _, err := ctrl.store.UpdateTransactionMetadata(ctx, payload.TargetID.(int), payload.Metadata); err != nil {
223-
return fmt.Errorf("failed to update transaction metadata: %w", err)
198+
_, err := tracing.Trace(ctx, ctrl.tracer, "ImportLog", func(ctx context.Context) (any, error) {
199+
switch payload := log.Data.(type) {
200+
case ledger.CreatedTransaction:
201+
logging.FromContext(ctx).Debugf("Importing transaction %d", *payload.Transaction.ID)
202+
if err := ctrl.store.CommitTransaction(ctx, &payload.Transaction, payload.AccountMetadata); err != nil {
203+
return nil, fmt.Errorf("failed to commit transaction: %w", err)
224204
}
225-
case ledger.MetaTargetTypeAccount:
226-
logging.FromContext(ctx).Debugf("Saving metadata of account %s", payload.TargetID)
227-
if err := ctrl.store.UpdateAccountsMetadata(ctx, ledger.AccountMetadata{
228-
payload.TargetID.(string): payload.Metadata,
229-
}); err != nil {
230-
return fmt.Errorf("failed to update account metadata: %w", err)
205+
logging.FromContext(ctx).Debugf("Imported transaction %d", *payload.Transaction.ID)
206+
case ledger.RevertedTransaction:
207+
logging.FromContext(ctx).Debugf("Reverting transaction %d", *payload.RevertedTransaction.ID)
208+
_, _, err := ctrl.store.RevertTransaction(
209+
ctx,
210+
*payload.RevertedTransaction.ID,
211+
*payload.RevertedTransaction.RevertedAt,
212+
)
213+
if err != nil {
214+
return nil, fmt.Errorf("failed to revert transaction: %w", err)
231215
}
232-
}
233-
case ledger.DeletedMetadata:
234-
switch payload.TargetType {
235-
case ledger.MetaTargetTypeTransaction:
236-
logging.FromContext(ctx).Debugf("Deleting metadata of transaction %d", payload.TargetID)
237-
if _, _, err := ctrl.store.DeleteTransactionMetadata(ctx, payload.TargetID.(int), payload.Key); err != nil {
238-
return fmt.Errorf("failed to delete transaction metadata: %w", err)
216+
if err := ctrl.store.CommitTransaction(ctx, &payload.RevertTransaction, nil); err != nil {
217+
return nil, fmt.Errorf("failed to commit transaction: %w", err)
239218
}
240-
case ledger.MetaTargetTypeAccount:
241-
logging.FromContext(ctx).Debugf("Deleting metadata of account %s", payload.TargetID)
242-
if err := ctrl.store.DeleteAccountMetadata(ctx, payload.TargetID.(string), payload.Key); err != nil {
243-
return fmt.Errorf("failed to delete account metadata: %w", err)
219+
case ledger.SavedMetadata:
220+
switch payload.TargetType {
221+
case ledger.MetaTargetTypeTransaction:
222+
logging.FromContext(ctx).Debugf("Saving metadata of transaction %d", payload.TargetID)
223+
if _, _, err := ctrl.store.UpdateTransactionMetadata(ctx, payload.TargetID.(int), payload.Metadata); err != nil {
224+
return nil, fmt.Errorf("failed to update transaction metadata: %w", err)
225+
}
226+
case ledger.MetaTargetTypeAccount:
227+
logging.FromContext(ctx).Debugf("Saving metadata of account %s", payload.TargetID)
228+
if err := ctrl.store.UpdateAccountsMetadata(ctx, ledger.AccountMetadata{
229+
payload.TargetID.(string): payload.Metadata,
230+
}); err != nil {
231+
return nil, fmt.Errorf("failed to update account metadata: %w", err)
232+
}
233+
}
234+
case ledger.DeletedMetadata:
235+
switch payload.TargetType {
236+
case ledger.MetaTargetTypeTransaction:
237+
logging.FromContext(ctx).Debugf("Deleting metadata of transaction %d", payload.TargetID)
238+
if _, _, err := ctrl.store.DeleteTransactionMetadata(ctx, payload.TargetID.(int), payload.Key); err != nil {
239+
return nil, fmt.Errorf("failed to delete transaction metadata: %w", err)
240+
}
241+
case ledger.MetaTargetTypeAccount:
242+
logging.FromContext(ctx).Debugf("Deleting metadata of account %s", payload.TargetID)
243+
if err := ctrl.store.DeleteAccountMetadata(ctx, payload.TargetID.(string), payload.Key); err != nil {
244+
return nil, fmt.Errorf("failed to delete account metadata: %w", err)
245+
}
244246
}
245247
}
246-
}
247248

248-
logCopy := log
249-
logging.FromContext(ctx).Debugf("Inserting log %d", *log.ID)
250-
if err := ctrl.store.InsertLog(ctx, &log); err != nil {
251-
return fmt.Errorf("failed to insert log: %w", err)
252-
}
249+
logCopy := log
250+
logging.FromContext(ctx).Debugf("Inserting log %d", *log.ID)
251+
if err := ctrl.store.InsertLog(ctx, &log); err != nil {
252+
return nil, fmt.Errorf("failed to insert log: %w", err)
253+
}
253254

254-
if ctrl.ledger.HasFeature(features.FeatureHashLogs, "SYNC") {
255-
if !reflect.DeepEqual(log.Hash, logCopy.Hash) {
256-
return newErrInvalidHash(*log.ID, logCopy.Hash, log.Hash)
255+
if ctrl.ledger.HasFeature(features.FeatureHashLogs, "SYNC") {
256+
if !reflect.DeepEqual(log.Hash, logCopy.Hash) {
257+
return nil, newErrInvalidHash(*log.ID, logCopy.Hash, log.Hash)
258+
}
257259
}
258-
}
259260

260-
return nil
261+
return nil, nil
262+
})
263+
return err
261264
}
262265

263266
func (ctrl *DefaultController) Export(ctx context.Context, w ExportWriter) error {

0 commit comments

Comments
 (0)