in src/afs.cc [779:798]
explicit WorkerProcessor(const char* tag) : Processor(tag), sessions_(nullptr)
{
LWLockAcquire(AddinShmemInitLock, LW_EXCLUSIVE);
bool found;
sharedData_ = static_cast<SharedData*>(
ShmemInitStruct(SharedDataName, sizeof(sharedData_), &found));
if (!found)
{
LWLockRelease(AddinShmemInitLock);
ereport(ERROR,
errcode(ERRCODE_INTERNAL_ERROR),
errmsg("%s: %s: shared data isn't created yet", Tag, tag_));
}
area_ = dsa_attach(sharedData_->handle);
SessionsParams.tranche_id = sharedData_->sessionsTrancheID;
sessions_ =
dshash_attach(area_, &SessionsParams, sharedData_->sessionsHandle, nullptr);
lock_ = &(GetNamedLWLockTranche(LWLockTrancheName)[0].lock);
LWLockRelease(AddinShmemInitLock);
}