You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-issues@hadoop.apache.org by "Robert Kanter (JIRA)" <ji...@apache.org> on 2016/10/05 17:40:20 UTC

[jira] [Comment Edited] (HADOOP-12611) TestZKSignerSecretProvider#testMultipleInit occasionally fail

    [ https://issues.apache.org/jira/browse/HADOOP-12611?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15549457#comment-15549457 ] 

Robert Kanter edited comment on HADOOP-12611 at 10/5/16 5:39 PM:
-----------------------------------------------------------------

Ya, looking at it now with the changes, {{testMultipleInit}} is a duplicate of case 1 in {{testMultipleUnsynchronized}}; so I think removing it makes sense.

A few comments on {{testMultipleUnsynchronized}}:
# The javadoc shouldn't have {{int}} in the {{\@param}}
# We should do more asserting of the initial state (e.g. there's no checking on {{secretProviderB}}).  You can probably just copy stuff from {{testMultipleInit}} for this.
# At the end, when we're doing this:
{code:java}
      if (Arrays.equals(secretA3, currentSecretA)) {
        Assert.assertArrayEquals(secretA3, allSecretsA[0]);
      } else if (Arrays.equals(secretB3, currentSecretB)) {
        Assert.assertArrayEquals(secretB3, allSecretsA[0]);
      } else {
        Assert.fail("It appears that they all agreed on the same secret, but "
                + "not one of the secrets they were supposed to");
      }
{code}
we now know the correct order that should have happened (via {{order}}), so we can make this another switch statement instead.  That way, we'll assert the expected order based on the roll order, instead of just one of the two orders.
# I think we can just rename this to {{testMultiple}} now.


was (Author: rkanter):
Ya, looking at it now with the changes, {{testMultipleInit}} is a duplicate of case 1 in {{testMultipleUnsynchronized}}; so I think removing it makes sense.

A few comments on {{testMultipleUnsynchronized}}:
# The javadoc shouldn't have {{int}} in the {{\@param}}
# We should do more asserting of the initial state (e.g. there's no checking on {{secretProviderB}}).  You can probably just copy stuff from {{testMultipleInit}} for this.
# At the end, when we're doing this:
{code:java}
      if (Arrays.equals(secretA3, currentSecretA)) {
        Assert.assertArrayEquals(secretA3, allSecretsA[0]);
      } else if (Arrays.equals(secretB3, currentSecretB)) {
        Assert.assertArrayEquals(secretB3, allSecretsA[0]);
      } else {
        Assert.fail("It appears that they all agreed on the same secret, but "
                + "not one of the secrets they were supposed to");
      }
{code}
we now know the correct order that should have happened (via {{order}}), so we can make this another switch statement instead.  That way, we'll assert the expected order based on the roll order, instead of just one of the two orders.

> TestZKSignerSecretProvider#testMultipleInit occasionally fail
> -------------------------------------------------------------
>
>                 Key: HADOOP-12611
>                 URL: https://issues.apache.org/jira/browse/HADOOP-12611
>             Project: Hadoop Common
>          Issue Type: Bug
>            Reporter: Wei-Chiu Chuang
>            Assignee: Wei-Chiu Chuang
>         Attachments: HADOOP-12611.001.patch, HADOOP-12611.002.patch, HADOOP-12611.003.patch, HADOOP-12611.004.patch
>
>
> https://builds.apache.org/job/Hadoop-Common-trunk/2053/testReport/junit/org.apache.hadoop.security.authentication.util/TestZKSignerSecretProvider/testMultipleInit/
> Error Message
> expected null, but was:<[B...@142bad79>
> Stacktrace
> java.lang.AssertionError: expected null, but was:<[B...@142bad79>
> 	at org.junit.Assert.fail(Assert.java:88)
> 	at org.junit.Assert.failNotNull(Assert.java:664)
> 	at org.junit.Assert.assertNull(Assert.java:646)
> 	at org.junit.Assert.assertNull(Assert.java:656)
> 	at org.apache.hadoop.security.authentication.util.TestZKSignerSecretProvider.testMultipleInit(TestZKSignerSecretProvider.java:149)
> I think the failure was introduced after HADOOP-12181
> This is likely where the root cause is:
> 2015-11-29 00:24:33,325 ERROR ZKSignerSecretProvider - An unexpected exception occurred while pulling data fromZooKeeper
> java.lang.IllegalStateException: instance must be started before calling this method
> 	at com.google.common.base.Preconditions.checkState(Preconditions.java:145)
> 	at org.apache.curator.framework.imps.CuratorFrameworkImpl.getData(CuratorFrameworkImpl.java:363)
> 	at org.apache.hadoop.security.authentication.util.ZKSignerSecretProvider.pullFromZK(ZKSignerSecretProvider.java:341)
> 	at org.apache.hadoop.security.authentication.util.ZKSignerSecretProvider.rollSecret(ZKSignerSecretProvider.java:264)
> 	at org.apache.hadoop.security.authentication.util.ZKSignerSecretProvider$$EnhancerByMockitoWithCGLIB$$575f06d8.CGLIB$rollSecret$2(<generated>)
> 	at org.apache.hadoop.security.authentication.util.ZKSignerSecretProvider$$EnhancerByMockitoWithCGLIB$$575f06d8$$FastClassByMockitoWithCGLIB$$6f94a716.invoke(<generated>)
> 	at org.mockito.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:216)
> 	at org.mockito.internal.creation.AbstractMockitoMethodProxy.invokeSuper(AbstractMockitoMethodProxy.java:10)
> 	at org.mockito.internal.invocation.realmethod.CGLIBProxyRealMethod.invoke(CGLIBProxyRealMethod.java:22)
> 	at org.mockito.internal.invocation.realmethod.FilteredCGLIBProxyRealMethod.invoke(FilteredCGLIBProxyRealMethod.java:27)
> 	at org.mockito.internal.invocation.Invocation.callRealMethod(Invocation.java:211)
> 	at org.mockito.internal.stubbing.answers.CallsRealMethods.answer(CallsRealMethods.java:36)
> 	at org.mockito.internal.MockHandler.handle(MockHandler.java:99)
> 	at org.mockito.internal.creation.MethodInterceptorFilter.intercept(MethodInterceptorFilter.java:47)
> 	at org.apache.hadoop.security.authentication.util.ZKSignerSecretProvider$$EnhancerByMockitoWithCGLIB$$575f06d8.rollSecret(<generated>)
> 	at org.apache.hadoop.security.authentication.util.RolloverSignerSecretProvider$1.run(RolloverSignerSecretProvider.java:97)
> 	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
> 	at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:304)
> 	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:178)
> 	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
> 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
> 	at java.lang.Thread.run(Thread.java:745)



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: common-issues-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-issues-help@hadoop.apache.org