mirror of https://github.com/citusdata/citus.git
Fix bug introduced by #6412
In #6412 I made a change to not re-assign the global PID if it was already set. This inadvertently introduced a regression where `userId` and `databaseId` would not be set on the backend data when the global PID was assigned in the authentication hook. This fixes it by doing two things: 1. Removing `userId` from `BackendData`, since it's not used anywhere anyway. 2. Move assignment of `databaseId` to InitializeBackendData.fix-issue-wit-6412-v2
parent
f56904fe04
commit
ab080cad93
|
@ -678,6 +678,7 @@ StartupCitusBackend(void)
|
|||
* the gpid from the application_name.
|
||||
*/
|
||||
AssignGlobalPID();
|
||||
|
||||
RegisterConnectionCleanup();
|
||||
}
|
||||
|
||||
|
|
|
@ -717,6 +717,7 @@ InitializeBackendData(const char *applicationName)
|
|||
SpinLockAcquire(&MyBackendData->mutex);
|
||||
MyBackendData->distributedCommandOriginator = IsExternalClientBackend();
|
||||
MyBackendData->globalPID = gpid;
|
||||
MyBackendData->databaseId = MyDatabaseId;
|
||||
SpinLockRelease(&MyBackendData->mutex);
|
||||
|
||||
/*
|
||||
|
@ -765,7 +766,6 @@ UnSetGlobalPID(void)
|
|||
|
||||
MyBackendData->globalPID = 0;
|
||||
MyBackendData->databaseId = 0;
|
||||
MyBackendData->userId = 0;
|
||||
MyBackendData->distributedCommandOriginator = false;
|
||||
|
||||
SpinLockRelease(&MyBackendData->mutex);
|
||||
|
@ -923,14 +923,10 @@ AssignGlobalPID(void)
|
|||
globalPID = ExtractGlobalPID(application_name);
|
||||
}
|
||||
|
||||
Oid userId = GetUserId();
|
||||
|
||||
SpinLockAcquire(&MyBackendData->mutex);
|
||||
|
||||
MyBackendData->globalPID = globalPID;
|
||||
MyBackendData->distributedCommandOriginator = distributedCommandOriginator;
|
||||
MyBackendData->databaseId = MyDatabaseId;
|
||||
MyBackendData->userId = userId;
|
||||
|
||||
SpinLockRelease(&MyBackendData->mutex);
|
||||
}
|
||||
|
|
|
@ -36,7 +36,6 @@
|
|||
typedef struct BackendData
|
||||
{
|
||||
Oid databaseId;
|
||||
Oid userId;
|
||||
slock_t mutex;
|
||||
bool cancelledDueToDeadlock;
|
||||
uint64 globalPID;
|
||||
|
@ -60,6 +59,7 @@ extern void AssignDistributedTransactionId(void);
|
|||
extern void AssignGlobalPID(void);
|
||||
extern void SetBackendDataGlobalPID(uint64 globalPID);
|
||||
extern uint64 GetGlobalPID(void);
|
||||
extern void SetBackendDataAfterAuthData(void);
|
||||
extern void SetBackendDataDistributedCommandOriginator(bool
|
||||
distributedCommandOriginator);
|
||||
extern uint64 ExtractGlobalPID(const char *applicationName);
|
||||
|
|
Loading…
Reference in New Issue