[jira] [Updated] (JCR-3568) Property.getBinary().getStream() files in tempDir not removed by InputStream.close() nor by Binary.dispose()
[ https://issues.apache.org/jira/browse/JCR-3568?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Julian Reschke updated JCR-3568: Description: I need to inspect the the files stored to the jcr:data-Property in Node jcr:content which is a subnode of a nt:file-Node. Access mode is WebDAV using JCR 2.0-API. Jackrabbit does not drop the temp files created by the command Property.getBinary().getStream() by the closing instructions InputStream.close() nor Binary.dispose(). I get a RepositoryException "No space left on device" when the tempspace becomes full. The executed code is; {code} public class DownloadLoopMain { private final static Logger LOGGER = LoggerFactory.getLogger("Test.DownloadLoopMain"); String repository = "http://localhost:8080/server;; String user="admin"; String password="admin"; Session session; File temp = new File(System.getProperty("java.io.tmpdir")); List nodeList = new ArrayList(); public DownloadLoopMain() throws Exception { LOGGER.info("TempDir=" + temp.getPath()); long totalsize=0; connectRepository(); buildNodeList(); Listtempfiles = getTempFiles(temp.listFiles()); LOGGER.info("Start with number of files in Tempdir:" + tempfiles.size()); for (String node : nodeList) { LOGGER.info("Retrieve node " + node); Node currentNode=session.getNode(node); Node fileNode = currentNode.getNode("jcr:content"); Property jcrdata = fileNode.getProperty("jcr:data"); Binary fileBin=jcrdata.getBinary(); long filesize=fileBin.getSize(); totalsize+=filesize; InputStream file = fileBin.getStream(); LOGGER.info("Now we have number of files in Tempdir:" + tempfiles.size()); List newTempfiles = getTempFiles(temp.listFiles()); // Display new files in temp-directory compareTempfiles("new", newTempfiles, tempfiles); // Display files gone from temp-directory compareTempfiles("gone", tempfiles, newTempfiles); tempfiles=newTempfiles; file.close(); fileBin.dispose(); } } /** * Compare List of tempfiles. * @param intend * @param list1 * @param list2 */ public void compareTempfiles(String intend, List list1, List list2 ) { for (String[] list1file : list1) { boolean known=false; for (int i=0; i< list2.size(); i++) { String[] list2file=list2.get(i); if (list1file[0].equals(list2file[0])) { known=true; break; } } if (!known) { LOGGER.info(intend + " tempfile=" + list1file[0]+ " " + list1file[1]); } } } public List getTempFiles(File[] files) { List filesList = new ArrayList (); for (File file : files) { String[] filedesc = new String[2]; filedesc[0]=file.getName(); filedesc[1]=file.length()+""; filesList.add(filedesc); } return filesList; } public void buildNodeList() throws IOException { String path ="E:/Jackrabbit/logs/Populate-Files.log"; File file = new File(path); BufferedReader br = new BufferedReader(new FileReader(file)); String line; while ((line=br.readLine())!=null) { nodeList.add(line); } br.close(); String knownPath="/content/dam/ebase/privatebase/en/media/franz/2012/11_november/1211_VV-Interview_en_640x320_VP8.webm/jcr:content/renditions/original"; } private void connectRepository() throws Exception { LOGGER.info("About ot connect to " + this.repository); Repository repository =
[jira] [Updated] (JCR-3568) Property.getBinary().getStream() files in tempDir not removed by InputStream.close() nor by Binary.dispose()
[ https://issues.apache.org/jira/browse/JCR-3568?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Julian Reschke updated JCR-3568: Description: I need to inspect the the files stored to the jcr:data-Property in Node jcr:content which is a subnode of a nt:file-Node. Access mode is WebDAV using JCR 2.0-API. Jackrabbit does not drop the temp files created by the command Property.getBinary().getStream() by the closing instructions InputStream.close() nor Binary.dispose(). I get a RepositoryException "No space left on device" when the tempspace becomes full. The executed code is; public class DownloadLoopMain { private final static Logger LOGGER = LoggerFactory.getLogger("Test.DownloadLoopMain"); String repository = "http://localhost:8080/server;; String user="admin"; String password="admin"; Session session; File temp = new File(System.getProperty("java.io.tmpdir")); List nodeList = new ArrayList(); public DownloadLoopMain() throws Exception { LOGGER.info("TempDir=" + temp.getPath()); long totalsize=0; connectRepository(); buildNodeList(); Listtempfiles = getTempFiles(temp.listFiles()); LOGGER.info("Start with number of files in Tempdir:" + tempfiles.size()); for (String node : nodeList) { LOGGER.info("Retrieve node " + node); Node currentNode=session.getNode(node); Node fileNode = currentNode.getNode("jcr:content"); Property jcrdata = fileNode.getProperty("jcr:data"); Binary fileBin=jcrdata.getBinary(); long filesize=fileBin.getSize(); totalsize+=filesize; InputStream file = fileBin.getStream(); LOGGER.info("Now we have number of files in Tempdir:" + tempfiles.size()); List newTempfiles = getTempFiles(temp.listFiles()); // Display new files in temp-directory compareTempfiles("new", newTempfiles, tempfiles); // Display files gone from temp-directory compareTempfiles("gone", tempfiles, newTempfiles); tempfiles=newTempfiles; file.close(); fileBin.dispose(); } } /** * Compare List of tempfiles. * @param intend * @param list1 * @param list2 */ public void compareTempfiles(String intend, List list1, List list2 ) { for (String[] list1file : list1) { boolean known=false; for (int i=0; i< list2.size(); i++) { String[] list2file=list2.get(i); if (list1file[0].equals(list2file[0])) { known=true; break; } } if (!known) { LOGGER.info(intend + " tempfile=" + list1file[0]+ " " + list1file[1]); } } } public List getTempFiles(File[] files) { List filesList = new ArrayList (); for (File file : files) { String[] filedesc = new String[2]; filedesc[0]=file.getName(); filedesc[1]=file.length()+""; filesList.add(filedesc); } return filesList; } public void buildNodeList() throws IOException { String path ="E:/Jackrabbit/logs/Populate-Files.log"; File file = new File(path); BufferedReader br = new BufferedReader(new FileReader(file)); String line; while ((line=br.readLine())!=null) { nodeList.add(line); } br.close(); String knownPath="/content/dam/ebase/privatebase/en/media/franz/2012/11_november/1211_VV-Interview_en_640x320_VP8.webm/jcr:content/renditions/original"; } private void connectRepository() throws Exception { LOGGER.info("About ot connect to " + this.repository); Repository repository = org.apache.jackrabbit.commons.JcrUtils.getRepository(this.repository);
[jira] [Updated] (JCR-3568) Property.getBinary().getStream() files in tempDir not removed by InputStream.close() nor by Binary.dispose()
[ https://issues.apache.org/jira/browse/JCR-3568?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Tobias Bocanegra updated JCR-3568: -- Attachment: jcr3568-r1482639.patch new patch that implements a ref counter to avoid disposal of still used binaries. Property.getBinary().getStream() files in tempDir not removed by InputStream.close() nor by Binary.dispose() - Key: JCR-3568 URL: https://issues.apache.org/jira/browse/JCR-3568 Project: Jackrabbit Content Repository Issue Type: Bug Components: jackrabbit-spi-commons, jackrabbit-webdav Affects Versions: 2.4, 2.6, 2.7 Environment: Windows 7 Pro, Java 6.0.39, WebDAV, JCR 2.0 Reporter: Ulrich Schmidt Attachments: jcr3568-r1482639.patch I need to inspect the the files stored to the jcr:data-Property in Node jcr:content which is a subnode of a nt:fille-Node. Access mode is WebDAV using JCR 2.0-API. Jackrabbit does not drop the tempfiles created by the command Property.getBinary().getStream() by the closing instruchtions InputStream.close() nor Binary.dispose(). I get a RepositoryException No space left on device when der tempsace becomes full. The executed code is; public class DownloadLoopMain { private final static Logger LOGGER = LoggerFactory.getLogger(Test.DownloadLoopMain); String repository = http://localhost:8080/server;; String user=admin; String password=admin; Session session; File temp = new File(System.getProperty(java.io.tmpdir)); ListString nodeList = new ArrayListString(); public DownloadLoopMain() throws Exception { LOGGER.info(TempDir= + temp.getPath()); long totalsize=0; connectRepository(); buildNodeList(); ListString[] tempfiles = getTempFiles(temp.listFiles()); LOGGER.info(Start with number of files in Tempdir: + tempfiles.size()); for (String node : nodeList) { LOGGER.info(Retrieve node + node); Node currentNode=session.getNode(node); Node fileNode = currentNode.getNode(jcr:content); Property jcrdata = fileNode.getProperty(jcr:data); Binary fileBin=jcrdata.getBinary(); long filesize=fileBin.getSize(); totalsize+=filesize; InputStream file = fileBin.getStream(); LOGGER.info(Now we have number of files in Tempdir: + tempfiles.size()); ListString[] newTempfiles = getTempFiles(temp.listFiles()); // Display new files in temp-directory compareTempfiles(new, newTempfiles, tempfiles); // Display files gone from temp-directory compareTempfiles(gone, tempfiles, newTempfiles); tempfiles=newTempfiles; file.close(); fileBin.dispose(); } } /** * Compare List of tempfiles. * @param intend * @param list1 * @param list2 */ public void compareTempfiles(String intend, ListString[] list1, ListString[] list2 ) { for (String[] list1file : list1) { boolean known=false; for (int i=0; i list2.size(); i++) { String[] list2file=list2.get(i); if (list1file[0].equals(list2file[0])) { known=true; break; } } if (!known) { LOGGER.info(intend + tempfile= + list1file[0]+ + list1file[1]); } } } public ListString[] getTempFiles(File[] files) { ListString[] filesList = new ArrayListString[](); for (File file : files) { String[] filedesc = new String[2]; filedesc[0]=file.getName(); filedesc[1]=file.length()+; filesList.add(filedesc); } return filesList; } public void buildNodeList() throws IOException { String path =E:/Jackrabbit/logs/Populate-Files.log; File file = new File(path);
[jira] [Updated] (JCR-3568) Property.getBinary().getStream() files in tempDir not removed by InputStream.close() nor by Binary.dispose()
[ https://issues.apache.org/jira/browse/JCR-3568?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Tobias Bocanegra updated JCR-3568: -- Affects Version/s: 2.4 Property.getBinary().getStream() files in tempDir not removed by InputStream.close() nor by Binary.dispose() - Key: JCR-3568 URL: https://issues.apache.org/jira/browse/JCR-3568 Project: Jackrabbit Content Repository Issue Type: Bug Components: jackrabbit-spi-commons, jackrabbit-webdav Affects Versions: 2.4, 2.6, 2.7 Environment: Windows 7 Pro, Java 6.0.39, WebDAV, JCR 2.0 Reporter: Ulrich Schmidt I need to inspect the the files stored to the jcr:data-Property in Node jcr:content which is a subnode of a nt:fille-Node. Access mode is WebDAV using JCR 2.0-API. Jackrabbit does not drop the tempfiles created by the command Property.getBinary().getStream() by the closing instruchtions InputStream.close() nor Binary.dispose(). I get a RepositoryException No space left on device when der tempsace becomes full. The executed code is; public class DownloadLoopMain { private final static Logger LOGGER = LoggerFactory.getLogger(Test.DownloadLoopMain); String repository = http://localhost:8080/server;; String user=admin; String password=admin; Session session; File temp = new File(System.getProperty(java.io.tmpdir)); ListString nodeList = new ArrayListString(); public DownloadLoopMain() throws Exception { LOGGER.info(TempDir= + temp.getPath()); long totalsize=0; connectRepository(); buildNodeList(); ListString[] tempfiles = getTempFiles(temp.listFiles()); LOGGER.info(Start with number of files in Tempdir: + tempfiles.size()); for (String node : nodeList) { LOGGER.info(Retrieve node + node); Node currentNode=session.getNode(node); Node fileNode = currentNode.getNode(jcr:content); Property jcrdata = fileNode.getProperty(jcr:data); Binary fileBin=jcrdata.getBinary(); long filesize=fileBin.getSize(); totalsize+=filesize; InputStream file = fileBin.getStream(); LOGGER.info(Now we have number of files in Tempdir: + tempfiles.size()); ListString[] newTempfiles = getTempFiles(temp.listFiles()); // Display new files in temp-directory compareTempfiles(new, newTempfiles, tempfiles); // Display files gone from temp-directory compareTempfiles(gone, tempfiles, newTempfiles); tempfiles=newTempfiles; file.close(); fileBin.dispose(); } } /** * Compare List of tempfiles. * @param intend * @param list1 * @param list2 */ public void compareTempfiles(String intend, ListString[] list1, ListString[] list2 ) { for (String[] list1file : list1) { boolean known=false; for (int i=0; i list2.size(); i++) { String[] list2file=list2.get(i); if (list1file[0].equals(list2file[0])) { known=true; break; } } if (!known) { LOGGER.info(intend + tempfile= + list1file[0]+ + list1file[1]); } } } public ListString[] getTempFiles(File[] files) { ListString[] filesList = new ArrayListString[](); for (File file : files) { String[] filedesc = new String[2]; filedesc[0]=file.getName(); filedesc[1]=file.length()+; filesList.add(filedesc); } return filesList; } public void buildNodeList() throws IOException { String path =E:/Jackrabbit/logs/Populate-Files.log; File file = new File(path); BufferedReader br = new BufferedReader(new FileReader(file)); String line; while ((line=br.readLine())!=null) {
[jira] [Updated] (JCR-3568) Property.getBinary().getStream() files in tempDir not removed by InputStream.close() nor by Binary.dispose()
[ https://issues.apache.org/jira/browse/JCR-3568?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Julian Reschke updated JCR-3568: Component/s: jackrabbit-spi-commons Affects Version/s: 2.7 Property.getBinary().getStream() files in tempDir not removed by InputStream.close() nor by Binary.dispose() - Key: JCR-3568 URL: https://issues.apache.org/jira/browse/JCR-3568 Project: Jackrabbit Content Repository Issue Type: Bug Components: jackrabbit-spi-commons, jackrabbit-webdav Affects Versions: 2.6, 2.7 Environment: Windows 7 Pro, Java 6.0.39, WebDAV, JCR 2.0 Reporter: Ulrich Schmidt I need to inspect the the files stored to the jcr:data-Property in Node jcr:content which is a subnode of a nt:fille-Node. Access mode is WebDAV using JCR 2.0-API. Jackrabbit does not drop the tempfiles created by the command Property.getBinary().getStream() by the closing instruchtions InputStream.close() nor Binary.dispose(). I get a RepositoryException No space left on device when der tempsace becomes full. The executed code is; public class DownloadLoopMain { private final static Logger LOGGER = LoggerFactory.getLogger(Test.DownloadLoopMain); String repository = http://localhost:8080/server;; String user=admin; String password=admin; Session session; File temp = new File(System.getProperty(java.io.tmpdir)); ListString nodeList = new ArrayListString(); public DownloadLoopMain() throws Exception { LOGGER.info(TempDir= + temp.getPath()); long totalsize=0; connectRepository(); buildNodeList(); ListString[] tempfiles = getTempFiles(temp.listFiles()); LOGGER.info(Start with number of files in Tempdir: + tempfiles.size()); for (String node : nodeList) { LOGGER.info(Retrieve node + node); Node currentNode=session.getNode(node); Node fileNode = currentNode.getNode(jcr:content); Property jcrdata = fileNode.getProperty(jcr:data); Binary fileBin=jcrdata.getBinary(); long filesize=fileBin.getSize(); totalsize+=filesize; InputStream file = fileBin.getStream(); LOGGER.info(Now we have number of files in Tempdir: + tempfiles.size()); ListString[] newTempfiles = getTempFiles(temp.listFiles()); // Display new files in temp-directory compareTempfiles(new, newTempfiles, tempfiles); // Display files gone from temp-directory compareTempfiles(gone, tempfiles, newTempfiles); tempfiles=newTempfiles; file.close(); fileBin.dispose(); } } /** * Compare List of tempfiles. * @param intend * @param list1 * @param list2 */ public void compareTempfiles(String intend, ListString[] list1, ListString[] list2 ) { for (String[] list1file : list1) { boolean known=false; for (int i=0; i list2.size(); i++) { String[] list2file=list2.get(i); if (list1file[0].equals(list2file[0])) { known=true; break; } } if (!known) { LOGGER.info(intend + tempfile= + list1file[0]+ + list1file[1]); } } } public ListString[] getTempFiles(File[] files) { ListString[] filesList = new ArrayListString[](); for (File file : files) { String[] filedesc = new String[2]; filedesc[0]=file.getName(); filedesc[1]=file.length()+; filesList.add(filedesc); } return filesList; } public void buildNodeList() throws IOException { String path =E:/Jackrabbit/logs/Populate-Files.log; File file = new File(path); BufferedReader br = new BufferedReader(new FileReader(file)); String line; while
[jira] [Updated] (JCR-3568) Property.getBinary().getStream() files in tempDir not removed by InputStream.close() nor by Binary.dispose()
[ https://issues.apache.org/jira/browse/JCR-3568?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Stefan Guggisberg updated JCR-3568: --- Component/s: (was: jackrabbit-api) jackrabbit-webdav Priority: Major (was: Blocker) this is not a jackrabbit-core issue. i ran your test code against a local repository with the default configuration (created with new TransientRepository()). i used test files with a total size of about 1gb. there were no temp files created. this might be a sling issue or a webdav-client or -server issue. to further narrow down the problem please run your test with the following configurations: - standalone repository accessed in-proc (not deployed in sling) - standalone repository server accessed via webdav (not deployed in sling) Property.getBinary().getStream() files in tempDir not removed by InputStream.close() nor by Binary.dispose() - Key: JCR-3568 URL: https://issues.apache.org/jira/browse/JCR-3568 Project: Jackrabbit Content Repository Issue Type: Bug Components: jackrabbit-webdav Affects Versions: 2.6 Environment: Windows 7 Pro, Java 6.0.39, WebDAV, JCR 2.0 Reporter: Ulrich Schmidt I need to inspect the the files stored to the jcr:data-Property in Node jcr:content which is a subnode of a nt:fille-Node. Access mode is WebDAV using JCR 2.0-API. Jackrabbit does not drop the tempfiles created by the command Property.getBinary().getStream() by the closing instruchtions InputStream.close() nor Binary.dispose(). I get a RepositoryException No space left on device when der tempsace becomes full. The executed code is; public class DownloadLoopMain { private final static Logger LOGGER = LoggerFactory.getLogger(Test.DownloadLoopMain); String repository = http://localhost:8080/server;; String user=admin; String password=admin; Session session; File temp = new File(System.getProperty(java.io.tmpdir)); ListString nodeList = new ArrayListString(); public DownloadLoopMain() throws Exception { LOGGER.info(TempDir= + temp.getPath()); long totalsize=0; connectRepository(); buildNodeList(); ListString[] tempfiles = getTempFiles(temp.listFiles()); LOGGER.info(Start with number of files in Tempdir: + tempfiles.size()); for (String node : nodeList) { LOGGER.info(Retrieve node + node); Node currentNode=session.getNode(node); Node fileNode = currentNode.getNode(jcr:content); Property jcrdata = fileNode.getProperty(jcr:data); Binary fileBin=jcrdata.getBinary(); long filesize=fileBin.getSize(); totalsize+=filesize; InputStream file = fileBin.getStream(); LOGGER.info(Now we have number of files in Tempdir: + tempfiles.size()); ListString[] newTempfiles = getTempFiles(temp.listFiles()); // Display new files in temp-directory compareTempfiles(new, newTempfiles, tempfiles); // Display files gone from temp-directory compareTempfiles(gone, tempfiles, newTempfiles); tempfiles=newTempfiles; file.close(); fileBin.dispose(); } } /** * Compare List of tempfiles. * @param intend * @param list1 * @param list2 */ public void compareTempfiles(String intend, ListString[] list1, ListString[] list2 ) { for (String[] list1file : list1) { boolean known=false; for (int i=0; i list2.size(); i++) { String[] list2file=list2.get(i); if (list1file[0].equals(list2file[0])) { known=true; break; } } if (!known) { LOGGER.info(intend + tempfile= + list1file[0]+ + list1file[1]); } } } public ListString[] getTempFiles(File[] files) { ListString[] filesList = new ArrayListString[](); for (File file :