[ 
https://issues.apache.org/jira/browse/TRB-101?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17339700#comment-17339700
 ] 

Georg Kallidis commented on TRB-101:
------------------------------------

Usage of commons-pool2 is integrated in fulcrum-parser v2.0.1, which is used in 
fulcrum-intake v2.0.0 or newer.

Unfortunately this requires at least Servlet-3, which is only used in Turbine 
v5.

As an example, you might then be able to configure the parser with an element 
*pool2 *in the parser Element in componentConfig.xml.

You might check further changes in fulcrum-intake 
[here|http://svn.apache.org/viewvc/turbine/fulcrum/tags/fulcrum-intake-2.0.0/src/changes/changes.xml?view=markup].
{code:java}
<parser>
         <parameterEncoding>utf-8</parameterEncoding>
         <automaticUpload>true</automaticUpload>
        <pool2>
                <!--  cft. defaults in 
org.apache.commons.pool2.impl.BaseObjectPoolConfig and 
GenericKeyedObjectPoolConfig -->
                <maxTotal>2048</maxTotal>
                <blockWhenExhausted>false</blockWhenExhausted>
                <maxWaitMillis>100</maxWaitMillis>
        </pool2>
</parser>
{code}
 
 Are you able to control the commons-pool2 configuration parameters? Might be 
that you could set commons-pool2 parameters in your workaround? See for example 
in the new version of 
[DefaultParserService|http://svn.apache.org/viewvc/turbine/fulcrum/tags/fulcrum-parser-2.0.1/src/java/org/apache/fulcrum/parser/DefaultParserService.java?view=markup#l462].

> Object leak in IntakeTool
> -------------------------
>
>                 Key: TRB-101
>                 URL: https://issues.apache.org/jira/browse/TRB-101
>             Project: Turbine
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: Core 4.0 Final, Core 5.0
>         Environment: Linux
>            Reporter: Susi Berrington
>            Priority: Major
>
> We're trying to upgrade to Turbine4.0 and are finding that everything works 
> fine for a while but then seizes up (blocks).
> Turns out that there's an object leak in the init() method in IntakeTool.
> [http://svn.apache.org/viewvc/turbine/core/trunk/src/java/org/apache/turbine/services/intake/IntakeTool.java?revision=1886259&view=markup#l134]
> {code:java}
> List<Group> foundGroups = intakeService.getGroup(groupNames[i])
>                     .getObjects(pp);{code}
> getGroup() is doing borrowObject() on a commons-pool2 pool but when we do 
> getObjects() our reference to the object borrowed by getGroup() is lost, we 
> can never release the borrowed object.
> I couldn't believe that this was new to 4.0 so I reverted to 2.3.3.  This 
> code is the same but the object pool is 1.5.6 and the limit is not enforced 
> so we get away with the number of objects just going up and up.
> A fix could be:
> {code:java}
> for (int i = groupNames.length - 1; i >= 0; i--)
> {
>     Group foundGroup = null;
>     try
>     {
>         foundGroup = intakeService.getGroup(groupNames[i]);
>         List<Group> foundGroups = foundGroup.getObjects(pp);
>         if (foundGroups != null)
>         {
>             for (Group group : foundGroups)
>             {
>                 groups.put(group.getObjectKey(), group);
>             }
>         }
>     }
>     catch (IntakeException e)
>     {
>         log.error(e);
>     } finally {
>         if (foundGroup != null)
>         {
>             try
>             {
>                 intakeService.releaseGroup(foundGroup);
>             } catch (IntakeException intakeException) {
>                 log.error(intakeException, intakeException);
>             }
>         }   
>     }
>  }
> {code}
>  
> I'm trying to find a way to hack round this. I've created a class which 
> extends IntakeTool and just implements the init() method but I can't 
> initialise pullMap so whenever we tried to actually use Intake we get a 
> NullPointerException as pullMap is still null but is assumed to be 
> initialised, which is fair enough! Can think of a better work around?



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

Reply via email to