1.4. 2.3.x分支

1.4.1. 升级说明

  • #1602 :为了提高安全性,查询服务器的配置、SSL支持和HTTP全局处理程序发生了重大更改:

    1. 查询服务器

    查询服务器不再在.ini文件中定义,也不能在运行时更改。

    默认情况下,JavaScript和CoffeeScript查询服务器继续处于启用状态。设置差异已从移动默认.ini致 couchdbcouchdb.cmd 分别启动脚本。

    现在可以使用环境变量配置其他查询服务器:

    export COUCHDB_QUERY_SERVER_PYTHON="/path/to/python/query/server.py with args"
    couchdb
    

    其中环境变量中的最后一个段 (_PYTHON )匹配通常的小写(!)设计文档中的查询语言 language 领域(这里, python

    可以通过使用更多的环境变量来配置多个查询服务器。

    如果需要设置命令行选项(如 couchjs 堆栈大小):

    export COUCHDB_QUERY_SERVER_JAVASCRIPT="/path/to/couchjs /path/to/main.js -S <STACKSIZE>"
    couchdb
    
    1. 本机查询服务器

    默认情况下,芒果查询服务器将继续启用。默认情况下,Erlang查询服务器将继续被禁用。此更改添加了 [native_query_servers] enable_erlang_query_server = BOOL 设置(默认为 false )启用Erlang查询服务器。

    如果检测到用于启用查询服务器的旧配置,则将其计为 true 设置也一样,所以现有的配置仍然可以正常工作。

    1. SSL支持

    在ini文件中启用SSL支持现在更容易:

    [ssl]
    enable = true
    

    如果在ini文件中找到了旧的httpsd配置,则仍将启用SSL支持,因此不需要更改现有配置。

    1. 全局处理程序HTTP

    这些不再在默认.ini文件,但已移动到沙发应用程序上下文。如果需要自定义处理程序,可以使用couchdb.config文件照常归档。

  • #1602 :为了提高安全性,不推荐使用 os_daemonscouch_httpd_proxy 在计划的couchdb3.0发布之前,功能已经被完全删除。我们建议使用操作系统级别的守护进程(如runit、sysvinit、systemd、upstart等)来启动和维护OS守护进程,并使用CouchDB前面的反向代理服务器(如haproxy)代理对CouchDB旁边的其他服务或域的访问。

  • #1543 :节点本地(默认端口5986) /_restart 终结点已被群集(默认端口5984)终结点替换 /_node/$node/_restart/_node/_local/_restart 端点。节点本地终结点已被删除。

  • #1764 :CouchDB附带的所有python脚本,包括 couchup 以及 dev/run 开发集群脚本,现在指定并需要python3.x。

  • #1396 :CouchDB现在与erlang21.x兼容。

  • #1680 :的嵌入版本 rebar 用于生成CouchDB已更新到的最新版本 rebar2 可用。这有助于在非x86平台上构建。

  • #1857 :拒绝使用已知的错误版本的Erlang。

1.4.2. 2.3.1版

1.4.2.1. 特征

  • #1811 添加新的 /{{db}}/_sync_shards 终结点(仅限管理员)。

  • #1870 :更新至mochiweb 2.19.0。另请参见 #1875 .

  • #1857 :拒绝使用已知的错误版本的Erlang。

  • #1880 :压缩:添加休眠周期以进行更精细的调整。

1.4.2.2. 错误修正

  • #1795 :筛选出空的缺少的u revs结果 mem3_rep .

  • #1384 固定 function_clause 无效数据库出错 _security 物体。

  • #1841 固定 end_time 字段在 /_replicate 反应。

  • #1860 :修复混合群集环境中的读取修复。

  • #1862 固定 fabric_open_doc_revs .

  • #1865 :支持超过100个doc id的清除请求。

  • #1867 :修复超时 chttpd_purge_tests .

  • #1766 :添加默认结构请求超时。

  • #1810 :当URL长度超过1460个字符时,请求返回400个错误请求。看到了吗 #1870 有关详细信息。

  • #1799 :限制 _purge 到服务器管理员。

  • #1874 :这修复了无法设置带有regex符号的键。

  • #1901 单个arg更新错误:错误修正错误。

  • #1897 固定 from_json_obj_validate 提供的rev不是有效的hex时崩溃。

  • #1803 :在群集设置中对管理员密码使用相同的salt。

  • #1053 :修复python2兼容性 couchup .

  • #1905 :修复python3的兼容性 couchup .

1.4.3. 2.3.0版

1.4.3.1. 特征

  • (多个)群集清除现在可用。这个特性恢复了couchdb1.x从数据库中完全删除文档记录的能力。条件适用;要安全使用该功能,请阅读完整的 群集清除 文档。

  • #1658 :新的配置设置可用,允许管理员配置在节点启动时应联系的节点的初始列表。中的节点 seedlist 成功到达的将添加到该节点的 _nodes 数据库自动触发分布式Erlang连接并将内部系统数据库复制到新节点。这可以代替手动配置或群集设置向导来引导群集。新节点的初始种子设定进度在 GET /_up 端点。

  • 更新ibrowse依赖项后,复制仅支持ipv6对等方。

  • #1708 :服务器/群集的UUID再次在 GET / 回应。这是couchdb1.x的回归。

  • #1722 :在作业重新启动时,不再重置复制器作业运行之间的统计计数。

  • #1195#1742 :CouchDB的 _bulk_get 实现现在支持 multipart/mixedmultipart/related 内容类型(如果需要),扩展与第三方复制客户端的兼容性。

1.4.3.2. 性能

  • #1409 :CouchDB不再强制TCP接收缓冲区为256KB的固定大小,允许操作系统动态调整缓冲区大小。当传输大型附件时,这会显著提高网络性能。

  • #1423 :Mango选择器匹配现在在shard级别进行,减少了Mango查询集群内的网络流量。

  • #1423 :在节点级别长时间运行的操作可能会超过节点间超时,从而导致日志文件中出现结构超时错误并取消任务。节点现在可以ping来阻止这种情况的发生。

  • #1560 :对如何记录附件的外部数据大小进行了优化。

  • #1586 :清理过期的辅助索引文件时,搜索仅限于特定数据库的索引目录。

  • #1593couch_server ETS表现在有 read_concurrency 选项集,改进对打开的数据库句柄的全局列表的访问。

  • #1593 :更新最近最少使用(LRU)缓存的消息在 [couchdb] update_lru_on_read 设置被禁用。

  • #1625 :群集中的所有节点现在都运行自己的 rexi 服务器。

1.4.3.3. 错误修正

  • #1484_stats 现在正确地处理map函数发出整数数组的情况。这个bug是在2.2.0中引入的。

  • #1544 :某些列表函数可能返回 render_error 间歇性错误。

  • #1550 :复制器 _session 支持与使用的CouchDB安装不兼容 require_valid_user = true 设置。

  • #1571 :在非常重的负载下,有可能 rexi_server 可能会以一种永远不会重新启动的方式消亡,从而使集群无法发出RPC调用,从而使集群变得毫无用处。

  • #1574 :内置 _sum reduce函数已得到改进,可以检查被求和的对象是否未溢出视图存储。以前,没有保护 _sum -引入溢出。

  • #1582 :数据库创建参数现在改进了验证,对无效输入给出了更可读的错误。

  • #1588 :已为noop恢复丢失的安全检查 /db/_ensure_full_commit 调用还原数据库验证检查。

  • #1591 :CouchDB现在在访问数据库时创建丢失的碎片文件(如果需要)。这可以处理在创建数据库时,没有节点能够创建该数据库所需的任何碎片文件的情况。

  • #1568 :CouchDB现在将记录一个警告,如果更改提要被重绕为0。这有助于诊断繁忙或故障集群中的问题。

  • #1596 :不再可能 couch_server 在特定的时间顺序下,错误地跟踪事件 open_async 邮箱中的邮件。

  • #1601#1654 :CouchDB现在可以更好地记录错误导致它读取数据库碎片的EOF。CouchDB是否试图读取过多字节的检查已与指示它试图读取超过EOF的错误正确分离。

  • #1613 :在读取修复操作期间,将过滤掉本地节点。

  • #1636 :通过HTTPS进行复制时发生内存泄漏,并出现问题,已解决。

  • #1635/_replicate 如果参数没有更改,作业将不再重新启动。

  • #1612 :JavaScript重写函数现在将请求主体发送到重写的端点。

  • #1631 :如果用户将无效的VDU函数放入其中一个 _replicator 数据库。

  • #1644#1647 :无法再在保留的系统空间内创建非法命名的数据库 (_ 前缀。)

  • #1650_bulk_get 对于系统数据库,如 _users .

  • #1652 :访问 /_active_tasks 再次仅限于服务器管理员。

  • #1662couch_log 当崩溃的应用程序提供新的、附加的信息时,或者重新启动它自己的任何子级时,应用程序不再崩溃。

  • #1666 :Mango可能会返回一个错误,该错误会使 couch_query_servers 应用程序。现在已经不是这样了。

  • #1655 :配置 ets_lru 在里面 chttpd 现在对指定的配置值执行正确的错误检查。

  • #1667snappy 已更新依赖项以修复内存分配错误。

  • #1683 :尝试使用无效修订创建本地文档不再引发 badarg 例外情况。另外,设置时 new_editsfalse 执行批量写入操作时,本地文档不再写入错误的btree。最后,在批量操作期间无法再使用空ID创建文档 new_edits 设置为 false .

  • #1721couchup 从couchdb1.x升级的方便脚本现在也复制了数据库的 _security 对象正在迁移。

  • #1672 :启动视图压缩后立即检查其状态时 total_changeschanges_done 字段现在立即填充有效值。

  • #1717 如果 .ini 配置文件是只读的,尝试通过httpapi更新配置将导致 eacces 错误响应。

  • #1603 :CouchDB现在返回正确的 total_rows 查询时的结果 /{{db}}/_design_docs .

  • #1629 :内部加载验证函数不再错误地保持打开已删除的数据库或其宿主进程。

  • #1746 :在通过HTTP API访问的ini文件中定义的服务器管理员不再导致身份验证缓存将访问记录为统计信息中的未命中。

  • #1607 :由于VDU函数禁止写入或非标准cookie过期时间,当其会话cookie超时时,replicator不再无法重新验证以打开远程数据库。

  • #1579 :压缩守护程序不再错误地仅压缩带有 q 值大于1。

  • #1737 :CouchDB 2.x现在与使用 _doc_ids_design_docs 对更改源进行筛选。

1.4.3.4. 芒果

1.4.3.5. 其他

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

  • 改进的测试用例:

    • Elixir测试套件已经合并。这些测试用例旨在取代老化、无法维护的JavaScript测试套件,并帮助减少我们对Mozilla Spidermonkey 1.8.5的依赖。测试套件还没有涵盖JS测试套件所做的所有测试。一旦实现了完全覆盖,JS测试套件将被移除。
    • 许多racy测试用例为可靠的CI运行进行了改进。
    • Makefile的目标是 list-eunit-* 现在可以在macOS上正常工作了。
    • #1732#1733#1736 :所有测试套件再次在Windows平台上运行并通过。
  • #1597 :堆外消息是erlang19+中的一个新特性,如果需要,现在可以为每个模块禁用。

  • #1682 :一个新的 [feature_flags] config部分的存在是为了让CouchDB开发人员启用或禁用实验特性。

  • 独角鲸!好吧,不,不是真的。如果你能做到这一点…谢谢你的阅读。