[
https://issues.apache.org/jira/browse/HDFS-10185?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15204427#comment-15204427
]
John Zhuge commented on HDFS-10185:
-----------------------------------
bq. Yes, my new code is used to check if {{Thread.currentThread().interrupt()}}
works. Because the original code {{assertTrue(Thread.interrupted())}} of
checking this is not executed.
Sorry I don't understand, hasn't the unit test of Java Thread package already
tested it?
If you think the code {{assertTrue(Thread.interrupted())}} can never be
reached, use {{Assert.fail}}:
{code}
Thread.currentThread().interrupt();
try {
stm.hflush();
Assert.fail("Not interrupted as expected");
} catch (InterruptedIOException ie) {
System.out.println("Got expected exception during flush");
}
{code}
However, do you think this comment is no longer true?
{quote}
// If we made it past the hflush(), then that means that the ack made
it back
// from the pipeline before we got to the wait() call. In that case we
should
// still have interrupted status.
{quote}
> TestHFlushInterrupted verifies interrupt state incorrectly
> ----------------------------------------------------------
>
> Key: HDFS-10185
> URL: https://issues.apache.org/jira/browse/HDFS-10185
> Project: Hadoop HDFS
> Issue Type: Bug
> Components: test
> Reporter: Lin Yiqun
> Assignee: Lin Yiqun
> Attachments: HDFS-10185.001.patch
>
>
> In unit test {{TestHFlush#testHFlushInterrupted}}, there were some places
> verifying interrupt state incorrectly. As follow:
> {code}
> Thread.currentThread().interrupt();
> try {
> stm.hflush();
> // If we made it past the hflush(), then that means that the ack made
> it back
> // from the pipeline before we got to the wait() call. In that case we
> should
> // still have interrupted status.
> assertTrue(Thread.interrupted());
> } catch (InterruptedIOException ie) {
> System.out.println("Got expected exception during flush");
> }
> {code}
> When stm do the {{hflush}} operation, it will throw interrupted exception and
> the {{assertTrue(Thread.interrupted())}} will not be execute. And if you put
> this before the {{hflush}}, this method will clear interrupted state and the
> expected exception will not be throw. The similar problem also appears after
> in stm.close.
> So we should use a way to get state without clearing interrupted state like
> {{Thread.currentThread().isInterrupted()}}.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)