[jboss-jira] [JBoss JIRA] (WFLY-12031) Memory leak in wildfly transaction client

Cheng Fang (Jira) issues at jboss.org
Wed Jun 26 10:42:00 EDT 2019


    [ https://issues.jboss.org/browse/WFLY-12031?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13752287#comment-13752287 ] 

Cheng Fang commented on WFLY-12031:
-----------------------------------

[~petrjoac] could you try running with the latest wildfly-transaction-client [1.1.4.Final|https://github.com/wildfly/wildfly-transaction-client/releases/tag/1.1.4.Final], and see if that fixes the issue?  If not, then we will need to apply the proposed fix on [2019-04-30|https://issues.jboss.org/browse/WFLY-12031?focusedCommentId=13728380&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-13728380] on top of 1.1.4.Final.  So either way, I think it's helpful to try out wildfly-transaction-client 1.1.4.Final

> Memory leak in wildfly transaction client
> -----------------------------------------
>
>                 Key: WFLY-12031
>                 URL: https://issues.jboss.org/browse/WFLY-12031
>             Project: WildFly
>          Issue Type: Bug
>          Components: Transactions
>    Affects Versions: 15.0.1.Final
>         Environment: wildfly-transaction-client-1.1.3.Final
> wildfly.15.0.1.Final
> Windows 10
>            Reporter: Joachim Petrich
>            Assignee: Cheng Fang
>            Priority: Critical
>
> After a volume run of our system we recognized millions of entries in the openFilePaths Object of class FileSystemXAResourceRegistry. When enabling traces for org.wildfly.transaction it seems that for adding an entry a xid string is used
> {code:java}
>         XAResourceRegistryFile(Xid xid) throws SystemException {
>             xaRecoveryPath.toFile().mkdir(); // create dir if non existent
>             final String xidString = SimpleXid.of(xid).toHexString('_');
>             this.filePath = xaRecoveryPath.resolve(xidString);
>             openFilePaths.add(*xidString*);
> {code}
> and for removing the entire file path:
> {code:java}
>         protected void removeResource(XAResource resource) throws XAException {
>             if (resources.remove(resource)) {
>                 if (resources.isEmpty()) {
>                     // delete file
>                     try {
>                         if (fileChannel != null) {
>                             fileChannel.close();
>                         }
>                         Files.delete(filePath);
>                         // deleting using the filepath as key caused a memory leak,
>                         // if xid string have been added, therefore build the xid string for removing
>                         openFilePaths.remove(*filePath.toString()*);
>  {code}
> We didn't find any code where this xid are cleaned up.
> As workaround we additionally extract the xid String from the file path and remove the corresponding entry.
> {code:java}
>                         String xidString = filePath.toString().substring(filePath.toString().indexOf(
>                         		xaRecoveryPath.toString()) + xaRecoveryPath.toString().length() + 1);
>                         openFilePaths.remove(xidString);
> {code}



--
This message was sent by Atlassian Jira
(v7.12.1#712002)


More information about the jboss-jira mailing list