You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@cassandra.apache.org by Boris Yen <yu...@gmail.com> on 2011/12/05 08:19:56 UTC

DyanmicCompositeType bug?

Hi,

I am using 0.8.7.

I was trying to use DynamicComposite column. After I intentional added a
column (string:string:uuid) into a record which has previous columns
inserted with comparator (string:uuid:uuid). I got an exception on the
cassandra side and an timeout exception on the client (I was actually
expecting an validation exception on the client).

After that when I re-started cassandra, cassandra kept saying that
"comparator mismatch while comparing two dynamicCompositeType column..."
and cassandra never really got started.

Is this a bug?

Re: DyanmicCompositeType bug?

Posted by Boris Yen <yu...@gmail.com>.
It looks like using the dynamicComposite is a dangerous action. However,
one mistaken insertion causes the database to corrupt seems a little bit
too much. Is there anyway to just skip the wrong column.

On Mon, Dec 5, 2011 at 5:31 PM, Sylvain Lebresne <sy...@datastax.com>wrote:

> On Mon, Dec 5, 2011 at 8:19 AM, Boris Yen <yu...@gmail.com> wrote:
> > Hi,
> >
> > I am using 0.8.7.
> >
> > I was trying to use DynamicComposite column. After I intentional added a
> > column (string:string:uuid) into a record which has previous columns
> > inserted with comparator (string:uuid:uuid). I got an exception on the
> > cassandra side and an timeout exception on the client (I was actually
> > expecting an validation exception on the client).
>
> By design, the DynamicComposite comparator cannot return a validation
> exception in that case. Or rather, since there is nothing specifying how
> a column should look like, the only way we could ever hope to return a
> validation exception would be to scan the entire row on insertion (which
> is out of question).
>
> > After that when I re-started cassandra, cassandra kept saying that
> > "comparator mismatch while comparing two dynamicCompositeType column..."
> and
> > cassandra never really got started.
> >
> > Is this a bug?
>
> No. As said above, this is something we cannot do anything about.
> The DynamicCompositeType comparator is by nature a very dangerous
> one. One column inserted in the wrong row can corrupt that row (with
> recovery involving losing data).
> In other words, don't use DynamicCompositeType. Don't use it unless
> you are absolutely sure you won't ever insert the wrong column in the
> wrong row *and* you absolutely need the DynamicCompositeType (by
> opposition to the faster, cheaper and safe CompositeType). And if you
> do, you have to assume the consequence if you do mess up.
>
> --
> Sylvain
>
> --
> Sylvain
>

Re: DyanmicCompositeType bug?

Posted by Sylvain Lebresne <sy...@datastax.com>.
On Mon, Dec 5, 2011 at 8:19 AM, Boris Yen <yu...@gmail.com> wrote:
> Hi,
>
> I am using 0.8.7.
>
> I was trying to use DynamicComposite column. After I intentional added a
> column (string:string:uuid) into a record which has previous columns
> inserted with comparator (string:uuid:uuid). I got an exception on the
> cassandra side and an timeout exception on the client (I was actually
> expecting an validation exception on the client).

By design, the DynamicComposite comparator cannot return a validation
exception in that case. Or rather, since there is nothing specifying how
a column should look like, the only way we could ever hope to return a
validation exception would be to scan the entire row on insertion (which
is out of question).

> After that when I re-started cassandra, cassandra kept saying that
> "comparator mismatch while comparing two dynamicCompositeType column..." and
> cassandra never really got started.
>
> Is this a bug?

No. As said above, this is something we cannot do anything about.
The DynamicCompositeType comparator is by nature a very dangerous
one. One column inserted in the wrong row can corrupt that row (with
recovery involving losing data).
In other words, don't use DynamicCompositeType. Don't use it unless
you are absolutely sure you won't ever insert the wrong column in the
wrong row *and* you absolutely need the DynamicCompositeType (by
opposition to the faster, cheaper and safe CompositeType). And if you
do, you have to assume the consequence if you do mess up.

--
Sylvain

--
Sylvain