0

我正在对持续时间进行分析,以使用 java 程序运行 couchdb 清除。couchdb 连接和调用使用 ektorp 处理。对于少数文档进行了清除,我收到了成功响应。

但是当我清除〜10000或更多时,我收到以下错误:

    org.ektorp.DbAccessException: 500:Internal Server Error
    URI: /dbname/_purge
    Response Body: 
    {
      "error" : "timeout",
      "reason" : "{gen_server,call,
....

在使用 curl 命令检查数据库状态时,实际清除已经发生。但是这个超时不允许我在我的 java 程序中监视清除方法的实际时间,因为这会引发异常。

在一些研究中,我相信这是由于 erlang gen_server 进程的默认超时值。无论如何我可以解决这个问题吗?

我尝试更改 StdHttpClient 的超时值无济于事。

HttpClient authenticatedHttpClient = new StdHttpClient.Builder()
                    .url(url)
                    .username(Conf.COUCH_USERNAME)
                    .password(Conf.COUCH_PASSWORD)
                    .connectionTimeout(600*1000)
                    .socketTimeout(600*1000)
                    .build();
4

1 回答 1

2

CouchDB 开发人员在这里。您不应该对大量文档使用清除。这是为了从数据库中删除意外添加的数据,例如信用卡或社会安全号码。这不适用于一般操作。

因此,您不能提高gen_server超时时间:)

于 2017-01-26T16:35:56.740 回答