Revert "isolationtester: don't repeat the is-it-waiting query when retrying a step."
authorTom Lane <[email protected]>
Fri, 12 Feb 2016 22:12:23 +0000 (17:12 -0500)
committerTom Lane <[email protected]>
Fri, 12 Feb 2016 22:12:23 +0000 (17:12 -0500)
This mostly reverts commit 9c9782f066e0ce5424b8706df2cce147cb78170f.
I left in the parts that rearranged removal of completed waiting steps;
but the idea of not rechecking a step's blocked-ness isn't working.

src/test/isolation/isolationtester.c

index da5ac9ee6c55413a6978a1f96d53eff6bdd75453..0a9d25ce9ca12617683cdd4d1e2161eb7263948e 100644 (file)
@@ -699,8 +699,7 @@ run_permutation(TestSpec *testspec, int nsteps, Step **steps)
  * have executed additional steps in the permutation.
  *
  * When calling this function on behalf of a given step for a second or later
- * time, pass the STEP_RETRY flag.  In this case we don't need to recheck
- * whether it's waiting for a lock.
+ * time, pass the STEP_RETRY flag.  This only affects the messages printed.
  *
  * If the query returns an error, the message is saved in step->errormsg.
  * Caller should call report_error_message shortly after this, to have it
@@ -748,14 +747,6 @@ try_complete_step(Step *step, int flags)
            {
                int         ntuples;
 
-               /*
-                * If this is a retry, assume without checking that the step
-                * is still blocked.  This rule saves a lot of PREP_WAITING
-                * queries and avoids any possible flappiness in the answer.
-                */
-               if (flags & STEP_RETRY)
-                   return true;
-
                res = PQexecPrepared(conns[0], PREP_WAITING, 1,
                                     &backend_pids[step->session + 1],
                                     NULL, NULL, 0);
@@ -770,8 +761,9 @@ try_complete_step(Step *step, int flags)
 
                if (ntuples >= 1)       /* waiting to acquire a lock */
                {
-                   printf("step %s: %s <waiting ...>\n",
-                          step->name, step->sql);
+                   if (!(flags & STEP_RETRY))
+                       printf("step %s: %s <waiting ...>\n",
+                              step->name, step->sql);
                    return true;
                }
                /* else, not waiting */