2017-01-18 10 views
0

Я выполняю анализ продолжительности времени, чтобы запустить очистку couchdb с помощью java-программы. Соединения и вызовы couchdb обрабатываются с помощью ektorp. Для небольшого количества документов происходит очистка, и я получаю успешный ответ.couchdb gen_server время ожидания вызова во время очистки

Но когда я очистить ~ 10000 или больше, я получаю следующее сообщение об ошибке:

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

При проверке состояния дБ с помощью завивки команды, фактическая продувки состоялась. Но этот тайм-аут не позволяет мне контролировать фактическое время метода очистки в моей программе java, поскольку это создает исключение.

В некоторых исследованиях я считаю, что это связано с значением тайм-аута по умолчанию для процесса genl-сервера erlang. В любом случае, я могу это исправить?

Я попытался изменить значения тайм-аута StdHttpClient безрезультатно.

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

ответ

1

CouchDB Dev здесь. Вы не должны использовать чистку с большим количеством документов. Это делается для удаления случайно добавленных данных из БД, таких как номера кредитной карты или социального страхования. Это не предназначено для общих операций.

Следовательно, вы не можете поднять этот gen_server тайм-аут :)

+0

спасибо за ответ, его в основном случае удаленных данных, собранных в течение определенного периода времени. следовательно, глядя на одноразовую опцию очистки, чтобы освободить место на диске. Связанный с этим вопрос: есть ли вероятность повреждения данных путем очистки большого количества удаленных документов? – fsociety

+1

для данных временных рядов, мы рекомендуем базу данных за каждый интервал, поэтому вы можете просто удалить предыдущие базы данных интервала. Повреждение данных: нет, все в CouchDB безопасно append_only и fsync() 'd. –

 Смежные вопросы

  • Нет связанных вопросов^_^