[ 
https://issues.apache.org/jira/browse/HBASE-18597?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Ben Borchard updated HBASE-18597:
---------------------------------
    Summary: ExportSnapshot tool closes FileSystems objects obtained from the 
cache  (was: ExportSnapshot tool is closing a FileSystem object obtained from 
the cache)

> ExportSnapshot tool closes FileSystems objects obtained from the cache
> ----------------------------------------------------------------------
>
>                 Key: HBASE-18597
>                 URL: https://issues.apache.org/jira/browse/HBASE-18597
>             Project: HBase
>          Issue Type: Bug
>          Components: snapshots
>            Reporter: Ben Borchard
>              Labels: snapshot, snapshots
>   Original Estimate: 0.25h
>  Remaining Estimate: 0.25h
>
> In the ExportSnapshot tool the input and output FileSystem objects are being 
> obtained using the method _FileSystem.get_ which will either create a new 
> FileSystem object or simply take an existing object out of the cache if a 
> suitable one exists.
> After it is done with the these FileSystem objects it will close them.
> The issue here is that the ExportSnapshot tool will potentially remove 
> preexisting FileSystem objects from the cache by closing said objects.  This 
> will break any apis running in the same process that are relying on these 
> cached FileSystem objects.
> A simple solution could, I believe, fix this problem without affecting the 
> functionality of the ExportSnapshot tool:
> Change ExportSnapshot.java lines 943:
> {{FileSystem inputFs = FileSystem.get(inputRoot.toUri(), srcConf);}}
> and 947:
> {{FileSystem outputFs = FileSystem.get(outputRoot.toUri(), destConf);}}
> to use _FileSystem.newInstance_ instead of _FileSystem.get_:
> 943
> {{FileSystem inputFs = FileSystem.newInstance(inputRoot.toUri(), srcConf);}}
> 947
> {{FileSystem outputFs = FileSystem.newInstance(outputRoot.toUri(), 
> destConf);}}
> This will create a unique entry in the cache and in this way prevent the 
> closure of these FileSystem objects from wiping out any preexisting 
> FileSystem objects.  It will also ensure that no unused FileSystem objects 
> created by the ExportSnapshot tool will be left taking up heap space and 
> potentially causing memory issues.
> I am happy to submit a fix for this, but figured I would open an issue first 
> so the issue can be properly discussed and tracked.  
> Also note this is the first issue I have opened so I apologize in advance for 
> any standard procedures and/or best practices I haven't followed.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to