** Description changed: - The current CouchDB 1.2.0 package in Saucy is broken and can't be - installed as it was built against Erlang 15.b.1, and can't be rebuilt - with the version now in Saucy, Erlang 16.b.1. + CouchDB 1.2.0 doesn't work at all with Erlang 16.b.1, so the current + CouchDB package in Saucy is completely broken and should be removed if + it can't be upgraded. - However, the soon to be released CouchDB 1.4.0 does work with Erlang - 16.b.1. So the options are to remove CouchDB 1.2.0 from the archive - before Saucy is released, or to upgrade to CouchDB 1.4.0. + To work with Erlang 16.b.1, we'll have to upgrade to the recently + released CouchDB 1.4.0. The needed compatibility fixes are extensive and + include upgrading CouchDB's internal mochiweb server, so backporting the + needed changes to CouchDB 1.2.0 isn't practical. - My vote is to upgrade to CouchDB 1.4.0, which should be released before - the Saucy feature freeze on August 29th (based on what was said at the - latest CouchDB developers IRC meeting). + Following is an overview of the testing I've done, results, and known + issues: - In preparation, I have a 1.4.0 pre-release git snapshot in the Novacut daily PPA ready for testing: - https://launchpad.net/~novacut/+archive/daily?field.series_filter=saucy + == Unit Tests == - The packaging for which is here: - https://code.launchpad.net/~jderose/+junk/couchdb + CouchDB 1.4.0 now has quite extensive unit tests, which I'm running + during the build. These tests are (generally) passing fine when building + with pbuilder, and when building in a PPA (i386 and amd64). - I know at least several things are still incorrect in the packaging, but - I wanted to start putting it through its paces as soon as possible. + Note I've not tried a build on armhf yet. - ** Feedback Wanted ** + There are a few unit tests that occasionally fail when building on + Raring, but so far I haven't encountered this when building on Saucy. It + is however possible to get successful builds on Raring, you just might + have to retry a build or two. - I'm also hoping to get some feedback on my plan for CouchDB in Ubuntu - going forward. I have some history with the CouchDB package in Ubuntu - [1][2], and for better or worse, the current CouchDB 1.2.0 package is - largely my doing. + == Reverse Dependencies == - Previously my goal was to stay as close as possible to the CouchDB - package in Debian, changing just enough to split it into the `couchdb` - and `couchdb-bin` binary packages. And my hope was to get the Debian - maintainer to eventually warm up to this split so Ubuntu could just ship - a zero-change sync from Debian. + I've built several CouchDB consumers against my proposed CouchDB package + in a PPA, on both Saucy and Raring. These reverse dependencies have + extensive CouchDB using unit tests and are therefor a good measure of + the correctness of my proposed CouchDB 1.4.0 package, and the quality of + the upstream CouchDB 1.4.0 release. - (FYI, this split is critical for Novacut because it allows us to start - our per-user CouchDB instances via `couchdb-bin`, but without having the - needless system-wide `couchdb` instance running all the time.) + UserCouch: https://launchpad.net/usercouch + * Good coverage of key configuration permutations (bind address, port, basic auth, oauth, file_compression) + * Good coverage of SSL options, both for httpd and the replicator + * Provides good confidence that CouchDB actually starts, and starts in a timely manner, across all config permutations + * IPv4 and IPv6 tests - But I think it's time to change my strategy, time for me to just take - ownership for the CouchDB package in Ubuntu. + Microfiber: https://launchpad.net/microfiber + * Good coverage of core DB, doc, and attachment REST APIs + * Deep tests for _bulk_docs API, testing both "non-atomic" and "all-or-nothing" update semantics + * Basic view tests + * Basic replication tests + * IPv4 and IPv6 tests - As CouchDB 1.2.0 is still the newest in Debian (even in unstable and - experimental), I think the current Debian maintainer is probably a bit - too busy with other things to spend much time on CouchDB packaging (hey, - life happens). Plus, I've never heard back from him about my idea of - bringing the couchdb/couchdb-bin split into Debian. + Dmedia: https://launchpad.net/dmedia + * Complex, demanding application with lots of "real-world" test scenarios + * Extensive view tests with complex map functions (but _count, _sum, and _stats are the only reduce functions Dmedia uses) + * Full-stack replication tests with SSL (and client-side SSL certs) + * Tests for complex conflict scenarios - Whereas I *must* have a working CouchDB package for Saucy, even if it - means me just maintaining it in a PPA, because otherwise Novacut doesn't - work on Saucy, Novacut can't move forward during Saucy. If I'm doing the - work either way, I'd rather it be on the actual package shipped in - Saucy. + == Manual Testing == - So I'm not going to worry about staying close to the Debian package - anymore. Instead, I'm just going to package CouchDB in the way I feel is - best, in the way I'm most comfortable with, in the way the seems best - for Novacut and Ubuntu. I've more or less started with a blank slate for - my CouchDB 1.4.0 package, and I'd say there are three important changes: + I've done extensive manual testing with Dmedia. I peered 3 different + computers and imported around 20k files into Dmedia, made sure all + metadata got replicated between all peers. I ran through my standard + battery of abuse using things like PurgeAll and DowngradeAll, and in all + scenarios the library successfully converged to its equilibrium state in + a reasonable amount of time. - 1) Simplicity: the old debian/rules was quite complicated, and as I - didn't write it, I'm not well equipped to maintain it, especially with - precious little free time; no doubt there was a reason for these hacks - when they were written, but these days CouchDB is much better behaved - when it comes to standard `./configure && make && make install`, so I - was aiming for a near-empty debian/rules + I've also done extensive manual testing with the `couchdb` binary package and its new upstart job. I confirmed that: + 1) The daemon is started when the package is installed + 2) The daemon starts during the boot sequence after a reboot and a cold boot + 3) All daemon processes are killed with `sudo stop couchdb` + 4) You can start the daemon with `sudo start couchdb` + 5) `sudo restart couchdb` works as expected + 6) Upstart respawn works as expected if I manually `kill $PID` on the daemon process + 7) All daemon processes are killed with `sudo apt-get remove couchdb` + 8) `sudo apt-get purge couchdb` removes /var/lib/couchdb and /var/log/couchdb - 2) debhelper: this is largely because I'm more comfortable with - debhelper than I am with CDBS, but I also feel debhelper is the current - best practice; and so far so good, my debian/rules is only 8 lines [3] + == Upgrade Testing == - 3) Upstart: I'll admit right now there were many and constant problems - with the init.d script in CouchDB 1.2.0 that I never managed to solve; - as I don't have time to babysit the ill behaved upstream init.d script, - I switched to Upstart... which promptly solved *all* the problems, - yeehaw =) + I tested the upgrade from 1.2.0 when only `couchdb-bin` is installed, + and when `couchdb` and `couchdb-bin` are installed. Both work as + expected, although these tests were done on Raring. I haven't yet done + an upgrade test via a Raring=>Saucy update, but that's difficult to do + when 1.4.0 is still only in a PPA (update process can't be properly + simulated as the PPA will be disabled during the update). - I'd love help with this CouchDB package maintenance, if anyone is - interested. Plus, I *need* at least a little help getting this into - Saucy, as I'm not a MOTU :P + A remaining issue is that sometimes the `couchdb` 1.2.0 daemon is not + successfully terminated during the package upgrade. (Well, it sort of + is, and then Erlang respawns more processes that don't ever get killed.) + So you'll end up with the new, correct 1.4.0 processes running, plus + some lingering 1.2.0 garbage processes running. This is due to + fundamental problems in the upstream init.d script, and this is a big + part of why I switched to Upstart. - Thoughts? + A work-around is to stop couchdb before you upgrade: + sudo service couchdb stop - [1] https://bugs.launchpad.net/ubuntu/+source/couchdb/+bug/1022515 - [2] https://bugs.launchpad.net/ubuntu/+source/couchdb/+bug/903098 - [3] http://bazaar.launchpad.net/~jderose/+junk/couchdb/view/head:/debian/rules + Or simply reboot after you upgrade (which most will do anyway). + + This is probably a difficult issue to solve as the problem is that the + previous package version isn't correctly shutting down its CouchDB + daemon. On the upside, no such problems exist with the Upstart job in my + 1.4.0 package.
-- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/1212481 Title: [FFE] CouchDB 1.4.0 needed to work with Erlang 16.b.1 To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/couchdb/+bug/1212481/+subscriptions -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs