diff --git a/src/backend/utils/mmgr/aset.c b/src/backend/utils/mmgr/aset.c index 2fe36c7505b..888d598cc5e 100644 --- a/src/backend/utils/mmgr/aset.c +++ b/src/backend/utils/mmgr/aset.c @@ -412,6 +412,19 @@ AllocSetContextCreateInternal(MemoryContext parent, freelist->first_free = (AllocSet) set->header.nextchild; freelist->num_free--; + if (set->maxBlockSize != maxBlockSize) + { + Size expectedChunkLimit = ALLOC_CHUNK_LIMIT; + + while (expectedChunkLimit + ALLOC_CHUNKHDRSZ > + (maxBlockSize - ALLOC_BLOCKHDRSZ) / ALLOC_CHUNK_FRACTION) + expectedChunkLimit >>= 1; + + elog(LOG, "EVAN: recycling AllocSet context \"%s\": maxBlockSize %zu -> %zu, allocChunkLimit retained %zu, expected %zu", + name, (Size) set->maxBlockSize, maxBlockSize, + (Size) set->allocChunkLimit, expectedChunkLimit); + } + /* Update its maxBlockSize; everything else should be OK */ set->maxBlockSize = maxBlockSize;