Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

NPE in RepairRunner #17

Closed
pdehlke opened this issue Nov 11, 2016 · 1 comment
Closed

NPE in RepairRunner #17

pdehlke opened this issue Nov 11, 2016 · 1 comment

Comments

@pdehlke
Copy link

pdehlke commented Nov 11, 2016

Line 364 in service/RepairRunner.java swallows a throwable that it likely shouldn't be swallowing. If I change that line to

LOG.error("Executing SegmentRunner failed: " + t.getMessage(), t);

I end up getting this:

INFO [2016-11-11 16:05:52,220] [clustername:1:139] c.s.r.s.SegmentRunner - It is ok to repair segment '139' on repair run with id '1' INFO [2016-11-11 16:05:52,222] [clustername:1:139] c.s.r.c.JmxProxy - Triggering repair of range (-8790692742742779625,-8790661161171969027] for keyspace "keyspacename" on host 10.20.5.87, with repair parallelism DATACENTER_AWARE, in cluster with Cassandra version '2.2.5' (can use DATACENTER_AWARE 'true'), for column families: [customers] ERROR [2016-11-11 16:05:52,226] [clustername:1:139] c.s.r.s.RepairRunner - Executing SegmentRunner failed: null java.lang.NullPointerException: null at java.util.AbstractCollection.addAll(AbstractCollection.java:343) ~[na:1.8.0_91] at org.apache.cassandra.service.StorageService.forceRepairRangeAsync(StorageService.java:3005) ~[cassandra-reaper-0.3.1-SNAPSHOT.jar:0.3.1-SNAPSHOT] at sun.reflect.GeneratedMethodAccessor95.invoke(Unknown Source) ~[na:na] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_91] at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_91] at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:71) ~[na:1.8.0_91] at sun.reflect.GeneratedMethodAccessor10.invoke(Unknown Source) ~[na:na] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_91] at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_91] at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:275) ~[na:1.8.0_91] at com.sun.jmx.mbeanserver.StandardMBeanIntrospector.invokeM2(StandardMBeanIntrospector.java:112) ~[na:1.8.0_91] at com.sun.jmx.mbeanserver.StandardMBeanIntrospector.invokeM2(StandardMBeanIntrospector.java:46) ~[na:1.8.0_91] at com.sun.jmx.mbeanserver.MBeanIntrospector.invokeM(MBeanIntrospector.java:237) ~[na:1.8.0_91] at com.sun.jmx.mbeanserver.PerInterface.invoke(PerInterface.java:138) ~[na:1.8.0_91] at com.sun.jmx.mbeanserver.MBeanSupport.invoke(MBeanSupport.java:252) ~[na:1.8.0_91] at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819) ~[na:1.8.0_91] at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801) ~[na:1.8.0_91] at javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1468) ~[na:1.8.0_91] at javax.management.remote.rmi.RMIConnectionImpl.access$300(RMIConnectionImpl.java:76) ~[na:1.8.0_91] at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1309) ~[na:1.8.0_91] at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1401) ~[na:1.8.0_91] at javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:829) ~[na:1.8.0_91] at sun.reflect.GeneratedMethodAccessor29.invoke(Unknown Source) ~[na:na] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_91] at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_91] at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:324) ~[na:1.8.0_91] at sun.rmi.transport.Transport$1.run(Transport.java:200) ~[na:1.8.0_91] at sun.rmi.transport.Transport$1.run(Transport.java:197) ~[na:1.8.0_91] at java.security.AccessController.doPrivileged(Native Method) ~[na:1.8.0_91] at sun.rmi.transport.Transport.serviceCall(Transport.java:196) ~[na:1.8.0_91] at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:568) ~[na:1.8.0_91] at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:826) ~[na:1.8.0_91] at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:683) ~[na:1.8.0_91] at java.security.AccessController.doPrivileged(Native Method) ~[na:1.8.0_91] at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:682) ~[na:1.8.0_91] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_91] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_91] at java.lang.Thread.run(Thread.java:745) [na:1.8.0_91]

Not real sure where to go from here.

@adejanovski
Copy link
Contributor

Hi, I fixed this issue in #14 and just merged it into master.
This was a problem specific to full repairs on C* 2.2 that's missing a null check.
And I agree, some exceptions were swallowed and hard to determine so I did so that they appear in the logs now.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants