couchdb 0.10.0 with erlang 12b does not properly support replication from
https:// couchdb
------------------------------------------------------------------------------------------
Key: COUCHDB-585
URL: https://issues.apache.org/jira/browse/COUCHDB-585
Project: CouchDB
Issue Type: Bug
Affects Versions: 0.10
Environment: Fedora 11, couchdb 0.10.0, erlang 0.12b
Reporter: Thomas Vander Stichele
While trying to get desktopcouch sync to work with ubuntuone, I ran into a
problem.
After lots of debugging, and trying manual replication requests with curl, it
seems that:
- pushing (replicating a local db to https://couchdb.one.ubuntu.com/) works fine
- pulling (replicating a remote db on https://couchdb.one.ubuntu.com/) fails
I managed to reproduce this on a 'standard' couchdb run from the 0.10.x branch
Here is the log on a pull request:
[debug] [<0.59.0>] 'POST' /_replicate {1,1}
Headers: [{'Accept',"*/*"},
{'Authorization',"Basic dGhvbWFzOnBhc3M="},
{'Content-Length',"328"},
{'Content-Type',"application/x-www-form-urlencoded"},
{'Host',"otto:5984"},
{'User-Agent',"curl/7.19.6 (x86_64-redhat-linux-gnu) libcurl/7.19.6
NSS/3.12.4.1 Beta zlib/1.2.3 libidn/1.9 libssh2/1.0"}]
[debug] [<0.59.0>] OAuth Params: []
[debug] [<0.68.0>] didn't find a replication log for
https://couchdb.one.ubuntu.com/u%2F0a4%2F330%2F97870%2Fcontacts/
[debug] [<0.68.0>] didn't find a replication log for contacts
[debug] [<0.86.0>] retrying couch_rep_httpc get request in 0.5 seconds due to
{error, conn_failed}
[debug] [<0.86.0>] retrying couch_rep_httpc get request in 1.0 seconds due to
{error, worker_is_dead}
[debug] [<0.86.0>] retrying couch_rep_httpc get request in 2.0 seconds due to
{error, conn_failed}
[debug] [<0.86.0>] retrying couch_rep_httpc get request in 4.0 seconds due to
{error, worker_is_dead}
[debug] [<0.86.0>] retrying couch_rep_httpc get request in 8.0 seconds due to
{error, conn_failed}
[debug] [<0.86.0>] retrying couch_rep_httpc get request in 16.0 seconds due to
{error, worker_is_dead}
[debug] [<0.86.0>] retrying couch_rep_httpc get request in 32.0 seconds due to
{error, conn_failed}
[debug] [<0.86.0>] retrying couch_rep_httpc get request in 64.0 seconds due to
{error, worker_is_dead}
[debug] [<0.86.0>] retrying couch_rep_httpc get request in 128.0 seconds due to
{error, conn_failed}
^C
(this typically goes on up to 512 seconds, at which time it finally gives up;
meanwhile the curl POST request hangs)
To nail down the problem further, I then rebuilt Fedora 12's erlang package
(which has 0.13b instead of 0.12b) and tried exactly the same; see the log:
[tho...@otto 0.10.x]$ utils/run
Apache CouchDB 0.10.0 (LogLevel=debug) is starting.
Configuration Settings
["/home/thomas/tmp/couchdb/couchdb/branches/0.10.x/etc/couchdb/default_dev.ini",
"/home/thomas/tmp/couchdb/couchdb/branches/0.10.x/etc/couchdb/local_dev.ini"]:
[admins]
thomas="-hashed-9d17d1c1b6968c2d1cd7e71c24c831b563b3974f,e613da727f909f1aa2a5fd0080ad9a06"
[couch_httpd_auth] authentication_db="users"
[couch_httpd_auth] require_valid_user="false"
[couch_httpd_auth] secret="replace this with a real secret in your local.ini
file"
[couchdb] batch_save_interval="1000"
[couchdb] batch_save_size="1000"
[couchdb]
database_dir="/home/thomas/tmp/couchdb/couchdb/branches/0.10.x/tmp/lib"
[couchdb] delayed_commits="true"
[couchdb] max_attachment_chunk_size="4294967296"
[couchdb] max_dbs_open="100"
[couchdb] max_document_size="4294967296"
[couchdb] os_process_timeout="5000"
[couchdb]
util_driver_dir="/home/thomas/tmp/couchdb/couchdb/branches/0.10.x/src/couchdb/.libs"
[couchdb]
view_index_dir="/home/thomas/tmp/couchdb/couchdb/branches/0.10.x/tmp/lib"
[daemons] batch_save="{couch_batch_save_sup, start_link, []}"
[daemons] db_update_notifier="{couch_db_update_notifier_sup, start_link, []}"
[daemons] external_manager="{couch_external_manager, start_link, []}"
[daemons] httpd="{couch_httpd, start_link, []}"
[daemons] query_servers="{couch_query_servers, start_link, []}"
[daemons] stats_aggregator="{couch_stats_aggregator, start, []}"
[daemons] stats_collector="{couch_stats_collector, start, []}"
[daemons] view_manager="{couch_view, start_link, []}"
[httpd] WWW-Authenticate="Basic realm=\"administrator\""
[httpd] authentication_handlers="{couch_httpd_oauth,
oauth_authentication_handler}, {couch_httpd_auth,
default_authentication_handler}"
[httpd] bind_address="0.0.0.0"
[httpd] default_handler="{couch_httpd_db, handle_request}"
[httpd] port="5984"
[httpd_db_handlers] _changes="{couch_httpd_db, handle_changes_req}"
[httpd_db_handlers] _compact="{couch_httpd_db, handle_compact_req}"
[httpd_db_handlers] _design="{couch_httpd_db, handle_design_req}"
[httpd_db_handlers] _temp_view="{couch_httpd_view, handle_temp_view_req}"
[httpd_db_handlers] _view="{couch_httpd_view, handle_db_view_req}"
[httpd_db_handlers] _view_cleanup="{couch_httpd_db, handle_view_cleanup_req}"
[httpd_design_handlers] _info="{couch_httpd_db, handle_design_info_req}"
[httpd_design_handlers] _list="{couch_httpd_show, handle_view_list_req}"
[httpd_design_handlers] _show="{couch_httpd_show, handle_doc_show_req}"
[httpd_design_handlers] _update="{couch_httpd_show, handle_doc_update_req}"
[httpd_design_handlers] _view="{couch_httpd_view, handle_view_req}"
[httpd_global_handlers] /="{couch_httpd_misc_handlers, handle_welcome_req,
<<\"Welcome\">>}"
[httpd_global_handlers] _active_tasks="{couch_httpd_misc_handlers,
handle_task_status_req}"
[httpd_global_handlers] _all_dbs="{couch_httpd_misc_handlers,
handle_all_dbs_req}"
[httpd_global_handlers] _config="{couch_httpd_misc_handlers,
handle_config_req}"
[httpd_global_handlers] _log="{couch_httpd_misc_handlers, handle_log_req}"
[httpd_global_handlers] _oauth="{couch_httpd_oauth, handle_oauth_req}"
[httpd_global_handlers] _replicate="{couch_httpd_misc_handlers,
handle_replicate_req}"
[httpd_global_handlers] _restart="{couch_httpd_misc_handlers,
handle_restart_req}"
[httpd_global_handlers] _session="{couch_httpd_auth, handle_session_req}"
[httpd_global_handlers] _sleep="{couch_httpd_misc_handlers, handle_sleep_req}"
[httpd_global_handlers] _stats="{couch_httpd_stats_handlers,
handle_stats_req}"
[httpd_global_handlers] _user="{couch_httpd_auth, handle_user_req}"
[httpd_global_handlers] _utils="{couch_httpd_misc_handlers,
handle_utils_dir_req,
\"/home/thomas/tmp/couchdb/couchdb/branches/0.10.x/share/www\"}"
[httpd_global_handlers] _uuids="{couch_httpd_misc_handlers, handle_uuids_req}"
[httpd_global_handlers] favicon.ico="{couch_httpd_misc_handlers,
handle_favicon_req,
\"/home/thomas/tmp/couchdb/couchdb/branches/0.10.x/share/www\"}"
[log]
file="/home/thomas/tmp/couchdb/couchdb/branches/0.10.x/tmp/log/couch.log"
[log] level="debug"
[query_server_config] reduce_limit="true"
[query_servers]
javascript="/home/thomas/tmp/couchdb/couchdb/branches/0.10.x/bin/couchjs_dev
/home/thomas/tmp/couchdb/couchdb/branches/0.10.x/share/server/main.js"
Apache CouchDB has started. Time to relax.
[info] [<0.1.0>] Apache CouchDB has started on http://0.0.0.0:5984/
[debug] [<0.63.0>] 'POST' /_replicate {1,1}
Headers: [{'Accept',"*/*"},
{'Authorization',"Basic dGhvbWFzOnBhc3M="},
{'Content-Length',"328"},
{'Content-Type',"application/x-www-form-urlencoded"},
{'Host',"otto:5984"},
{'User-Agent',"curl/7.19.6 (x86_64-redhat-linux-gnu) libcurl/7.19.6
NSS/3.12.4.1 Beta zlib/1.2.3 libidn/1.9 libssh2/1.0"}]
[debug] [<0.63.0>] OAuth Params: []
[debug] [<0.70.0>] didn't find a replication log for
https://couchdb.one.ubuntu.com/u%2F0a4%2F330%2F97870%2Fcontacts/
[debug] [<0.70.0>] didn't find a replication log for contacts
[info] [<0.88.0>] source doesn't have _changes, trying _all_docs_by_seq
[debug] [<0.88.0>] unexpected message at changes_feed {ibrowse_async_response,
{1259,582920,243218},
{error,closing_on_request}}
[debug] [<0.88.0>] unexpected message at changes_feed {'EXIT',<0.89.0>,normal}
[info] [<0.63.0>] starting new replication "743520107dc25678800df59476e4140b"
at <0.70.0>
[debug] [<0.49.0>] New task status for 743520:
https://couchdb.one.ubuntu.com/u%2F0a4%2F330%2F97870%2Fcontacts/ -> contacts: W
Processed source update #1
[debug] [<0.49.0>] New task status for 743520:
https://couchdb.one.ubuntu.com/u%2F0a4%2F330%2F97870%2Fcontacts/ -> contacts: W
Processed source update #6
[info] [<0.70.0>] recording a checkpoint at source update_seq 6
[debug] [<0.70.0>] replication doesn't need a full commit
[debug] [<0.49.0>] New task status for 743520:
https://couchdb.one.ubuntu.com/u%2F0a4%2F330%2F97870%2Fcontacts/ -> contacts:
Finishing
[info] [<0.63.0>] 192.168.1.12 - - 'POST' /_replicate 200
[debug] [<0.69.0>] 'GET' /_utils/database.html?contacts {1,1}
Headers:
[{'Accept',"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"},
{'Accept-Charset',"ISO-8859-1,utf-8;q=0.7,*;q=0.7"},
{'Accept-Encoding',"gzip,deflate"},
{'Accept-Language',"en-us,nl-be;q=0.8,en;q=0.6,ca;q=0.4,es;q=0.2"},
{'Cache-Control',"max-age=0"},
{'Connection',"keep-alive"},
{'Cookie',"recent=contacts%2Cnotes%2Cgtd%2Cmanagement%2Cbookmarks%2C;
management.view=_design/paired_servers/_view/paired_servers"},
{'Host',"localhost:5984"},
{'If-Modified-Since',"Fri, 23 Oct 2009 19:42:00 GMT"},
{'Keep-Alive',"300"},
{'Referer',"http://localhost:5984/_utils/index.html"},
{'User-Agent',"Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.5)
Gecko/20091105 Fedora/3.5.5-1.fc11 Firefox/3.5.5"}]
[debug] [<0.69.0>] OAuth Params: [{"contacts",[]}]
[info] [<0.69.0>] 127.0.0.1 - - 'GET' /_utils/database.html?contacts 304
This time it did work.
My conclusion is that for this feature to work, couchdb needs erlang 0.13b
With erlang 0.12b, it fails non-intuitively and there is no way for
desktopcouch to figure out that erlang has a bug internally.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.