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

Ariel Weisberg commented on CASSANDRA-13463:
--------------------------------------------

I think this unrelated to CASSANDRA-9241 you just have invalid UTF-8 keys. The 
obvious answer is either there is corruption, or the database allowed you to 
insert an invalid UTF-8 string, or the validation code is wrong. If it works 
some of the time it might be because the sampling doesn't pick up the problem 
string.

I think the thing to do is add a trace level log that logs the hex string 
before the exception is thrown and find out what that key is and whether it is 
a valid UTF-8.

> nodetool toppartitions - error: String didn't validate
> ------------------------------------------------------
>
>                 Key: CASSANDRA-13463
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-13463
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Observability
>         Environment: Debian Jessie, Java 1.8.0-121, Cassandra v3.0.11
>            Reporter: Aleksandr Ivanov
>
> nodetool toppartitions doesn't work for most of runs and failing with 
> following message
> {code}
> error: String didn't validate.
> -- StackTrace --
> org.apache.cassandra.serializers.MarshalException: String didn't validate.
>         at 
> org.apache.cassandra.serializers.UTF8Serializer.validate(UTF8Serializer.java:35)
>         at 
> org.apache.cassandra.db.marshal.AbstractType.getString(AbstractType.java:128)
>         at 
> org.apache.cassandra.db.ColumnFamilyStore.finishLocalSampling(ColumnFamilyStore.java:1559)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>         at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(Method.java:498)
>         at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:71)
>         at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
>         at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(Method.java:498)
>         at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:275)
>         at 
> com.sun.jmx.mbeanserver.StandardMBeanIntrospector.invokeM2(StandardMBeanIntrospector.java:112)
>         at 
> com.sun.jmx.mbeanserver.StandardMBeanIntrospector.invokeM2(StandardMBeanIntrospector.java:46)
>         at 
> com.sun.jmx.mbeanserver.MBeanIntrospector.invokeM(MBeanIntrospector.java:237)
>         at com.sun.jmx.mbeanserver.PerInterface.invoke(PerInterface.java:138)
>         at com.sun.jmx.mbeanserver.MBeanSupport.invoke(MBeanSupport.java:252)
>         at 
> com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
>         at 
> com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
>         at 
> com.sun.jmx.remote.security.MBeanServerAccessController.invoke(MBeanServerAccessController.java:468)
>         at 
> javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1468)
>         at 
> javax.management.remote.rmi.RMIConnectionImpl.access$300(RMIConnectionImpl.java:76)
>         at 
> javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1309)
>         at java.security.AccessController.doPrivileged(Native Method)
>         at 
> javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1408)
>         at 
> javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:829)
>         at sun.reflect.GeneratedMethodAccessor90.invoke(Unknown Source)
>         at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(Method.java:498)
>         at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:346)
>         at sun.rmi.transport.Transport$1.run(Transport.java:200)
>         at sun.rmi.transport.Transport$1.run(Transport.java:197)
>         at java.security.AccessController.doPrivileged(Native Method)
>         at sun.rmi.transport.Transport.serviceCall(Transport.java:196)
>         at 
> sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:568)
>         at 
> sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:826)
>         at 
> sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:683)
>         at java.security.AccessController.doPrivileged(Native Method)
>         at 
> sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:682)
>         at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
>         at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
>         at java.lang.Thread.run(Thread.java:745)
> {code}
> It is easily reproducible if period is longer that 1 second.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to