]> granicus.if.org Git - postgresql/commitdiff
Revert "isolationtester: don't repeat the is-it-waiting query when retrying a step."
authorTom Lane <tgl@sss.pgh.pa.us>
Fri, 12 Feb 2016 22:12:23 +0000 (17:12 -0500)
committerTom Lane <tgl@sss.pgh.pa.us>
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 */