通过 java 客户端进行放置时,Aerospike 异常错误代码 4 参数错误
Aerospike Exception Error Code 4 Parameter Error when doing a put through java client
我正在处理一个包含记录列表的 avro 文件,并对每条记录执行 client.put 到我本地的 Aerospike 商店。
出于某种原因,放置一定数量的记录是成功的,而其余的则不是。我正在这样做 -
client.put(writePolicy, recordKey, bins);
失败调用的相关值为 -
命名空间=测试
setname = test_set
用户密钥=some_string
写策略=空
垃圾桶 -
is_user:1
prof_loc:530049,530046,530032,530031,530017,530016,500046
rfm:白金
store_browsed:some_string
store_purch:some_string
city_id:空
日志片段-
com.aerospike.client.AerospikeException: Error Code 4: Parameter error
at com.aerospike.client.command.WriteCommand.parseResult(WriteCommand.java:72)
at com.aerospike.client.command.SyncCommand.execute(SyncCommand.java:56)
at com.aerospike.client.AerospikeClient.put(AerospikeClient.java:338)
可能是什么问题?
终于。已解决!
在这种情况下,我使用的是 REPLACE
RecordsExistsAction。任何具有 null
值的 bin 在此配置中都将失败。 Aerospike 将 bin 中的空值视为等同于从键的记录中删除该 bin 值。因此 REPLACE
配置对于这样的操作没有意义,因此参数错误 - 无效的数据库操作。
UPDATE
另一方面,配置将工作得很好。
Aerospike 允许非常灵活地读写。为了让开发人员利用此功能,Aerospike 在 Policy 和 WritePolicy 上公开了大量变量,这有时会让初学者望而却步并且容易出错。 Parameter error简单来说就是有些配置不连贯。一个简单的开始是使用默认的读取或写入策略,这可以通过将 null 作为策略传递来获得。
例如:
aeroClient.put(null, key, new Bin("binName", object));
下面是 aerospike put 方法代码片段
public final void put(WritePolicy policy, Key key, Bin... bins) throws AerospikeException {
if (policy == null) {
policy = writePolicyDefault;
}
WriteCommand command = new WriteCommand(cluster, policy, key, bins, Operation.Type.WRITE);
command.execute();
}
我最近遇到这个错误,因为我在 writePolicy 中使用的过期值超过了缓存的默认过期时间
我正在处理一个包含记录列表的 avro 文件,并对每条记录执行 client.put 到我本地的 Aerospike 商店。
出于某种原因,放置一定数量的记录是成功的,而其余的则不是。我正在这样做 -
client.put(writePolicy, recordKey, bins);
失败调用的相关值为 -
命名空间=测试
setname = test_set
用户密钥=some_string
写策略=空
垃圾桶 -
is_user:1
prof_loc:530049,530046,530032,530031,530017,530016,500046
rfm:白金
store_browsed:some_string
store_purch:some_string
city_id:空
日志片段-
com.aerospike.client.AerospikeException: Error Code 4: Parameter error
at com.aerospike.client.command.WriteCommand.parseResult(WriteCommand.java:72)
at com.aerospike.client.command.SyncCommand.execute(SyncCommand.java:56)
at com.aerospike.client.AerospikeClient.put(AerospikeClient.java:338)
可能是什么问题?
终于。已解决!
在这种情况下,我使用的是 REPLACE
RecordsExistsAction。任何具有 null
值的 bin 在此配置中都将失败。 Aerospike 将 bin 中的空值视为等同于从键的记录中删除该 bin 值。因此 REPLACE
配置对于这样的操作没有意义,因此参数错误 - 无效的数据库操作。
UPDATE
另一方面,配置将工作得很好。
Aerospike 允许非常灵活地读写。为了让开发人员利用此功能,Aerospike 在 Policy 和 WritePolicy 上公开了大量变量,这有时会让初学者望而却步并且容易出错。 Parameter error简单来说就是有些配置不连贯。一个简单的开始是使用默认的读取或写入策略,这可以通过将 null 作为策略传递来获得。 例如:
aeroClient.put(null, key, new Bin("binName", object));
下面是 aerospike put 方法代码片段
public final void put(WritePolicy policy, Key key, Bin... bins) throws AerospikeException {
if (policy == null) {
policy = writePolicyDefault;
}
WriteCommand command = new WriteCommand(cluster, policy, key, bins, Operation.Type.WRITE);
command.execute();
}
我最近遇到这个错误,因为我在 writePolicy 中使用的过期值超过了缓存的默认过期时间