mirror of https://github.com/citusdata/citus.git
Ensure job IDs are unique across workers
parent
4a84ee5512
commit
87ae26aef3
|
@ -1713,6 +1713,8 @@ UniqueJobId(void)
|
||||||
Datum sequenceIdDatum = ObjectIdGetDatum(sequenceId);
|
Datum sequenceIdDatum = ObjectIdGetDatum(sequenceId);
|
||||||
Datum jobIdDatum = 0;
|
Datum jobIdDatum = 0;
|
||||||
int64 jobId = 0;
|
int64 jobId = 0;
|
||||||
|
int64 localizedJobId = 0;
|
||||||
|
int64 localGroupId = GetLocalGroupId();
|
||||||
Oid savedUserId = InvalidOid;
|
Oid savedUserId = InvalidOid;
|
||||||
int savedSecurityContext = 0;
|
int savedSecurityContext = 0;
|
||||||
|
|
||||||
|
@ -1723,8 +1725,15 @@ UniqueJobId(void)
|
||||||
jobIdDatum = DirectFunctionCall1(nextval_oid, sequenceIdDatum);
|
jobIdDatum = DirectFunctionCall1(nextval_oid, sequenceIdDatum);
|
||||||
jobId = DatumGetInt64(jobIdDatum);
|
jobId = DatumGetInt64(jobIdDatum);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Add the local group id information to the jobId to
|
||||||
|
* prevent concurrent jobs on different groups to conflict.
|
||||||
|
*/
|
||||||
|
localizedJobId = jobId | (localGroupId << 32);
|
||||||
|
|
||||||
SetUserIdAndSecContext(savedUserId, savedSecurityContext);
|
SetUserIdAndSecContext(savedUserId, savedSecurityContext);
|
||||||
return jobId;
|
|
||||||
|
return localizedJobId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue