Re: Protect syscache from bloating with negative cache entries

From: Thomas Munro <thomas(dot)munro(at)enterprisedb(dot)com>
To: Kyotaro HORIGUCHI <horiguchi(dot)kyotaro(at)lab(dot)ntt(dot)co(dot)jp>
Cc: Peter Eisentraut <peter(dot)eisentraut(at)2ndquadrant(dot)com>, Jim Nasby <Jim(dot)Nasby(at)bluetreble(dot)com>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Robert Haas <robertmhaas(at)gmail(dot)com>, Craig Ringer <craig(at)2ndquadrant(dot)com>, Pg Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Protect syscache from bloating with negative cache entries
Date: 2017-09-02 00:12:47
Message-ID: CAEepm=3wqPFFSKP_yhkuHLZtOOwZskGuHJdSctVnbHQ4DFEH+Q@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Mon, Aug 28, 2017 at 9:24 PM, Kyotaro HORIGUCHI
<horiguchi(dot)kyotaro(at)lab(dot)ntt(dot)co(dot)jp> wrote:
> This patch have had interferences from several commits after the
> last submission. I amended this patch to follow them (up to
> f97c55c), removed an unnecessary branch and edited some comments.

Hi Kyotaro-san,

This applies but several regression tests fail for me. Here is a
sample backtrace:

frame #3: 0x000000010f0614c0
postgres`ExceptionalCondition(conditionName="!(attnum < 0 ? attnum ==
(-2) : cache->cc_tupdesc->attrs[attnum].atttypid == 26)",
errorType="FailedAssertion", fileName="catcache.c", lineNumber=1384) +
128 at assert.c:54
frame #4: 0x000000010f03b5fd
postgres`CollectOIDsForHashValue(cache=0x00007fe273821268,
hashValue=994410284, attnum=0) + 253 at catcache.c:1383
frame #5: 0x000000010f055e8e
postgres`SysCacheSysCacheInvalCallback(arg=140610577303984, cacheid=0,
hashValue=994410284) + 94 at syscache.c:1692
frame #6: 0x000000010f03fbbb
postgres`CallSyscacheCallbacks(cacheid=0, hashvalue=994410284) + 219
at inval.c:1468
frame #7: 0x000000010f03f878
postgres`LocalExecuteInvalidationMessage(msg=0x00007fff51213ff8) + 88
at inval.c:566
frame #8: 0x000000010ee7a3f2
postgres`ReceiveSharedInvalidMessages(invalFunction=(postgres`LocalExecuteInvalidationMessage
at inval.c:555), resetFunction=(postgres`InvalidateSystemCaches at
inval.c:647)) + 354 at sinval.c:121
frame #9: 0x000000010f03fcb7 postgres`AcceptInvalidationMessages +
23 at inval.c:686
frame #10: 0x000000010eade609 postgres`AtStart_Cache + 9 at xact.c:987
frame #11: 0x000000010ead8c2f postgres`StartTransaction + 655 at xact.c:1921
frame #12: 0x000000010ead8896 postgres`StartTransactionCommand +
70 at xact.c:2691
frame #13: 0x000000010eea9746 postgres`start_xact_command + 22 at
postgres.c:2438
frame #14: 0x000000010eea722e
postgres`exec_simple_query(query_string="RESET SESSION
AUTHORIZATION;") + 126 at postgres.c:913
frame #15: 0x000000010eea68d7 postgres`PostgresMain(argc=1,
argv=0x00007fe2738036a8, dbname="regression", username="munro") + 2375
at postgres.c:4090
frame #16: 0x000000010eded40e
postgres`BackendRun(port=0x00007fe2716001a0) + 654 at
postmaster.c:4357
frame #17: 0x000000010edec793
postgres`BackendStartup(port=0x00007fe2716001a0) + 483 at
postmaster.c:4029
frame #18: 0x000000010edeb785 postgres`ServerLoop + 597 at postmaster.c:1753
frame #19: 0x000000010ede8f71 postgres`PostmasterMain(argc=8,
argv=0x00007fe271403860) + 5553 at postmaster.c:1361
frame #20: 0x000000010ed0ccd9 postgres`main(argc=8,
argv=0x00007fe271403860) + 761 at main.c:228
frame #21: 0x00007fff8333a5ad libdyld.dylib`start + 1

--
Thomas Munro
http://www.enterprisedb.com

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Thomas Munro 2017-09-02 00:21:30 Re: Optional message to user when terminating/cancelling backend
Previous Message Michael Paquier 2017-09-02 00:11:59 Re: More replication race conditions