1.4. 2.3.x分支¶
1.4.1. 升级说明¶
#1602 :为了提高安全性,查询服务器的配置、SSL支持和HTTP全局处理程序发生了重大更改:
- 查询服务器
查询服务器不再在.ini文件中定义,也不能在运行时更改。
默认情况下,JavaScript和CoffeeScript查询服务器继续处于启用状态。设置差异已从移动默认.ini致
couchdb
和couchdb.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
- 本机查询服务器
默认情况下,芒果查询服务器将继续启用。默认情况下,Erlang查询服务器将继续被禁用。此更改添加了
[native_query_servers] enable_erlang_query_server = BOOL
设置(默认为false
)启用Erlang查询服务器。如果检测到用于启用查询服务器的旧配置,则将其计为
true
设置也一样,所以现有的配置仍然可以正常工作。- SSL支持
在ini文件中启用SSL支持现在更容易:
[ssl] enable = true
如果在ini文件中找到了旧的httpsd配置,则仍将启用SSL支持,因此不需要更改现有配置。
- 全局处理程序HTTP
这些不再在默认.ini文件,但已移动到沙发应用程序上下文。如果需要自定义处理程序,可以使用couchdb.config文件照常归档。
#1602 :为了提高安全性,不推荐使用
os_daemons
和couch_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. 特征¶
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 :添加默认结构请求超时。
#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/mixed
和multipart/related
内容类型(如果需要),扩展与第三方复制客户端的兼容性。
1.4.3.2. 性能¶
#1409 :CouchDB不再强制TCP接收缓冲区为256KB的固定大小,允许操作系统动态调整缓冲区大小。当传输大型附件时,这会显著提高网络性能。
#1423 :Mango选择器匹配现在在shard级别进行,减少了Mango查询集群内的网络流量。
#1423 :在节点级别长时间运行的操作可能会超过节点间超时,从而导致日志文件中出现结构超时错误并取消任务。节点现在可以ping来阻止这种情况的发生。
#1560 :对如何记录附件的外部数据大小进行了优化。
#1586 :清理过期的辅助索引文件时,搜索仅限于特定数据库的索引目录。
#1593 :
couch_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
数据库。#1650 :
_bulk_get
对于系统数据库,如_users
.#1652 :访问
/_active_tasks
再次仅限于服务器管理员。#1662 :
couch_log
当崩溃的应用程序提供新的、附加的信息时,或者重新启动它自己的任何子级时,应用程序不再崩溃。#1666 :Mango可能会返回一个错误,该错误会使
couch_query_servers
应用程序。现在已经不是这样了。#1655 :配置
ets_lru
在里面chttpd
现在对指定的配置值执行正确的错误检查。#1667 :
snappy
已更新依赖项以修复内存分配错误。#1683 :尝试使用无效修订创建本地文档不再引发
badarg
例外情况。另外,设置时new_edits
到false
执行批量写入操作时,本地文档不再写入错误的btree。最后,在批量操作期间无法再使用空ID创建文档new_edits
设置为false
.#1721 :
couchup
从couchdb1.x升级的方便脚本现在也复制了数据库的_security
对象正在迁移。#1672 :启动视图压缩后立即检查其状态时
total_changes
和changes_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
对更改源进行筛选。