[ https://issues.apache.org/jira/browse/PIG-1313?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Daniel Dai updated PIG-1313: ---------------------------- Resolution: Fixed Hadoop Flags: [Reviewed] Status: Resolved (was: Patch Available) PIG-1313-4.patch committed to trunk. Will come with Pig 0.8 release. This issue is about memory leak and it is hard to write a unit test for it. Bill tested it manually and it works. Thanks Bill for contributing! > PigServer leaks memory over time > -------------------------------- > > Key: PIG-1313 > URL: https://issues.apache.org/jira/browse/PIG-1313 > Project: Pig > Issue Type: Bug > Components: impl > Affects Versions: 0.7.0 > Reporter: Bill Graham > Assignee: Bill Graham > Fix For: 0.8.0 > > Attachments: PIG-1313-0.4.0-1.patch, PIG-1313-0.4.0-4.patch, > PIG-1313-1.patch, PIG-1313-1.patch, PIG-1313-2.patch, PIG-1313-3.patch, > PIG-1313-4.patch, 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.