4

我需要将 GCGraceSeconds 设置为 0,因为我只有一个节点,但我找不到可以为此设置值的位置。是否可以从 astyanax 设置或在某些设置文件中设置?

4

2 回答 2

4

在最新版本的 cassandra 中,您实际上将gc_grace_seconds每个列族设置为架构的一部分。据我所知,Astyanax 目前不支持设置该属性。类中没有对应的方法ColumnFamilyDefinition

https://github.com/Netflix/astyanax/blob/master/src/main/java/com/netflix/astyanax/ddl/ColumnFamilyDefinition.java

如果您愿意,可以使用 cassandra-cli 工具在任何现有列族上设置属性。

此外,添加对 Astyanax 的支持似乎并不难。我相信他们会接受拉取请求。

更新

Astyanax(暂时)现在支持此设置。请参阅ColumnFamilyDefinition。这可以在 astyanax 列族创建中设置,如下所示:

OperationResult<SchemaChangeResult> opres = keyspace.createColumnFamily(cf, ImmutableMap.<String, Object> builder()
    .put("comparator", "UTF8Type")
    .put("key_validation_class", "UTF8Type")
    .put("gc_grace_seconds", 60*60*24) // gc grace seconds of one day
    .build()
);
于 2012-06-24T14:24:29.207 回答
2

这是在conf/cassandra.yaml(Cassandra 配置文件)中完成的

0.7 之前的版本:conf/storage-conf.xml

请记住:“将此设置为一个足够大的值,以便您确信删除标记将在经过这么多秒时传播到所有副本,即使面对硬件故障也是如此。默认值是十天。

默认值为:“ 864000 ”秒或10天。

于 2012-06-23T13:30:53.290 回答