Open unpete opened 3 years ago
@blackmixer, я не понял из описания, как должен выглядеть текст в config-файле, чтобы история не обрезалась
default.ini
[smoosh]
;
; More documentation on these is in the Automatic Compaction
; section of the documentation.
;
db_channels = ratio_dbs,slack_dbs
view_channels = upgrade_views,ratio_views,slack_views
;
[smoosh.ratio_dbs]
priority = ratio
min_priority = 2.0
max_size = 100
;
[smoosh.ratio_views]
priority = ratio
min_priority = 2.0
;
[smoosh.slack_dbs]
priority = slack
min_priority = 16777216
max_size = 100
;
[smoosh.slack_views]
priority = slack
min_priority = 16777216
Наверное, я совсем тупой и читать не умею, но обсуждаемая проблема в том, что в больших базах куда-то деваются старые ревизии. При том, что _revs_limit установлен в 1000, имеем 1-2 ревизии, а остальные missing
max_size
и прочие настройки автоматического сжатия - они про то, как часто, в какое время и с каким приоритетом это сжатие будет выполняться, но проблема не в расписании, а в том, что сжатие делает не то, что я ожидаю.
imho, вне зависимости от того, запущен _compact smoosh-ом или руками, результат должен быть одинаков, а именно, цитата: "_Removes old revision history beyond the limit specified by the revslimit database parameter "
can be configured by using the _revs_limit URL endpoint.
Ну так, специально для этого и выполнялся POST /db/_revs_limit 1000
А система ведёт себя так, будто _revs_limit = 1
А система ведёт себя так, будто _revs_limit = 1
При этом, поведение на небольших базах (до 100Mb) в 3.1 полностью соответствует ожиданиям. Ничего лишнего не откусывается. Версия 2.0 - 2.2 так же, вела себя предсказуемо на на базах любого размера, а в 3.1 - фокусы.
[smoosh.ignore]
%shard_name1% = true
%shard_name2% = true
Перечислять надо именно шарды, не просто имена баз. Официально не документировано, код вот тут https://github.com/apache/couchdb/blob/ea3e05fa93c288332c0b321530b13830870baf6d/src/smoosh/src/smoosh_utils.erl#L58
Похоже, в новой couchdb сделан оптимизатор, который удаляет ревизии в больших базах не обращая внимания на параметр _revs_limit (он равен 1000 в наших базах, но couchdb уничтожает историю)
Надо либо отключить сжатие couchdb, либо реализовать архивирование ревизий в auth-proxy (благо, все запросы проходят через него и технически несложно складывать ответы put-запросов в специальное место)