cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Lerh Chuan Low (JIRA)" <j...@apache.org>
Subject [jira] [Comment Edited] (CASSANDRA-13346) Failed unregistering mbean during drop keyspace
Date Mon, 01 May 2017 04:58:04 GMT

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

Lerh Chuan Low edited comment on CASSANDRA-13346 at 5/1/17 4:57 AM:
--------------------------------------------------------------------

This is quite easily reproduced, we just have to create a materialized view and try to drop
keyspace. 

{code}
CREATE KEYSPACE mvtest WITH REPLICATION = { 'class' : 'SimpleStrategy', 'replication_factor':
1 };
CREATE TABLE mvtest.tobedropped (
    foo int,
    bar text,
    baz text,
    PRIMARY KEY (foo, bar)
);

CREATE MATERIALIZED VIEW mvtest.explosion AS
    SELECT foo, bar, baz FROM mvtest.tobedropped WHERE
    foo IS NOT NULL AND bar IS NOT NULL AND baz IS NOT NULL
PRIMARY KEY (foo, bar, baz);

INSERT INTO mvtest.tobedropped (foo, bar, baz) VALUES (1, 'baz', 'bokusapp');
INSERT INTO mvtest.tobedropped (foo, bar, baz) VALUES (2, 'baz', 'vitamin');
INSERT INTO mvtest.tobedropped (foo, bar, baz) VALUES (2, 'backgammon', 'gin');

DROP KEYSPACE mvtest;
{code}

As [~Andrew Efimov] mentioned, this seems to be because {{ViewLockReadTime}} and {{ViewLockAcquireTime}}
are both set to null for materialized views (they don't make sense for materialized views
and was decided to be that way based on [CASSANDRA-10323|https://issues.apache.org/jira/browse/CASSANDRA-10323]).
So the call to {{Metrics.getMetrics().get(name.getMetricName())}} returns null, which throws
the Exception as the {{remove}} method does not allow {{null}} values (For the implementation
of the set in {{allTableMetrics}}. I've attached a patch for both 3.0.X and 3.X since it's
a relatively small change - it looks like it's just a case of trying to unregister a metric
from the registry that doesn't exist so we should just ignore it when it's {{null}} (which
is only when it's releasing view metrics). I've retested it on my local and it works...Any
feedbacks are welcome! ([~carlyeks], [~cnlwsu]]...?), or guidance on writing tests if necessary
(It doesn't seem like there are any metrics tests though there are metrics dtests, I'll try
taking a look at dtests). 


was (Author: lerh low):
This is quite easily reproduced, we just have to create a materialized view and try to drop
keyspace. 

{code}
CREATE KEYSPACE mvtest WITH REPLICATION = { 'class' : 'SimpleStrategy', 'replication_factor':
1 };
CREATE TABLE mvtest.tobedropped (
    foo int,
    bar text,
    baz text,
    PRIMARY KEY (foo, bar)
);

CREATE MATERIALIZED VIEW mvtest.explosion AS
    SELECT foo, bar, baz FROM mvtest.tobedropped WHERE
    foo IS NOT NULL AND bar IS NOT NULL AND baz IS NOT NULL
PRIMARY KEY (foo, bar, baz);

INSERT INTO mvtest.tobedropped (foo, bar, baz) VALUES (1, 'baz', 'bokusapp');
INSERT INTO mvtest.tobedropped (foo, bar, baz) VALUES (2, 'baz', 'vitamin');
INSERT INTO mvtest.tobedropped (foo, bar, baz) VALUES (2, 'backgammon', 'gin');

DROP KEYSPACE mvtest;
{code}

As [~Andrew Efimov] mentioned, this seems to be because {{ViewLockReadTime}} and {{ViewLockAcquireTime}}
are both set to null for materialized views (they don't make sense for materialized views
and was decided to be that way based on [CASSANDRA-10323|https://issues.apache.org/jira/browse/CASSANDRA-10323]).
So the call to {{Metrics.getMetrics().get(name.getMetricName())}} returns null, which throws
the Exception as the {{remove}} method does not allow {{null}} values (For the implementation
of the set in {{allTableMetrics}}. I've attached a patch for both 3.0.X and 3.X since it's
a relatively small change - it looks like it's just a case of trying to unregister a metric
from the registry that doesn't exist so we should just ignore it when it's `null` (which is
only when it's releasing view metrics). I've retested it on my local and it works...Any feedbacks
are welcome! ([~carlyeks], [~cnlwsu]]...?), or guidance on writing tests if necessary (It
doesn't seem like there are any metrics tests though there are metrics dtests, I'll try taking
a look at dtests). 

> Failed unregistering mbean during drop keyspace
> -----------------------------------------------
>
>                 Key: CASSANDRA-13346
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-13346
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Materialized Views
>         Environment: Cassandra 3.9
>            Reporter: Gábor Auth
>            Assignee: Lerh Chuan Low
>            Priority: Minor
>              Labels: lhf
>             Fix For: 3.0.x, 3.11.x
>
>         Attachments: 13346-3.0.X.txt, 13346-3.X.txt
>
>
> All node throw exceptions about materialized views during drop keyspace:
> {code}
> WARN  [MigrationStage:1] 2017-03-16 16:54:25,016 ColumnFamilyStore.java:535 - Failed
unregistering mbean: org.apache.cassandra.db:type=Tables,keyspace=test20160810,table=unit_by_account
> java.lang.NullPointerException: null
>         at java.util.concurrent.ConcurrentHashMap.replaceNode(ConcurrentHashMap.java:1106)
~[na:1.8.0_121]
>         at java.util.concurrent.ConcurrentHashMap.remove(ConcurrentHashMap.java:1097)
~[na:1.8.0_121]
>         at java.util.concurrent.ConcurrentHashMap$KeySetView.remove(ConcurrentHashMap.java:4569)
~[na:1.8.0_121]
>         at org.apache.cassandra.metrics.TableMetrics.release(TableMetrics.java:712) ~[apache-cassandra-3.9.0.jar:3.9.0]
>         at org.apache.cassandra.db.ColumnFamilyStore.unregisterMBean(ColumnFamilyStore.java:570)
[apache-cassandra-3.9.0.jar:3.9.0]
>         at org.apache.cassandra.db.ColumnFamilyStore.invalidate(ColumnFamilyStore.java:527)
[apache-cassandra-3.9.0.jar:3.9.0]
>         at org.apache.cassandra.db.ColumnFamilyStore.invalidate(ColumnFamilyStore.java:517)
[apache-cassandra-3.9.0.jar:3.9.0]
>         at org.apache.cassandra.db.Keyspace.unloadCf(Keyspace.java:365) [apache-cassandra-3.9.0.jar:3.9.0]
>         at org.apache.cassandra.db.Keyspace.dropCf(Keyspace.java:358) [apache-cassandra-3.9.0.jar:3.9.0]
>         at org.apache.cassandra.config.Schema.dropView(Schema.java:744) [apache-cassandra-3.9.0.jar:3.9.0]
>         at org.apache.cassandra.schema.SchemaKeyspace.lambda$mergeSchema$373(SchemaKeyspace.java:1287)
[apache-cassandra-3.9.0.jar:3.9.0]
>         at java.lang.Iterable.forEach(Iterable.java:75) ~[na:1.8.0_121]
>         at org.apache.cassandra.schema.SchemaKeyspace.mergeSchema(SchemaKeyspace.java:1287)
[apache-cassandra-3.9.0.jar:3.9.0]
>         at org.apache.cassandra.schema.SchemaKeyspace.mergeSchemaAndAnnounceVersion(SchemaKeyspace.java:1256)
[apache-cassandra-3.9.0.jar:3.9.0]
>         at org.apache.cassandra.db.DefinitionsUpdateVerbHandler$1.runMayThrow(DefinitionsUpdateVerbHandler.java:51)
~[apache-cassandra-3.9.0.jar:3.9.0]
>         at org.apache.cassandra.utils.WrappedRunnable.run(WrappedRunnable.java:28) ~[apache-cassandra-3.9.0.jar:3.9.0]
>         at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[na:1.8.0_121]
>         at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[na:1.8.0_121]
>         at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
~[na:1.8.0_121]
>         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
~[na:1.8.0_121]
>         at java.lang.Thread.run(Thread.java:745) ~[na:1.8.0_121]
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org


Mime
View raw message