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

Jonathan Ellis commented on CASSANDRA-4707:
-------------------------------------------

I don't see how this ties into schema changes.  Here's CFSerializer.deserialize:

{code}
    public ColumnFamily deserialize(DataInput dis, IColumnSerializer.Flag flag, 
ISortedColumns.Factory factory) throws IOException
    {
        if (!dis.readBoolean())
            return null;

        // create a ColumnFamily based on the cf id
        int cfId = dis.readInt();
        if (Schema.instance.getCF(cfId) == null)
            throw new UnknownColumnFamilyException("Couldn't find cfId=" + 
cfId, cfId);
        ColumnFamily cf = ColumnFamily.create(cfId, factory);
        deserializeFromSSTableNoColumns(cf, dis);
        deserializeColumns(dis, cf, flag);
        return cf;
    }
{code}

So:
# serialization relies on the cfId, not cfname, so creating a new cf with the 
old name should have no effect (the new cf will get a different id)
# if the cf is dropped, it won't be in the Schema map anymore and 
UnknownColumnFamilyException should be thrown (which HHOM handles)

If you can give steps to reproduce that would help a lot.
                
> EOFException during HH delivery
> -------------------------------
>
>                 Key: CASSANDRA-4707
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-4707
>             Project: Cassandra
>          Issue Type: Bug
>    Affects Versions: 1.1.5
>         Environment: windows
>            Reporter: Radim Kolar
>
> i have got following error during HH every replay. I did nodetool scrub on 
> system.hintedhandoff and sstable is not corrupted, it must have invalid data 
> inside.
>  INFO [HintedHandoff:10] 2012-09-23 20:26:21,988 HintedHandOffManager.java 
> (line 294) Started hinted handoff for token: 
> 138224439286689469893643387845607487221 with IP: /10.0.0.9
> ERROR [HintedHandoff:10] 2012-09-23 20:26:21,988 AbstractCassandraDaemon.java 
> (line 135) Exception in thread Thread[HintedHandoff:10,1,main]
> java.io.IOError: java.io.EOFException
>       at 
> org.apache.cassandra.io.util.ColumnIterator.deserializeNext(ColumnSortedMap.java:259)
>       at 
> org.apache.cassandra.io.util.ColumnIterator.next(ColumnSortedMap.java:275)
>       at 
> org.apache.cassandra.io.util.ColumnIterator.next(ColumnSortedMap.java:232)
>       at edu.stanford.ppl.concurrent.SnapTreeMap.<init>(SnapTreeMap.java:453)
>       at 
> org.apache.cassandra.db.AtomicSortedColumns$Holder.<init>(AtomicSortedColumns.java:311)
>       at 
> org.apache.cassandra.db.AtomicSortedColumns.<init>(AtomicSortedColumns.java:77)
>       at 
> org.apache.cassandra.db.AtomicSortedColumns.<init>(AtomicSortedColumns.java:48)
>       at 
> org.apache.cassandra.db.AtomicSortedColumns$1.fromSorted(AtomicSortedColumns.java:61)
>       at 
> org.apache.cassandra.db.SuperColumnSerializer.deserialize(SuperColumn.java:399)
>       at 
> org.apache.cassandra.db.ColumnFamilySerializer.deserializeColumns(ColumnFamilySerializer.java:144)
>       at 
> org.apache.cassandra.db.ColumnFamilySerializer.deserializeColumns(ColumnFamilySerializer.java:136)
>       at 
> org.apache.cassandra.db.ColumnFamilySerializer.deserialize(ColumnFamilySerializer.java:129)
>       at 
> org.apache.cassandra.db.RowMutation$RowMutationSerializer.deserialize(RowMutation.java:439)
>       at 
> org.apache.cassandra.db.RowMutation$RowMutationSerializer.deserialize(RowMutation.java:447)
>       at 
> org.apache.cassandra.db.HintedHandOffManager.deliverHintsToEndpointInternal(HintedHandOffManager.java:353)
>       at 
> org.apache.cassandra.db.HintedHandOffManager.deliverHintsToEndpoint(HintedHandOffManager.java:256)
>       at 
> org.apache.cassandra.db.HintedHandOffManager.access$300(HintedHandOffManager.java:84)
>       at 
> org.apache.cassandra.db.HintedHandOffManager$3.runMayThrow(HintedHandOffManager.java:436)
>       at 
> org.apache.cassandra.utils.WrappedRunnable.run(WrappedRunnable.java:30)
>       at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
>       at java.lang.Thread.run(Thread.java:722)
> Caused by: java.io.EOFException
>       at java.io.DataInputStream.readFully(DataInputStream.java:197)
>       at java.io.DataInputStream.readFully(DataInputStream.java:169)
>       at 
> org.apache.cassandra.utils.ByteBufferUtil.read(ByteBufferUtil.java:401)
>       at 
> org.apache.cassandra.utils.ByteBufferUtil.readWithShortLength(ByteBufferUtil.java:380)
>       at 
> org.apache.cassandra.db.ColumnSerializer.deserialize(ColumnSerializer.java:88)
>       at 
> org.apache.cassandra.io.util.ColumnIterator.deserializeNext(ColumnSortedMap.java:255)
>       ... 21 more

--
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