[ 
https://issues.apache.org/jira/browse/TOMEE-2125?focusedWorklogId=551787&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-551787
 ]

ASF GitHub Bot logged work on TOMEE-2125:
-----------------------------------------

                Author: ASF GitHub Bot
            Created on: 12/Feb/21 12:21
            Start Date: 12/Feb/21 12:21
    Worklog Time Spent: 10m 
      Work Description: rzo1 commented on pull request #762:
URL: https://github.com/apache/tomee/pull/762#issuecomment-778163688


   Alright. I will also backport it to 7.0.x and 7.1.x


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
[email protected]


Issue Time Tracking
-------------------

    Worklog Id:     (was: 551787)
    Time Spent: 0.5h  (was: 20m)

> Datasource config: MaxWait, timeBetweenEvictionRunsMillis and 
> MinEvictableIdleTimeMillis are ignored
> ----------------------------------------------------------------------------------------------------
>
>                 Key: TOMEE-2125
>                 URL: https://issues.apache.org/jira/browse/TOMEE-2125
>             Project: TomEE
>          Issue Type: Bug
>          Components: TomEE Core Server
>    Affects Versions: 7.0.6, 7.1.3, 8.0.6
>            Reporter: Sylvain Berthouzoz
>            Assignee: Richard Zowalla
>            Priority: Major
>              Labels: configuration
>          Time Spent: 0.5h
>  Remaining Estimate: 0h
>
> MaxWait Property is ignored because it will always be removed.
> As example, this is my configuration in tomee.xml
> {code:xml}
> <Resource id="database" type="javax.sql.DataSource">
>         JdbcDriver = com.mysql.jdbc.Driver
>         JdbcUrl = jdbc:mysql://localhost:3306/dbname?useSSL=false
>         UserName = username
>         Password = somepw
>         MaxActive = 20
>         MaxIdle = 20
>         MinIdle = 2
>         InitialSize = 2
>         MaxWait = 5000
>         TestOnBorrow = true
>         ValidationQuery = select 1
>         timeBetweenEvictionRuns = 7200000
>         MinEvictableIdleTimeMillis = 7200000
>         TestWhileIdle = true
>     </Resource>
> {code}
> The error is in the file 
> {{openejb-core-7.0.3.jar!\org\apache\openejb\resource\jdbc\DataSourceFactory}}
>  where it looks for values, instead of looking for key (line 356):
> {code:java}
> private static void convert(Properties properties, Duration duration, String 
> key, String oldKey) {
>         properties.remove(key);
>         if(!properties.contains(oldKey)) {
>             properties.remove(oldKey);
>             if(duration != null) {
>                 if(duration.getUnit() == null) {
>                     duration.setUnit(TimeUnit.MILLISECONDS);
>                 }
>                 long milliseconds = 
> TimeUnit.MILLISECONDS.convert(duration.getTime(), duration.getUnit());
>                 properties.put(oldKey, String.valueOf(milliseconds));
>             }
>         }
>     }
> {code}
> {{properties.contains(oldKey)}} should be replaced by 
> {{properties.containsKey(oldKey)}}
> So all properties which uses this convert method are ignored:
> {code:java}
> convert(properties, maxWaitTime, "maxWaitTime", "maxWait");
> convert(properties, timeBetweenEvictionRuns, "timeBetweenEvictionRuns", 
> "timeBetweenEvictionRunsMillis");
> convert(properties, minEvictableIdleTime, "minEvictableIdleTime", 
> "minEvictableIdleTimeMillis");
> {code}
> ----
> *WORKAROUD*
> To avoid that, it is possible to have fake properties in tomee.xml with the 
> ignored property as value (see the ignoreMe properties at the end):
> {code:xml}
>     <Resource id="smclient" type="javax.sql.DataSource">
>         JdbcDriver = com.mysql.jdbc.Driver
>         JdbcUrl = jdbc:mysql://localhost:3306/dbname?useSSL=false
>         UserName = username
>         Password = somepw
>         MaxActive = 20
>         MaxIdle = 20
>         MinIdle = 2
>         InitialSize = 2
>         MaxWait = 5000
>         TestOnBorrow = true
>         ValidationQuery = select 1
>         timeBetweenEvictionRunsMillis = 7200000
>         MinEvictableIdleTimeMillis = 7200000
>         TestWhileIdle = true
>         ignoreMe = maxWait
>         ignoreMe2 = timeBetweenEvictionRunsMillis
>         ignoreMe3 = minEvictableIdleTimeMillis
>     </Resource>
> {code}
> Then the values are correctly set to the datasources (verified with visualvm 
> in the datasource MBean)



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to