[ https://issues.apache.org/jira/browse/VFS-396?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17135656#comment-17135656 ]
chenshuming commented on VFS-396: --------------------------------- I can't see this problem in my test. The RamFileSystem can detect the file's size become too large and throw Exception. I notice this issue's description says : ``` there is a check if (fs.size() + newSize - this.size() > maxSize) .... For every resize check, fs.size() would be 0 ``` In current VFS project, the check is "if (fs.size() + newSize - this.size() > maxSize)", And I can see "fs.size()" is the file system current size instead of 0 . So I think this check work and maybe this issue should close. > RAM FileSystem allows the file system size to exceed the max size limit. > ------------------------------------------------------------------------ > > Key: VFS-396 > URL: https://issues.apache.org/jira/browse/VFS-396 > Project: Commons VFS > Issue Type: Bug > Affects Versions: 2.0 > Environment: All > Reporter: Rupesh Kumar > Priority: Major > Original Estimate: 0.5h > Remaining Estimate: 0.5h > > When a new file is created in the RAM file system, and content is written to > its outputstream, there is a check in place for ensuring that file system > size does not exceed the max limit set. But that check is wrong. > In RamFileOutputStream.write(), you calculate the size, newsize and call > file.resize(newSize) > And in the RamFileObject.resize(), there is a check > if (fs.size() + newSize - this.size() > maxSize) > { > throw new IOException("FileSystem capacity (" + maxSize > + ") exceeded."); > } > This check is wrong. > Consider this case of a new file system where the file system size is set to > 5 MB and I am trying to create a file of 10 MB in the RAM file system. the > file is being written in the chunk of 8 kb. For every resize check, fs.size() > would be 0 and (newsize - this.size()) would be 8 kb and therefore the check > never passes. > It could have been correct if the "old size" was locked down to the size > that was registered with the file system but the old size (this.size()) keeps > changing at every write. Thus the difference in newSize and this.size() would > always be the chunk size (typically 8 kb) and therefore no exception would be > thrown ever. -- This message was sent by Atlassian Jira (v8.3.4#803005)