mirror of https://github.com/citusdata/citus.git
Merge pull request #1591 from citusdata/fix-shard-cache-inval
Fix possible shard cache incoherency.pull/1662/head
commit
91d9b41822
|
@ -642,11 +642,18 @@ LookupShardCacheEntry(int64 shardId)
|
||||||
|
|
||||||
if (!shardEntry->tableEntry->isValid)
|
if (!shardEntry->tableEntry->isValid)
|
||||||
{
|
{
|
||||||
|
Oid oldRelationId = shardEntry->tableEntry->relationId;
|
||||||
|
Oid currentRelationId = LookupShardRelation(shardId);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The cache entry might not be valid right now. Reload cache entry
|
* The relation OID to which the shard belongs could have changed,
|
||||||
* and recheck (as the offset might have changed).
|
* most notably when the extension is dropped and a shard ID is
|
||||||
|
* reused. Reload the cache entries for both old and new relation
|
||||||
|
* ID and then look up the shard entry again.
|
||||||
*/
|
*/
|
||||||
LookupDistTableCacheEntry(shardEntry->tableEntry->relationId);
|
LookupDistTableCacheEntry(oldRelationId);
|
||||||
|
LookupDistTableCacheEntry(currentRelationId);
|
||||||
|
|
||||||
recheck = true;
|
recheck = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue