Обсуждение: [GENERAL] too may LWLocks

Поиск
Список
Период
Сортировка

[GENERAL] too may LWLocks

От
hariprasath nallasamy
Дата:
Hi all
I am building an extension using shared memory hash table and for locking hash table i am using LWLocks, but the thing was when i try to run some 1k queries one after other, for each query i am getting one LWLock but on executing 200th query i am getting the error ERROR:  too many LWLocks taken.

But in each query i acquire and release that block. So that lock has to be flushed after executing query, but why am i getting this error.?

Is this due to held_lwlocks in LWLock.c is fixed only to some number 200 here.
Or am i missing something here.?


thanks
harry

Re: [GENERAL] too may LWLocks

От
Julien Rouhaud
Дата:
On Wed, Mar 08, 2017 at 03:34:56PM +0530, hariprasath nallasamy wrote:
> Hi all
> I am building an extension using shared memory hash table and for locking
> hash table i am using LWLocks, but the thing was when i try to run some 1k
> queries one after other, for each query i am getting one LWLock but on
> executing 200th query i am getting the error *ERROR:  too many LWLocks
> taken*.
>
> But in each query i acquire and release that block. So that lock has to be
> flushed after executing query, but why am i getting this error.?
>
> Is this due to *held_lwlocks *in LWLock.c is fixed only to some number 200
> here.
> Or am i missing something here.?

The most likely reason is that you have some code path in your extension where
you don't release the LWLock.  Without access to the code we can't do much more
to help you I'm afraid.  You could also try on a postgres build having
LWLOCK_STATS defined.

--
Julien Rouhaud
http://dalibo.com - http://dalibo.org


Re: [GENERAL] too may LWLocks

От
hariprasath nallasamy
Дата:
oops its my bad implementation.. I was leaking locks and its fixed now. Thanks for the help!

-harry

On Thu, Mar 9, 2017 at 1:07 AM, Julien Rouhaud <julien.rouhaud@dalibo.com> wrote:
On Wed, Mar 08, 2017 at 03:34:56PM +0530, hariprasath nallasamy wrote:
> Hi all
> I am building an extension using shared memory hash table and for locking
> hash table i am using LWLocks, but the thing was when i try to run some 1k
> queries one after other, for each query i am getting one LWLock but on
> executing 200th query i am getting the error *ERROR:  too many LWLocks
> taken*.
>
> But in each query i acquire and release that block. So that lock has to be
> flushed after executing query, but why am i getting this error.?
>
> Is this due to *held_lwlocks *in LWLock.c is fixed only to some number 200
> here.
> Or am i missing something here.?

The most likely reason is that you have some code path in your extension where
you don't release the LWLock.  Without access to the code we can't do much more
to help you I'm afraid.  You could also try on a postgres build having
LWLOCK_STATS defined.

--
Julien Rouhaud
http://dalibo.com - http://dalibo.org