1.5. 2.1.x分支

1.5.1. 升级说明

  • 从2.x升级到2.1.1时,如果没有在中自定义节点名 vm.args ,请务必保留原件 vm.args 文件。默认节点名称已从更改 couchdb@localhostcouchdb@127.0.0.1 ,这可以阻止CouchDB访问系统上现有的数据库。您也可以通过设置 -name couchdb@localhost 在里面 etc/vm.args 用手。默认设置已更改,以满足新的指导原则,并在将来提供其他功能。

    如果您在日志文件中收到错误,例如 internal_server_error : No DB shards could be opened. 或者在Faxton,比如 This database failed to load. 你需要做些改变。

  • 已删除不推荐使用(已损坏)的OAuth 1.0实现。

  • 如果用户代码读取或操作replicator文档状态,请考虑使用 [replicator] update_docs = true 兼容性参数。在这种情况下,复制器将继续用临时复制状态更新文档。然而,这将产生性能成本。考虑使用 _scheduler/docs HTTP终结点。

  • 这个 stale 视图和的参数 _find 有两个新参数被弃用: stableupdate . 老年人 stale=ok 行为相当于 stable=true&update=false ,和旧的 stale=update_after 行为相当于 stable=true&update=lazy . 弃用的 stale 参数将在couchdb3.0中删除。

  • 新的 httpd/max_http_request_size 已添加配置参数。这和以前一样 couchdb/max_document_size 配置参数,不幸的是,它的名称被错误地命名,现在已经被更新为按名称所示的方式运行。两者都记录在装运的 default.ini 文件。

    注意,这个新参数的默认值是64MB,而不是4GB。如果您在尝试在couchdb日志中放置或发布htp413返回代码时出错,那么这可能是罪魁祸首。这也会影响couchup就地升级。

  • #914 :某些关键配置节被列入黑名单,无法通过HTTP API进行修改。这些部分仍然可以通过标准进行修改 local.inilocal.d/*.ini 文件夹。

  • #916couchjs 现在禁用 eval() 以及 Function() 默认为构造函数。要恢复原始行为,请添加 --eval 中javascript查询服务器定义的标志 local.ini 文件。

1.5.3. 2.1.1版本

1.5.3.1. 安全性

1.5.3.2. 一般

  • #617 :CouchDB现在支持编译并在Erlang/otp20.x下运行。

  • #756couch_peruser 功能现在 真正地 固定的。真正地。

  • #827 :在代理身份验证配置中使用的AuthSession cookie的cookie域现在可以通过ini文件进行自定义。

  • #858 :现在可以修改系统数据库的碎片映射。

  • #732 :由于Erlang错误 (ERL-343) ,如果装入的卷的名称中包含空格,则会返回无效路径。这个问题主要出现在macOS上。CouchDB现在通过跳过压缩守护进程执行的空闲空间检查,在未修补的Erlang版本中解决了这个错误。Erlang本身将在21.0版本中正确地执行空闲空间检查。

  • #824 :现在可以访问当前节点的本地接口 /_node/_local/{{endpoint}} 以及 /_node/<nodename>@<hostname>/{{endpoint}} .

  • 源存储库中的Dockerfile已失效。有关当前Dockerfile,请参见 couchdb-docker repository .

  • Fauxton现在使用了一个带有BSD许可证的React版本。

1.5.3.3. 性能

  • #835 :CouchDB现在不再解压缩文档来确定其未压缩的大小。在测试中,这使得数据库压缩的CPU和时钟时间都提高了10-40%。

  • 设计文档缓存 (ddoc_cache )已重写以提高性能。

1.5.3.4. 芒果

  • #808 :芒果现在支持 partial indexes . 部分索引允许在索引时对文档进行筛选,这可能会显著提高查询选择器的性能,因为查询选择器不能清晰地映射到索引上的范围查询。

  • #740 :Mango查询现在可以分页。每个查询响应都包含一个书签。可以在后续查询中提供书签,以便从特定键继续。

  • #768 芒果 _find 接受一个 execution_stats 参数。如果存在,则在响应中包含一个新对象,该对象包含有关所执行查询的信息。该对象包含检查的键总数(json索引为0),检查的文档总数(当 include_docs=true ,以及检查的仲裁文档总数(使用结构文档查找时)。

  • #816#866 :Mango现在要求候选索引中的所有字段必须存在于查询的选择器中。以前,此检查不正确,如果在查询时未指定显式索引,则查询规划器可能会选择只包含有效文档子集的索引。此外,如果在查询时指定了排序字段,则返回的结果中必须存在该字段(但可以为null)。

1.5.3.5. 其他

2.1.1版本还包括以下小改进:

  • #635 :在ddoc更新时停止couch_索引进程

  • #721 :立即保存迁移的replicator检查点文档

  • #688 :升级到https时重用基于http的复制检查点

  • #729 :建议仅使用 -name 而不是 -sname 在里面 vm.args 为了兼容性。

  • #738 :允许replicator应用程序始终更新replicator文档。

  • #605 添加 Prefer: return=minimal RFC7240中的头选项,以减少响应中的标头数。

  • #744 :允许将503响应返回给客户端(有度量支持)

  • #746 :记录来自rexi的有关崩溃的其他信息

  • #752 :允许Mango$进入查询,而不要求索引使用数组

  • 添加了(多个)附加调试实用程序。

  • 现在可以从2.0->2.1.1进行(多个)热代码升级。

  • 对测试套件进行了(多个)改进。

  • #765 芒果 _explain 现在包括用户请求的视图参数。

  • #653_show and _ list`现在应该适用于仅管理的数据库,例如 ``_users` .

  • #807 :芒果索引选择只能发生一次。

  • #804 :现在记录未处理的芒果错误。

  • #659 :提高 max_document_size 检查。

  • #817 :现在捕获到内联附件中的无效Base64。

  • #825 :当使用 _scheduler/jobs/<job_id> 端点。

  • #838 :不要将rexi消息缓冲到断开连接的节点。

  • #830 :stats收集间隔现在可以在ini文件中配置,而不是在应用程序上下文中。默认值为10,设置每600秒重新加载一次。

  • #812/{{db}} 端点现在包括 cluster 用数据库的 qn ,和默认值 wr 价值观。这补充了现有的 /{{db}}/_shards/{{db}}/_shards/{{id}} 关于切分和仲裁的详细信息。

  • #810 :replicator scheduler crasted counter gauge通过将默认重试次数从10次减少到5次(将持续时间从4分钟缩短到8秒),可以更可靠地检测复制崩溃。

  • COUCHDB-3288 :为即将到来的可插拔存储引擎工作容忍混合集群。

  • #839 :Mango python测试现在支持python3和python 2。

  • #845 :方便 remsh 添加了对运行脚本的实时调试支持。

  • #846 :当复制意外终止时,Replicator日志记录现在不太详细,信息更丰富。

  • #797 :Reduce overflow错误现在返回到客户端,允许只生成一个错误Reduce的视图,同时不会耗尽服务器的RAM使用量。

  • #881 :Mango现在允许在索引值为对象的文档上进行匹配(如果发出范围查询)。以前,查询结果可能会在索引和显式依赖于完整索引扫描的运算符/选择器(例如 $exists )不会返回完整的结果集。

  • #883 :对于比18.0更新的Erlang版本,Erlang时间模块兼容性得到了改进。

  • #933 :410现在在尝试发出临时查看请求时返回。

  • #934 :在收到 missing_doc 错误。

  • #936 :jiffy现在对JSON密钥进行重复数据消除。

1.5.4. 版本2.1.0

  • 芒果 _find 端点支持新的组合运算符, $allMatch ,匹配并返回包含数组字段及其所有元素与所有指定查询条件匹配的所有文档。

  • 新的调度复制器。新的replicator的核心是一个调度器,它允许运行大量的复制作业,方法是在这些作业之间切换、停止一些作业并定期启动其他作业。失败的工作会呈指数递减。还有一个改进的检查和查询API: _scheduler/jobs_scheduler/docs

    • _scheduler/jobs :此终结点显示活动的复制作业。这些作业由调度程序管理。它们中的一些可能正在运行,有些可能正在等待运行,或者由于崩溃次数太多而后退(受到惩罚)。从语义上讲,这在某种程度上相当于 _active_tasks 但只关注复制。由于复制文档格式不正确而已完成或从未创建的作业将不会显示在此处,因为它们不由计划程序管理。 _replicate 复制,从中启动的复制终结点不是从 _replicator db,也会出现在这里。

    • _scheduler/docs :此终结点改进了必须返回并读取复制文档才能查询其状态。它表示从replicator db中的文档开始的所有复制的状态。不像 _scheduler/jobs 它还将显示已失败或已完成的作业。

    默认情况下,scheduling replicator不会更新具有以下临时状态的文档 triggerederror 再也不是了 _scheduler/docs API应用于查询复制文档状态。

1.5.4.1. 其他调度复制器改进

  • 通过实现共享连接池,提高了网络资源的使用率和性能。这在大量连接到同一个源或目标的情况下会有所帮助。以前连接池只与单个复制作业共享。

  • 改进了请求速率限制处理。复制器请求将自动发现目标和源上的速率限制容量,这是基于一个经过验证的加性增加/乘性减少反馈控制算法。

  • 通过对所有复制作业失败进行指数级回退,提高了性能。以前有一些场景是失败导致连续的重复重试,在这个过程中消耗CPU和磁盘资源。

  • 改进了从长期但暂时的网络故障中恢复。目前,如果复制作业连续10次未能启动,将不再重试。这有时是可取的,但在某些情况下,例如,在持续的DNS故障(最终恢复)之后,复制将达到其重试限制,停止重试,并且永远不会恢复。以前它需要用户干预才能继续。Scheduling replicator永远不会放弃重试有效的计划复制作业,因此它应该自动恢复。

  • 更好地处理过滤的复制。从源获取失败的用户筛选器代码将不会阻止replicator manager并暂停其他复制。失败的筛选器获取也将以指数级方式后退。另一个改进是当源代码上的筛选器代码发生更改时,正在运行的复制将检测到这一点,并使用新的复制ID自动重新启动自己。

2.1.0版本还包括以下小改进:

  • COUCHDB-1946 :每次写入后休眠couch_stream(在复制带有大型附件的数据库时,内存使用量最多可减少70%)

  • COUCHDB-2964 :调查是否将复制器管理器更改为使用“normal”而不是“longpoll”

  • COUCHDB-2988 :(mango)允许查询选择器作为更改和复制筛选器

  • COUCHDB-2992 :添加对文档大小的附加支持

  • COUCHDB-3046 :改进reduce函数溢出保护

  • COUCHDB-3061 :使用矢量读取在.couch文件中搜索隐藏的标头。“在配备SSD的现代linux系统上,我们看到的改进高达15倍。”

  • COUCHDB-3063 :“stale=ok”选项替换为新的“stable”和“update”选项。

  • COUCHDB-3180 :在欢迎消息中添加功能列表

  • COUCHDB-3203 :使身份验证处理程序可配置(在ini文件中)

  • COUCHDB-3234 :使用计数器而不是日志记录跟踪打开碎片超时

  • COUCHDB-3242 :使“获取视图组信息超时”在沙发索引器中可配置

  • COUCHDB-3249 :Add config以禁用索引所有字段(文本索引)

  • COUCHDB-3251 :删除的热循环使用文件名:rootname/1

  • COUCHDB-3284 :couch_文件中的预读会导致额外的IO和二进制内存使用

  • COUCHDB-3298 :优化写入btree节点

  • COUCHDB-3302 :(改进)通过低带宽网络连接进行附件复制

  • COUCHDB-3307 每个U的db调用数可能增加一次

  • COUCHDB-3318 :如果没有,则绕过沙发

  • COUCHDB-3323 :空闲dbs导致开销过大

  • COUCHDB-3324 :介绍沙发复制器调度程序

  • COUCHDB-3337 :端点_local_docs不符合u all_docs的查询参数

  • COUCHDB-3358 :(mango)对字段名使用高效的集合存储

  • COUCHDB-3425 :使“文档ID”更改筛选器快速路径限制可配置

  • #457 :TeX/LaTeX/texinfo已从默认文档生成链中删除

  • #469 :(mango)根据字段匹配选择索引

  • #483 :couchup数据库迁移工具

  • #582 :添加X-Frame-Options支持以帮助防止点击劫持

  • #593 :允许中的绑定地址为127.0.0.1 _cluster_setup 对于单个节点

  • #624 :默认情况下启用压缩守护程序

  • #626 :允许使用字符串“true”启用节点decom

  • (mango)可配置默认限制,默认为25。

  • (mango)_查询所有_文档时忽略设计文档

  • (mango)添加$allMatch选择器

  • 默认添加本地.d/default.d目录和文档

  • 改进的安装。*文本文件

1.5.5. 固定问题

2.1.0版本包含对以下问题的修复:

  • COUCHDB-1447 :X-Couch-Update-NewRev头丢失,如果在响应u Update handler时指定了自定义头(在2.0合并中丢失)

  • COUCHDB-2731 :身份验证数据库未被视为系统数据库

  • COUCHDB-3010 :(复制指数后退的替代修复)

  • COUCHDB-3090 :处理空的“访问控制请求头”标头时出错

  • COUCHDB-3100 :修复requireu validu user上的文档

  • COUCHDB-3109 :500当链接文档的includeu docs=true时

  • COUCHDB-3113: fabric:open_revs can return {ok, []}

  • COUCHDB-3149 :如果数据库在运行更改源时被删除,则写入日志的异常

  • COUCHDB-3150 :使用stale=Updateu更新所有碎片

  • COUCHDB-3158 :修复连接关闭以进行u更新时的崩溃

  • COUCHDB-3162 :默认ssl设置会导致崩溃

  • COUCHDB-3164 :使用“更改”时请求失败?feed=eventsource&heartbeat=30000

  • COUCHDB-3168 :Replicator无法很好地将文档写入目标数据库,该数据库的最大文档大小很小

  • COUCHDB-3173 :视图返回包含非BMP字符的文本字段的损坏数据

  • COUCHDB-3174 :可以通过发出多部分/相关请求绕过最大文档大小设置

  • COUCHDB-3178 :Fabric在筛选大量文档时不发送消息

  • COUCHDB-3181 :将附件添加到u users数据库中的文档时出错

  • COUCHDB-3184 :沙发视图_压实机:重新压实/1不处理派生进程中的错误

  • COUCHDB-3193 : 面料:开放式当其中一个碎片的stem_interactive_updates=false时,返回多个结果

  • COUCHDB-3199 :Replicator VDU函数不计算Replicator db中格式已错误的文档

  • COUCHDB-3202 :(mango)不允许空字段名

  • COUCHDB-3220 :句柄超时(单位:revs_diff)

  • COUCHDB-3222 :(修复)在文档创建过程中,对于无效密钥,HTTP代码为500而不是400

  • COUCHDB-3231 :允许修复用户的文档(类型和角色)

  • COUCHDB-3232 :未在结构视图中传递用户上下文u所有文档

  • COUCHDB-3238 :os_process_limit documentation错误

  • COUCHDB-3241 :如果在打开结果消息之前收到数据库的删除消息,则在couch_服务器中出现竞争条件

  • COUCHDB-3245 :使couchjs-S选项再次生效

  • COUCHDB-3252 :包括主-咖啡.js发布中的工件(损坏的CoffeeScript视图服务器)

  • COUCHDB-3255 :重新创建带附件的文档时引发冲突

  • COUCHDB-3259 :不要在沙发文件中设置出口陷阱

  • COUCHDB-3264 :发布到“所有”文档不考虑冲突=true

  • COUCHDB-3269 :在指定筛选器和限制的情况下,视图响应可以“挂起”

  • COUCHDB-3271 :复制崩溃,退出“kaboom”

  • COUCHDB-3274 :出错后,couch_文件中的eof可能不正确

  • COUCHDB-3277 :当发现不是mem3数据库一部分的复制器数据库碎片时,Replication manager会崩溃

  • COUCHDB-3286 :验证函数使用functionu子句引发意外的json崩溃

  • COUCHDB-3289 :调用时处理错误子句面料:开放式

  • COUCHDB-3291 :过长的文档ID阻止replicator取得进展

  • COUCHDB-3293 :允许限制文档ID的长度(对于CouchDB本身)

  • COUCHDB-3305 :(mango)不要因内置reducer函数的无效输入而崩溃

  • COUCHDB-3362 :DELETE attachment on non-existing document创建文档,而不是返回404

  • COUCHDB-3364 :当压实过程失败时,不要使压实机崩溃。

  • COUCHDB-3367 :需要db/u compact和db_view_cleanup终结点的服务器管理员用户

  • COUCHDB-3376 :修复加载的mem3_碎片

  • COUCHDB-3378 全文检测:芒果

  • COUCHDB-3379 :修复couch_auth_缓存重新初始化逻辑

  • COUCHDB-3400 :更新ddoc时通知所有碎片上的couch_index_进程

  • COUCHDB-3402 :mem3启动时的竞争条件

  • #511 :(mango)返回空列表为false

  • #595 :返回409以放置不存在版本的附件

  • #623 :确保replicatoru active_tasks entry reports recent pending changes value

  • #627 从mango到所有用户的结构查询

  • #631 :修复couchdb_os_proc_池eunit超时

  • #644 :制作沙发活动_sup:停止/1同步

  • #645 :将db open选项传递到fabric_view_map中,以便在u users数据库上进行查看和列表查询

  • #648 :修复沙发复制器的更改_读者:流程变更

  • #649 :重新启动索引更新程序时避免争用

  • #667 :防止可怕的比赛状态

  • #677 :使“复制”的复制筛选器获取错误返回404

  • 修复CORS max_age 通过访问控制最大年龄配置参数

  • 在试图保存到目标上之前,将缺少的修订分块(改进了非常冲突、非常深的修订树文档的复制)

  • 允许w参数用于附件

  • 计数时返回“错误请求” /_uuids 超过最大值

  • 修复删除replicator db时的崩溃

  • 如果已复制更改,则跳过内部复制

  • 修复上的编码问题 _update/../doc_id 并放置附件