我在cqlsh中运行alter table命令时收到OperationTimedOut错误。那怎么可能?由于这只是表元数据更新,因此该操作是否应该几乎立即运行?

具体来说,这是我的cqlsh会话的摘录

cqlsh:metric> alter table metric with gc_grace_seconds = 86400;
OperationTimedOut: errors={}, last_host=sandbox73vm230


指标表当前的gc_grace_seconds为864000。我在2节点群集和6节点2数据中心群集中看到此行为。我的节点总体来说似乎通信良好(例如,我可以插入其中一个节点并从另一个节点读取)。这是完整的表定义(具有DateTieredCompactionStrategy,聚类和缓存更改的蓝绿色0.1.3架构):

CREATE TABLE metric.metric (
    tenant text,
    period int,
    rollup int,
    path text,
    time bigint,
    data list<double>,
    PRIMARY KEY ((tenant, period, rollup, path), time)
) WITH CLUSTERING ORDER BY (time ASC)
    AND bloom_filter_fp_chance = 0.01
    AND caching = '{"keys":"ALL", "rows_per_partition":"NONE"}'
    AND comment = ''
    AND compaction = {'timestamp_resolution': 'SECONDS', 'class': 'org.apache.cassandra.db.compaction.DateTieredCompactionStrategy'}
    AND compression = {'sstable_compression': 'org.apache.cassandra.io.compress.LZ4Compressor'}
    AND dclocal_read_repair_chance = 0.0
    AND default_time_to_live = 0
    AND gc_grace_seconds = 864000
    AND max_index_interval = 2048
    AND memtable_flush_period_in_ms = 0
    AND min_index_interval = 128
    AND read_repair_chance = 0.0
    AND speculative_retry = 'NONE';

最佳答案

我意识到这时的问题已经很老了,您可能已经想出了答案,或者以其他方式继续前进,但是希望将其发布,以防其他人偶然发现。

默认的cqlsh请求超时为10秒。您可以通过将cqlsh选项设置为允许ALTER TABLE运行完成的某个值来启动--request-timeout来进行调整,例如:

cqlsh --request-timeout=1000000

关于cassandra - cqlsh更改表期​​间的OperationTimedOut,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32505081/

10-12 05:03