konrad-ohms commented on issue #3517: URL: https://github.com/apache/couchdb/issues/3517#issuecomment-909124414
Okay, I validated your fix, please find the outcome below: First, I wanted to create a patch build which is as close as possible to what I have tested before, so I used the same OS as in the container image I used initially: ```bash $ podman run --rm -it docker.io/library/couchdb:3.1.1 cat /etc/os-release PRETTY_NAME="Debian GNU/Linux 10 (buster)" NAME="Debian GNU/Linux" VERSION_ID="10" VERSION="10 (buster)" VERSION_CODENAME=buster ID=debian HOME_URL="https://www.debian.org/" SUPPORT_URL="https://www.debian.org/support" BUG_REPORT_URL="https://bugs.debian.org/" ``` To get a build env matching the OS and its required libraries, I had a look into <https://github.com/apache/couchdb-ci> and built the following image on an 18.04.5 LTS amd64 VM with Docker version 20.10.8, build 3967b7d: ```bash $ git clone https://github.com/apache/couchdb-ci.git Cloning into 'couchdb-ci'... remote: Enumerating objects: 1742, done. remote: Counting objects: 100% (87/87), done. remote: Compressing objects: 100% (58/58), done. remote: Total 1742 (delta 55), reused 56 (delta 29), pack-reused 1655 Receiving objects: 100% (1742/1742), 10.24 MiB | 16.11 MiB/s, done. Resolving deltas: 100% (998/998), done. $ cd couchdb-ci/ $ ./build.sh platform debian-buster ... Successfully built d1c29b763a2c Successfully tagged apache/couchdbci-debian:buster-erlang-20.3.8.26-1 ``` From there I used CouchDB v3.1.1 and applied your patch within the container: ```bash $ docker run --name couchdb-3.1.1-fix-validation -it apache/couchdbci-debian:buster-erlang-20.3.8.26-1 jenkins@2665e52069d0:/$ cd ~ jenkins@2665e52069d0:~$ whoami jenkins jenkins@2665e52069d0:~$ pwd /home/jenkins jenkins@2665e52069d0:~$ git clone --depth=1 -b 3.1.1 https://github.com/apache/couchdb.git Cloning into 'couchdb'... remote: Enumerating objects: 1207, done. remote: Counting objects: 100% (1207/1207), done. remote: Compressing objects: 100% (1099/1099), done. remote: Total 1207 (delta 245), reused 380 (delta 55), pack-reused 0 Receiving objects: 100% (1207/1207), 1.80 MiB | 6.14 MiB/s, done. Resolving deltas: 100% (245/245), done. Note: checking out 'ce596c65d9d7f0bc5d9937bcaf6253b343015690'. You are in 'detached HEAD' state. You can look around, make experimental changes and commit them, and you can discard any commits you make in this state without impacting any branches by performing another checkout. If you want to create a new branch to retain commits you create, you may do so (now or later) by using -b with the checkout command again. Example: git checkout -b <new-branch-name> jenkins@2665e52069d0:~$ # Apply Jan's patch jenkins@2665e52069d0:~$ cat <<'EOF' > jan.patch > diff --git a/share/server/60/rewrite_fun.js b/share/server/60/rewrite_fun.js > index 1b27a9d14..9b85f953f 100644 > --- a/share/server/60/rewrite_fun.js > +++ b/share/server/60/rewrite_fun.js > @@ -15,30 +15,39 @@ > // > // https://github.com/dmunch/couch-chakra/blob/master/js/normalizeFunction.js > > + > +const cache = {} > function rewriteFunInt(fun) { > - const ast = esprima.parse(fun); > - let idx = ast.body.length - 1; > - let decl = {}; > - > - // Search for the first FunctionDeclaration beginning from the end > - do { > - decl = ast.body[idx--]; > - } while (idx >= 0 && decl.type !== "FunctionDeclaration"); > - idx++; > - > - // If we have a function declaration without an Id, wrap it > - // in an ExpressionStatement and change it into > - // a FuntionExpression > - if (decl.type == "FunctionDeclaration" && decl.id == null) { > - decl.type = "FunctionExpression"; > - ast.body[idx] = { > - type: "ExpressionStatement", > - expression: decl > - }; > - } > + const crc = crc32_str(fun) > + if (cache[crc]) { > + return cache[crc]; > + } else { > + const ast = esprima.parse(fun); > + let idx = ast.body.length - 1; > + let decl = {}; > + > + // Search for the first FunctionDeclaration beginning from the end > + do { > + decl = ast.body[idx--]; > + } while (idx >= 0 && decl.type !== "FunctionDeclaration"); > + idx++; > + > + // If we have a function declaration without an Id, wrap it > + // in an ExpressionStatement and change it into > + // a FuntionExpression > + if (decl.type == "FunctionDeclaration" && decl.id == null) { > + decl.type = "FunctionExpression"; > + ast.body[idx] = { > + type: "ExpressionStatement", > + expression: decl > + }; > + } > > - // Generate source from the rewritten AST > - return escodegen.generate(ast); > + // Generate source from the rewritten AST > + const gen = escodegen.generate(ast); > + cache[crc] = gen; > + return gen; > + } > } > > > @@ -53,4 +62,51 @@ function rewriteFuns(funsJSON) { > return rewriteFunInt(fun); > }); > return JSON.stringify(results); > -} > \ No newline at end of file > +} > + > +// nicked from https://github.com/SheetJS/js-crc32/blob/master/crc32.js > + > +function signed_crc_table() { > +var c = 0, table = new Array(256); > + > +for(var n =0; n != 256; ++n){ > +c = n; > +c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); > +c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); > +c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); > +c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); > +c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); > +c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); > +c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); > +c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); > +table[n] = c; > +} > + > +return typeof Int32Array !== 'undefined' ? new Int32Array(table) : table; > +} > + > +var T = signed_crc_table(); > + > +function crc32_str(str, seed) { > +var C = seed ^ -1; > +for(var i = 0, L=str.length, c, d; i < L;) { > +c = str.charCodeAt(i++); > +if(c < 0x80) { > +C = (C>>>8) ^ T[(C ^ c)&0xFF]; > +} else if(c < 0x800) { > +C = (C>>>8) ^ T[(C ^ (192|((c>>6)&31)))&0xFF]; > +C = (C>>>8) ^ T[(C ^ (128|(c&63)))&0xFF]; > +} else if(c >= 0xD800 && c < 0xE000) { > +c = (c&1023)+64; d = str.charCodeAt(i++)&1023; > +C = (C>>>8) ^ T[(C ^ (240|((c>>8)&7)))&0xFF]; > +C = (C>>>8) ^ T[(C ^ (128|((c>>2)&63)))&0xFF]; > +C = (C>>>8) ^ T[(C ^ (128|((d>>6)&15)|((c&3)<<4)))&0xFF]; > +C = (C>>>8) ^ T[(C ^ (128|(d&63)))&0xFF]; > +} else { > +C = (C>>>8) ^ T[(C ^ (224|((c>>12)&15)))&0xFF]; > +C = (C>>>8) ^ T[(C ^ (128|((c>>6)&63)))&0xFF]; > +C = (C>>>8) ^ T[(C ^ (128|(c&63)))&0xFF]; > +} > +} > +return C ^ -1; > +} > EOF jenkins@2665e52069d0:~$ cd couchdb/ jenkins@2665e52069d0:~/couchdb$ git status Not currently on any branch. nothing to commit, working tree clean jenkins@2665e52069d0:~/couchdb$ git checkout -b 3.1.1-patch-jan Switched to a new branch '3.1.1-patch-jan' jenkins@2665e52069d0:~/couchdb$ git apply ../jan.patch jenkins@2665e52069d0:~/couchdb$ git status On branch 3.1.1-patch-jan Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) modified: share/server/60/rewrite_fun.js no changes added to commit (use "git add" and/or "git commit -a") ``` Afterwards I compiled the source: ```bash jenkins@2665e52069d0:~/couchdb$ ./configure ... ==> couchdb (update-deps) Updating config from {git,"https://github.com/apache/couchdb-config.git", {tag,"2.1.7"}} Updating b64url from {git,"https://github.com/apache/couchdb-b64url.git", {tag,"1.0.2"}} Updating ets_lru from {git,"https://github.com/apache/couchdb-ets-lru.git", {tag,"1.1.0"}} Updating khash from {git,"https://github.com/apache/couchdb-khash.git", {tag,"1.1.0"}} Updating snappy from {git,"https://github.com/apache/couchdb-snappy.git", {tag,"CouchDB-1.0.4"}} Updating docs from {git,"https://github.com/apache/couchdb-documentation", {tag,"3.1.1-RC2"}} Updating fauxton from {git,"https://github.com/apache/couchdb-fauxton", {tag,"v1.2.6"}} Updating folsom from {git,"https://github.com/apache/couchdb-folsom.git", {tag,"CouchDB-0.8.3"}} Updating hyper from {git,"https://github.com/apache/couchdb-hyper.git", {tag,"CouchDB-2.2.0-6"}} Updating ibrowse from {git,"https://github.com/apache/couchdb-ibrowse.git", {tag,"CouchDB-4.0.1-1"}} Updating jiffy from {git,"https://github.com/apache/couchdb-jiffy.git", {tag,"CouchDB-1.0.4-1"}} Updating mochiweb from {git,"https://github.com/apache/couchdb-mochiweb.git", {tag,"v2.20.0"}} Updating meck from {git,"https://github.com/apache/couchdb-meck.git", {tag,"0.8.8"}} Updating recon from {git,"https://github.com/apache/couchdb-recon.git", {tag,"2.5.0"}} Updating proper from {git,"https://github.com/proper-testing/proper", {tag,"v1.3"}} Updating bear from {git,"https://github.com/apache/couchdb-bear.git", "008f48aff819126e281d5ccae80a258bf9bf9c30"} You have configured Apache CouchDB, time to relax. Relax. # Compile jenkins@2665e52069d0:~/couchdb$ make release ... The HTML pages are in build/html. sphinx-build -b man -a -W -n -A local=1 -D latex_elements.papersize=a4 -d build/doctree src/ build/man Running Sphinx v1.8.4 making output directory... loading pickled environment... done building [mo]: all of 0 po files building [man]: all source files updating environment: 0 added, 0 changed, 0 removed looking for now-outdated files... none found writing... apachecouchdb.1 { intro/index intro/overview intro/why intro/consistency intro/curl intro/security intro/tour intro/api replication/index replication/intro replication/replicator replication/conflicts replication/protocol ddocs/index ddocs/ddocs ddocs/views/index ddocs/views/intro ddocs/views/collation ddocs/views/joins ddocs/views/nosql ddocs/views/pagination ddocs/search best-practices/index best-practices/documents best-practices/forms best-practices/iso-date best-practices/jsdevel best-practices/views best-practices/reverse-proxies install/index install/unix install/windows install/mac install/freebsd install/docker install/snap install/kubernetes install/search install/upgrading install/troubleshooting setup/index setup/single-node setup/cluster config/index config/intro config/couchdb config/cluster config/couch-peruser config/http config/auth config/compaction config/indexbuilds config/ioq config/logging config/replicator config/query-servers config/misc config/r esharding cluster/index cluster/theory cluster/nodes cluster/databases cluster/sharding cluster/purging maintenance/index maintenance/compaction maintenance/performance maintenance/backups fauxton/index fauxton/install experimental api/index api/basics api/server/index api/server/common api/server/authn api/server/configuration api/database/index api/database/common api/database/bulk-api api/database/find api/database/shard api/database/changes api/database/compact api/database/security api/database/misc api/document/index api/document/common api/document/attachments api/ddoc/index api/ddoc/common api/ddoc/views api/ddoc/search api/ddoc/render api/ddoc/rewrites api/partitioned-dbs api/local json-structure query-server/index query-server/protocol query-server/javascript query-server/erlang partitioned-dbs/index whatsnew/index whatsnew/3.1 whatsnew/3.0 whatsnew/2.3 whatsnew/2.2 whatsnew/2.1 whatsnew/2.0 whatsnew/1.7 whatsnew/1.6 whatsnew/1.5 whatsnew/1.4 whatsnew/1.3 whatsnew/1.2 what snew/1.1 whatsnew/1.0 whatsnew/0.11 whatsnew/0.10 whatsnew/0.9 whatsnew/0.8 cve/index cve/2010-0009 cve/2010-2234 cve/2010-3854 cve/2012-5641 cve/2012-5649 cve/2012-5650 cve/2014-2668 cve/2017-12635 cve/2017-12636 cve/2018-11769 cve/2018-17188 cve/2018-8007 cve/2020-1955 about contributing } build succeeded. The manual pages are in build/man. make[1]: Leaving directory '/home/jenkins/couchdb/src/docs' Installing CouchDB into rel/couchdb/ ... ==> rel (generate) WARN: 'generate' command does not apply to directory /home/jenkins/couchdb ... done You can now copy the rel/couchdb directory anywhere on your system. Start CouchDB with ./bin/couchdb from within that directory. jenkins@2665e52069d0:~/couchdb$ echo $? 0 ``` The compilation seem to have worked, so I created deb packages based on that. The `make dist` seemed not to like uncommited changes, so I added your patch as a commit: ```bash jenkins@2665e52069d0:~/couchdb$ git config --global user.email "[email protected]" jenkins@2665e52069d0:~/couchdb$ git config --global user.name "CouchDB validation" jenkins@2665e52069d0:~/couchdb$ git commit -am "fix: Apply caching" [3.1.1-patch-jan 6c2d01a] fix: Apply caching 1 file changed, 79 insertions(+), 23 deletions(-) jenkins@2665e52069d0:~/couchdb$ make dist ==> config (compile) ==> b64url (compile) ==> ets_lru (compile) ==> khash (compile) ==> snappy (compile) ==> bear (compile) ==> meck (compile) ==> folsom (compile) ==> hyper (compile) ==> ibrowse (compile) ==> jiffy (compile) ==> mochiweb (compile) ==> recon (compile) ==> proper (compile) ==> couch_epi (compile) ==> couch_log (compile) ==> chttpd (compile) ==> couch (compile) Compiling priv/couch_js/1.8.5/http.c Compiling priv/couch_js/1.8.5/main.c Compiling priv/couch_js/1.8.5/utf8.c Compiling priv/couch_js/1.8.5/util.c ==> couch_event (compile) ==> mem3 (compile) ==> couch_index (compile) ==> couch_mrview (compile) ==> couch_replicator (compile) ==> couch_plugins (compile) ==> couch_pse_tests (compile) ==> couch_stats (compile) ==> couch_peruser (compile) ==> couch_tests (compile) ==> ddoc_cache (compile) ==> dreyfus (compile) ==> fabric (compile) ==> global_changes (compile) ==> ioq (compile) ==> jwtf (compile) ==> ken (compile) ==> mango (compile) ==> rexi (compile) ==> setup (compile) ==> smoosh (compile) ==> rel (compile) ==> couchdb (compile) COUCHDB_GIT_SHA: 6c2d01a COUCHDB_VERSION: 3.1.1-6c2d01a COUCHDB_VERSION_SUFFIX: 6c2d01a DIRTY: IN_RC: IN_RELEASE: ON_TAG: REL_TAG: 3.1.1 SUB_VSN: Building Apache CouchDB 3.1.1-6c2d01a fatal: ambiguous argument '6c976bd..HEAD': unknown revision or path not in the working tree. Use '--' to separate paths from revisions, like this: 'git <command> [<revision>...] -- [<file>...]' Done: apache-couchdb-3.1.1-6c2d01a.tar.gz ``` I copied that tar back to the host OS: ```bash $ docker cp couchdb-3.1.1-fix-validation:/home/jenkins/couchdb/apache-couchdb-3.1.1-6c2d01a.tar.gz . $ git clone https://github.com/apache/couchdb-pkg.git Cloning into 'couchdb-pkg'... remote: Enumerating objects: 723, done. remote: Counting objects: 100% (94/94), done. remote: Compressing objects: 100% (70/70), done. remote: Total 723 (delta 40), reused 57 (delta 20), pack-reused 629 Receiving objects: 100% (723/723), 25.31 MiB | 23.49 MiB/s, done. Resolving deltas: 100% (335/335), done. $ cd couchdb-pkg/ ``` The assumed image name was `couchdbdev/<osname>-<codename>-erlang-<erlang-version>`, so I retagged my created one before running the packaging job: ```bash $ docker tag apache/couchdbci-debian:buster-erlang-20.3.8.26-1 couchdbdev/debian-buster-erlang-20.3.8.26-1 $ ERLANGVERSION=20.3.8.26-1 ./build.sh couch debian-buster /root/apache-couchdb-3.1.1-6c2d01a.tar.gz Using apache-couchdb-3.1.1-6c2d01a.tar.gz to build packages... mkdir -p ../couchdb cp apache-couchdb-3.1.1-6c2d01a.tar.gz ../couchdb cd ../couchdb && tar xfz *.tar.gz cp debian/control.in debian/control sed -i 's/%SPIDERMONKEY%/libmozjs-60-0/g' debian/control sed -i 's/%SPIDERMONKEY_DEV%/libmozjs-60-dev/g' debian/control echo 'SM_VER = 60' > debian/sm_ver.mk rm -rf /home/jenkins/couchdb/apache-couchdb-3.1.1-6c2d01a/debian cp -R debian /home/jenkins/couchdb/apache-couchdb-3.1.1-6c2d01a cd /home/jenkins/couchdb/apache-couchdb-3.1.1-6c2d01a && dch -v 3.1.1-6c2d01a~buster "Automatically generated package from upstream." cd /home/jenkins/couchdb/apache-couchdb-3.1.1-6c2d01a && dpkg-buildpackage -b -us -uc dpkg-buildpackage: info: source package couchdb dpkg-buildpackage: info: source version 3.1.1-6c2d01a~buster dpkg-buildpackage: info: source distribution UNRELEASED dpkg-buildpackage: info: source changed by "CouchDB Developers" <"[email protected]"> dpkg-source --before-build . dpkg-buildpackage: info: host architecture amd64 dpkg-source: info: using options from apache-couchdb-3.1.1-6c2d01a/debian/source/options: --compression=bzip2 --compression-level=9 debian/rules clean make[1]: Entering directory '/home/jenkins/couchdb/apache-couchdb-3.1.1-6c2d01a' dh clean --with=systemd debian/rules override_dh_auto_clean make[2]: Entering directory '/home/jenkins/couchdb/apache-couchdb-3.1.1-6c2d01a' dh_auto_clean make -j1 distclean make[3]: Entering directory '/home/jenkins/couchdb/apache-couchdb-3.1.1-6c2d01a' ==> config (clean) ==> b64url (clean) ==> ets_lru (clean) ==> khash (clean) ==> snappy (clean) ==> bear (clean) ==> meck (clean) ==> folsom (clean) ==> hyper (clean) ==> ibrowse (clean) ==> jiffy (clean) ==> mochiweb (clean) ==> recon (clean) ==> couch_epi (clean) ==> couch_log (clean) ==> chttpd (clean) ==> couch (clean) ==> couch_event (clean) ==> mem3 (clean) ==> couch_index (clean) ==> couch_mrview (clean) ==> couch_replicator (clean) ==> couch_plugins (clean) ==> couch_pse_tests (clean) ==> couch_stats (clean) ==> couch_peruser (clean) ==> couch_tests (clean) ==> ddoc_cache (clean) ==> dreyfus (clean) ==> fabric (clean) ==> global_changes (clean) ==> ioq (clean) ==> jwtf (clean) ==> ken (clean) ==> mango (clean) ==> rexi (clean) ==> setup (clean) ==> smoosh (clean) ==> rel (clean) ==> apache-couchdb-3.1.1-6c2d01a (clean) make[3]: Leaving directory '/home/jenkins/couchdb/apache-couchdb-3.1.1-6c2d01a' mv src/mango/src/mango_cursor_text.erl.nocompile src/mango/src/mango_cursor_text.erl mv: cannot stat 'src/mango/src/mango_cursor_text.erl.nocompile': No such file or directory make[2]: [debian/rules:21: override_dh_auto_clean] Error 1 (ignored) mv src/mango/src/mango_cursor_text.nocompile src/mango/src/mango_cursor_text.erl mv: cannot stat 'src/mango/src/mango_cursor_text.nocompile': No such file or directory make[2]: [debian/rules:22: override_dh_auto_clean] Error 1 (ignored) make[2]: Leaving directory '/home/jenkins/couchdb/apache-couchdb-3.1.1-6c2d01a' dh_clean make[1]: Leaving directory '/home/jenkins/couchdb/apache-couchdb-3.1.1-6c2d01a' debian/rules build make[1]: Entering directory '/home/jenkins/couchdb/apache-couchdb-3.1.1-6c2d01a' dh build --with=systemd dh_update_autotools_config debian/rules override_dh_auto_configure make[2]: Entering directory '/home/jenkins/couchdb/apache-couchdb-3.1.1-6c2d01a' ./configure --spidermonkey-version 60 ==> configuring couchdb in rel/couchdb.config You have configured Apache CouchDB, time to relax. Relax. make[2]: Leaving directory '/home/jenkins/couchdb/apache-couchdb-3.1.1-6c2d01a' debian/rules override_dh_auto_build make[2]: Entering directory '/home/jenkins/couchdb/apache-couchdb-3.1.1-6c2d01a' dh_auto_build -- release make -j1 release make[3]: Entering directory '/home/jenkins/couchdb/apache-couchdb-3.1.1-6c2d01a' ==> config (compile) Compiled src/config_util.erl Compiled src/config_writer.erl Compiled src/config_sup.erl Compiled src/config_notifier.erl Compiled src/config_listener_mon.erl Compiled src/config_listener.erl Compiled src/config_app.erl Compiled src/config.erl ==> b64url (compile) Compiled src/b64url.erl Compiling c_src/b64url.c ==> ets_lru (compile) Compiled src/ets_lru.erl ==> khash (compile) Compiled src/khash.erl Compiling c_src/hash.c Compiling c_src/khash.c ==> snappy (compile) Compiled src/snappy.erl Compiling c_src/snappy_nif.cc c_src/snappy_nif.cc: In function 'ERL_NIF_TERM snappy_compress(ErlNifEnv*, int, const ERL_NIF_TERM*)': c_src/snappy_nif.cc:156:28: warning: catching polymorphic type 'class std::bad_alloc' by value [-Wcatch-value=] } catch(std::bad_alloc e) { ^ Compiling c_src/snappy/snappy-sinksource.cc Compiling c_src/snappy/snappy-stubs-internal.cc Compiling c_src/snappy/snappy.cc c_src/snappy/snappy.cc: In instantiation of 'bool snappy::SnappyScatteredWriter<Allocator>::AppendFromSelf(size_t, size_t) [with Allocator = snappy::SnappySinkAllocator; size_t = long unsigned int]': c_src/snappy/snappy.cc:779:13: required from 'void snappy::SnappyDecompressor::DecompressAllTags(Writer*) [with Writer = snappy::SnappyScatteredWriter<snappy::SnappySinkAllocator>]' c_src/snappy/snappy.cc:865:3: required from 'bool snappy::InternalUncompressAllTags(snappy::SnappyDecompressor*, Writer*, snappy::uint32) [with Writer = snappy::SnappyScatteredWriter<snappy::SnappySinkAllocator>; snappy::uint32 = unsigned int]' c_src/snappy/snappy.cc:1549:78: required from here c_src/snappy/snappy.cc:1401:21: warning: comparison of integer expressions of different signedness: 'size_t' {aka 'long unsigned int'} and 'long int' [-Wsign-compare] if (offset - 1u < op_ptr_ - op_base_) { ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~ ==> bear (compile) /home/jenkins/couchdb/apache-couchdb-3.1.1-6c2d01a/src/bear/src/bear.erl:28: Warning: export_all flag enabled - all functions will be exported Compiled src/bear.erl ==> meck (compile) Compiled src/meck_util.erl Compiled src/meck_matcher.erl Compiled src/meck_ret_spec.erl Compiled src/meck_history.erl Compiled src/meck_expect.erl Compiled src/meck_cover.erl Compiled src/meck_code.erl Compiled src/meck_code_gen.erl Compiled src/meck_proc.erl Compiled src/meck_args_matcher.erl Compiled src/meck.erl ==> folsom (compile) Compiled src/folsom_utils.erl Compiled src/folsom_sup.erl Compiled src/folsom_sample_slide_uniform.erl Compiled src/folsom_sample_uniform.erl Compiled src/folsom_sample_slide_sup.erl Compiled src/folsom_sample_slide_server.erl Compiled src/folsom_sample_slide_sorted.erl Compiled src/folsom_vm_metrics.erl Compiled src/folsom_sample_none.erl Compiled src/folsom_sample_slide.erl Compiled src/folsom_metrics_spiral.erl Compiled src/folsom_sample_exdec.erl Compiled src/folsom_sample.erl Compiled src/folsom_metrics_meter.erl Compiled src/folsom_metrics_history.erl Compiled src/folsom_metrics_meter_reader.erl Compiled src/folsom_metrics_histogram_ets.erl Compiled src/folsom_metrics_gauge.erl Compiled src/folsom_metrics_histogram.erl Compiled src/folsom_metrics_duration.erl Compiled src/folsom_metrics_counter.erl Compiled src/folsom_ewma.erl Compiled src/folsom_meter_timer_server.erl Compiled src/folsom.erl Compiled src/folsom_metrics.erl Compiled src/folsom_ets.erl ==> hyper (compile) Compiled src/hyper_register.erl Compiled src/hyper_carray.erl Compiled src/hyper_gb.erl Compiled src/hyper_const.erl Compiled src/hyper_array.erl Compiled src/hyper_binary_rle.erl /home/jenkins/couchdb/apache-couchdb-3.1.1-6c2d01a/src/hyper/src/hyper.erl:245: Warning: random:uniform/1: the 'random' module is deprecated; use the 'rand' module instead /home/jenkins/couchdb/apache-couchdb-3.1.1-6c2d01a/src/hyper/src/hyper.erl:288: Warning: random:seed/3: the 'random' module is deprecated; use the 'rand' module instead /home/jenkins/couchdb/apache-couchdb-3.1.1-6c2d01a/src/hyper/src/hyper.erl:333: Warning: random:seed/3: the 'random' module is deprecated; use the 'rand' module instead Compiled src/hyper.erl Compiled src/hyper_binary.erl Compiling c_src/hyper_carray.c ==> ibrowse (compile) /home/jenkins/couchdb/apache-couchdb-3.1.1-6c2d01a/src/ibrowse/src/ibrowse_lib.erl:372: Warning: erlang:now/0: Deprecated BIF. See the "Time and Time Correction in Erlang" chapter of the ERTS User's Guide for more information. Compiled src/ibrowse_lib.erl Compiled src/ibrowse_sup.erl Compiled src/ibrowse_socks5.erl Compiled src/ibrowse_lb.erl Compiled src/ibrowse_app.erl /home/jenkins/couchdb/apache-couchdb-3.1.1-6c2d01a/src/ibrowse/src/ibrowse_test.erl:83: Warning: erlang:now/0: Deprecated BIF. See the "Time and Time Correction in Erlang" chapter of the ERTS User's Guide for more information. /home/jenkins/couchdb/apache-couchdb-3.1.1-6c2d01a/src/ibrowse/src/ibrowse_test.erl:93: Warning: erlang:now/0: Deprecated BIF. See the "Time and Time Correction in Erlang" chapter of the ERTS User's Guide for more information. /home/jenkins/couchdb/apache-couchdb-3.1.1-6c2d01a/src/ibrowse/src/ibrowse_test.erl:171: Warning: erlang:now/0: Deprecated BIF. See the "Time and Time Correction in Erlang" chapter of the ERTS User's Guide for more information. /home/jenkins/couchdb/apache-couchdb-3.1.1-6c2d01a/src/ibrowse/src/ibrowse_test.erl:182: Warning: erlang:now/0: Deprecated BIF. See the "Time and Time Correction in Erlang" chapter of the ERTS User's Guide for more information. Compiled src/ibrowse_test.erl Compiled src/ibrowse.erl /home/jenkins/couchdb/apache-couchdb-3.1.1-6c2d01a/src/ibrowse/src/ibrowse_http_client.erl:428: Warning: erlang:now/0: Deprecated BIF. See the "Time and Time Correction in Erlang" chapter of the ERTS User's Guide for more information. /home/jenkins/couchdb/apache-couchdb-3.1.1-6c2d01a/src/ibrowse/src/ibrowse_http_client.erl:1831: Warning: erlang:now/0: Deprecated BIF. See the "Time and Time Correction in Erlang" chapter of the ERTS User's Guide for more information. Compiled src/ibrowse_http_client.erl ==> jiffy (compile) Compiling c_src/decoder.c Compiling c_src/encoder.c Compiling c_src/jiffy.c Compiling c_src/termstack.c Compiling c_src/utf8.c Compiling c_src/util.c Compiling c_src/doubles.cc Compiling c_src/objects.cc Compiling c_src/double-conversion/bignum-dtoa.cc Compiling c_src/double-conversion/bignum.cc Compiling c_src/double-conversion/cached-powers.cc Compiling c_src/double-conversion/diy-fp.cc Compiling c_src/double-conversion/double-conversion.cc Compiling c_src/double-conversion/fast-dtoa.cc Compiling c_src/double-conversion/fixed-dtoa.cc Compiling c_src/double-conversion/strtod.cc Compiled src/jiffy_utf8.erl Compiled src/jiffy.erl ==> mochiweb (compile) Compiled src/reloader.erl Compiled src/mochiweb_websocket.erl Compiled src/mochiweb_socket.erl Compiled src/mochiweb_util.erl Compiled src/mochiweb_session.erl Compiled src/mochiweb_socket_server.erl Compiled src/mochiweb_response.erl Compiled src/mochiweb_mime.erl Compiled src/mochiweb_multipart.erl Compiled src/mochiweb_io.erl Compiled src/mochiweb_http.erl Compiled src/mochiweb_request.erl Compiled src/mochiweb_echo.erl Compiled src/mochiweb_headers.erl Compiled src/mochiweb_cover.erl Compiled src/mochiweb_cookies.erl Compiled src/mochiweb_clock.erl Compiled src/mochiweb_base64url.erl Compiled src/mochiweb_acceptor.erl Compiled src/mochiweb.erl Compiled src/mochiweb_html.erl Compiled src/mochiutf8.erl Compiled src/mochitemp.erl Compiled src/mochinum.erl Compiled src/mochilogfile2.erl Compiled src/mochilists.erl Compiled src/mochijson.erl Compiled src/mochihex.erl Compiled src/mochiglobal.erl Compiled src/mochifmt_std.erl Compiled src/mochifmt_records.erl Compiled src/mochijson2.erl Compiled src/mochifmt.erl Compiled src/mochiweb_charref.erl ==> recon (compile) Compiled src/recon_map.erl Compiled src/recon_rec.erl Compiled src/recon_trace.erl Compiled src/recon_alloc.erl Compiled src/recon_lib.erl Compiled src/recon.erl ==> proper (compile) Compiled src/vararg.erl Compiled src/proper_target.erl Compiled src/proper_types.erl Compiled src/proper_unicode.erl Compiled src/proper_unused_imports_remover.erl Compiled src/proper_symb.erl Compiled src/proper_transformer.erl Compiled src/proper_shrink.erl Compiled src/proper_statem.erl Compiled src/proper_sets.erl Compiled src/proper_queue.erl Compiled src/proper_sa.erl Compiled src/proper_prop_remover.erl Compiled src/proper_orddict.erl Compiled src/proper_ordsets.erl Compiled src/proper_gen.erl Compiled src/proper_typeserver.erl Compiled src/proper_gb_trees.erl Compiled src/proper_gb_sets.erl Compiled src/proper_gen_next.erl Compiled src/proper_dict.erl Compiled src/proper_array.erl Compiled src/proper_fsm.erl Compiled src/proper_arith.erl Compiled src/proper.erl ==> couch_epi (compile) Compiled src/couch_epi_util.erl Compiled src/couch_epi_sup.erl Compiled src/couch_epi_plugin.erl Compiled src/couch_epi_module_keeper.erl Compiled src/couch_epi_functions.erl Compiled src/couch_epi_functions_gen.erl Compiled src/couch_epi_data_gen.erl Compiled src/couch_epi_data.erl Compiled src/couch_epi_codegen.erl Compiled src/couch_epi_app.erl Compiled src/couch_epi_codechange_monitor.erl Compiled src/couch_epi.erl ==> couch_log (compile) Compiled src/couch_log_writer.erl Compiled src/couch_log_writer_journald.erl Compiled src/couch_log_writer_stderr.erl Compiled src/couch_log_writer_syslog.erl Compiled src/couch_log_writer_file.erl Compiled src/couch_log_util.erl Compiled src/couch_log_sup.erl Compiled src/couch_log_server.erl Compiled src/couch_log_monitor.erl Compiled src/couch_log_trunc_io_fmt.erl Compiled src/couch_log_error_logger_h.erl Compiled src/couch_log_config_dyn.erl Compiled src/couch_log_trunc_io.erl Compiled src/couch_log_app.erl Compiled src/couch_log_config.erl Compiled src/couch_log.erl Compiled src/couch_log_formatter.erl ==> chttpd (compile) Compiled src/chttpd.erl Compiled src/chttpd_xframe_options.erl Compiled src/chttpd_sup.erl Compiled src/chttpd_view.erl Compiled src/chttpd_stats.erl Compiled src/chttpd_test_util.erl Compiled src/chttpd_prefer_header.erl Compiled src/chttpd_rewrite.erl Compiled src/chttpd_show.erl Compiled src/chttpd_plugin.erl Compiled src/chttpd_httpd_handlers.erl Compiled src/chttpd_handlers.erl Compiled src/chttpd_node.erl Compiled src/chttpd_misc.erl Compiled src/chttpd_epi.erl Compiled src/chttpd_external.erl Compiled src/chttpd_cors.erl Compiled src/chttpd_auth_request.erl Compiled src/chttpd_auth.erl Compiled src/chttpd_app.erl Compiled src/chttpd_auth_cache.erl Compiled src/chttpd_db.erl ==> couch (compile) Compiled src/couch_httpd.erl Compiled src/test_request.erl Compiled src/couch_work_queue.erl Compiled src/couch_uuids.erl Compiled src/couch_users_db.erl Compiled src/couch_totp.erl Compiled src/test_util.erl Compiled src/couch_util.erl Compiled src/couch_task_status.erl Compiled src/couch_sup.erl Compiled src/couch_secondary_sup.erl Compiled src/couch_rand.erl Compiled src/couch_stream.erl Compiled src/couch_proc_manager.erl Compiled src/couch_query_servers.erl Compiled src/couch_server.erl Compiled src/couch_primary_sup.erl Compiled src/couch_partition.erl Compiled src/couch_passwords.erl Compiled src/couch_os_process.erl Compiled src/couch_lru.erl Compiled src/couch_multidb_changes.erl Compiled src/couch_io_logger.erl Compiled src/couch_native_process.erl Compiled src/couch_httpd_vhost.erl Compiled src/couch_key_tree.erl Compiled src/couch_httpd_rewrite.erl Compiled src/couch_httpd_handlers.erl Compiled src/couch_httpd_multipart.erl Compiled src/couch_httpd_misc_handlers.erl Compiled src/couch_httpd_external.erl Compiled src/couch_hotp.erl Compiled src/couch_hash.erl Compiled src/couch_flags_config.erl Compiled src/couch_httpd_auth.erl Compiled src/couch_flags.erl Compiled src/couch_event_sup.erl Compiled src/couch_emsort.erl Compiled src/couch_ejson_size.erl Compiled src/couch_file.erl Compiled src/couch_httpd_db.erl Compiled src/couch_ejson_compare.erl Compiled src/couch_drv.erl Compiled src/couch_debug.erl Compiled src/couch_doc.erl Compiled src/couch_db_split.erl Compiled src/couch_db_plugin.erl Compiled src/couch_db_epi.erl Compiled src/couch_db_header.erl Compiled src/couch_db_updater.erl Compiled src/couch_compress.erl Compiled src/couch_db_engine.erl Compiled src/couch_changes.erl Compiled src/couch_bt_engine_stream.erl Compiled src/couch_bt_engine_header.erl Compiled src/couch_db.erl Compiled src/couch_btree.erl Compiled src/couch_base32.erl Compiled src/couch_bt_engine_compactor.erl Compiled src/couch_auth_cache.erl Compiled src/couch_att.erl Compiled src/couch_bt_engine.erl Compiled src/couch.erl Compiled src/couch_app.erl Compiling priv/couch_js/60/http.cpp Compiling priv/couch_js/60/main.cpp Compiling priv/couch_js/60/util.cpp Compiling priv/icu_driver/couch_icu_driver.c Compiling priv/couch_ejson_compare/couch_ejson_compare.c ==> couch_event (compile) Compiled src/couch_event_listener.erl Compiled src/couch_event_sup2.erl Compiled src/couch_event_os_listener.erl Compiled src/couch_event_app.erl Compiled src/couch_event.erl Compiled src/couch_event_server.erl Compiled src/couch_event_listener_mfa.erl ==> mem3 (compile) Compiled src/mem3_sync_nodes.erl Compiled src/mem3_sync_security.erl Compiled src/mem3_sync_event.erl Compiled src/mem3_sync_event_listener.erl Compiled src/mem3_sup.erl Compiled src/mem3_sync.erl Compiled src/mem3_util.erl Compiled src/mem3_seeds.erl Compiled src/mem3_reshard_validate.erl Compiled src/mem3_reshard_sup.erl Compiled src/mem3_shards.erl Compiled src/mem3_rpc.erl Compiled src/mem3_reshard_job_sup.erl Compiled src/mem3_reshard_store.erl Compiled src/mem3_reshard_index.erl Compiled src/mem3_reshard_httpd.erl Compiled src/mem3_reshard_job.erl Compiled src/mem3_reshard_api.erl Compiled src/mem3_reshard_dbdoc.erl Compiled src/mem3_plugin_couch_db.erl Compiled src/mem3_nodes.erl Compiled src/mem3_httpd_handlers.erl Compiled src/mem3_reshard.erl Compiled src/mem3_hash.erl Compiled src/mem3_epi.erl Compiled src/mem3_httpd.erl Compiled src/mem3_rep.erl Compiled src/mem3_app.erl Compiled src/mem3_cluster.erl Compiled src/mem3.erl ==> couch_index (compile) Compiled src/couch_index_sup.erl Compiled src/couch_index_util.erl Compiled src/couch_index_plugin_couch_db.erl Compiled src/couch_index_updater.erl Compiled src/couch_index_epi.erl Compiled src/couch_index_plugin.erl Compiled src/couch_index_app.erl Compiled src/couch_index_server.erl Compiled src/couch_index_compactor.erl Compiled src/couch_index.erl ==> couch_mrview (compile) Compiled src/couch_mrview_update_notifier.erl Compiled src/couch_mrview_updater.erl Compiled src/couch_mrview_test_util.erl Compiled src/couch_mrview_show.erl Compiled src/couch_mrview_util.erl Compiled src/couch_mrview_index.erl Compiled src/couch_mrview_compactor.erl Compiled src/couch_mrview_cleanup.erl Compiled src/couch_mrview_http.erl Compiled src/couch_mrview.erl ==> couch_replicator (compile) Compiled src/couch_replicator_httpc.erl Compiled src/couch_replicator_auth.erl Compiled src/couch_replicator_utils.erl Compiled src/couch_replicator_sup.erl Compiled src/couch_replicator_stats.erl Compiled src/couch_replicator_scheduler_sup.erl Compiled src/json_stream_parse.erl Compiled src/couch_replicator_worker.erl Compiled src/couch_replicator_rate_limiter_tables.erl Compiled src/couch_replicator_rate_limiter.erl Compiled src/couch_replicator_notifier.erl Compiled src/couch_replicator_job_sup.erl Compiled src/couch_replicator_scheduler_job.erl Compiled src/couch_replicator_scheduler.erl Compiled src/couch_replicator_ids.erl Compiled src/couch_replicator_httpd_util.erl Compiled src/couch_replicator_httpd.erl Compiled src/couch_replicator_httpc_pool.erl Compiled src/couch_replicator_filters.erl Compiled src/couch_replicator_fabric_rpc.erl Compiled src/couch_replicator_doc_processor_worker.erl Compiled src/couch_replicator_fabric.erl Compiled src/couch_replicator_db_changes.erl Compiled src/couch_replicator_connection.erl Compiled src/couch_replicator_docs.erl Compiled src/couch_replicator_changes_reader.erl Compiled src/couch_replicator_doc_processor.erl Compiled src/couch_replicator_clustering.erl Compiled src/couch_replicator_app.erl Compiled src/couch_replicator_auth_noop.erl Compiled src/couch_replicator_auth_session.erl Compiled src/couch_replicator.erl Compiled src/couch_replicator_api_wrap.erl ==> couch_plugins (compile) Compiled src/couch_plugins_httpd.erl Compiled src/couch_plugins.erl ==> couch_pse_tests (compile) Compiled src/cpse_test_ref_counting.erl Compiled src/cpse_util.erl Compiled src/cpse_test_read_write_docs.erl /home/jenkins/couchdb/apache-couchdb-3.1.1-6c2d01a/src/couch_pse_tests/src/cpse_test_purge_seqs.erl:14: Warning: export_all flag enabled - all functions will be exported Compiled src/cpse_test_purge_seqs.erl Compiled src/cpse_test_purge_replication.erl Compiled src/cpse_test_purge_docs.erl Compiled src/cpse_test_open_close_delete.erl Compiled src/cpse_test_purge_bad_checkpoints.erl Compiled src/cpse_test_get_set_props.erl Compiled src/cpse_test_fold_purge_infos.erl Compiled src/cpse_test_fold_changes.erl Compiled src/cpse_test_fold_docs.erl Compiled src/cpse_test_copy_purge_infos.erl Compiled src/cpse_gather.erl Compiled src/cpse_test_attachments.erl Compiled src/cpse_test_compaction.erl ==> couch_stats (compile) Compiled src/couch_stats_sup.erl Compiled src/couch_stats_app.erl Compiled src/couch_stats_process_tracker.erl Compiled src/couch_stats.erl Compiled src/couch_stats_httpd.erl Compiled src/couch_stats_aggregator.erl ==> couch_peruser (compile) Compiled src/couch_peruser_app.erl Compiled src/couch_peruser_sup.erl Compiled src/couch_peruser.erl ==> couch_tests (compile) Compiled setups/couch_epi_dispatch.erl Compiled src/couch_tests_combinatorics.erl Compiled src/couch_tests.erl ==> ddoc_cache (compile) Compiled src/ddoc_cache_value.erl Compiled src/ddoc_cache_sup.erl Compiled src/ddoc_cache_opener.erl Compiled src/ddoc_cache_entry_validation_funs.erl Compiled src/ddoc_cache_entry_ddocid_rev.erl Compiled src/ddoc_cache_entry_ddocid.erl Compiled src/ddoc_cache_entry_custom.erl Compiled src/ddoc_cache_app.erl Compiled src/ddoc_cache_lru.erl Compiled src/ddoc_cache.erl Compiled src/ddoc_cache_entry.erl ==> dreyfus (compile) Compiled src/dreyfus_sup.erl Compiled src/dreyfus_plugin_couch_db.erl Compiled src/dreyfus_rpc.erl Compiled src/dreyfus_index_updater.erl Compiled src/dreyfus_util.erl Compiled src/dreyfus_index_manager.erl Compiled src/dreyfus_httpd_handlers.erl Compiled src/dreyfus_index.erl Compiled src/dreyfus_fabric_search.erl Compiled src/dreyfus_fabric_info.erl Compiled src/dreyfus_httpd.erl Compiled src/dreyfus_fabric_group2.erl Compiled src/dreyfus_fabric_cleanup.erl Compiled src/dreyfus_fabric_group1.erl Compiled src/dreyfus_epi.erl Compiled src/dreyfus_config.erl Compiled src/dreyfus_app.erl Compiled src/dreyfus_fabric.erl Compiled src/dreyfus_bookmark.erl Compiled src/clouseau_rpc.erl ==> fabric (compile) Compiled src/fabric_db_update_listener.erl Compiled src/fabric_view_reduce.erl Compiled src/fabric_view_map.erl Compiled src/fabric_view_all_docs.erl Compiled src/fabric_view_changes.erl Compiled src/fabric_view.erl Compiled src/fabric_streams.erl Compiled src/fabric_util.erl Compiled src/fabric_rpc.erl Compiled src/fabric_ring.erl Compiled src/fabric_group_info.erl Compiled src/fabric_doc_update.erl Compiled src/fabric_doc_purge.erl Compiled src/fabric_doc_missing_revs.erl Compiled src/fabric_doc_open_revs.erl Compiled src/fabric_doc_atts.erl Compiled src/fabric_doc_open.erl Compiled src/fabric_dict.erl Compiled src/fabric_doc_attachments.erl Compiled src/fabric_design_doc_count.erl Compiled src/fabric_db_partition_info.erl Compiled src/fabric_db_meta.erl Compiled src/fabric_db_doc_count.erl Compiled src/fabric_db_info.erl Compiled src/fabric_db_delete.erl Compiled src/fabric_db_create.erl Compiled src/fabric.erl ==> global_changes (compile) Compiled src/global_changes_sup.erl Compiled src/global_changes_util.erl Compiled src/global_changes_plugin.erl Compiled src/global_changes_httpd_handlers.erl Compiled src/global_changes_listener.erl Compiled src/global_changes_server.erl Compiled src/global_changes_epi.erl Compiled src/global_changes_app.erl Compiled src/global_changes_httpd.erl ==> ioq (compile) Compiled src/ioq_app.erl Compiled src/ioq_sup.erl Compiled src/ioq.erl ==> jwtf (compile) Compiled src/jwtf_app.erl Compiled src/jwtf_sup.erl Compiled src/jwtf.erl Compiled src/jwtf_keystore.erl ==> ken (compile) Compiled src/ken_sup.erl Compiled src/ken_event_handler.erl Compiled src/ken_app.erl Compiled src/ken.erl Compiled src/ken_server.erl ==> mango (compile) Compiled src/mango_sup.erl Compiled src/mango_sort.erl Compiled src/mango_util.erl Compiled src/mango_selector_text.erl Compiled src/mango_selector.erl Compiled src/mango_opts.erl Compiled src/mango_json.erl Compiled src/mango_json_bookmark.erl Compiled src/mango_native_proc.erl Compiled src/mango_idx_special.erl Compiled src/mango_idx_text.erl Compiled src/mango_httpd_handlers.erl Compiled src/mango_idx_view.erl Compiled src/mango_fields.erl Compiled src/mango_execution_stats.erl Compiled src/mango_idx.erl Compiled src/mango_epi.erl Compiled src/mango_httpd.erl Compiled src/mango_error.erl Compiled src/mango_doc.erl Compiled src/mango_cursor_text.erl Compiled src/mango_cursor_special.erl Compiled src/mango_cursor.erl Compiled src/mango_app.erl Compiled src/mango_crud.erl Compiled src/mango_cursor_view.erl ==> rexi (compile) Compiled src/rexi_server_sup.erl Compiled src/rexi_sup.erl Compiled src/rexi_utils.erl Compiled src/rexi_server_mon.erl Compiled src/rexi_monitor.erl Compiled src/rexi_app.erl Compiled src/rexi_server.erl Compiled src/rexi_buffer.erl Compiled src/rexi.erl ==> setup (compile) Compiled src/setup_sup.erl Compiled src/setup_httpd_handlers.erl Compiled src/setup_app.erl Compiled src/setup_epi.erl Compiled src/setup_httpd.erl Compiled src/setup.erl ==> smoosh (compile) Compiled src/smoosh_sup.erl Compiled src/smoosh_utils.erl Compiled src/smoosh_priority_queue.erl Compiled src/smoosh_app.erl Compiled src/smoosh_channel.erl Compiled src/smoosh_server.erl Compiled src/smoosh.erl ==> rel (compile) ==> apache-couchdb-3.1.1-6c2d01a (compile) Installing CouchDB into rel/couchdb/ ... ==> rel (generate) WARN: 'generate' command does not apply to directory /home/jenkins/couchdb/apache-couchdb-3.1.1-6c2d01a ... done You can now copy the rel/couchdb directory anywhere on your system. Start CouchDB with ./bin/couchdb from within that directory. make[3]: Leaving directory '/home/jenkins/couchdb/apache-couchdb-3.1.1-6c2d01a' rm -rf rel/couchdb/var/log rm -rf rel/couchdb/data make[2]: Leaving directory '/home/jenkins/couchdb/apache-couchdb-3.1.1-6c2d01a' make[1]: Leaving directory '/home/jenkins/couchdb/apache-couchdb-3.1.1-6c2d01a' debian/rules binary make[1]: Entering directory '/home/jenkins/couchdb/apache-couchdb-3.1.1-6c2d01a' dh binary --with=systemd dh_testroot dh_prep dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installman dh_installdebconf dh_systemd_enable dh_installinit dh_systemd_start dh_installlogrotate dh_lintian dh_perl dh_link dh_strip_nondeterminism dh_compress dh_fixperms dh_missing dh_strip dh_makeshlibs debian/rules override_dh_shlibdeps make[2]: Entering directory '/home/jenkins/couchdb/apache-couchdb-3.1.1-6c2d01a' dh_shlibdeps -- --ignore-missing-info -xlibmozjs185-1.0 objdump: debian/couchdb/opt/couchdb/lib/crypto-4.2.2.4/priv/obj/otp_test_engine.o: not a dynamic object objdump: debian/couchdb/opt/couchdb/lib/crypto-4.2.2.4/priv/obj/otp_test_engine.o: invalid operation dpkg-shlibdeps: warning: couldn't parse dynamic symbol definition: no symbols objdump: debian/couchdb/opt/couchdb/lib/crypto-4.2.2.4/priv/obj/crypto_callback.o: not a dynamic object objdump: debian/couchdb/opt/couchdb/lib/crypto-4.2.2.4/priv/obj/crypto_callback.o: invalid operation dpkg-shlibdeps: warning: couldn't parse dynamic symbol definition: no symbols objdump: debian/couchdb/opt/couchdb/lib/crypto-4.2.2.4/priv/obj/crypto.o: not a dynamic object objdump: debian/couchdb/opt/couchdb/lib/crypto-4.2.2.4/priv/obj/crypto.o: invalid operation dpkg-shlibdeps: warning: couldn't parse dynamic symbol definition: no symbols dpkg-shlibdeps: warning: package could avoid a useless dependency if debian/couchdb/opt/couchdb/lib/couch-3.1.1-6c2d01a/priv/couch_ejson_compare.so debian/couchdb/opt/couchdb/lib/couch-3.1.1-6c2d01a/priv/couch_icu_driver.so were not linked against libicudata.so.63 (they use none of the library's symbols) make[2]: Leaving directory '/home/jenkins/couchdb/apache-couchdb-3.1.1-6c2d01a' dh_installdeb dh_gencontrol dh_md5sums debian/rules override_dh_builddeb make[2]: Entering directory '/home/jenkins/couchdb/apache-couchdb-3.1.1-6c2d01a' dh_builddeb -- -Zgzip dpkg-deb: building package 'couchdb-dbgsym' in '../couchdb-dbgsym_3.1.1-6c2d01a~buster_amd64.deb'. dpkg-deb: building package 'couchdb' in '../couchdb_3.1.1-6c2d01a~buster_amd64.deb'. make[2]: Leaving directory '/home/jenkins/couchdb/apache-couchdb-3.1.1-6c2d01a' make[1]: Leaving directory '/home/jenkins/couchdb/apache-couchdb-3.1.1-6c2d01a' dpkg-genbuildinfo --build=binary dpkg-genchanges --build=binary >../couchdb_3.1.1-6c2d01a~buster_amd64.changes dpkg-genchanges: info: binary-only upload (no source code included) dpkg-source --after-build . dpkg-source: info: using options from apache-couchdb-3.1.1-6c2d01a/debian/source/options: --compression=bzip2 --compression-level=9 dpkg-buildpackage: info: binary-only upload (no source included) cd /home/jenkins/couchdb/apache-couchdb-3.1.1-6c2d01a/.. && lintian --profile couchdb couch*.deb || true warning: the authors of lintian do not recommend running it with root privileges! W: couchdb: maintainer-script-should-not-use-recursive-chown-or-chmod postinst:207 N: 3 tags overridden (2 errors, 1 info); 2 unused overrides chmod a+rwx ../couchdb/couchdb* mkdir -p pkgs/couch/debian-buster && chmod 777 pkgs/couch/debian-buster cp ../couchdb/couchdb* pkgs/couch/debian-buster if [ -f debian/control.bak ]; then mv -f debian/control.bak debian/control; fi if [ -f rpm/SPECS/couchdb.spec.bak ]; then mv -f rpm/SPECS/couchdb.spec.bak rpm/SPECS/couchdb.spec; fi rm -rf parts prime stage js/build debian/sm_ver.mk # packages were created $ ls -lah pkgs/couch/debian-buster/ total 30M drwxrwxrwx 2 root root 207 Aug 31 01:58 . drwxrwxrwx 3 root root 45 Aug 31 01:58 .. -rwxr-xr-x 1 root root 11K Aug 31 01:58 couchdb_3.1.1-6c2d01a~buster_amd64.buildinfo -rwxr-xr-x 1 root root 1.5K Aug 31 01:58 couchdb_3.1.1-6c2d01a~buster_amd64.changes -rwxr-xr-x 1 root root 30M Aug 31 01:58 couchdb_3.1.1-6c2d01a~buster_amd64.deb -rwxr-xr-x 1 root root 474K Aug 31 01:58 couchdb-dbgsym_3.1.1-6c2d01a~buster_amd64.deb ``` Next use https://github.com/apache/couchdb-docker/tree/main/3.1.1 to produce the container images, but adjust them to include the custom couchdb version. ```bash $ git clone https://github.com/apache/couchdb-docker.git Cloning into 'couchdb-docker'... remote: Enumerating objects: 1010, done. remote: Counting objects: 100% (118/118), done. remote: Compressing objects: 100% (82/82), done. remote: Total 1010 (delta 64), reused 64 (delta 32), pack-reused 892 Receiving objects: 100% (1010/1010), 248.11 KiB | 1.19 MiB/s, done. Resolving deltas: 100% (490/490), done. $ cd ~/couchdb-docker/3.1.1 $ cp -r ~/couchdb-pkg/pkgs/couch/debian-buster/ . $ ls debian-buster/ couchdb_3.1.1-6c2d01a~buster_amd64.buildinfo couchdb_3.1.1-6c2d01a~buster_amd64.changes couchdb_3.1.1-6c2d01a~buster_amd64.deb couchdb-dbgsym_3.1.1-6c2d01a~buster_amd64.deb $ git diff diff --git a/3.1.1/Dockerfile b/3.1.1/Dockerfile index 75b4b29..59a90d9 100644 --- a/3.1.1/Dockerfile +++ b/3.1.1/Dockerfile @@ -60,6 +60,10 @@ RUN . /etc/os-release; \ echo "deb [signed-by=/usr/share/keyrings/couchdb-archive-keyring.gpg] https://apache.jfrog.io/artifactory/couchdb-deb/ ${VERSION_CODENAME} main" | \ tee /etc/apt/sources.list.d/couchdb.list >/dev/null +# I know, we should not include deb packages in images, but it should be good enough to validate the fix +COPY debian-buster/couchdb_3.1.1-6c2d01a~buster_amd64.deb /tmp/packages/ +COPY debian-buster/couchdb-dbgsym_3.1.1-6c2d01a~buster_amd64.deb /tmp/packages/ + # https://github.com/apache/couchdb-pkg/blob/master/debian/README.Debian RUN set -eux; \ apt-get update; \ @@ -67,7 +71,7 @@ RUN set -eux; \ echo "couchdb couchdb/mode select none" | debconf-set-selections; \ # we DO want recommends this time DEBIAN_FRONTEND=noninteractive apt-get install -y --allow-downgrades --allow-remove-essential --allow-change-held-packages \ - couchdb="$COUCHDB_VERSION"~buster \ + /tmp/packages/* \ ; \ # Undo symlinks to /var/log and /var/lib rmdir /var/lib/couchdb /var/log/couchdb; \ docker build -t "couchdb:3.1.1-patch-jan" . Sending build context to Docker daemon 31.45MB Step 1/20 : FROM debian:buster-slim ---> 5c3d57f3e47a Step 2/20 : LABEL maintainer="CouchDB Developers [email protected]" ---> Using cache ---> 60f37c14a0e1 Step 3/20 : RUN groupadd -g 5984 -r couchdb && useradd -u 5984 -d /opt/couchdb -g couchdb couchdb ---> Using cache ---> 78202346b500 Step 4/20 : RUN set -ex; apt-get update; apt-get install -y --no-install-recommends apt-transport-https ca-certificates dirmngr gnupg ; rm -rf /var/lib/apt/lists/* ---> Using cache ---> fad0f8a736e0 Step 5/20 : RUN set -eux; apt-get update; apt-get install -y --no-install-recommends gosu tini; rm -rf /var/lib/apt/lists/*; gosu nobody true; tini --version ---> Using cache ---> aca1db0792a3 Step 6/20 : ENV GPG_COUCH_KEY 390EF70BB1EA12B2773962950EE62FB37A00258D ---> Using cache ---> d28f3c244c10 Step 7/20 : RUN set -eux; apt-get update; apt-get install -y curl; export GNUPGHOME="$(mktemp -d)"; curl -fL -o keys.asc https://couchdb.apache.org/repo/keys.asc; gpg --batch --import keys.asc; gpg --batch --export "${GPG_COUCH_KEY}" > /usr/share/keyrings/couchdb-archive-keyring.gpg; command -v gpgconf && gpgconf --kill all || :; rm -rf "$GNUPGHOME"; apt-key list; apt purge -y --autoremove curl; rm -rf /var/lib/apt/lists/* ---> Using cache ---> e2949d6cc031 Step 8/20 : ENV COUCHDB_VERSION 3.1.1 ---> Using cache ---> baa8089d1bea Step 9/20 : RUN . /etc/os-release; echo "deb [signed-by=/usr/share/keyrings/couchdb-archive-keyring.gpg] https://apache.jfrog.io/artifactory/couchdb-deb/ ${VERSION_CODENAME} main" | tee /etc/apt/sources.list.d/couchdb.list >/dev/null ---> Using cache ---> a7933b88e802 Step 10/20 : COPY debian-buster/couchdb_3.1.1-6c2d01a~buster_amd64.deb /tmp/packages/ ---> Using cache ---> ded52d34b729 Step 11/20 : COPY debian-buster/couchdb-dbgsym_3.1.1-6c2d01a~buster_amd64.deb /tmp/packages/ ---> Using cache ---> eb9b215cb430 Step 12/20 : RUN set -eux; apt-get update; echo "couchdb couchdb/mode select none" | debconf-set-selections; DEBIAN_FRONTEND=noninteractive apt-get install -y --allow-downgrades --allow-remove-essential --allow-change-held-packages /tmp/packages/* ; rmdir /var/lib/couchdb /var/log/couchdb; rm /opt/couchdb/data /opt/couchdb/var/log; mkdir -p /opt/couchdb/data /opt/couchdb/var/log; chown couchdb:couchdb /opt/couchdb/data /opt/couchdb/var/log; chmod 777 /opt/couchdb/data /opt/couchdb/var/log; rm /opt/couchdb/etc/default.d/10-filelog.ini; find /opt/couchdb \! \( -user couchdb -group couchdb \) -exec chown -f couchdb:couchdb '{}' +; find /opt/couchdb/etc -type d ! -perm 0755 -exec chmod -f 0755 '{}' +; find /opt/couchdb/etc -type f ! -perm 0644 -exec chmod -f 0644 '{}' +; chmod -f 0777 /opt/couchdb/etc/local.d; rm -rf /var/lib/apt/lists/*; ---> Running in 6f530f886258 + apt-get update Get:1 http://security.debian.org/debian-security buster/updates InRelease [65.4 kB] Get:2 http://deb.debian.org/debian buster InRelease [122 kB] Get:3 http://deb.debian.org/debian buster-updates InRelease [51.9 kB] Get:4 http://security.debian.org/debian-security buster/updates/main amd64 Packages [302 kB] Get:5 http://deb.debian.org/debian buster/main amd64 Packages [7907 kB] Get:6 https://apache.jfrog.io/artifactory/couchdb-deb buster InRelease [5151 B] Get:7 https://apache.jfrog.io/artifactory/couchdb-deb buster/main amd64 Packages [3889 B] Get:8 http://deb.debian.org/debian buster-updates/main amd64 Packages [15.2 kB] Fetched 8473 kB in 3s (3017 kB/s) Reading package lists... + echo couchdb couchdb/mode select none + debconf-set-selections + DEBIAN_FRONTEND=noninteractive apt-get install -y --allow-downgrades --allow-remove-essential --allow-change-held-packages /tmp/packages/couchdb-dbgsym_3.1.1-6c2d01a~buster_amd64.deb /tmp/packages/couchdb_3.1.1-6c2d01a~buster_amd64.deb Reading package lists... Building dependency tree... Reading state information... The following additional packages will be installed: curl krb5-locales libcurl4 libgpm2 libgssapi-krb5-2 libicu63 libk5crypto3 libkeyutils1 libkrb5-3 libkrb5support0 libmozjs-60-0 libncurses6 libnghttp2-14 libprocps7 libpsl5 librtmp1 libssh2-1 procps psmisc publicsuffix Suggested packages: gpm krb5-doc krb5-user The following NEW packages will be installed: couchdb couchdb-dbgsym curl krb5-locales libcurl4 libgpm2 libgssapi-krb5-2 libicu63 libk5crypto3 libkeyutils1 libkrb5-3 libkrb5support0 libmozjs-60-0 libncurses6 libnghttp2-14 libprocps7 libpsl5 librtmp1 libssh2-1 procps psmisc publicsuffix 0 upgraded, 22 newly installed, 0 to remove and 0 not upgraded. Need to get 13.5 MB/45.0 MB of archives. After this operation, 104 MB of additional disk space will be used. Get:1 http://security.debian.org/debian-security buster/updates/main amd64 krb5-locales all 1.17-3+deb10u2 [95.5 kB] Get:2 http://deb.debian.org/debian buster/main amd64 libncurses6 amd64 6.1+20181013-2+deb10u2 [102 kB] Get:3 http://security.debian.org/debian-security buster/updates/main amd64 libkrb5support0 amd64 1.17-3+deb10u2 [65.7 kB] Get:4 http://security.debian.org/debian-security buster/updates/main amd64 libk5crypto3 amd64 1.17-3+deb10u2 [122 kB] Get:5 http://security.debian.org/debian-security buster/updates/main amd64 libkrb5-3 amd64 1.17-3+deb10u2 [369 kB] Get:6 http://security.debian.org/debian-security buster/updates/main amd64 libgssapi-krb5-2 amd64 1.17-3+deb10u2 [158 kB] Get:7 http://deb.debian.org/debian buster/main amd64 libprocps7 amd64 2:3.3.15-2 [61.7 kB] Get:8 http://deb.debian.org/debian buster/main amd64 procps amd64 2:3.3.15-2 [259 kB] Get:9 http://deb.debian.org/debian buster/main amd64 libkeyutils1 amd64 1.6-6 [15.0 kB] Get:10 http://deb.debian.org/debian buster/main amd64 libnghttp2-14 amd64 1.36.0-2+deb10u1 [85.0 kB] Get:11 /tmp/packages/couchdb_3.1.1-6c2d01a~buster_amd64.deb couchdb amd64 3.1.1-6c2d01a~buster [30.9 MB] Get:12 /tmp/packages/couchdb-dbgsym_3.1.1-6c2d01a~buster_amd64.deb couchdb-dbgsym amd64 3.1.1-6c2d01a~buster [485 kB] Get:13 http://deb.debian.org/debian buster/main amd64 libpsl5 amd64 0.20.2-2 [53.7 kB] Get:14 http://deb.debian.org/debian buster/main amd64 librtmp1 amd64 2.4+20151223.gitfa8646d.1-2 [60.5 kB] Get:15 http://deb.debian.org/debian buster/main amd64 libssh2-1 amd64 1.8.0-2.1 [140 kB] Get:16 http://deb.debian.org/debian buster/main amd64 libcurl4 amd64 7.64.0-4+deb10u2 [332 kB] Get:17 http://deb.debian.org/debian buster/main amd64 curl amd64 7.64.0-4+deb10u2 [265 kB] Get:18 http://deb.debian.org/debian buster/main amd64 libicu63 amd64 63.1-6+deb10u1 [8300 kB] Get:19 http://deb.debian.org/debian buster/main amd64 libmozjs-60-0 amd64 60.2.3-3 [2785 kB] Get:20 http://deb.debian.org/debian buster/main amd64 libgpm2 amd64 1.20.7-5 [35.1 kB] Get:21 http://deb.debian.org/debian buster/main amd64 psmisc amd64 23.2-1 [126 kB] Get:22 http://deb.debian.org/debian buster/main amd64 publicsuffix all 20190415.1030-1 [116 kB] debconf: delaying package configuration, since apt-utils is not installed Fetched 13.5 MB in 1s (12.8 MB/s) Selecting previously unselected package libncurses6:amd64. (Reading database ... 7118 files and directories currently installed.) Preparing to unpack .../00-libncurses6_6.1+20181013-2+deb10u2_amd64.deb ... Unpacking libncurses6:amd64 (6.1+20181013-2+deb10u2) ... Selecting previously unselected package libprocps7:amd64. Preparing to unpack .../01-libprocps7_2%3a3.3.15-2_amd64.deb ... Unpacking libprocps7:amd64 (2:3.3.15-2) ... Selecting previously unselected package procps. Preparing to unpack .../02-procps_2%3a3.3.15-2_amd64.deb ... Unpacking procps (2:3.3.15-2) ... Selecting previously unselected package krb5-locales. Preparing to unpack .../03-krb5-locales_1.17-3+deb10u2_all.deb ... Unpacking krb5-locales (1.17-3+deb10u2) ... Selecting previously unselected package libkeyutils1:amd64. Preparing to unpack .../04-libkeyutils1_1.6-6_amd64.deb ... Unpacking libkeyutils1:amd64 (1.6-6) ... Selecting previously unselected package libkrb5support0:amd64. Preparing to unpack .../05-libkrb5support0_1.17-3+deb10u2_amd64.deb ... Unpacking libkrb5support0:amd64 (1.17-3+deb10u2) ... Selecting previously unselected package libk5crypto3:amd64. Preparing to unpack .../06-libk5crypto3_1.17-3+deb10u2_amd64.deb ... Unpacking libk5crypto3:amd64 (1.17-3+deb10u2) ... Selecting previously unselected package libkrb5-3:amd64. Preparing to unpack .../07-libkrb5-3_1.17-3+deb10u2_amd64.deb ... Unpacking libkrb5-3:amd64 (1.17-3+deb10u2) ... Selecting previously unselected package libgssapi-krb5-2:amd64. Preparing to unpack .../08-libgssapi-krb5-2_1.17-3+deb10u2_amd64.deb ... Unpacking libgssapi-krb5-2:amd64 (1.17-3+deb10u2) ... Selecting previously unselected package libnghttp2-14:amd64. Preparing to unpack .../09-libnghttp2-14_1.36.0-2+deb10u1_amd64.deb ... Unpacking libnghttp2-14:amd64 (1.36.0-2+deb10u1) ... Selecting previously unselected package libpsl5:amd64. Preparing to unpack .../10-libpsl5_0.20.2-2_amd64.deb ... Unpacking libpsl5:amd64 (0.20.2-2) ... Selecting previously unselected package librtmp1:amd64. Preparing to unpack .../11-librtmp1_2.4+20151223.gitfa8646d.1-2_amd64.deb ... Unpacking librtmp1:amd64 (2.4+20151223.gitfa8646d.1-2) ... Selecting previously unselected package libssh2-1:amd64. Preparing to unpack .../12-libssh2-1_1.8.0-2.1_amd64.deb ... Unpacking libssh2-1:amd64 (1.8.0-2.1) ... Selecting previously unselected package libcurl4:amd64. Preparing to unpack .../13-libcurl4_7.64.0-4+deb10u2_amd64.deb ... Unpacking libcurl4:amd64 (7.64.0-4+deb10u2) ... Selecting previously unselected package curl. Preparing to unpack .../14-curl_7.64.0-4+deb10u2_amd64.deb ... Unpacking curl (7.64.0-4+deb10u2) ... Selecting previously unselected package libicu63:amd64. Preparing to unpack .../15-libicu63_63.1-6+deb10u1_amd64.deb ... Unpacking libicu63:amd64 (63.1-6+deb10u1) ... Selecting previously unselected package libmozjs-60-0:amd64. Preparing to unpack .../16-libmozjs-60-0_60.2.3-3_amd64.deb ... Unpacking libmozjs-60-0:amd64 (60.2.3-3) ... Selecting previously unselected package couchdb. Preparing to unpack .../17-couchdb_3.1.1-6c2d01a~buster_amd64.deb ... Unpacking couchdb (3.1.1-6c2d01a~buster) ... Selecting previously unselected package couchdb-dbgsym. Preparing to unpack .../18-couchdb-dbgsym_3.1.1-6c2d01a~buster_amd64.deb ... Unpacking couchdb-dbgsym (3.1.1-6c2d01a~buster) ... Selecting previously unselected package libgpm2:amd64. Preparing to unpack .../19-libgpm2_1.20.7-5_amd64.deb ... Unpacking libgpm2:amd64 (1.20.7-5) ... Selecting previously unselected package psmisc. Preparing to unpack .../20-psmisc_23.2-1_amd64.deb ... Unpacking psmisc (23.2-1) ... Selecting previously unselected package publicsuffix. Preparing to unpack .../21-publicsuffix_20190415.1030-1_all.deb ... Unpacking publicsuffix (20190415.1030-1) ... Setting up libkeyutils1:amd64 (1.6-6) ... Setting up libpsl5:amd64 (0.20.2-2) ... Setting up libgpm2:amd64 (1.20.7-5) ... Setting up psmisc (23.2-1) ... Setting up libprocps7:amd64 (2:3.3.15-2) ... Setting up libnghttp2-14:amd64 (1.36.0-2+deb10u1) ... Setting up krb5-locales (1.17-3+deb10u2) ... Setting up libicu63:amd64 (63.1-6+deb10u1) ... Setting up libkrb5support0:amd64 (1.17-3+deb10u2) ... Setting up librtmp1:amd64 (2.4+20151223.gitfa8646d.1-2) ... Setting up libncurses6:amd64 (6.1+20181013-2+deb10u2) ... Setting up libk5crypto3:amd64 (1.17-3+deb10u2) ... Setting up procps (2:3.3.15-2) ... update-alternatives: using /usr/bin/w.procps to provide /usr/bin/w (w) in auto mode update-alternatives: warning: skip creation of /usr/share/man/man1/w.1.gz because associated file /usr/share/man/man1/w.procps.1.gz (of link group w) doesn't exist Setting up libssh2-1:amd64 (1.8.0-2.1) ... Setting up libkrb5-3:amd64 (1.17-3+deb10u2) ... Setting up publicsuffix (20190415.1030-1) ... Setting up libmozjs-60-0:amd64 (60.2.3-3) ... Setting up libgssapi-krb5-2:amd64 (1.17-3+deb10u2) ... Setting up libcurl4:amd64 (7.64.0-4+deb10u2) ... Setting up curl (7.64.0-4+deb10u2) ... Setting up couchdb (3.1.1-6c2d01a~buster) ... invoke-rc.d: could not determine current runlevel invoke-rc.d: policy-rc.d denied execution of start. Setting up couchdb-dbgsym (3.1.1-6c2d01a~buster) ... Processing triggers for libc-bin (2.28-10) ... + rmdir /var/lib/couchdb /var/log/couchdb + rm /opt/couchdb/data /opt/couchdb/var/log + mkdir -p /opt/couchdb/data /opt/couchdb/var/log + chown couchdb:couchdb /opt/couchdb/data /opt/couchdb/var/log + chmod 777 /opt/couchdb/data /opt/couchdb/var/log + rm /opt/couchdb/etc/default.d/10-filelog.ini + find /opt/couchdb ! ( -user couchdb -group couchdb ) -exec chown -f couchdb:couchdb {} + + find /opt/couchdb/etc -type d ! -perm 0755 -exec chmod -f 0755 {} + + find /opt/couchdb/etc -type f ! -perm 0644 -exec chmod -f 0644 {} + + chmod -f 0777 /opt/couchdb/etc/local.d + rm -rf /var/lib/apt/lists/apache.jfrog.io_artifactory_couchdb-deb_dists_buster_InRelease /var/lib/apt/lists/apache.jfrog.io_artifactory_couchdb-deb_dists_buster_main_binary-amd64_Packages.lz4 /var/lib/apt/lists/auxfiles /var/lib/apt/lists/deb.debian.org_debian_dists_buster-updates_InRelease /var/lib/apt/lists/deb.debian.org_debian_dists_buster-updates_main_binary-amd64_Packages.lz4 /var/lib/apt/lists/deb.debian.org_debian_dists_buster_InRelease /var/lib/apt/lists/deb.debian.org_debian_dists_buster_main_binary-amd64_Packages.lz4 /var/lib/apt/lists/lock /var/lib/apt/lists/partial /var/lib/apt/lists/security.debian.org_debian-security_dists_buster_updates_InRelease /var/lib/apt/lists/security.debian.org_debian-security_dists_buster_updates_main_binary-amd64_Packages.lz4 Removing intermediate container 6f530f886258 ---> eaea07a7886e Step 13/20 : COPY --chown=couchdb:couchdb 10-docker-default.ini /opt/couchdb/etc/default.d/ ---> f1c9d8e86732 Step 14/20 : COPY --chown=couchdb:couchdb vm.args /opt/couchdb/etc/ ---> a984087a4ee3 Step 15/20 : COPY docker-entrypoint.sh /usr/local/bin ---> 66cd3ececce1 Step 16/20 : RUN ln -s usr/local/bin/docker-entrypoint.sh /docker-entrypoint.sh # backwards compat ---> Running in ae10e0e02906 Removing intermediate container ae10e0e02906 ---> bf8817264923 Step 17/20 : ENTRYPOINT ["tini", "--", "/docker-entrypoint.sh"] ---> Running in 1485a79c319f Removing intermediate container 1485a79c319f ---> 737d9f7a9b97 Step 18/20 : VOLUME /opt/couchdb/data ---> Running in 6aa4eafbc054 Removing intermediate container 6aa4eafbc054 ---> 3f111d557168 Step 19/20 : EXPOSE 5984 4369 9100 ---> Running in 07b6a3204c82 Removing intermediate container 07b6a3204c82 ---> c70917bea3fd Step 20/20 : CMD ["/opt/couchdb/bin/couchdb"] ---> Running in d61719ef6dea Removing intermediate container d61719ef6dea ---> ca3940266314 Successfully built ca3940266314 Successfully tagged couchdb:3.1.1-patch-jan ``` I pushed the image and pulled it to my workstation again to have the same underlying hardware as in the previous test. I also adjusted the couchdb-test.sh [couchdb-test-validate-patch-3517.zip](https://github.com/apache/couchdb/files/7083304/couchdb-test-validate-patch-3517.zip) script to use the patched image and compare it against the vanilla CouchDB 3.1.1 image. ```bash $ ./couchdb-test.sh setup ... inserting docs cycle 2000/2000 {"ok":true,"id":"a479f05c01bf22c5168ee73617783eb7","rev":"1-f7fac9a3f6ce538d67747271336211c4"} {"ok":true,"id":"a479f05c01bf22c5168ee73617784bb6","rev":"1-7e3d2b01acbc416b60e6e5be050dd790"} {"ok":true,"id":"a479f05c01bf22c5168ee73617784e38","rev":"1-c959b425a724ad6346f646d8a63da6cd"} {"ok":true,"id":"a479f05c01bf22c5168ee73617785d5b","rev":"1-d8bd0d00d0b04b52796cfe73d9a80760"} {"ok":true,"id":"a479f05c01bf22c5168ee73617786743","rev":"1-24f6bc4fcfdceae7ff2fae47a68fbf42"} {"ok":true,"id":"a479f05c01bf22c5168ee73617787715","rev":"1-b0dfc903b7f27dc98130c8d51931f5d4"} $ ./couchdb-test.sh query CouchDB performance regression test script Assuming that setup is already complete ================ Query CouchDB 3.1.1 ================ {"couchdb":"Welcome","version":"3.1.1","git_sha":"ce596c65d","uuid":"84f2eae60ea04fe192284667cb0e4640","features":["access-ready","partitioned","pluggable-storage-engines","reshard","scheduler"],"vendor":{"name":"The Apache Software Foundation"}} Query Database views on port 3003 Round: 1/10 real 0m36.391s user 0m0.014s sys 0m0.010s Round: 2/10 real 0m36.426s user 0m0.009s sys 0m0.015s Round: 3/10 real 0m37.448s user 0m0.015s sys 0m0.010s Round: 4/10 real 0m37.182s user 0m0.010s sys 0m0.016s Round: 5/10 real 0m34.802s user 0m0.013s sys 0m0.013s Round: 6/10 real 0m34.877s user 0m0.009s sys 0m0.016s Round: 7/10 real 0m34.204s user 0m0.007s sys 0m0.017s Round: 8/10 real 0m34.092s user 0m0.009s sys 0m0.015s Round: 9/10 real 0m35.571s user 0m0.014s sys 0m0.011s Round: 10/10 real 0m35.790s user 0m0.010s sys 0m0.015s ================ Query CouchDB 3.1.1 patch jan ================ {"couchdb":"Welcome","version":"3.1.1","git_sha":"6c2d01a","uuid":"7df6b96ce9f321de839f65a9a6f264f3","features":["access-ready","partitioned","pluggable-storage-engines","reshard","scheduler"],"vendor":{"name":"The Apache Software Foundation"}} Query Database views on port 3004 Round: 1/10 real 0m11.194s user 0m0.012s sys 0m0.010s Round: 2/10 real 0m11.224s user 0m0.014s sys 0m0.011s Round: 3/10 real 0m10.966s user 0m0.012s sys 0m0.012s Round: 4/10 real 0m11.212s user 0m0.013s sys 0m0.012s Round: 5/10 real 0m10.696s user 0m0.016s sys 0m0.009s Round: 6/10 real 0m10.859s user 0m0.013s sys 0m0.012s Round: 7/10 real 0m11.342s user 0m0.012s sys 0m0.013s Round: 8/10 real 0m11.276s user 0m0.011s sys 0m0.013s Round: 9/10 real 0m11.357s user 0m0.015s sys 0m0.009s Round: 10/10 real 0m11.542s user 0m0.014s sys 0m0.010s ``` That's actually great news, we have an average response time from about 11.2s now compared to 35.7s on the vanilla image :-) If possible, I would vote for including your patch in a new 3.x build, as it would be more than 3 times faster for the same queries with unchanged client code (at least for the given dataset). Still, nothing seem to beat build-in reducers, but at least it would not be way slower to run customer reducers on CouchDB 3 vs. CouchDB 2 installations. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
