Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Don't track mounts for
newResource()
that doesn't exist #10886Don't track mounts for
newResource()
that doesn't exist #10886Changes from 2 commits
0b30e3e
d01b55a
c0e3c5b
89b1ed9
4c85365
62c6b6e
File filter
Filter by extension
Conversations
Jump to
There are no files selected for viewing
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@gregw cannot have this be 1.
As the FileSystemPool is JVM wide, not ResourceFactory specific.
If 2 Resources, in different ResourceFactories access the same JAR these need to be tracked via the Resource -> Mount so that they can be dereferenced and FileSystem closed at the right time. That tracking occurs so that the close() of the ResourceFactory can properly dereference count the FileSystem use.
If we have
resRoot
cause the mount, andresInfoTxt
reuse the mount, then there's not sufficient information to know how to eventually close that mount (especially so when the same jar is referenced as a Resource in 2 different ResourceFactory instances)There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@joakime if two
ResourceFactory
s open the same jar file, then each should have it listed as a single mount point. When both factories are closed, then the mount point can be unmounted. How many resources that a given factory creates against its single mount is irrelevant to the reference counting for the close.Fundamentally, the number of mount points in the factory for:
should be identical to
The count of mounts must be independent of how many resources are created against it.
The problem is in
mountIfNeeded(URI uri)
as it is always mounting, even if not needed. It should be checking existing mounts and not mount again if it is already mounted.