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

Michael Kjellman commented on CASSANDRA-5979:
---------------------------------------------

just to elaborate a bit on my earlier comment, it appears that the check/return 
for empty columns occasionally manifests itself with a NullPointerException.

At first I thought about just checking if columns was null inside reduce() 
(RowIteratorFactory) but then realized that getReduced() is called all over the 
place, and if the row isn't cached, returnCF can't be null.

Rick, not sure if you had any ideas on catching this earlier in the logic 
instead of playing wack-o-mole
                
> HintedHandOffManager task triggering java.util.NoSuchElementException
> ---------------------------------------------------------------------
>
>                 Key: CASSANDRA-5979
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-5979
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Core
>            Reporter: Ravi Prasad
>            Assignee: Jonathan Ellis
>             Fix For: 1.2.10
>
>         Attachments: 5979-2.txt, 5979.txt
>
>
> Seeing this exception every 10 minutes, whenever scheduled HintedHandoff task 
> runs:
> ERROR [OptionalTasks:1] 2013-09-05 20:48:00,334 CassandraDaemon.java (line 
> 192) Exception in thread Thread[OptionalTasks:1,5,main]
> java.util.NoSuchElementException
>       at 
> com.google.common.collect.EmptyImmutableSortedSet.last(EmptyImmutableSortedSet.java:100)
>       at 
> org.apache.cassandra.db.columniterator.SSTableNamesIterator.readSimpleColumns(SSTableNamesIterator.java:186)
>       at 
> org.apache.cassandra.db.columniterator.SSTableNamesIterator.read(SSTableNamesIterator.java:156)
>       at 
> org.apache.cassandra.db.columniterator.SSTableNamesIterator.<init>(SSTableNamesIterator.java:83)
>       at 
> org.apache.cassandra.db.filter.NamesQueryFilter.getSSTableColumnIterator(NamesQueryFilter.java:86)
>       at 
> org.apache.cassandra.db.filter.QueryFilter.getSSTableColumnIterator(QueryFilter.java:75)
>       at 
> org.apache.cassandra.io.sstable.SSTableScanner$FilteredKeyScanningIterator$1.create(SSTableScanner.java:248)
>       at 
> org.apache.cassandra.db.columniterator.LazyColumnIterator.getSubIterator(LazyColumnIterator.java:75)
>       at 
> org.apache.cassandra.db.columniterator.LazyColumnIterator.getColumnFamily(LazyColumnIterator.java:87)
>       at 
> org.apache.cassandra.db.RowIteratorFactory$2.reduce(RowIteratorFactory.java:95)
>       at 
> org.apache.cassandra.db.RowIteratorFactory$2.reduce(RowIteratorFactory.java:79)
>       at 
> org.apache.cassandra.utils.MergeIterator$ManyToOne.consume(MergeIterator.java:111)
>       at 
> org.apache.cassandra.utils.MergeIterator$ManyToOne.computeNext(MergeIterator.java:97)
>       at 
> com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:143)
>       at 
> com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:138)
>       at 
> org.apache.cassandra.db.ColumnFamilyStore$6.computeNext(ColumnFamilyStore.java:1433)
>       at 
> org.apache.cassandra.db.ColumnFamilyStore$6.computeNext(ColumnFamilyStore.java:1429)
>       at 
> com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:143)
>       at 
> com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:138)
>       at 
> org.apache.cassandra.db.ColumnFamilyStore.filter(ColumnFamilyStore.java:1500)
>       at 
> org.apache.cassandra.db.ColumnFamilyStore.getRangeSlice(ColumnFamilyStore.java:1477)
>       at 
> org.apache.cassandra.db.ColumnFamilyStore.getRangeSlice(ColumnFamilyStore.java:1472)
>       at 
> org.apache.cassandra.db.HintedHandOffManager.scheduleAllDeliveries(HintedHandOffManager.java:464)
>       at 
> org.apache.cassandra.db.HintedHandOffManager.access$000(HintedHandOffManager.java:90)
>       at 
> org.apache.cassandra.db.HintedHandOffManager$1.run(HintedHandOffManager.java:133)
>       at 
> org.apache.cassandra.concurrent.DebuggableScheduledThreadPoolExecutor$UncomplainingRunnable.run(DebuggableScheduledThreadPoolExecutor.java:75)
>       at 
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
>       at 
> java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:351)
>       at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:178)
>       at 
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:178)
>       at 
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
>       at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>       at java.lang.Thread.run(Thread.java:722)
> this seems to be a regression from 
> https://issues.apache.org/jira/browse/CASSANDRA-5966. 

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to