Uploaded image for project: 'Accumulo'
  1. Accumulo
  2. ACCUMULO-3653

Compaction with custom compaction strategy class doesn't validate specified class

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Blocker
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 1.7.0
    • Component/s: tserver
    • Labels:
      None

      Description

      Say I create a table, insert a record and issue a compaction for a class that doesn't exist:

      > createtable josh
      josh> insert a b c d
      josh> compact -s doesnt.exist
      
      Tserver
      2015/03/09 15:47:28,860	tserver:hw10447.local	1	
      ERROR
      	
      
      java.lang.ClassNotFoundException: doesnt.exist
      	java.lang.RuntimeException: java.lang.ClassNotFoundException: doesnt.exist
      		at org.apache.accumulo.tserver.tablet.Tablet.createCompactionStrategy(Tablet.java:2545)
      		at org.apache.accumulo.tserver.tablet.Tablet.compactAll(Tablet.java:2578)
      		at org.apache.accumulo.tserver.TabletServer$ThriftClientHandler.compact(TabletServer.java:1687)
      		at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      		at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
      		at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      		at java.lang.reflect.Method.invoke(Method.java:606)
      		at org.apache.accumulo.core.trace.wrappers.RpcServerInvocationHandler.invoke(RpcServerInvocationHandler.java:46)
      		at org.apache.accumulo.server.rpc.RpcWrapper$1.invoke(RpcWrapper.java:47)
      		at com.sun.proxy.$Proxy19.compact(Unknown Source)
      		at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      		at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
      		at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      		at java.lang.reflect.Method.invoke(Method.java:606)
      		at org.apache.accumulo.server.rpc.TCredentialsUpdatingInvocationHandler.invokeMethod(TCredentialsUpdatingInvocationHandler.java:153)
      		at org.apache.accumulo.server.rpc.TCredentialsUpdatingInvocationHandler.invoke(TCredentialsUpdatingInvocationHandler.java:58)
      		at com.sun.proxy.$Proxy19.compact(Unknown Source)
      		at org.apache.accumulo.core.tabletserver.thrift.TabletClientService$Processor$compact.getResult(TabletClientService.java:2728)
      		at org.apache.accumulo.core.tabletserver.thrift.TabletClientService$Processor$compact.getResult(TabletClientService.java:2714)
      		at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
      		at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
      		at org.apache.accumulo.server.rpc.UGIAssumingProcessor.process(UGIAssumingProcessor.java:102)
      		at org.apache.accumulo.server.rpc.TimedProcessor.process(TimedProcessor.java:63)
      		at org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:225)
      		at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
      		at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
      		at org.apache.accumulo.core.util.LoggingRunnable.run(LoggingRunnable.java:35)
      		at java.lang.Thread.run(Thread.java:745)
      	Caused by: java.lang.ClassNotFoundException: doesnt.exist
      		at org.apache.commons.vfs2.impl.VFSClassLoader.findClass(VFSClassLoader.java:175)
      		at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
      		at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
      		at org.apache.accumulo.start.classloader.vfs.AccumuloVFSClassLoader.loadClass(AccumuloVFSClassLoader.java:109)
      		at org.apache.accumulo.tserver.tablet.Tablet.createCompactionStrategy(Tablet.java:2540)
      		... 27 more
      
      Master
      2015/03/09 15:47:29,371	master:hw10447.local	1	
      WARN
      	
      
      Failed to execute Repo, tid=34a89a8062f38a79
      	java.lang.RuntimeException: org.apache.accumulo.core.client.impl.AccumuloServerException: Error on server hw10447.local:9997
      		at org.apache.accumulo.core.client.impl.ScannerIterator.hasNext(ScannerIterator.java:180)
      		at org.apache.accumulo.core.client.IsolatedScanner$RowBufferingIterator.readRow(IsolatedScanner.java:69)
      		at org.apache.accumulo.core.client.IsolatedScanner$RowBufferingIterator.<init>(IsolatedScanner.java:148)
      		at org.apache.accumulo.core.client.IsolatedScanner.iterator(IsolatedScanner.java:236)
      		at org.apache.accumulo.core.client.RowIterator.<init>(RowIterator.java:117)
      		at org.apache.accumulo.master.tableOps.CompactionDriver.isReady(CompactRange.java:115)
      		at org.apache.accumulo.master.tableOps.CompactionDriver.isReady(CompactRange.java:67)
      		at org.apache.accumulo.master.tableOps.TraceRepo.isReady(TraceRepo.java:47)
      		at org.apache.accumulo.fate.Fate$TransactionRunner.run(Fate.java:68)
      		at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
      		at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
      		at org.apache.accumulo.fate.util.LoggingRunnable.run(LoggingRunnable.java:34)
      		at java.lang.Thread.run(Thread.java:745)
      	Caused by: org.apache.accumulo.core.client.impl.AccumuloServerException: Error on server hw10447.local:9997
      		at org.apache.accumulo.core.client.impl.ThriftScanner.scan(ThriftScanner.java:286)
      		at org.apache.accumulo.core.client.impl.ScannerIterator$Reader.run(ScannerIterator.java:80)
      		at org.apache.accumulo.core.client.impl.ScannerIterator.hasNext(ScannerIterator.java:170)
      		... 12 more
      	Caused by: org.apache.thrift.TApplicationException: Internal error processing compact
      		at org.apache.thrift.TApplicationException.read(TApplicationException.java:111)
      		at org.apache.thrift.TServiceClient.receiveBase(TServiceClient.java:71)
      		at org.apache.accumulo.core.tabletserver.thrift.TabletClientService$Client.recv_startScan(TabletClientService.java:232)
      		at org.apache.accumulo.core.tabletserver.thrift.TabletClientService$Client.startScan(TabletClientService.java:208)
      		at org.apache.accumulo.core.client.impl.ThriftScanner.scan(ThriftScanner.java:403)
      		at org.apache.accumulo.core.client.impl.ThriftScanner.scan(ThriftScanner.java:278)
      		... 14 more
      
      2015/03/09 15:47:30,018	master:hw10447.local	1	
      WARN
      	
      
      null row
      	java.lang.IllegalArgumentException: null row
      		at org.apache.accumulo.core.data.Key.<init>(Key.java:388)
      		at org.apache.accumulo.core.client.impl.TabletServerBatchReaderIterator.doLookup(TabletServerBatchReaderIterator.java:647)
      		at org.apache.accumulo.core.client.impl.TabletServerBatchReaderIterator$QueryTask.run(TabletServerBatchReaderIterator.java:349)
      		at org.apache.htrace.wrappers.TraceRunnable.run(TraceRunnable.java:57)
      		at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
      		at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
      		at org.apache.accumulo.core.util.LoggingRunnable.run(LoggingRunnable.java:35)
      		at java.lang.Thread.run(Thread.java:745)
      
      2015/03/09 15:47:30,018	master:hw10447.local	1	
      ERROR
      	
      
      Error processing table state for store Metadata Tablets
      	java.lang.IllegalArgumentException: null row
      		at org.apache.accumulo.core.data.Key.<init>(Key.java:388)
      		at org.apache.accumulo.core.client.impl.TabletServerBatchReaderIterator.doLookup(TabletServerBatchReaderIterator.java:647)
      		at org.apache.accumulo.core.client.impl.TabletServerBatchReaderIterator$QueryTask.run(TabletServerBatchReaderIterator.java:349)
      		at org.apache.htrace.wrappers.TraceRunnable.run(TraceRunnable.java:57)
      		at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
      		at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
      		at org.apache.accumulo.core.util.LoggingRunnable.run(LoggingRunnable.java:35)
      		at java.lang.Thread.run(Thread.java:745)
      
      2015/03/09 15:47:30,027	master:hw10447.local	1	
      WARN
      	
      
      Error on server hw10447.local:9997
      	org.apache.accumulo.core.client.impl.AccumuloServerException: Error on server hw10447.local:9997
      		at org.apache.accumulo.core.client.impl.TabletServerBatchReaderIterator.doLookup(TabletServerBatchReaderIterator.java:695)
      		at org.apache.accumulo.core.client.impl.TabletServerBatchReaderIterator$QueryTask.run(TabletServerBatchReaderIterator.java:349)
      		at org.apache.htrace.wrappers.TraceRunnable.run(TraceRunnable.java:57)
      		at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
      		at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
      		at org.apache.accumulo.core.util.LoggingRunnable.run(LoggingRunnable.java:35)
      		at java.lang.Thread.run(Thread.java:745)
      	Caused by: org.apache.thrift.TApplicationException: closeMultiScan failed: out of sequence response
      		at org.apache.thrift.TServiceClient.receiveBase(TServiceClient.java:76)
      		at org.apache.accumulo.core.tabletserver.thrift.TabletClientService$Client.recv_closeMultiScan(TabletClientService.java:371)
      		at org.apache.accumulo.core.tabletserver.thrift.TabletClientService$Client.closeMultiScan(TabletClientService.java:357)
      		at org.apache.accumulo.core.client.impl.TabletServerBatchReaderIterator.doLookup(TabletServerBatchReaderIterator.java:681)
      		... 6 more
      
      2015/03/09 15:47:35,531	master:hw10447.local	4	
      ERROR
      	
      
      Error processing table state for store Normal Tablets
      	java.lang.RuntimeException: java.lang.RuntimeException: Failed to create iterator
      		at org.apache.accumulo.server.master.state.MetaDataTableScanner.<init>(MetaDataTableScanner.java:71)
      		at org.apache.accumulo.server.master.state.MetaDataTableScanner.<init>(MetaDataTableScanner.java:55)
      		at org.apache.accumulo.server.master.state.MetaDataStateStore.iterator(MetaDataStateStore.java:62)
      		at org.apache.accumulo.master.TabletGroupWatcher.run(TabletGroupWatcher.java:170)
      	Caused by: java.lang.RuntimeException: Failed to create iterator
      		at org.apache.accumulo.core.client.impl.TabletServerBatchReaderIterator.<init>(TabletServerBatchReaderIterator.java:158)
      		at org.apache.accumulo.core.client.impl.TabletServerBatchReader.iterator(TabletServerBatchReader.java:115)
      		at org.apache.accumulo.server.master.state.MetaDataTableScanner.<init>(MetaDataTableScanner.java:65)
      		... 3 more
      	Caused by: org.apache.accumulo.core.client.impl.AccumuloServerException: Error on server hw10447.local:9997
      		at org.apache.accumulo.core.client.impl.TabletServerBatchReaderIterator.doLookup(TabletServerBatchReaderIterator.java:695)
      		at org.apache.accumulo.core.client.impl.TabletServerBatchReaderIterator.doLookup(TabletServerBatchReaderIterator.java:594)
      		at org.apache.accumulo.core.metadata.MetadataLocationObtainer.lookupTablets(MetadataLocationObtainer.java:175)
      		at org.apache.accumulo.core.client.impl.TabletLocatorImpl.processInvalidated(TabletLocatorImpl.java:664)
      		at org.apache.accumulo.core.client.impl.TabletLocatorImpl._locateTablet(TabletLocatorImpl.java:607)
      		at org.apache.accumulo.core.client.impl.TabletLocatorImpl.binRanges(TabletLocatorImpl.java:280)
      		at org.apache.accumulo.core.client.impl.TabletLocatorImpl.binRanges(TabletLocatorImpl.java:355)
      		at org.apache.accumulo.core.client.impl.TimeoutTabletLocator.binRanges(TimeoutTabletLocator.java:104)
      		at org.apache.accumulo.core.client.impl.TabletServerBatchReaderIterator.binRanges(TabletServerBatchReaderIterator.java:233)
      		at org.apache.accumulo.core.client.impl.TabletServerBatchReaderIterator.lookup(TabletServerBatchReaderIterator.java:220)
      		at org.apache.accumulo.core.client.impl.TabletServerBatchReaderIterator.<init>(TabletServerBatchReaderIterator.java:154)
      		... 5 more
      	Caused by: org.apache.thrift.TApplicationException: closeMultiScan failed: out of sequence response
      		at org.apache.thrift.TServiceClient.receiveBase(TServiceClient.java:76)
      		at org.apache.accumulo.core.tabletserver.thrift.TabletClientService$Client.recv_closeMultiScan(TabletClientService.java:371)
      		at org.apache.accumulo.core.tabletserver.thrift.TabletClientService$Client.closeMultiScan(TabletClientService.java:357)
      		at org.apache.accumulo.core.client.impl.TabletServerBatchReaderIterator.doLookup(TabletServerBatchReaderIterator.java:681)
      		... 15 more
      

        Attachments

          Activity

            People

            • Assignee:
              elserj Josh Elser
              Reporter:
              elserj Josh Elser
            • Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: