On May 1, 2015 3:16 PM, "Mike Grogan" <d.michael.gro...@gmail.com> wrote:

> Oh and I meant to say that I am experiencing the problem under the second
> configuration I posted as well.
>
> Thanks,
>
> Mike
> On May 1, 2015 12:32 PM, "Mike Grogan" <d.michael.gro...@gmail.com> wrote:
>
>> Ok, now my answers .... hope your holiday is going well ....
>>
>> For JNDI, I was initially using the JNDI PostGIS Example settings from
>> http://geoserver.geo-solutions.it/multidim/en/imagemosaic/mosaic_datastore.html,
>> so my configuration looked like:
>>
>>
>>  <Resource
>>         name="jdbc/stormprint"
>>         auth="Container"
>>         type="javax.sql.DataSource"
>>         driverClassName="org.postgresql.Driver"
>>         url="jdbc:postgresql://localhost/stormprint"
>>         username="XXXXXXXXXXXXXXXXX"
>>         password="XXXXXXXXXXXXXXXXX"
>>         maxActive="20"
>>         maxIdle="10"
>>         maxWait="10000"
>>         minEvictableIdleTimeMillis="300000"
>>         timeBetweenEvictionRunsMillis="300000"
>>         validationQuery="SELECT 1"/>
>>
>> So, I followed the textbook example for JNDI for GeoServer, including a
>> validation query.  I was experiencing the described problem under this
>> example configuration.
>>
>> I then started experimenting with the configuration, and found that if I
>> manually killed the db connections in postgres: "SELECT
>> pg_terminate_backend(PID#);", GeoServer would absolutely not recover from
>> this ... for display ... for anything ... it was just choking on any
>> JNDI-backed stores.  If I removed both of the eviction settings in the last
>> few rows (keeping validation), I could kill the connections as much as I
>> wanted, and GeoServer would recover.
>>
>> So, what I ended up with now is:
>>
>>  <Resource
>>   name="jdbc/stormprint"
>>   auth="Container"
>>   type="javax.sql.DataSource"
>>   driverClassName="org.postgresql.Driver"
>>   url="jdbc:postgresql://localhost/stormprint"
>>   username="XXXXXXXXXXXXXXXXXXXXXXXXX"
>>   password="XXXXXXXXXXXXXXXXXXXXXXXXX"
>>   maxActive="20"
>>   maxIdle="10"
>>   maxWait="10000"
>>   testOnBorrow="true"
>>   testOnReturn="true"
>>   validationQuery="SELECT 1"
>>   validationQueryTimeout="2"/>
>>
>> As you can see, I added testOnBorrow and testOnReturn.
>>
>> Looking at your code, which seems to be in
>> https://github.com/geotools/geotools/blob/12.x/modules/library/jdbc/src/main/java/org/geotools/jdbc/JDBCDataStoreFactory.java
>> (for my future reference), maybe I should be adding in a testWhileIdle to
>> the JNDI configuration?
>>
>> Thoughts?
>>
>> Thanks again,
>>
>> Mike
>>
>>
>>
>>
>>
>>
>>
>> On Fri, May 1, 2015 at 9:45 AM, Andrea Aime <andrea.a...@geo-solutions.it
>> > wrote:
>>
>>> On Fri, May 1, 2015 at 3:40 AM, Mike Grogan <d.michael.gro...@gmail.com>
>>> wrote:
>>>
>>>> (GeoServer 2.6.2, Postgres 9.3.6; Ubuntu 14.04; JNDI pools via Tomcat)
>>>>
>>>> I am experiencing another hard to track down issue with harvesting /
>>>> creating new image mosaics via REST ... that seems to be occurring after
>>>> time passes.
>>>>
>>>
>>> By the description this is similar to a typical connection pool issue
>>> with lack of use for several hours, the connections are closed by the
>>> database
>>> end, the connection pool has no way to know, and grabbing the connection
>>> ends up having to time out, with everything locked up (if you have a
>>> validation query, otherwise it fails in other ways).
>>>
>>> Do you have the validation query setup in your JNDI connection pool?
>>> Also, what about the followoing params, that we are setting up in our
>>> normal data stores, that are there to deal with the issues
>>> of connections not being used for several hours? (sorry for pasting
>>> code, today is a holiday in Italy, have to be expedient as I'm
>>> getting out of the house):
>>>
>>> Boolean testWhileIdle = (Boolean) TEST_WHILE_IDLE.lookUp(params);
>>>         if(testWhileIdle != null) {
>>>             dataSource.setTestWhileIdle(testWhileIdle);
>>>         }
>>>
>>>         Integer timeBetweenEvictorRuns = (Integer)
>>> TIME_BETWEEN_EVICTOR_RUNS.lookUp(params);
>>>         if(timeBetweenEvictorRuns != null && timeBetweenEvictorRuns > 0)
>>> {
>>>
>>> dataSource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictorRuns * 1000l);
>>>         }
>>>
>>>         Integer minEvictableTime = (Integer)
>>> MIN_EVICTABLE_TIME.lookUp(params);
>>>         if(minEvictableTime != null) {
>>>             dataSource.setMinEvictableIdleTimeMillis(minEvictableTime *
>>> 1000l);
>>>         }
>>>
>>>         Integer evictorTestsPerRun = (Integer)
>>> EVICTOR_TESTS_PER_RUN.lookUp(params);
>>>         if(evictorTestsPerRun != null) {
>>>             dataSource.setNumTestsPerEvictionRun(evictorTestsPerRun);
>>>         }
>>>
>>> Cheers
>>> Andrea
>>>
>>> --
>>> ==
>>> GeoServer Professional Services from the experts! Visit
>>> http://goo.gl/NWWaa2 for more information.
>>> ==
>>>
>>> Ing. Andrea Aime
>>> @geowolf
>>> Technical Lead
>>>
>>> GeoSolutions S.A.S.
>>> Via Poggio alle Viti 1187
>>> 55054  Massarosa (LU)
>>> Italy
>>> phone: +39 0584 962313
>>> fax: +39 0584 1660272
>>> mob: +39  339 8844549
>>>
>>> http://www.geo-solutions.it
>>> http://twitter.com/geosolutions_it
>>>
>>> *AVVERTENZE AI SENSI DEL D.Lgs. 196/2003*
>>>
>>> Le informazioni contenute in questo messaggio di posta elettronica e/o
>>> nel/i file/s allegato/i sono da considerarsi strettamente riservate. Il
>>> loro utilizzo è consentito esclusivamente al destinatario del messaggio,
>>> per le finalità indicate nel messaggio stesso. Qualora riceviate questo
>>> messaggio senza esserne il destinatario, Vi preghiamo cortesemente di
>>> darcene notizia via e-mail e di procedere alla distruzione del messaggio
>>> stesso, cancellandolo dal Vostro sistema. Conservare il messaggio stesso,
>>> divulgarlo anche in parte, distribuirlo ad altri soggetti, copiarlo, od
>>> utilizzarlo per finalità diverse, costituisce comportamento contrario ai
>>> principi dettati dal D.Lgs. 196/2003.
>>>
>>>
>>>
>>> The information in this message and/or attachments, is intended solely
>>> for the attention and use of the named addressee(s) and may be confidential
>>> or proprietary in nature or covered by the provisions of privacy act
>>> (Legislative Decree June, 30 2003, no.196 - Italy's New Data Protection
>>> Code).Any use not in accord with its purpose, any disclosure, reproduction,
>>> copying, distribution, or either dissemination, either whole or partial, is
>>> strictly forbidden except previous formal approval of the named
>>> addressee(s). If you are not the intended recipient, please contact
>>> immediately the sender by telephone, fax or e-mail and delete the
>>> information in this message that has been received in error. The sender
>>> does not give any warranty or accept liability as the content, accuracy or
>>> completeness of sent messages and accepts no responsibility  for changes
>>> made after they were sent or for other risks which arise as a result of
>>> e-mail transmission, viruses, etc.
>>>
>>> -------------------------------------------------------
>>>
>>
>>
------------------------------------------------------------------------------
One dashboard for servers and applications across Physical-Virtual-Cloud 
Widest out-of-the-box monitoring support with 50+ applications
Performance metrics, stats and reports that give you Actionable Insights
Deep dive visibility with transaction tracing using APM Insight.
http://ad.doubleclick.net/ddm/clk/290420510;117567292;y
_______________________________________________
Geoserver-users mailing list
Geoserver-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-users

Reply via email to