@@ -219,15 +219,25 @@ send_history(History *observations, shm_mq_handle *mqh)
219219
220220 mq_result = shm_mq_send (mqh , sizeof (count ), & count , false);
221221 if (mq_result == SHM_MQ_DETACHED )
222+ {
223+ ereport (WARNING ,
224+ (errmsg ("pg_wait_sampling collector: "
225+ "receiver of message queue have been detached" )));
222226 return ;
227+ }
223228 for (i = 0 ; i < count ; i ++ )
224229 {
225230 mq_result = shm_mq_send (mqh ,
226231 sizeof (HistoryItem ),
227232 & observations -> items [i ],
228233 false);
229234 if (mq_result == SHM_MQ_DETACHED )
235+ {
236+ ereport (WARNING ,
237+ (errmsg ("pg_wait_sampling collector: "
238+ "receiver of message queue have been detached" )));
230239 return ;
240+ }
231241 }
232242}
233243
@@ -240,12 +250,27 @@ send_profile(HTAB *profile_hash, shm_mq_handle *mqh)
240250 HASH_SEQ_STATUS scan_status ;
241251 ProfileItem * item ;
242252 Size count = hash_get_num_entries (profile_hash );
253+ shm_mq_result mq_result ;
243254
244- shm_mq_send (mqh , sizeof (count ), & count , false);
255+ mq_result = shm_mq_send (mqh , sizeof (count ), & count , false);
256+ if (mq_result == SHM_MQ_DETACHED )
257+ {
258+ ereport (WARNING ,
259+ (errmsg ("pg_wait_sampling collector: "
260+ "receiver of message queue have been detached" )));
261+ return ;
262+ }
245263 hash_seq_init (& scan_status , profile_hash );
246264 while ((item = (ProfileItem * ) hash_seq_search (& scan_status )) != NULL )
247265 {
248- shm_mq_send (mqh , sizeof (ProfileItem ), item , false);
266+ mq_result = shm_mq_send (mqh , sizeof (ProfileItem ), item , false);
267+ if (mq_result == SHM_MQ_DETACHED )
268+ {
269+ ereport (WARNING ,
270+ (errmsg ("pg_wait_sampling collector: "
271+ "receiver of message queue have been detached" )));
272+ return ;
273+ }
249274 }
250275}
251276
@@ -428,11 +453,7 @@ collector_main(Datum main_arg)
428453 send_profile (profile_hash , mqh );
429454 }
430455 }
431- #if PG_VERSION_NUM >= 100000
432- shm_mq_detach (mqh );
433- #else
434- shm_mq_detach (collector_mq );
435- #endif
456+ shm_mq_detach_compat (mqh , collector_mq );
436457 }
437458 else if (request == PROFILE_RESET )
438459 {
0 commit comments