[
https://issues.apache.org/jira/browse/CASSANDRA-1423?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12901631#action_12901631
]
Dominic Williams commented on CASSANDRA-1423:
---------------------------------------------
Looks like this bug might hopefully be a straightforward case of not cleaning
up file handles (or at least, always opening files afresh, and then not
handling the error when you can't open any more). I should have checked logs.
>From system.log:
ERROR [pool-1-thread-74] 2010-08-23 23:18:34,749 Cassandra.java (line 2651)
Internal error processing get_slice
java.lang.RuntimeException: java.util.concurrent.ExecutionException:
java.io.IOError: java.io.FileNotFoundException:
/var/lib/cassandra/data/FightMyMonster/UK_Schools_FullTextIndex-e-2-Data.db
(Too many open files)
at
org.apache.cassandra.service.StorageProxy.weakRead(StorageProxy.java:354)
at
org.apache.cassandra.service.StorageProxy.readProtocol(StorageProxy.java:297)
at
org.apache.cassandra.thrift.CassandraServer.readColumnFamily(CassandraServer.java:125)
at
org.apache.cassandra.thrift.CassandraServer.getSlice(CassandraServer.java:231)
at
org.apache.cassandra.thrift.CassandraServer.multigetSliceInternal(CassandraServer.java:309)
at
org.apache.cassandra.thrift.CassandraServer.get_slice(CassandraServer.java:270)
at
org.apache.cassandra.thrift.Cassandra$Processor$get_slice.process(Cassandra.java:2643)
at
org.apache.cassandra.thrift.Cassandra$Processor.process(Cassandra.java:2499)
at
org.apache.cassandra.thrift.CustomTThreadPoolServer$WorkerProcess.run(CustomTThreadPoolServer.java:167)
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.util.concurrent.ExecutionException: java.io.IOError:
java.io.FileNotFoundException:
/var/lib/cassandra/data/FightMyMonster/UK_Schools_FullTextIndex-e-2-Data.db
(Too many open files)
at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:222)
at java.util.concurrent.FutureTask.get(FutureTask.java:83)
at
org.apache.cassandra.service.StorageProxy.weakRead(StorageProxy.java:350)
... 11 more
Caused by: java.io.IOError: java.io.FileNotFoundException:
/var/lib/cassandra/data/FightMyMonster/UK_Schools_FullTextIndex-e-2-Data.db
(Too many open files)
at
org.apache.cassandra.io.util.BufferedSegmentedFile.getSegment(BufferedSegmentedFile.java:68)
at
org.apache.cassandra.io.sstable.SSTableReader.getFileDataInput(SSTableReader.java:545)
at
org.apache.cassandra.db.columniterator.SSTableSliceIterator.<init>(SSTableSliceIterator.java:71)
at
org.apache.cassandra.db.columniterator.SSTableSliceIterator.<init>(SSTableSliceIterator.java:48)
at
org.apache.cassandra.db.filter.SliceQueryFilter.getSSTableColumnIterator(SliceQueryFilter.java:64)
at
org.apache.cassandra.db.filter.QueryFilter.getSSTableColumnIterator(QueryFilter.java:76)
at
org.apache.cassandra.db.ColumnFamilyStore.getTopLevelColumns(ColumnFamilyStore.java:956)
at
org.apache.cassandra.db.ColumnFamilyStore.getColumnFamily(ColumnFamilyStore.java:851)
at
org.apache.cassandra.db.ColumnFamilyStore.getColumnFamily(ColumnFamilyStore.java:826)
at org.apache.cassandra.db.Table.getRow(Table.java:330)
at
org.apache.cassandra.db.SliceFromReadCommand.getRow(SliceFromReadCommand.java:71)
at
org.apache.cassandra.service.StorageProxy$weakReadLocalCallable.call(StorageProxy.java:816)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
... 3 more
Caused by: java.io.FileNotFoundException:
/var/lib/cassandra/data/FightMyMonster/UK_Schools_FullTextIndex-e-2-Data.db
(Too many open files)
at java.io.RandomAccessFile.open(Native Method)
at java.io.RandomAccessFile.<init>(RandomAccessFile.java:212)
at java.io.RandomAccessFile.<init>(RandomAccessFile.java:98)
at
org.apache.cassandra.io.util.BufferedRandomAccessFile.<init>(BufferedRandomAccessFile.java:142)
at
org.apache.cassandra.io.util.BufferedSegmentedFile.getSegment(BufferedSegmentedFile.java:62)
... 16 more
> Cassandra's internal state broke by getting column slices. Error
> org.apache.thrift.TApplicationException: Internal error processing get_slice
> afterwards.
> ---------------------------------------------------------------------------------------------------------------------------------------------------------
>
> Key: CASSANDRA-1423
> URL: https://issues.apache.org/jira/browse/CASSANDRA-1423
> Project: Cassandra
> Issue Type: Bug
> Components: Core
> Affects Versions: 0.7 beta 1
> Environment: Ubuntu 9.04
> Reporter: Dominic Williams
> Priority: Critical
> Fix For: 0.7 beta 2
>
> Attachments: fmm-add-schools.zip
>
>
> The attached program (with data that it can import) causes large column
> slices to be requested from Cassandra.
> The program itself uploads school address data to a Cassyndex full text
> index, and then allows you to search that. The program simulates someone
> typing a search into an active search box, which shows you the matches for
> the current term as you type. Thus when you enter a search term such as
> "cherwell school oxford" actually it performs the searches "c", "ch", "che",
> "cher", "cherw" etc
> You can configure the delay between the "keystrokes". If your delay allows
> the searches to complete sequentially, you are ok. But if you have a short
> delay, and searches are created in parallel, pretty quickly this error will
> arise - "org.apache.thrift.TApplicationException: Internal error processing
> get_slice".
> Once this has occurred all future attempts and getting slices of columns will
> return the same error, and your'e only option is to restart Cassandra.
> This looks like some kind of concurrency edge condition bug caused by
> requesting sufficiently large intersecting slices in parallel. It may be in
> other versions too.
> I've been testing on 0.7 B1 using an RP cluster.
> The attached maven project should pull down the scale7 libraries but if
> interested you can find the sources at http://github.com/s7
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.