Will Holley created COUCHDB-3048:
------------------------------------
Summary: Spurious empty lines returned in CouchDB master (2.0)
filtered _changes?feed=normal
Key: COUCHDB-3048
URL: https://issues.apache.org/jira/browse/COUCHDB-3048
Project: CouchDB
Issue Type: Bug
Reporter: Will Holley
I'm unsure if this counts as a breaking change but on a moderately sized
database of ~50k documents and a filter which restricts this to 10 there
appears to be a difference in the way that a normal _changes feed responds.
In CouchDB 1.6:
{code}
$ curl
'http://localhost:5984/perftest/_changes?filter=filters/byOwner&ownerId=test'
{"results":[
{"seq":1,"id":"test-0","changes":[{"rev":"1-dcb5fe05469e3bb1eb436b7936564594"}]},
{"seq":2,"id":"test-1","changes":[{"rev":"1-e7969921a3a5f86603aff67a22d49107"}]},
{"seq":3,"id":"test-2","changes":[{"rev":"1-500ca8ae80ccd45a6c8d94900aecb545"}]},
{"seq":4,"id":"test-3","changes":[{"rev":"1-f65f4913783c95ec85e4e41e064e37cd"}]},
{"seq":5,"id":"test-4","changes":[{"rev":"1-33e0ee8bb8cf301d2027fb944cc5b620"}]},
{"seq":6,"id":"test-5","changes":[{"rev":"1-58d49eb52ce6189bf119c340b6854007"}]},
{"seq":7,"id":"test-6","changes":[{"rev":"1-4112d69d2c7329ce560d0bd120a9caa8"}]},
{"seq":8,"id":"test-7","changes":[{"rev":"1-2785dfe15a23166cc6ddd139ef20bf64"}]},
{"seq":9,"id":"test-8","changes":[{"rev":"1-8ae3af8ef47f89267135a68dcf938e74"}]},
{"seq":10,"id":"test-9","changes":[{"rev":"1-6f2966760ff9dc2f4245229b3a3c3e9b"}]}
],
"last_seq":50001}
{code}
In CouchDB master / 2.0:
{code}
$ curl
'http://localhost:15984/perftest/_changes?filter=filters/byOwner&ownerId=test'
{"results":[
{"seq":"18831-g1AAAAHMeJzLYWBg4MhgTmHgz8tPSTV0MDQy1zMAQsMcoARTIkOS_P___7MymJMYGCQ6coFi7AamZhamqSaYOuCmGKGZkqQAJJPsQQYlMsBVGaOrcgCpiiekKgGkqh7dUYYp5oaGRkaYmnAalMcCJBkagBTQrPn4rISoXABRuR9obSIj2M6UFIuUJFMTPHaiBwTEpAMQk-4j24ke8BCVDyAqYV6tA1trkpiYZGSajKkxCwAbFXRa","id":"test-2","changes":[{"rev":"1-70a675401648ce6ec79ab33521f3b8ec"}]},
{"seq":"25103-g1AAAAIPeJzLYWBg4MhgTmHgz8tPSTV0MDQy1zMAQsMcoARTIkOS_P___7MymJMYGCQ6coFi7AamZhamqSaYOuCmGKGZkqQAJJPsQQYlMsBVGaOrcgCpiodYl8gItsvc0MLMwsQEUwduUxJAptSjO9owxdzQ0MiIBIPyWIAkQwOQApo1H2pYPdgwo2RTS-PEZJINWwAxbD_CfykpFilJpvj8hx6WEJMOQEy6jxye6HEHUfkAohIWGnVga00SE5OMTJMxNWYBAJAfgqM","id":"test-0","changes":[{"rev":"1-efbd209234f6e958e7d418c91879d5b8"}]},
{"seq":"25104-g1AAAAIveJyV0dENgjAQANBTTPTPX_90AkNLS8uXbKItJSEEcQPx0y10E91EN8FCFWMbTEiTa9LeveauBQDMMk_BvDyoFMUIs7WvFyr0xViAXNZ1nWeeBFic9_ps6tOQ05S4FZ2CLUWudJQbA4lRq_DUV5hFbkWnBLYSN8r2R2GIh5wQt6Jf2TVKZTeFFEMI4wFQOdERTnrT1uWNVS2GExoFIhmMXQ12-_anFFeS_uvPnrWR7kZ65AJ6_9ZkPk3mZxrH9lkihMQ0cQvzF7B0iZY","id":"test-1","changes":[{"rev":"1-68ba5af86f75d84caba05684cb3c831f"}]},
{"seq":"25105-g1AAAAJPeJyV0VEOgiAYB3DKtnrrtbc6QQMEwae8SYHYnDO7QfbYLeomdZO6iaGULlhuju1j-9j_t30fOQBglnoKzIujSlCEMFtDfVCuH8YCyGVVVVnqSQAWl4PuTSENOE2Im2gVbClypavcGEiMGoUnUGEWuolW8W0lqpXtj8IQDzghbuK_squV0h4KKYYQxgOgYqIrOOtLW9cPVjYYjmnoi3gwdjPYvZtPKa4k7ZvP3rWRHkZ6dhKUnOy56Nm3_fdGehnpu61TgxEhJKaxG8zeBIqQsw","id":"test-3","changes":[{"rev":"1-fc04f71360bd40bd01e0d42e17feb280"}]},
{"seq":"25106-g1AAAAJPeJyV0UEOgjAQBdARTHTn1p2ewNDS0rKSm2hLMYQg3kBcegu9id5Eb4KFKsYSSUiTadLmv2RmcgCYpq6CWXFQCYoQZitPH5TrD0eAXFRVlaWuBJif9_pt4tGA04R0E62CLUUudZVrA4lRo_DEU5iF3USr-LYS1crmR2GIB5yQbuK_sq2V0m4KKYYQxgOgYqwrnPSlrcsbKxsMxzT0RTwYuxrs9u1PKa4k7evPnrWR7kZ61JJjtiY52XHRM29790Z6GukzrWODESEkpnE3mL0ABPeQtA","id":"test-7","changes":[{"rev":"1-55ff855aa18e4b59db946761bd9e015c"}]},
{"seq":"25107-g1AAAAJPeJyV0VEOgiAcBnDKtnrrtbc6QQMEwae8SYHYnDO7QfbYLeomdZO6iSGYbrjcHBtssO-3_T9yAMAi9RRYFmeVoAhhtoV6oVw_TAWQ66qqstSTAKxuJ303hzTgNCH9RKtgR5EbvcudhcTEKDyBCrOwn2gV31WiWtk3ytQoDPGAE9JP_FcOtVK6QyHFEMJ4BFTM9A6u-tDWvcFKg-GYhr6IR2MPiz27lpTiStKh-dyurfSy0rtrCkpOjlwM9O3-vZU-Vvq1dTEYEUJiGveD2RcGjpC1","id":"test-4","changes":[{"rev":"1-7f48ebbf80f2cbc3d9106eccfffc6d0d"}]},
{"seq":"25108-g1AAAAJPeJyV0VEOgiAYB3DKtnrrtbc6QQMEwae8SYHYnDO7QfbYLeomdZO6iSGYbrjcHNvH9rH_b_s-cgDAIvUUWBZnlaAIYbaF-qBcP0wFkOuqqrLUkwCsbifdm0MacJqQfqJVsKPIja5yZyExMQpPoMIs7CdaxXeVqFb2jTI1CkM84IT0E_-VQ62U7lBIMYQwHgEVM13BVV_aujdYaTAc09AX8WjsYbFnN59SXEk6NJ-7ayu9rPTuJCg5OXIxsG_37630sdJvWxeDESEkpnE_mH0BB0WQtg","id":"test-6","changes":[{"rev":"1-c6c386a7da07f025b6a4711d26d13b42"}]}
,
{"seq":"25109-g1AAAAJPeJyV0VEOgiAYB3CmbfXWa291ggYIgk95kwKxOWd2g-yxW9RN6iZ1E0MpXbDcHNvH9rH_b_s-CgDALPMVmJdHlaIYYbaG-qBCP3gCyGVd13nmSwAWl4PuTSENOU2Jm-gUbClypavcGEh4rcJTqDCL3ESnBLYSN8r2R2GIh5wQN_Ff2TVKZQ-FFEMI4xFQOdEVnPWlresHq1oMJzQKRDIauxns3s-nFFeSDs1n79pIDyM9ewlKTvZcDOzb_nsjvYz03dapxYgQEtPEDeZvCSKQtw","id":"test-5","changes":[{"rev":"1-62731871422cf7f1d07c7b1939b361cd"}]},
{"seq":"25110-g1AAAAJPeJyV0VEKgjAYB_ChQb312ludILa5ufmUN6nNGSJmN8geu0XdpG5SN7G5mcIkQQbf4Bv_H3zfCgDAIvMVWJZnlaIYYbaF-qBCP3gCyHVd13nmSwBWt5PuzSENOU3JMNEp2FHkRle5s5DwjcJTqDCLholOCVwlbpR9q3hGYYiHnJBh4r9yaJTKHQophhDGE6Bypiu46ktb9xarDIYTGgUimYw9LPbs51OKK0nH5nN3baWXld69BCUnRy5G9u3-vZU-Vvpt62IwIoTENBkG8y8K_5C4","id":"test-9","changes":[{"rev":"1-7242c899146d3d3d3b88f0ff0dfaa00d"}]},
{"seq":"25111-g1AAAAJPeJyV0VEKwiAYB3DZgnrrtbc6QajT6Z7aTUrnYoy1btB67BZ1k7pJ3WQ5rUVKwRA-4ZP_D77PCgAwKUIFpvVe5ShFmC2hPqjSD4EAct62bVmEEoDZaad7Y0hjTnPiJ3oFO4pc6CpXFhKhUXgOFWaJn-iVyFXSTll_KQzxmBPiJ34rm05p3KGQYghhPACqR7qCo760dX5hjcFwRpNIZIOxi8Wu3XyBkZTiStJ_87m7ttLNSvePBCUnWy7-7Nv9eys9rPTe1sFgRAiJaeYHyycMlpC5","id":"test-8","changes":[{"rev":"1-2325f8e8bb603f6a397221037c2b1204"}]}
],
"last_seq":"50001-g1AAAAJbeJyV0sEJwjAUBuBgBb159aYTSJImTXqyA3j2qklTKaXWDaxHt9BNdBPdpKZJrZiiUAIv8ML_wXskBwCMU0-BSXFQCYoQZguoD8r1w0AAOauqKks9CcD0vNe9EaQBpwnpJloFO4qc6yqXH2hlIJ5AhVnYDbWQ70JRDW1ciCEecEK6od_QtoZKdzSkGEIY94CKoa7gpC9tXRqsNBiOaeiLuDd2tditwdYGU4orSf-N6C7dYneLPb4wKDnZcfFn8e4_sNjTYu-dHQ1GhJCYxt1g9gJLkZJX","pending":0}
{code}
CouchDB 2.0/master appears to send an empty line every 5 seconds whilst waiting
for the filter to find the next match. Although this produces technically valid
JSON in the end, it is a change from the 1.X behaviour and trips up clients
which expect a change per line. I have been able to reproduce this with both
Javascript filtered changes and the new Mango filtered changes feeds.
Heartbeats are not expected to be implemented for normal changes feeds
([according to the
docs|http://docs.couchdb.org/en/1.6.1/api/database/changes.html]) but I tried a
long heartbeat parameter anyway and it had no effect.
The database I tested this on can be replicated from
[https://envoy-test.cloudant.com/perftest] - on my macbook air the request
processing is slow enough to induce the problem.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)