void wait_server_read()

in src/afs.cc [612:651]


	void wait_server_read(SharedRingBuffer* buffer)
	{
		if (ARROW_PREDICT_FALSE(sharedData_->serverPID == InvalidPid))
		{
			ereport(ERROR,
			        errcode(ERRCODE_INTERNAL_ERROR),
			        errmsg("%s: %s: server isn't alive", Tag, tag_));
		}

		P("%s: %s: %s: kill server: %d", Tag, tag_, AFS_FUNC, sharedData_->serverPID);
		kill(sharedData_->serverPID, SIGUSR1);
		auto restSize = buffer->rest_size();
		while (true)
		{
			int events = WL_LATCH_SET | WL_EXIT_ON_PM_DEATH;
			WaitLatch(MyLatch, events, -1, PG_WAIT_EXTENSION);
			if (GotSIGTERM)
			{
				break;
			}
			ResetLatch(MyLatch);

			if (GotSIGUSR1)
			{
				GotSIGUSR1 = false;
				P("%s: %s: %s: wait: read: %d:%d",
				  Tag,
				  tag_,
				  AFS_FUNC,
				  buffer->rest_size(),
				  restSize);
				if (buffer->rest_size() != restSize)
				{
					break;
				}
			}

			CHECK_FOR_INTERRUPTS();
		}
	}