cayenne-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Andrus Adamchik <and...@objectstyle.org>
Subject Re: Reconnecting automatically after DB downtime
Date Mon, 07 Mar 2016 20:51:24 GMT
Yep. Cayenne built-in pool is intentionally basic with a minimal number of features (Here we
may be dealing with a bug though, and I'd like to fix it, but that's a separate issue). So
yeah, using a third party DS may be a good idea. Here is an example how you can set it up:

DataSource ds = // instantiate it via API specific to you DS provider

ServerRuntime runtime = ServerRuntimeBuilder.builder().dataSource(ds).build();
// of course add any other things you need to add to the builder to get a working Cayenne
stack.

Andrus


> On Mar 7, 2016, at 12:45 PM, Hugi Thordarson <hugi@karlmenn.is> wrote:
> 
> Thanks John! I’m going to try my hand at HikariCP.
> 
> Are there any examples anywhere on how to configure Cayenne to use a third party connection
pool?
> 
> Cheers,
> - hugi
> 
> 
> 
> 
>> On 7. mar. 2016, at 20:39, John Huss <johnthuss@gmail.com> wrote:
>> 
>> EOF can do JNDI, but that's not going to do anything to fix your problem.
>> 
>> The connection pool in cayenne had some changes somewhat recently so it's
>> entirely possible there are bugs.
>> 
>> In practice it turns out many people don't use the connection pool built-in
>> to Cayenne at all, and rather use a third-party connection pool, of which
>> there are several.  The cayenne one is decent, but it is very limited in
>> functionality and less robust due to having a smaller user base and being a
>> non-core feature.
>> 
>> You can use another pool like:
>> hikari <https://github.com/brettwooldridge/HikariCP> - If I was starting a
>> new project I'd use this
>> tomcat-jdbc <https://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html> -
>> This is what I currently use
>> commonds-dbcp <https://commons.apache.org/proper/commons-dbcp/>
>> c3po <http://www.mchange.com/projects/c3p0/>
>> 
>> The main reason I turned to a third-party connection pool was to get
>> fair-scheduling which will provide connections to whoever has been waiting
>> the longest, which helps avoid unnecessary errors caused by serving
>> requests out of order.
>> 
>> John
>> 
>> On Mon, Mar 7, 2016 at 2:31 PM Michael Gentry <mgentry@masslight.net> wrote:
>> 
>>> Well, I'm not sure what you are using to run your web application, but
>>> Tomcat, Jetty, JBoss, etc all have mechanisms to provide JNDI lookups of DB
>>> connection pools.  You just tell Cayenne Modeler to use JNDI lookup and
>>> give it the JNDI name, then configure the container to provide the DB
>>> connection.
>>> 
>>> Is your WO application using EOF or Cayenne?  Been a while since I used WO,
>>> but I'd be stunned if EOF cannot use a JNDI lookup as well.
>>> 
>>> mrg
>>> 
>>> 
>>> On Mon, Mar 7, 2016 at 3:07 PM, Hugi Thordarson <hugi@karlmenn.is> wrote:
>>> 
>>>> Hi Michael,
>>>> does using JNDI change anything about the connection itself, isn’t it
>>> just
>>>> a different method of looking up connection information?
>>>> 
>>>> But I probably can’t use it anyway since one of the apps is a WebObjects
>>>> app and doesn’t provide a JNDI service (at least I’ve never used it).
>>>> 
>>>> Thanks,
>>>> - hugi
>>>> 
>>>> 
>>>>> On 7. mar. 2016, at 19:13, Michael Gentry <mgentry@masslight.net>
>>> wrote:
>>>>> 
>>>>> Hi Hugi,
>>>>> 
>>>>> Since this appears to be a web-based application, can you switch to
>>> using
>>>>> JNDI?
>>>>> 
>>>>> mrg
>>>>> 
>>>>> 
>>>>> On Mon, Mar 7, 2016 at 5:46 AM, Hugi Thordarson <hugi@karlmenn.is>
>>>> wrote:
>>>>> 
>>>>>> Hi all,
>>>>>> This is still happening, even after I added a validationQuery, our
app
>>>> is
>>>>>> dying quite frequently :(.  I’m not quite sure how to debug this,
is
>>>> there
>>>>>> any way for me to catch where connections are being opened in the
code
>>>> and
>>>>>> at what location they’re hanging?
>>>>>> 
>>>>>> 
>>>>>> 
>>>> 
>>> https://www.dropbox.com/s/8jkmh6513s6wwkn/Screenshot%202016-03-07%2010.21.53.png?dl=0
>>>>>> 
>>>>>> Cheer,
>>>>>> - hugi
>>>>>> 
>>>>>> // Hugi Thordarson
>>>>>> // http://www.loftfar.is/
>>>>>> // s. 895-6688
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>>> On 29. feb. 2016, at 11:25, Andrus Adamchik <andrus@objectstyle.org>
>>>>>> wrote:
>>>>>>> 
>>>>>>> 
>>>>>>>> On Feb 29, 2016, at 2:20 PM, Hugi Thordarson <hugi@karlmenn.is>
>>>> wrote:
>>>>>>>> 
>>>>>>>> What does validationQuery do?
>>>>>>> 
>>>>>>> Periodically executes for each pooled connection, and kills
>>> connections
>>>>>> that throw during validation. So it ensures that all pooled
>>> connections
>>>> are
>>>>>> in a good state.
>>>>>>> 
>>>>>>> Andrus
>>>>>>> 
>>>>>> 
>>>>>> 
>>>> 
>>>> 
>>> 
> 


Mime
View raw message