Hi all,

I have a unit test framework for a Cassandra project that I'm working on.
For every one of my test classes, I delete all of the data file, commit
log, and saved cache locations, start an EmbeddedCassandraService, and
populate a keyspace and tables from scratch.

Currently, the unit tests that run in my first test class work fine, but
those in my second class die with this error:

    java.io.FileNotFoundException:
/Users/clint/work/external-repos/cassandra2-hadoop2/target/cassandra/data/system/local/system-local-jb-5-Data.db
(No such file or directory)

This error happens immediately after I call
EmbeddedCassandraService.start();

I turned on debugging and traced through the code, and I see this right
before the error message:

14/04/30 11:22:47 DEBUG org.apache.cassandra.service.FileCacheService:
Evicting cold readers for
/Users/clint/work/external-repos/cassandra2-hadoop2/target/cassandra/data/system/local/system-local-jb-5-Data.db

This seems to happen in a callback when a value (in this case, a file
reader) is evicted from a Guava cache.

I assume that the problem that I have is something like the following:

   - There is some kind of reading thread associated with
   target/cassandra/data/system/local/system-local-jb-5-Data.db
   - Even after I stop my EmbeddedCassandraService and blow away all of the
   data file, commit log, and saved cache locations from my first unit test,
   the information about the reader for the now-deleted data file still exists.
   - Later when this reference expires in the cache and Cassandra goes to
   notify the reader, the error occurs because the file no longer exists.

Does anyone have any suggestions on how to deal with this?

Best regards,
Clint

Reply via email to