[elephant-devel] Next issue, this time with Postmodern backend

Leslie P. Polzer leslie.polzer at gmx.net
Tue Feb 26 17:43:51 UTC 2008


Internal Server Error

Database error 53300: connection limit exceeded for non-superusers

0: (BACKTRACE 536870911 #<SB-IMPL::STRING-OUTPUT-STREAM {AB64179}>) 1:
(HUNCHENTOOT:GET-BACKTRACE #<unavailable argument>)
2: ((LAMBDA (COND)) #<CL-POSTGRES:DATABASE-ERROR {AB63DE9}>)
3: ((LAMBDA (COND)) #<CL-POSTGRES:DATABASE-ERROR {AB63DE9}>)
4: (SIGNAL #<CL-POSTGRES:DATABASE-ERROR {AB63DE9}>)
5: (ERROR CL-POSTGRES:DATABASE-ERROR)
6: (CL-POSTGRES::GET-ERROR #<SB-SYS:FD-STREAM for "a socket" {AB62E99}>) 7:
(CL-POSTGRES::GET-ERROR #<SB-SYS:FD-STREAM for "a socket" {AB62E99}>) 8:
(CL-POSTGRES::AUTHENTICATE
    #<SB-SYS:FD-STREAM for "a socket" {AB62E99}>
    "mystic"
    "mystic"
    "mystic-items")
9: (CL-POSTGRES::INITIATE-CONNECTION
    #<CL-POSTGRES:DATABASE-CONNECTION {AB62C59}>)
10: (CL-POSTGRES:OPEN-DATABASE
     "mystic-items"
     "mystic"
     "mystic"
     "127.0.0.1"
     5433)
11: ((FLET SB-THREAD::WITH-MUTEX-THUNK))
12: (SB-UNIX::CALL-WITH-LOCAL-INTERRUPTS
     #<CLOSURE (FLET SB-UNIX::WITH-LOCAL-INTERRUPTS-THUNK) {B5414B4D}> T)
13: ((FLET SB-UNIX::WITHOUT-INTERRUPTS-THUNK) T)
14: ((FLET SB-UNIX::RUN-WITHOUT-INTERRUPTS))
15: (SB-UNIX::CALL-WITHOUT-INTERRUPTS
     #<CLOSURE (FLET SB-UNIX::WITHOUT-INTERRUPTS-THUNK) {B5414C3D}>)
16: (SB-THREAD::CALL-WITH-MUTEX
     #<CLOSURE (FLET SB-THREAD::WITH-MUTEX-THUNK) {B5414CC5}>
     #S(SB-THREAD:MUTEX
        :NAME NIL
        :%OWNER #<SB-THREAD:THREAD "hunchentoot-worker-75" {AD6D541}> :STATE 1)
     #<SB-THREAD:THREAD "hunchentoot-worker-75" {AD6D541}>
     T)
17: ((SB-PCL::FAST-METHOD DB-POSTMODERN::CONTROLLER-CONNECTION-FOR-THREAD
      (DB-POSTMODERN::POSTMODERN-STORE-CONTROLLER))
     #<unavailable argument>
     #<unavailable argument>
     #<POSTMODERN-STORE-CONTROLLER (POSTGRESQL 127.0.0.1 mystic-items mystic
                                    mystic PORT 5433)>)
18: ((SB-PCL::FAST-METHOD ELEPHANT::PERSISTENT-SLOT-BOUNDP
      (DB-POSTMODERN::POSTMODERN-STORE-CONTROLLER T T))
     #<unavailable argument>
     #<unavailable argument>
     #<POSTMODERN-STORE-CONTROLLER (POSTGRESQL 127.0.0.1 mystic-items mystic
                                    mystic PORT 5433)>
     #<WORK oid:79>
     MYSTIC::BLOCKING-TEXT)
19: ((SB-PCL::FAST-METHOD MYSTIC:CLONE (MYSTIC:WORK))
     #<unavailable argument>
     #<unavailable argument>
     #<WORK oid:79>)
20: (MYSTIC::INSTANTIATE-WORK #<WORK oid:79> 720)

[...]


Right after:

(sb-thread:list-all-threads)

(#<SB-THREAD:THREAD "hunchentoot-listener-1" {B8702E9}>
 #<SB-THREAD:THREAD "initial thread" {A723549}>)


Incredible? What's going on here?

I'm subjecting this to a one-person load. All the PG workers pile up idly
until the limit is hit.

There must be something fishy either with PostgreSQL 8 (tested 8.2.6, 8.1.11)
or Postmodern. I tend to put it on the latter, because GRAND-PRIX with CLSQL
doesn't show any problems, nor do any workers accumulate.

Transactions seem to be fine; I myself didn't run any, and the Elephant ones
seem to be neatly delimited, having a matching COMMIT for each BEGIN.

My first wild guess is that Postmodern does not close its connections in some
cases.

I suppose others are using the Postmodern backend with PG8? What are your
results? You can check idle workers easily with something like
"ps aux | grep postgres"

  Leslie





More information about the elephant-devel mailing list