hadoop-pig-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Bill Graham (JIRA)" <j...@apache.org>
Subject [jira] Commented: (PIG-1313) PigServer leaks memory over time
Date Thu, 25 Mar 2010 18:48:27 GMT

    [ https://issues.apache.org/jira/browse/PIG-1313?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12849836#action_12849836
] 

Bill Graham commented on PIG-1313:
----------------------------------

Sure, I can work on a patch. Not sure how I'd create a unit test for this though, since it's
a change to how private internals are managed. We should be able to assert the fix though
with the attached test harness that reproduces the issue.

Can you please assign this JIRA to me, or give me permissions to assign?

> PigServer leaks memory over time
> --------------------------------
>
>                 Key: PIG-1313
>                 URL: https://issues.apache.org/jira/browse/PIG-1313
>             Project: Pig
>          Issue Type: Bug
>            Reporter: Bill Graham
>         Attachments: Pig1313Reproducer.java
>
>
> When {{PigServer}} runs it creates temporary files using the {{FileLocalizer.getTemporaryPath(..)}}.
This static method creates and returns a handle to a temporary file (as an instance of {{ElementDescriptor}}).
The {{ElementDescriptors}} returned by this method are kept on a static {{Stack}} named {{toDelete}}.
The items on {{toDelete}} get removed by the {{FileLocalizer.deleteTempFile()}} method.
> The only place in the code where I see {{FileLocalizer.deleteTempFile()}} called is in
the Main class. {{PigServer}} does not call that method though, so a long-running VM that
repeatedly uses instances of {{PigServer}} to run jobs will leak memory via {{toDelete}}.
> One suggested fix is to have {{PigServer.shutdown()}} call {{FileLocalizer.deleteTempFile()}},
but this would cause problems in a multi-threaded environment, since it seems {{ElementDescriptors}}
are pushed onto the {{toDelete}} stack before they're used, not once they're done with. With
this approach, running multiple instances of {{PigServer}} in separate threads could cause
one completed job to clobber the other's still-in-use temp files.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message