@@ -854,12 +854,12 @@ GetRemoteBackendWorkers(PGPROC *proc)
854
854
855
855
sig_result = SendProcSignal (proc -> pid ,WorkerPollReason ,proc -> backendId );
856
856
if (sig_result == -1 )
857
- return NIL ;
857
+ goto signal_error ;
858
858
859
859
mqh = shm_mq_attach (mq ,NULL ,NULL );
860
860
mq_receive_result = shm_mq_receive (mqh ,& msg_len , (void * * )& msg , false);
861
861
if (mq_receive_result != SHM_MQ_SUCCESS )
862
- return NIL ;
862
+ goto mq_error ;
863
863
864
864
for (i = 0 ;i < msg -> number ;i ++ )
865
865
{
@@ -872,6 +872,13 @@ GetRemoteBackendWorkers(PGPROC *proc)
872
872
shm_mq_detach (mq );
873
873
874
874
return result ;
875
+
876
+ signal_error :
877
+ ereport (ERROR , (errcode (ERRCODE_INTERNAL_ERROR ),
878
+ errmsg ("invalid send signal" )));
879
+ mq_error :
880
+ ereport (ERROR , (errcode (ERRCODE_INTERNAL_ERROR ),
881
+ errmsg ("error in message queue data transmitting" )));
875
882
}
876
883
877
884
static shm_mq_msg *
@@ -914,6 +921,9 @@ GetRemoteBackendQueryStates(PGPROC *leader,
914
921
params -> format = format ;
915
922
pg_write_barrier ();
916
923
924
+ /* initialize message queue that will transfer query states */
925
+ mq = shm_mq_create (mq ,QUEUE_SIZE );
926
+
917
927
/*
918
928
* send signal `QueryStatePollReason` to all processes and define all alive
919
929
* ones
@@ -941,7 +951,6 @@ GetRemoteBackendQueryStates(PGPROC *leader,
941
951
}
942
952
943
953
/* extract query state from leader process */
944
- mq = shm_mq_create (mq ,QUEUE_SIZE );
945
954
shm_mq_set_sender (mq ,leader );
946
955
shm_mq_set_receiver (mq ,MyProc );
947
956
mqh = shm_mq_attach (mq ,NULL ,NULL );