heterodb / pg-strom

PG-Strom - Master development repository
http://heterodb.github.io/pg-strom/
Other
1.27k stars 163 forks source link

devtype/devfunc cache invalidation timing #749

Closed kaigai closed 2 months ago

kaigai commented 2 months ago

pgstrom_devcache_invalidator が呼ばれると、まだ参照中の devtype, devfunc のキャッシュがあっても解放されてしまう。

relation_openrv() から AcceptInvalidationMessages() が呼ばれるパスが存在するので、cache invalidationの方法を考えないとダメ。 main.c に遅延解放の仕組みを入れるなどして、キャッシュ解放のタイミングを後にずらすなど。

タイミング問題なので、再現も結構難しい。

kaigai commented 2 months ago

MemoryContextの親を付け替えて、PortalContextの破棄タイミングで解放されるように修正。 これで、Path-construction中のmemory-contextの破壊は防がれる。

kaigai commented 2 months ago

あー、しかし。厳密に大丈夫かどうかは微妙かも。。。。