[SqueakDBX] Connection not Valid problem

Mariano Martinez Peck marianopeck at gmail.com
Wed Sep 23 23:12:10 UTC 2009


On Wed, Sep 23, 2009 at 8:25 PM, John Toohey <jt at parspro.com> wrote:

> Hi,
>


Hi John! This list is SqueakDBX related, so perhaps I am not the best one to
help you. I just make Glorp and PostgreSQL native driver to work on Pharo.
Actually, the only thing I did is to have all green tests. No more than
that. I don't have a Glorp + native postgresql driver application. Anyway, I
will try to help you ;)



> My app frequently losses the connection the Postgres, and throws a
> "Connection not Valid" exception. Unfortunately on the latest Pharo images,
> there is a bug that causes this to write the stack trace to disk, and then
> the image locks up.
>

you meat there is a Pharo bug that when there is a walkback and the
stacktrace is written to disk, it freezes the image ?  is there a bug report
of that ? Could you reproduce that ?


>  I think the socket on the PGConnection class is being closed or times out,
> and I need to know is there someway that I can debug this or if its a know
> issue.
>
>
Yes, that's probably the case. I can see in code that the error 'Connection
not valid' when the connection is not connected or if it is nil. If you see
your stacktrace, you can see that the socket variable is nil. That's why the
error. Now, the question is why the socket is nil ?

I looked for the code to see where can be the socket set to nil, and I found
some places:  PGConnection stTerminalError:  , stTerminated
Perhaps you can put a "self halt" in those methods and then debug them.

The PGConnection seems to do a lot of "self log: 'XXXX'". So, perhaps you
can have a Transcript opened to see that.

Finally, why don't you give a try to GlorpDBX + SqueakDBX ?   It works
pretty well and has good performance.

I hope this helps. Remember I am not a native postgresql driver guru.
Perhaps you can ask also in squeak-dev or pharo mailing lists.

Best,

Mariano


> I am using the latest Pharo image, with the latest Pharo-Glorp package, and
> the newest Postgres driver. I think this is the relevant part of the stack
> trace :-
>
>
> PGConnection(Object)>>error:
> Receiver: a PGConnection
> Arguments and temporary variables:
>  aString: 'Connection not valid'
> Receiver's instance variables:
>  trace: 0
> state: #Terminated
>  events: an OrderedCollection()
> socket: nil
>  readBuffer: 'PblankT id ��name �$password �6client...etc...
> readIndex: 384
>  lastReadIndex: 384
> writeBuffer: nil
>  processId: 28132
> secretKey: 1795051851
>  sql: 'SELECT t1.id, t1.name, t1.password, t1.client, t1.role, t1.mobile,
> t1.ema...etc...
>  functionCallOid: nil
> functionCallArgs: nil
>  copyStream: nil
> result: a PGResult
>  connectionArgs: a PGConnectionArgs
> notificationSubscribers: nil
>  fieldConverters: an IdentityDictionary(16->[closure] in PGConnection
> class>>boo...etc...
>  sqlStringConverter: [closure] in PGConnection>>clientEncoding:
> receivingTextConverter: an UTF8TextConverter
>
> PGConnection>>execute:
> Receiver: a PGConnection
> Arguments and temporary variables:
>  sqlString: 'SELECT t1.id, t1.typename, t1.description, t1.selectioncount,
> t1.pr...etc...
>  Receiver's instance variables:
> trace: 0
>  state: #Terminated
> events: an OrderedCollection()
>  socket: nil
> readBuffer: 'PblankT id ��name �$password �6client...etc...
>  readIndex: 384
> lastReadIndex: 384
>  writeBuffer: nil
> processId: 28132
>  secretKey: 1795051851
> sql: 'SELECT t1.id, t1.name, t1.password, t1.client, t1.role, t1.mobile,
> t1.ema...etc...
>  functionCallOid: nil
> functionCallArgs: nil
>  copyStream: nil
> result: a PGResult
>  connectionArgs: a PGConnectionArgs
> notificationSubscribers: nil
>  fieldConverters: an IdentityDictionary(16->[closure] in PGConnection
> class>>boo...etc...
>  sqlStringConverter: [closure] in PGConnection>>clientEncoding:
> receivingTextConverter: an UTF8TextConverter
>
> SqueakDatabaseAccessor>>basicExecuteSQLString:
> Receiver: a SqueakDatabaseAccessor
> Arguments and temporary variables:
>  aString: 'SELECT t1.id, t1.typename, t1.description, t1.selectioncount,
> t1.prio...etc...
>  result: nil
> rowCollection: nil
>  Receiver's instance variables:
> connection: a PGConnection
>  currentLogin: a Login(a PostgreSQLPlatform, 'postgres', '847129',
> 'localhost_ju...etc...
>  logging: true
> reusePreparedStatements: nil
>  deniedCommands: nil
> mutex: a Semaphore()
>  dependents: nil
> isInTransaction: false
>
> Any help would be appreciated, as this is stopping me from going to a Beta
> test at the moment.
>
> Thanks,
>
>
>
> --
> -JT
>
>
>
> _______________________________________________
> SqueakDBX mailing list
> SqueakDBX at lists.squeakfoundation.org
> http://lists.squeakfoundation.org/mailman/listinfo/squeakdbx
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/squeakdbx/attachments/20090923/66420c33/attachment.htm


More information about the SqueakDBX mailing list