Commit 
816e336f12ecabdc834d4cc31bcf966b2dd323dc added the wrong error
 check to async.c; sending restrictions is restricted to the leader,
 not altogether unsafe. 
 Commit 
3bd909b220930f21d6e15833a17947be749e7fde added ExecShutdownNode
 to traverse the planstate tree and call shutdown functions, but made
 a Gather node, the only node that actually has such a function, abort
 the tree traversal, which is wrong.  
 
           #include <unistd.h>
  #include <signal.h>
  
 +#include "access/parallel.h"
  #include "access/slru.h"
  #include "access/transam.h"
  #include "access/xact.h"
      Notification *n;
     MemoryContext oldcontext;
  
 -   if (IsInParallelMode())
 -       elog(ERROR, "cannot send notifications during a parallel operation");
 +   if (IsParallelWorker())
 +       elog(ERROR, "cannot send notifications from a parallel worker");
  
     if (Trace_notify)
         elog(DEBUG1, "Async_Notify(%s)", channel);
             switch (nodeTag(node))
     {
         case T_GatherState:
 -           {
 -               ExecShutdownGather((GatherState *) node);
 -               return true;
 -           }
 +           ExecShutdownGather((GatherState *) node);
             break;
         default:
             break;