2013-08-14 23:45:55 |
Jason Gerard DeRose |
bug |
|
|
added bug |
2013-08-14 23:54:06 |
Jason Gerard DeRose |
description |
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.
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.
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).
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
The packaging for which is here:
https://code.launchpad.net/~jderose/+junk/couchdb
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.
** Feedback Wanted **
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.
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.
(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.)
But I think it's time to change my strategy, time for me to just take ownership for the CouchDB package Ubuntu.
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.
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.
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:
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
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]
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'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
Thoughts?
[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 |
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.
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.
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).
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
The packaging for which is here:
https://code.launchpad.net/~jderose/+junk/couchdb
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.
** Feedback Wanted **
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.
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.
(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.)
But I think it's time to change my strategy, time for me to just take ownership for the CouchDB package in Ubuntu.
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.
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.
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:
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
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]
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'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
Thoughts?
[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 |
|
2013-08-15 00:19:02 |
Chad Miller |
bug |
|
|
added subscriber Chad Miller |
2013-08-15 00:47:49 |
Micah Gersten |
bug watch added |
|
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=714263 |
|
2013-08-16 00:12:15 |
Launchpad Janitor |
couchdb (Ubuntu): status |
New |
Confirmed |
|
2013-08-16 01:07:02 |
Jason Gerard DeRose |
couchdb (Ubuntu): assignee |
|
Jason Gerard DeRose (jderose) |
|
2013-08-26 12:28:44 |
Jason Gerard DeRose |
branch linked |
|
lp:~jderose/ubuntu/saucy/couchdb/1.4.0 |
|
2013-08-27 23:29:45 |
Jason Gerard DeRose |
cve linked |
|
2012-5649 |
|
2013-08-27 23:29:45 |
Jason Gerard DeRose |
cve linked |
|
2012-5650 |
|
2013-08-28 08:46:19 |
Edward Tsang |
bug |
|
|
added subscriber Edward Tsang |
2013-08-28 11:44:05 |
Stephan Wissel |
bug |
|
|
added subscriber Stephan Wissel |
2013-08-28 13:27:47 |
Mitja Kleider |
bug |
|
|
added subscriber Mitja Kleider |
2013-08-28 18:04:50 |
Chad Miller |
attachment added |
|
debdiff 1.2.0-5ubuntu1 to 1.4.0~rc.1-0ubuntu1 https://bugs.launchpad.net/ubuntu/+source/couchdb/+bug/1212481/+attachment/3791987/+files/couchdb-1.2.0%2C1.4.0.debdiff |
|
2013-08-28 18:06:07 |
Chad Miller |
bug |
|
|
added subscriber Ubuntu Sponsors Team |
2013-08-29 13:58:20 |
Chad Miller |
attachment added |
|
debdiff 1.2.0-5ubuntu1 to 1.4.0-0ubuntu1 https://bugs.launchpad.net/ubuntu/+source/couchdb/+bug/1212481/+attachment/3793166/+files/couchdb-1.2.0%2C1.4.0.debdiff |
|
2013-08-29 13:59:03 |
Chad Miller |
couchdb (Ubuntu): status |
Confirmed |
In Progress |
|
2013-09-02 00:21:53 |
Jason Gerard DeRose |
bug watch added |
|
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=721322 |
|
2013-09-02 03:40:53 |
Jason Gerard DeRose |
branch linked |
|
lp:~jderose/ubuntu/saucy/couchdb/1.4.0-from-debian |
|
2013-09-02 04:40:56 |
Jason Gerard DeRose |
couchdb (Ubuntu): status |
In Progress |
New |
|
2013-09-02 04:41:49 |
Jason Gerard DeRose |
summary |
Saucy: CouchDB 1.4.0 needed to work with Erlang 16.b.1 |
[FFE] CouchDB 1.4.0 needed to work with Erlang 16.b.1 |
|
2013-09-02 06:22:30 |
Jason Gerard DeRose |
description |
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.
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.
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).
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
The packaging for which is here:
https://code.launchpad.net/~jderose/+junk/couchdb
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.
** Feedback Wanted **
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.
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.
(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.)
But I think it's time to change my strategy, time for me to just take ownership for the CouchDB package in Ubuntu.
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.
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.
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:
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
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]
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'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
Thoughts?
[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 |
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.
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.
Following is an overview of the testing I've done, results, and known issues:
== Unit Tests ==
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).
Note I've not tried a build on armhf yet.
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.
== Reverse Dependencies ==
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.
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
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
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
== Manual Testing ==
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.
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
== Upgrade Testing ==
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).
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.
A work-around is to stop couchdb before you upgrade:
sudo service couchdb stop
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. |
|
2013-09-02 07:20:47 |
Jason Gerard DeRose |
attachment added |
|
last_operation.log https://bugs.launchpad.net/ubuntu/+source/couchdb/+bug/1212481/+attachment/3798798/+files/last_operation.log |
|
2013-09-02 15:41:02 |
Iain Lane |
bug |
|
|
added subscriber Ubuntu Release Team |
2013-09-02 15:43:17 |
Scott Kitterman |
couchdb (Ubuntu): importance |
Undecided |
High |
|
2013-09-02 15:43:22 |
Scott Kitterman |
couchdb (Ubuntu): status |
New |
Triaged |
|
2013-09-16 18:01:14 |
Andrew Starr-Bochicchio |
bug |
|
|
added subscriber Andrew Starr-Bochicchio |
2013-09-17 02:04:03 |
Launchpad Janitor |
branch linked |
|
lp:ubuntu/saucy-proposed/couchdb |
|
2013-09-17 03:03:25 |
Andrew Starr-Bochicchio |
couchdb (Ubuntu): status |
Triaged |
Fix Committed |
|
2013-09-17 03:04:18 |
Andrew Starr-Bochicchio |
removed subscriber Ubuntu Sponsors Team |
|
|
|
2013-09-17 04:34:37 |
Scott Kitterman |
couchdb (Ubuntu): status |
Fix Committed |
Fix Released |
|
2013-12-18 14:02:37 |
Hendy Irawan |
bug |
|
|
added subscriber Hendy Irawan |
2014-08-01 09:25:24 |
Launchpad Janitor |
branch linked |
|
lp:ubuntu/utopic-proposed/couchdb |
|