in src/afs.cc [1577:1637]
void signaled()
{
Action action;
{
auto session = find_session();
SharedSessionReleaser sessionReleaser(sessions_, session);
ProcessorLockGuard lock(this);
action = session->action;
session->action = Action::None;
}
P("%s: %s: signaled: before: %s", Tag, tag_, action_name(action));
PG_TRY();
{
switch (action)
{
case Action::Select:
select();
break;
case Action::Update:
update();
break;
case Action::Prepare:
prepare();
break;
case Action::ClosePreparedStatement:
close_prepared_statement();
break;
case Action::SetParameters:
set_parameters();
break;
case Action::SelectPreparedStatement:
select_prepared_statement();
break;
case Action::UpdatePreparedStatement:
update_prepared_statement();
break;
default:
// TODO: Report an error
break;
}
}
PG_CATCH();
{
auto session = find_session();
SharedSessionReleaser sessionReleaser(sessions_, session);
if (!DsaPointerIsValid(session->errorMessage))
{
auto error = CopyErrorData();
set_error_message(session,
std::string("failed to run: ") + action_name(action) +
": " + error->message,
"unexpected error");
FreeErrorData(error);
}
pgstat_report_activity(STATE_IDLE, nullptr);
PG_RE_THROW();
}
PG_END_TRY();
pgstat_report_activity(STATE_IDLE, nullptr);
P("%s: %s: signaled: after: %s", Tag, tag_, action_name(action));
}