Stale SQLite connection

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

Stale SQLite connection

Jeff Gray
In my code I'm opening a sqlite connection and keeping it open rather than
opening and closing one on each transaction.
Generally it's working well.
I often save and close my image. When I then reopen the image I still have a
connection and it says it's open, but using it gives me an error.
This is easily recovered. I just open a new connection.
Is there a way I can see if a connection is still good, in my code?
Or should I be opening and closing connections every transaction? I haven't
benchmarked it but I'm assuming it would be slower.
I guess I could set my connection to nil in a start-up script. That would
cause my code to get a new connection after a break from development.
Any recommendations?
Thanks, Jeff.



--
Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html

Reply | Threaded
Open this post in threaded view
|

Re: Stale SQLite connection

vince
Hi Jeff

Is this you from Brisbane? Did you used to come to the meetups at the State Library?

Well anyway, I used to do something similar to what you describe, by lazy initializing the connection and also checking to see if it is open.

dbConnection

        dbConnection ifNil: [ dbConenction := SQLiteConnection on: self dbFilePath ].

        dbConnection isOpen ifFalse: [ dbConnection open ].

        ^ dbConnection

I have not noticed it being "slow", but then I use transactions wherever I can. Hope that helps.

Vince

-----Original Message-----
From: Pharo-users <[hidden email]> On Behalf Of Jeff Gray
Sent: Friday, 13 March 2020 3:21 PM
To: [hidden email]
Subject: [Pharo-users] Stale SQLite connection

EXTERNAL: Do not click links or open attachments if you do not recognize the sender.

In my code I'm opening a sqlite connection and keeping it open rather than opening and closing one on each transaction.
Generally it's working well.
I often save and close my image. When I then reopen the image I still have a connection and it says it's open, but using it gives me an error.
This is easily recovered. I just open a new connection.
Is there a way I can see if a connection is still good, in my code?
Or should I be opening and closing connections every transaction? I haven't benchmarked it but I'm assuming it would be slower.
I guess I could set my connection to nil in a start-up script. That would cause my code to get a new connection after a break from development.
Any recommendations?
Thanks, Jeff.



--
Sent from: https://urldefense.com/v3/__http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html__;!!I_DbfM1H!W84lOUCjvBSA4STxHvipemoZbklbEwmIFj2p7q5hydOucrDJvxnbgHGVSI_r8LDw8X7-8fSLew$ 

Reply | Threaded
Open this post in threaded view
|

Re: Stale SQLite connection

Erik Stel
In reply to this post by Jeff Gray
Jeff,

You could have a look at SmalltalkImage>>#addToShutDownList: and
SmalltalkImage>>#addToStartUpList: to stop/(re)start the connection when
image is closed or a snapshot is taken. Add a method #startUp: to handle
reconnecting. See for example Clipboard>>#startUp:

Cheers,
Erik




--
Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html

Reply | Threaded
Open this post in threaded view
|

Re: Stale SQLite connection

Jeff Gray
In reply to this post by vince
Hey Vince!
Yes it's me. Hope you're well.
Those meetings were fun. Shame they petered out, though I now live much
further away so I wouldn't be attending anymore.

Yep - that lazy eval looks very similar to my code.

I think that in general operation, my application would not normally have a
problem as the connection won't become stale so for convenience I think I'll
set the connection to nil in my start-up script.

Thanks guys.



--
Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html