keith-turner opened a new pull request, #3435:
URL: https://github.com/apache/accumulo/pull/3435

   Adds a test for misnormalized files in the metadata table.  The test 
currently does not run because splits do not handle misnormalized files.  The 
split code will duplicate files in the existing tablet when it tries to update 
the estimated size.  Surprisingly the duplicated files causes the tserver to 
crash on tablet assignment.
   
   Seeing the following error when the tserver tries to load a tablet with 
duplicated files entries (multiple entries that normalize to the same path).
   
   ```
   2023-05-26T17:56:22,089 [tserver.AssignmentHandler] WARN : Failed to verify 
tablet 1<;row_0000050000
   java.lang.IllegalArgumentException: Multiple entries with same key: 
file:/home/keith/git/accumulo/test/target/mini-tests/org.apache.accumulo.test.functional.FileNormalizationIT_SharedMiniClusterBase/accumulo/tables/1/defa
   ult_tablet/F000003x.rf=24146 4802 and 
file:/home/keith/git/accumulo/test/target/mini-tests/org.apache.accumulo.test.functional.FileNormalizationIT_SharedMiniClusterBase/accumulo/tables/1/default_tablet/F000003x.rf=24146
 4
   802
           at 
com.google.common.collect.ImmutableMap.conflictException(ImmutableMap.java:377) 
~[guava-31.1-jre.jar:?]
           at 
com.google.common.collect.ImmutableMap.checkNoConflict(ImmutableMap.java:371) 
~[guava-31.1-jre.jar:?]
           at 
com.google.common.collect.RegularImmutableMap.checkNoConflictInKeyBucket(RegularImmutableMap.java:241)
 ~[guava-31.1-jre.jar:?]
           at 
com.google.common.collect.RegularImmutableMap.fromEntryArrayCheckingBucketOverflow(RegularImmutableMap.java:132)
 ~[guava-31.1-jre.jar:?]
           at 
com.google.common.collect.RegularImmutableMap.fromEntryArray(RegularImmutableMap.java:94)
 ~[guava-31.1-jre.jar:?]
           at 
com.google.common.collect.ImmutableMap$Builder.build(ImmutableMap.java:573) 
~[guava-31.1-jre.jar:?]
           at 
com.google.common.collect.ImmutableMap$Builder.buildOrThrow(ImmutableMap.java:601)
 ~[guava-31.1-jre.jar:?]
           at 
com.google.common.collect.ImmutableMap$Builder.build(ImmutableMap.java:588) 
~[guava-31.1-jre.jar:?]
           at 
org.apache.accumulo.core.metadata.schema.TabletMetadata.convertRow(TabletMetadata.java:500)
 ~[classes/:?]
           at 
org.apache.accumulo.core.metadata.schema.TabletsMetadata$Builder.lambda$buildNonRoot$8(TabletsMetadata.java:217)
 ~[classes/:?]
           at 
com.google.common.collect.Iterators$6.transform(Iterators.java:829) 
~[guava-31.1-jre.jar:?]
           at 
com.google.common.collect.TransformedIterator.next(TransformedIterator.java:52) 
~[guava-31.1-jre.jar:?]
           at 
com.google.common.collect.Iterators$5.computeNext(Iterators.java:672) 
~[guava-31.1-jre.jar:?]
           at 
com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:146)
 ~[guava-31.1-jre.jar:?]
           at 
com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:141) 
~[guava-31.1-jre.jar:?]
           at java.util.Iterator.forEachRemaining(Iterator.java:132) ~[?:?]
           at 
java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
 ~[?:?]
           at 
java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484) ~[?:?]
           at 
java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474) 
~[?:?]
           at 
java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913) 
~[?:?]
           at 
java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[?:?]
           at 
java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578) ~[?:?]
           at 
org.apache.accumulo.core.metadata.schema.AmpleImpl.readTablet(AmpleImpl.java:48)
 ~[classes/:?]
           at 
org.apache.accumulo.core.metadata.schema.Ample.readTablet(Ample.java:144) 
~[classes/:?]
           at 
org.apache.accumulo.tserver.AssignmentHandler.run(AssignmentHandler.java:110) 
[classes/:?]
           at 
org.apache.accumulo.tserver.ActiveAssignmentRunnable.run(ActiveAssignmentRunnable.java:63)
 [classes/:?]
           at 
org.apache.accumulo.core.trace.TraceWrappedRunnable.run(TraceWrappedRunnable.java:52)
 [classes/:?]
           at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) 
[?:?]
           at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) 
[?:?]
           at 
org.apache.accumulo.core.trace.TraceWrappedRunnable.run(TraceWrappedRunnable.java:52)
 [classes/:?]
           at java.lang.Thread.run(Thread.java:829) [?:?]
   2023-05-26T17:56:22,090 [threads.AccumuloUncaughtExceptionHandler] ERROR: 
Caught an Exception in Thread[tablet assignment-Worker-4,5,main]. Thread is 
dead.
   java.lang.RuntimeException: java.lang.IllegalArgumentException: Multiple 
entries with same key: 
file:/home/keith/git/accumulo/test/target/mini-tests/org.apache.accumulo.test.functional.FileNormalizationIT_SharedMiniCluste
   rBase/accumulo/tables/1/default_tablet/F000003x.rf=24146 4802 and 
file:/home/keith/git/accumulo/test/target/mini-tests/org.apache.accumulo.test.functional.FileNormalizationIT_SharedMiniClusterBase/accumulo/tables/1/defaul
   t_tablet/F000003x.rf=24146 4802
           at 
org.apache.accumulo.tserver.AssignmentHandler.run(AssignmentHandler.java:142) 
~[classes/:?]
           at 
org.apache.accumulo.tserver.ActiveAssignmentRunnable.run(ActiveAssignmentRunnable.java:63)
 ~[classes/:?]
           at 
org.apache.accumulo.core.trace.TraceWrappedRunnable.run(TraceWrappedRunnable.java:52)
 ~[classes/:?]
           at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) 
~[?:?]
           at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) 
~[?:?]
           at 
org.apache.accumulo.core.trace.TraceWrappedRunnable.run(TraceWrappedRunnable.java:52)
 ~[classes/:?]
           at java.lang.Thread.run(Thread.java:829) [?:?]
   ``` 
   
   The above needs investigation of its own, should an exception in the 
assignment handler kill the tserver?


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to