[jira] [Commented] (LUCENE-6225) Clarify documentation of clone() in IndexInput
[ https://issues.apache.org/jira/browse/LUCENE-6225?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14633181#comment-14633181 ] ASF subversion and git services commented on LUCENE-6225: - Commit 1691888 from [~dawidweiss] in branch 'dev/branches/branch_5x' [ https://svn.apache.org/r1691888 ] LUCENE-6225: Clarify documentation of clone/close in IndexInput. Clarify documentation of clone() in IndexInput -- Key: LUCENE-6225 URL: https://issues.apache.org/jira/browse/LUCENE-6225 Project: Lucene - Core Issue Type: Improvement Reporter: Dawid Weiss Assignee: Dawid Weiss Priority: Minor Fix For: Trunk Attachments: LUCENE-6225.patch Here is a snippet from IndexInput's documentation: {code} The original instance must take care that cloned instances throw AlreadyClosedException when the original one is closed. {code} But concrete implementations don't throw this AlreadyClosedException (this would break the contract on Closeable). For example, see NIOFSDirectory: {code} public void close() throws IOException { if (!isClone) { channel.close(); } } {code} What trapped me was that the abstract class IndexInput overrides the default implementation of clone(), but doesn't do anything useful... I guess you could make it final and provide the tracking for cloned instances in this class rather than reimplementing it everywhere else (isCloned() would be a superclass method then too). Thoughts? -- This message was sent by Atlassian JIRA (v6.3.4#6332) - To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org For additional commands, e-mail: dev-h...@lucene.apache.org
[jira] [Commented] (LUCENE-6225) Clarify documentation of clone() in IndexInput
[ https://issues.apache.org/jira/browse/LUCENE-6225?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14633194#comment-14633194 ] ASF subversion and git services commented on LUCENE-6225: - Commit 1691892 from [~dawidweiss] in branch 'dev/trunk' [ https://svn.apache.org/r1691892 ] LUCENE-6225: Clarify documentation of clone/close in IndexInput. Clarify documentation of clone() in IndexInput -- Key: LUCENE-6225 URL: https://issues.apache.org/jira/browse/LUCENE-6225 Project: Lucene - Core Issue Type: Improvement Reporter: Dawid Weiss Assignee: Dawid Weiss Priority: Minor Fix For: 5.3, Trunk Attachments: LUCENE-6225.patch Here is a snippet from IndexInput's documentation: {code} The original instance must take care that cloned instances throw AlreadyClosedException when the original one is closed. {code} But concrete implementations don't throw this AlreadyClosedException (this would break the contract on Closeable). For example, see NIOFSDirectory: {code} public void close() throws IOException { if (!isClone) { channel.close(); } } {code} What trapped me was that the abstract class IndexInput overrides the default implementation of clone(), but doesn't do anything useful... I guess you could make it final and provide the tracking for cloned instances in this class rather than reimplementing it everywhere else (isCloned() would be a superclass method then too). Thoughts? -- This message was sent by Atlassian JIRA (v6.3.4#6332) - To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org For additional commands, e-mail: dev-h...@lucene.apache.org
[jira] [Commented] (LUCENE-6225) Clarify documentation of clone() in IndexInput
[ https://issues.apache.org/jira/browse/LUCENE-6225?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14631258#comment-14631258 ] Dawid Weiss commented on LUCENE-6225: - Uwe, this comment is effectively dead, isn't it? I mean -- looking at {{NIOFSIndexInput}} for example, its {{isClone}} field is never used. So it's very likely that this contract is violated? Clarify documentation of clone() in IndexInput -- Key: LUCENE-6225 URL: https://issues.apache.org/jira/browse/LUCENE-6225 Project: Lucene - Core Issue Type: Improvement Reporter: Dawid Weiss Assignee: Dawid Weiss Priority: Minor Fix For: Trunk Attachments: LUCENE-6225.patch Here is a snippet from IndexInput's documentation: {code} The original instance must take care that cloned instances throw AlreadyClosedException when the original one is closed. {code} But concrete implementations don't throw this AlreadyClosedException (this would break the contract on Closeable). For example, see NIOFSDirectory: {code} public void close() throws IOException { if (!isClone) { channel.close(); } } {code} What trapped me was that the abstract class IndexInput overrides the default implementation of clone(), but doesn't do anything useful... I guess you could make it final and provide the tracking for cloned instances in this class rather than reimplementing it everywhere else (isCloned() would be a superclass method then too). Thoughts? -- This message was sent by Atlassian JIRA (v6.3.4#6332) - To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org For additional commands, e-mail: dev-h...@lucene.apache.org
[jira] [Commented] (LUCENE-6225) Clarify documentation of clone() in IndexInput
[ https://issues.apache.org/jira/browse/LUCENE-6225?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14631259#comment-14631259 ] Dawid Weiss commented on LUCENE-6225: - Oh, ok. Nevermind, the original source would throw ACE. Clarify documentation of clone() in IndexInput -- Key: LUCENE-6225 URL: https://issues.apache.org/jira/browse/LUCENE-6225 Project: Lucene - Core Issue Type: Improvement Reporter: Dawid Weiss Assignee: Dawid Weiss Priority: Minor Fix For: Trunk Attachments: LUCENE-6225.patch Here is a snippet from IndexInput's documentation: {code} The original instance must take care that cloned instances throw AlreadyClosedException when the original one is closed. {code} But concrete implementations don't throw this AlreadyClosedException (this would break the contract on Closeable). For example, see NIOFSDirectory: {code} public void close() throws IOException { if (!isClone) { channel.close(); } } {code} What trapped me was that the abstract class IndexInput overrides the default implementation of clone(), but doesn't do anything useful... I guess you could make it final and provide the tracking for cloned instances in this class rather than reimplementing it everywhere else (isCloned() would be a superclass method then too). Thoughts? -- This message was sent by Atlassian JIRA (v6.3.4#6332) - To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org For additional commands, e-mail: dev-h...@lucene.apache.org
[jira] [Commented] (LUCENE-6225) Clarify documentation of clone() in IndexInput
[ https://issues.apache.org/jira/browse/LUCENE-6225?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14311972#comment-14311972 ] Uwe Schindler commented on LUCENE-6225: --- According to java.io.Closeable docs, closing should not throw exceptions because multiple closes are allowed (so if it implicitely closed by root object, an additional call to clone's close should not fail). The comment means: If you access the cloned IndexInput after closing the original the readXXX methods will throw AlreadyClosedException. For clones. the close() method is a noop, that is intended. Clarify documentation of clone() in IndexInput -- Key: LUCENE-6225 URL: https://issues.apache.org/jira/browse/LUCENE-6225 Project: Lucene - Core Issue Type: Improvement Reporter: Dawid Weiss Assignee: Dawid Weiss Priority: Minor Fix For: Trunk Here is a snippet from IndexInput's documentation: {code} The original instance must take care that cloned instances throw AlreadyClosedException when the original one is closed. {code} But concrete implementations don't throw this AlreadyClosedException (this would break the contract on Closeable). For example, see NIOFSDirectory: {code} public void close() throws IOException { if (!isClone) { channel.close(); } } {code} What trapped me was that the abstract class IndexInput overrides the default implementation of clone(), but doesn't do anything useful... I guess you could make it final and provide the tracking for cloned instances in this class rather than reimplementing it everywhere else (isCloned() would be a superclass method then too). Thoughts? -- This message was sent by Atlassian JIRA (v6.3.4#6332) - To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org For additional commands, e-mail: dev-h...@lucene.apache.org
[jira] [Commented] (LUCENE-6225) Clarify documentation of clone() in IndexInput
[ https://issues.apache.org/jira/browse/LUCENE-6225?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14311975#comment-14311975 ] Dawid Weiss commented on LUCENE-6225: - I think the comment should read exactly what your explanation of the comment was, it'd be clearer then... :) Clarify documentation of clone() in IndexInput -- Key: LUCENE-6225 URL: https://issues.apache.org/jira/browse/LUCENE-6225 Project: Lucene - Core Issue Type: Improvement Reporter: Dawid Weiss Assignee: Dawid Weiss Priority: Minor Fix For: Trunk Here is a snippet from IndexInput's documentation: {code} The original instance must take care that cloned instances throw AlreadyClosedException when the original one is closed. {code} But concrete implementations don't throw this AlreadyClosedException (this would break the contract on Closeable). For example, see NIOFSDirectory: {code} public void close() throws IOException { if (!isClone) { channel.close(); } } {code} What trapped me was that the abstract class IndexInput overrides the default implementation of clone(), but doesn't do anything useful... I guess you could make it final and provide the tracking for cloned instances in this class rather than reimplementing it everywhere else (isCloned() would be a superclass method then too). Thoughts? -- This message was sent by Atlassian JIRA (v6.3.4#6332) - To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org For additional commands, e-mail: dev-h...@lucene.apache.org