Re: logical decoding : exceeded maxAllocatedDescs for .spill files
От | Amit Khandekar |
---|---|
Тема | Re: logical decoding : exceeded maxAllocatedDescs for .spill files |
Дата | |
Msg-id | CAJ3gD9cHzhYGS-E-+5Rc-aVbpYZUOmpmGJ19ANtcTSpGY63CJA@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: logical decoding : exceeded maxAllocatedDescs for .spill files (Amit Khandekar <amitdkhan.pg@gmail.com>) |
Ответы |
Re: logical decoding : exceeded maxAllocatedDescs for .spill files
|
Список | pgsql-hackers |
On Wed, 27 Nov 2019 at 14:16, Amit Khandekar <amitdkhan.pg@gmail.com> wrote: > What I found was : We do attempt to close the opened vfds in the > PG_CATCH block. In ReorderBufferCommit(), ReorderBufferIterTXNFinish > is called both in PG_TRY and PG_CATCH. This closes all the opened > vfds. But the issue is : if the ereport() occurs inside > ReorderBufferIterTXNInit(), then iterstate is still NULL. So in > PG_CATCH, ReorderBufferIterTXNFinish() is not called, so the vfds in > state->entries[] remain open. > > We can have &iterstate passed to ReorderBufferIterTXNInit() as another > argument, and initialize it first thing inside the function. This way, > it will never be NULL. But need to be careful about the possibility of > having a iterstate in a half-cooked state, so cleanup might use some > uninitialized handles. Will work on it. At least, we can make sure the > iterstate->entries handle doesn't have junk values. Done as stated above; attached v3 patch. I have verified that the file handles do get closed in PG_CATCH block via ReorderBufferIterTXNFinish(). -- Thanks, -Amit Khandekar EnterpriseDB Corporation The Postgres Database Company
Вложения
В списке pgsql-hackers по дате отправления: