@@ -195,69 +195,72 @@ func (ctrl *DefaultController) Import(ctx context.Context, stream chan ledger.Lo
195
195
}
196
196
197
197
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 )
224
204
}
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 )
231
215
}
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 )
239
218
}
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
+ }
244
246
}
245
247
}
246
- }
247
248
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
+ }
253
254
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
+ }
257
259
}
258
- }
259
260
260
- return nil
261
+ return nil , nil
262
+ })
263
+ return err
261
264
}
262
265
263
266
func (ctrl * DefaultController ) Export (ctx context.Context , w ExportWriter ) error {
0 commit comments