Reading from a non-existent table shouldn’t crash the database

Clearly the hint error invoked the fs error handler - probably incorrectly - 
which shut down the db. That’s not ok and deserves a JIRA.

If dropping a table causes a hint checksum error then it needs to be fixed.



>> On Feb 18, 2020, at 6:49 PM, Erick Ramirez <erick.rami...@datastax.com> 
>> wrote:
> 
>> We are on cassandra 3.11 , we are using G1GC and using 16GB of heap.
> 
> Which exact version of C* is it again?
>> WARN  [MessagingService-Incoming-/10.X.X.X] 2020-02-18 14:21:47,115 
>> IncomingTcpConnection.java:103 - UnknownColumnFamilyException reading from 
>> socket; closing
> 
> This is expected because your app is trying to read the MV you just dropped.
> 
>> ERROR [MutationStage-9] 2020-02-18 14:21:47,267 Keyspace.java:593 - 
>> Attempting to mutate non-existant table 7bb4b2d2-8622-11e8-a44b-a92f2dd93ff1 
> 
> Any view update transactions which are already in-flight will fail. Again, 
> this is expected since the MV updates are not synchronous with the base table 
> updates.
> 
>> WARN  [BatchlogTasks:1] 2020-02-18 14:21:53,786 BatchlogManager.java:252 - 
>> Skipped batch replay of a19c6480-5294-11ea-9e09-3948c59ad0f5 due to {}
> 
> As above, this is expected since the MV updates which are already in the 
> queue will fail to apply because the MV got dropped.
> 
>> WARN  [HintsDispatcher:6737] 2020-02-18 14:22:24,932 HintsReader.java:237 - 
>> Failed to read a hint for /10.X.X.X: f75e58e8-c255-4318-a553-06487b6bbe8c - 
>> table with id 7bb4b2d2-8622-11e8-a44b-a92f2dd93ff1 is unknown in file 
>> f75e58e8-c255-4318-a553-06487b6bbe8c-1582060925656-1.hints
> 
> This is also expected. It won't be able to read the hint for a non-existent 
> MV.
> 
> So where to from here? The symptoms you described indicate that you haven't 
> updated your app before you dropped the MVs. That is key here -- your app 
> shouldn't be issuing reads for the MV since your intention is to drop it. 
> What I think happened is that the nodes were backed up with read requests for 
> the MV which no longer exists.
> 
> Can you confirm that you have changed your application so it is not supposed 
> to issue reads to the MV? You shouldn't drop MVs if you're still going to 
> issue read requests from them just like you shouldn't drop tables your app is 
> still expected to access. I hope that makes sense. Cheers!

Reply via email to