Changeset: b35bc5d2f3bf for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/b35bc5d2f3bf
Modified Files:
        gdk/gdk_bbp.c
Branch: Sep2022
Log Message:

Slight code rearrangement.


diffs (77 lines):

diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c
--- a/gdk/gdk_bbp.c
+++ b/gdk/gdk_bbp.c
@@ -3816,48 +3816,35 @@ BBPsync(int cnt, bat *restrict subcommit
        ret = BBPprepare(subcommit != NULL);
 
        /* PHASE 1: safeguard everything in a backup-dir */
-       if (ret == GDK_SUCCEED) {
-               int idx = 0;
-
-               while (++idx < cnt) {
-                       bat i = subcommit ? subcommit[idx] : idx;
-                       const bat bid = i;
+       for (int idx = 1; ret == GDK_SUCCEED && idx < cnt; idx++) {
+               bat i = subcommit ? subcommit[idx] : idx;
+               const bat bid = i;
+               if (lock)
+                       MT_lock_set(&GDKswapLock(bid));
+               /* set flag that we're syncing, i.e. that we'll
+                * be between moving heap to backup dir and
+                * saving the new version, in other words, the
+                * heap may not exist in the usual location */
+               BBP_status_on(bid, BBPSYNCING);
+               /* wait until unloading is finished before
+                * attempting to make a backup */
+               while (BBP_status(bid) & BBPUNLOADING) {
+                       if (lock)
+                               MT_lock_unset(&GDKswapLock(bid));
+                       BBPspin(bid, __func__, BBPUNLOADING);
                        if (lock)
                                MT_lock_set(&GDKswapLock(bid));
-                       /* set flag that we're syncing, i.e. that we'll
-                        * be between moving heap to backup dir and
-                        * saving the new version, in other words, the
-                        * heap may not exist in the usual location */
-                       BBP_status_on(bid, BBPSYNCING);
-                       /* wait until unloading is finished before
-                        * attempting to make a backup */
-                       while (BBP_status(bid) & BBPUNLOADING) {
-                               if (lock)
-                                       MT_lock_unset(&GDKswapLock(bid));
-                               BBPspin(bid, __func__, BBPUNLOADING);
-                               if (lock)
-                                       MT_lock_set(&GDKswapLock(bid));
-                       }
-                       BAT *b = dirty_bat(&i, subcommit != NULL);
-                       if (i <= 0) {
-                               if (lock)
-                                       MT_lock_unset(&GDKswapLock(bid));
-                               break;
-                       }
-                       if (BBP_status(bid) & BBPEXISTING) {
-                               if (b != NULL && b->batInserted > 0) {
-                                       if (BBPbackup(b, subcommit != NULL) != 
GDK_SUCCEED) {
-                                               if (lock)
-                                                       
MT_lock_unset(&GDKswapLock(bid));
-                                               break;
-                                       }
-                               }
-                       }
-                       if (lock)
-                               MT_lock_unset(&GDKswapLock(bid));
                }
-               if (idx < cnt)
+               BAT *b = dirty_bat(&i, subcommit != NULL);
+               if (i <= 0 ||
+                   (BBP_status(bid) & BBPEXISTING &&
+                    b != NULL &&
+                    b->batInserted > 0 &&
+                    BBPbackup(b, subcommit != NULL) != GDK_SUCCEED)) {
                        ret = GDK_FAIL;
+               }
+               if (lock)
+                       MT_lock_unset(&GDKswapLock(bid));
        }
        TRC_DEBUG(PERF, "move time %d, %d files\n", (t1 = GDKms()) - t0, 
backup_files);
 
_______________________________________________
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org

Reply via email to