@@ -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