Josh Elser created CALCITE-1183:
-----------------------------------

             Summary: Sporadic AvaticaSpnegoTest failures with Checksum failed 
and HTTP 404
                 Key: CALCITE-1183
                 URL: https://issues.apache.org/jira/browse/CALCITE-1183
             Project: Calcite
          Issue Type: Bug
          Components: avatica
            Reporter: Josh Elser
            Assignee: Julian Hyde
            Priority: Minor
             Fix For: avatica-1.8.0


I'm noticing the following every now and again.

{noformat}
2016-04-04 10:59:29,110 [main] INFO  - Starting KDC server at localhost:62139
2016-04-04 10:59:29,281 [main] INFO  - Creating client with keytab 
/Users/jelser/projects/calcite.git/avatica/server/target/AvaticaSpnegoTest_keytabs/client.keytab
2016-04-04 10:59:29,286 [main] INFO  - Creating HTTP/localh...@example.com with 
keytab 
/Users/jelser/projects/calcite.git/avatica/server/target/AvaticaSpnegoTest_keytabs/HTTP_localhost.keytab
2016-04-04 10:59:29,368 [main] INFO  - No metrics implementation available on 
classpath. Using No-op implementation
2016-04-04 10:59:29,385 [main] INFO  - Logging initialized @618ms
java.net.SocketTimeoutException: Accept timed out
java.net.SocketTimeoutException: Accept timed out
java.net.SocketTimeoutException: Accept timed out
2016-04-04 10:59:29,649 [main] INFO  - jetty-9.2.15.v20160210
2016-04-04 10:59:29,682 [main] INFO  - Started 
ServerConnector@11fa682c{HTTP/1.1}{0.0.0.0:62141}
2016-04-04 10:59:29,682 [main] INFO  - Started @916ms
2016-04-04 10:59:29,682 [main] INFO  - Service listening on port 62141.
2016-04-04 10:59:29,685 [main] INFO  - JDBC URL 
jdbc:avatica:remote:url=http://localhost:62141;authentication=SPNEGO;serialization=JSON
2016-04-04 10:59:29,686 [main] INFO  - No metrics implementation available on 
classpath. Using No-op implementation
java.net.SocketTimeoutException: Accept timed out
2016-04-04 10:59:29,759 [main] INFO  - jetty-9.2.15.v20160210
2016-04-04 10:59:29,772 [main] INFO  - Started 
ServerConnector@5c80435f{HTTP/1.1}{0.0.0.0:62142}
2016-04-04 10:59:29,772 [main] INFO  - Started @1006ms
2016-04-04 10:59:29,772 [main] INFO  - Service listening on port 62142.
2016-04-04 10:59:29,772 [main] INFO  - JDBC URL 
jdbc:avatica:remote:url=http://localhost:62142;authentication=SPNEGO;serialization=PROTOBUF
2016-04-04 10:59:29,787 [main] INFO  - jetty-9.2.15.v20160210
2016-04-04 10:59:29,789 [main] INFO  - Started 
ServerConnector@464d02ee{HTTP/1.1}{0.0.0.0:62143}
2016-04-04 10:59:29,789 [main] INFO  - Started @1023ms
2016-04-04 10:59:29,789 [main] INFO  - Service listening on port 62143.
2016-04-04 10:59:29,790 [main] INFO  - jetty-9.2.15.v20160210
2016-04-04 10:59:29,791 [main] INFO  - Started 
ServerConnector@3ff9f777{HTTP/1.1}{0.0.0.0:62144}
2016-04-04 10:59:29,792 [main] INFO  - Started @1026ms
2016-04-04 10:59:29,792 [main] INFO  - Service listening on port 62144.
java.net.SocketTimeoutException: Accept timed out
Running org.apache.calcite.avatica.AvaticaSpnegoTest
2016-04-04 10:59:29,837 [main] INFO  - Starting KDC server at localhost:62146
2016-04-04 10:59:29,841 [main] INFO  - Creating client with keytab 
/Users/jelser/projects/calcite.git/avatica/server/target/AvaticaSpnegoTest_keytabs/client.keytab
2016-04-04 10:59:29,842 [main] INFO  - Creating HTTP/localh...@example.com with 
keytab 
/Users/jelser/projects/calcite.git/avatica/server/target/AvaticaSpnegoTest_keytabs/HTTP_localhost.keytab
2016-04-04 10:59:29,845 [main] INFO  - No metrics implementation available on 
classpath. Using No-op implementation
2016-04-04 10:59:29,846 [main] INFO  - jetty-9.2.15.v20160210
2016-04-04 10:59:29,847 [main] INFO  - Started 
ServerConnector@4cf35c4f{HTTP/1.1}{0.0.0.0:62148}
2016-04-04 10:59:29,848 [main] INFO  - Started @1082ms
2016-04-04 10:59:29,848 [main] INFO  - Service listening on port 62148.
2016-04-04 10:59:29,848 [main] INFO  - JDBC URL 
jdbc:avatica:remote:url=http://localhost:62148;authentication=SPNEGO;serialization=JSON
2016-04-04 10:59:29,848 [main] INFO  - No metrics implementation available on 
classpath. Using No-op implementation
2016-04-04 10:59:29,849 [main] INFO  - jetty-9.2.15.v20160210
2016-04-04 10:59:29,851 [main] INFO  - Started 
ServerConnector@4be0b391{HTTP/1.1}{0.0.0.0:62149}
2016-04-04 10:59:29,851 [main] INFO  - Started @1085ms
2016-04-04 10:59:29,851 [main] INFO  - Service listening on port 62149.
2016-04-04 10:59:29,851 [main] INFO  - JDBC URL 
jdbc:avatica:remote:url=http://localhost:62149;authentication=SPNEGO;serialization=PROTOBUF
Debug is  true storeKey true useTicketCache false useKeyTab true doNotPrompt 
true ticketCache is null isInitiator true KeyTab is 
/Users/jelser/projects/calcite.git/avatica/server/target/AvaticaSpnegoTest_keytabs/client.keytab
 refreshKrb5Config is true principal is cli...@example.com tryFirstPass is 
false useFirstPass is false storePass is false clearPass is false
Refreshing Kerberos configuration
2016-04-04 10:59:29,872 [pool-2-thread-2] INFO  - The preauth data is empty.
2016-04-04 10:59:29,875 [pool-2-thread-2] INFO  - KRB error occurred while 
processing request:Additional pre-authentication required
java.net.SocketTimeoutException: Accept timed out
java.net.SocketTimeoutException: Accept timed out
principal is cli...@example.com
Will use keytab
Commit Succeeded

2016-04-04 10:59:30,477 [qtp1255644396-56] WARN  -
GSSException: Failure unspecified at GSS-API level (Mechanism level: Checksum 
failed)
        at 
sun.security.jgss.krb5.Krb5Context.acceptSecContext(Krb5Context.java:788)
        at 
sun.security.jgss.GSSContextImpl.acceptSecContext(GSSContextImpl.java:342)
        at 
sun.security.jgss.GSSContextImpl.acceptSecContext(GSSContextImpl.java:285)
        at 
sun.security.jgss.spnego.SpNegoContext.GSS_acceptSecContext(SpNegoContext.java:875)
        at 
sun.security.jgss.spnego.SpNegoContext.acceptSecContext(SpNegoContext.java:548)
        at 
sun.security.jgss.GSSContextImpl.acceptSecContext(GSSContextImpl.java:342)
        at 
sun.security.jgss.GSSContextImpl.acceptSecContext(GSSContextImpl.java:285)
        at 
org.eclipse.jetty.security.SpnegoLoginService.login(SpnegoLoginService.java:137)
        at 
org.eclipse.jetty.security.authentication.LoginAuthenticator.login(LoginAuthenticator.java:61)
        at 
org.eclipse.jetty.security.authentication.SpnegoAuthenticator.validateRequest(SpnegoAuthenticator.java:99)
        at 
org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:512)
        at 
org.eclipse.jetty.server.handler.HandlerList.handle(HandlerList.java:52)
        at 
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
        at org.eclipse.jetty.server.Server.handle(Server.java:499)
        at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311)
        at 
org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)
        at 
org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544)
        at 
org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)
        at 
org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)
        at java.lang.Thread.run(Thread.java:745)
Caused by: KrbException: Checksum failed
        at 
sun.security.krb5.internal.crypto.Aes128CtsHmacSha1EType.decrypt(Aes128CtsHmacSha1EType.java:102)
        at 
sun.security.krb5.internal.crypto.Aes128CtsHmacSha1EType.decrypt(Aes128CtsHmacSha1EType.java:94)
        at sun.security.krb5.EncryptedData.decrypt(EncryptedData.java:177)
        at sun.security.krb5.KrbApReq.authenticate(KrbApReq.java:278)
        at sun.security.krb5.KrbApReq.<init>(KrbApReq.java:144)
        at 
sun.security.jgss.krb5.InitSecContextToken.<init>(InitSecContextToken.java:108)
        at 
sun.security.jgss.krb5.Krb5Context.acceptSecContext(Krb5Context.java:771)
        ... 19 more
Caused by: java.security.GeneralSecurityException: Checksum failed
        at 
sun.security.krb5.internal.crypto.dk.AesDkCrypto.decryptCTS(AesDkCrypto.java:451)
        at 
sun.security.krb5.internal.crypto.dk.AesDkCrypto.decrypt(AesDkCrypto.java:272)
        at sun.security.krb5.internal.crypto.Aes128.decrypt(Aes128.java:76)
        at 
sun.security.krb5.internal.crypto.Aes128CtsHmacSha1EType.decrypt(Aes128CtsHmacSha1EType.java:100)
        ... 25 more
2016-04-04 10:59:30,490 [main] INFO  - Service terminating.
2016-04-04 10:59:30,493 [main] INFO  - Stopped 
ServerConnector@4cf35c4f{HTTP/1.1}{0.0.0.0:0}
Debug is  true storeKey true useTicketCache false useKeyTab true doNotPrompt 
true ticketCache is null isInitiator true KeyTab is 
/Users/jelser/projects/calcite.git/avatica/server/target/AvaticaSpnegoTest_keytabs/client.keytab
 refreshKrb5Config is true principal is cli...@example.com tryFirstPass is 
false useFirstPass is false storePass is false clearPass is false
Refreshing Kerberos configuration
2016-04-04 10:59:30,504 [pool-2-thread-2] INFO  - The preauth data is empty.
2016-04-04 10:59:30,505 [pool-2-thread-2] INFO  - KRB error occurred while 
processing request:Additional pre-authentication required
principal is cli...@example.com
Will use keytab
Commit Succeeded

java.net.SocketTimeoutException: Accept timed out
2016-04-04 10:59:30,554 [qtp942473782-65] WARN  -
GSSException: Failure unspecified at GSS-API level (Mechanism level: Checksum 
failed)
        at 
sun.security.jgss.krb5.Krb5Context.acceptSecContext(Krb5Context.java:788)
        at 
sun.security.jgss.GSSContextImpl.acceptSecContext(GSSContextImpl.java:342)
        at 
sun.security.jgss.GSSContextImpl.acceptSecContext(GSSContextImpl.java:285)
        at 
sun.security.jgss.spnego.SpNegoContext.GSS_acceptSecContext(SpNegoContext.java:875)
        at 
sun.security.jgss.spnego.SpNegoContext.acceptSecContext(SpNegoContext.java:548)
        at 
sun.security.jgss.GSSContextImpl.acceptSecContext(GSSContextImpl.java:342)
        at 
sun.security.jgss.GSSContextImpl.acceptSecContext(GSSContextImpl.java:285)
        at 
org.eclipse.jetty.security.SpnegoLoginService.login(SpnegoLoginService.java:137)
        at 
org.eclipse.jetty.security.authentication.LoginAuthenticator.login(LoginAuthenticator.java:61)
        at 
org.eclipse.jetty.security.authentication.SpnegoAuthenticator.validateRequest(SpnegoAuthenticator.java:99)
        at 
org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:512)
        at 
org.eclipse.jetty.server.handler.HandlerList.handle(HandlerList.java:52)
        at 
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
        at org.eclipse.jetty.server.Server.handle(Server.java:499)
        at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311)
        at 
org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)
        at 
org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544)
        at 
org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)
        at 
org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)
        at java.lang.Thread.run(Thread.java:745)
Caused by: KrbException: Checksum failed
        at 
sun.security.krb5.internal.crypto.Aes128CtsHmacSha1EType.decrypt(Aes128CtsHmacSha1EType.java:102)
        at 
sun.security.krb5.internal.crypto.Aes128CtsHmacSha1EType.decrypt(Aes128CtsHmacSha1EType.java:94)
        at sun.security.krb5.EncryptedData.decrypt(EncryptedData.java:177)
        at sun.security.krb5.KrbApReq.authenticate(KrbApReq.java:278)
        at sun.security.krb5.KrbApReq.<init>(KrbApReq.java:144)
        at 
sun.security.jgss.krb5.InitSecContextToken.<init>(InitSecContextToken.java:108)
        at 
sun.security.jgss.krb5.Krb5Context.acceptSecContext(Krb5Context.java:771)
        ... 19 more
Caused by: java.security.GeneralSecurityException: Checksum failed
        at 
sun.security.krb5.internal.crypto.dk.AesDkCrypto.decryptCTS(AesDkCrypto.java:451)
        at 
sun.security.krb5.internal.crypto.dk.AesDkCrypto.decrypt(AesDkCrypto.java:272)
        at sun.security.krb5.internal.crypto.Aes128.decrypt(Aes128.java:76)
        at 
sun.security.krb5.internal.crypto.Aes128CtsHmacSha1EType.decrypt(Aes128CtsHmacSha1EType.java:100)
        ... 25 more
2016-04-04 10:59:30,555 [main] INFO  - Service terminating.
2016-04-04 10:59:30,556 [main] INFO  - Stopped 
ServerConnector@4be0b391{HTTP/1.1}{0.0.0.0:0}
2016-04-04 10:59:30,557 [main] INFO  - Stopping KDC on 62146
Tests run: 2, Failures: 0, Errors: 2, Skipped: 0, Time elapsed: 0.723 sec <<< 
FAILURE! - in org.apache.calcite.avatica.AvaticaSpnegoTest
testAuthenticatedClient[0](org.apache.calcite.avatica.AvaticaSpnegoTest)  Time 
elapsed: 0.646 sec  <<< ERROR!
java.lang.RuntimeException: Failed to execute HTTP Request, got HTTP/404
        at 
org.apache.calcite.avatica.remote.AvaticaCommonsHttpClientSpnegoImpl.send(AvaticaCommonsHttpClientSpnegoImpl.java:148)
        at 
org.apache.calcite.avatica.remote.RemoteService.apply(RemoteService.java:34)
        at 
org.apache.calcite.avatica.remote.JsonService.apply(JsonService.java:172)
        at org.apache.calcite.avatica.remote.Driver.connect(Driver.java:155)
        at java.sql.DriverManager.getConnection(DriverManager.java:571)
        at java.sql.DriverManager.getConnection(DriverManager.java:233)
        at 
org.apache.calcite.avatica.AvaticaSpnegoTest$1.run(AvaticaSpnegoTest.java:205)
        at 
org.apache.calcite.avatica.AvaticaSpnegoTest$1.run(AvaticaSpnegoTest.java:1)
        at java.security.AccessController.doPrivileged(Native Method)
        at javax.security.auth.Subject.doAs(Subject.java:415)
        at 
org.apache.calcite.avatica.AvaticaSpnegoTest.testAuthenticatedClient(AvaticaSpnegoTest.java:203)

testAuthenticatedClient[1](org.apache.calcite.avatica.AvaticaSpnegoTest)  Time 
elapsed: 0.056 sec  <<< ERROR!
java.lang.RuntimeException: Failed to execute HTTP Request, got HTTP/404
        at 
org.apache.calcite.avatica.remote.AvaticaCommonsHttpClientSpnegoImpl.send(AvaticaCommonsHttpClientSpnegoImpl.java:148)
        at 
org.apache.calcite.avatica.remote.RemoteProtobufService._apply(RemoteProtobufService.java:44)
        at 
org.apache.calcite.avatica.remote.ProtobufService.apply(ProtobufService.java:81)
        at org.apache.calcite.avatica.remote.Driver.connect(Driver.java:155)
        at java.sql.DriverManager.getConnection(DriverManager.java:571)
        at java.sql.DriverManager.getConnection(DriverManager.java:233)
        at 
org.apache.calcite.avatica.AvaticaSpnegoTest$1.run(AvaticaSpnegoTest.java:205)
        at 
org.apache.calcite.avatica.AvaticaSpnegoTest$1.run(AvaticaSpnegoTest.java:1)
        at java.security.AccessController.doPrivileged(Native Method)
        at javax.security.auth.Subject.doAs(Subject.java:415)
        at 
org.apache.calcite.avatica.AvaticaSpnegoTest.testAuthenticatedClient(AvaticaSpnegoTest.java:203)
{noformat}

For some reason, AvaticaSpnegoTest seems to be having trouble authenticating 
the client's Kerberos identity (I think). Given that this only happens now and 
again, I'm thinking that maybe it's related to the in-memory KDC implementation 
we're using for tests. We should try to get it figured out before it starts 
causing test failures.



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

Reply via email to