@@ -105,27 +105,36 @@ func ExtractQDevLoggingData(taskCtx plugin.SubTaskContext) errors.Error {
105105
106106 // Batch write to DB in a single transaction
107107 tx := db .Begin ()
108+ var txErr errors.Error
108109 for _ , r := range results {
109110 for _ , chatLog := range r .ChatLogs {
110- if err := tx .CreateOrUpdate (chatLog ); err != nil {
111- tx .Rollback ()
112- return errors .Default .Wrap (err , "failed to save chat log" )
111+ if txErr = tx .CreateOrUpdate (chatLog ); txErr != nil {
112+ break
113113 }
114114 }
115+ if txErr != nil {
116+ break
117+ }
115118 for _ , compLog := range r .CompLogs {
116- if err := tx .CreateOrUpdate (compLog ); err != nil {
117- tx .Rollback ()
118- return errors .Default .Wrap (err , "failed to save completion log" )
119+ if txErr = tx .CreateOrUpdate (compLog ); txErr != nil {
120+ break
119121 }
120122 }
121- // Mark file as processed
123+ if txErr != nil {
124+ break
125+ }
122126 r .FileMeta .Processed = true
123127 now := time .Now ()
124128 r .FileMeta .ProcessedTime = & now
125- if err := tx .Update (r .FileMeta ); err != nil {
126- tx .Rollback ()
127- return errors .Default .Wrap (err , "failed to update file metadata" )
129+ if txErr = tx .Update (r .FileMeta ); txErr != nil {
130+ break
131+ }
132+ }
133+ if txErr != nil {
134+ if rbErr := tx .Rollback (); rbErr != nil {
135+ taskCtx .GetLogger ().Error (rbErr , "failed to rollback transaction" )
128136 }
137+ return errors .Default .Wrap (txErr , "failed to write logging batch" )
129138 }
130139 if err := tx .Commit (); err != nil {
131140 return errors .Default .Wrap (err , "failed to commit batch" )
0 commit comments