[jira] [Commented] (COUCHDB-2237) Add a 'live' sugar for 'continuous'

2015-04-04 Thread Jan Lehnardt (JIRA)

[ 
https://issues.apache.org/jira/browse/COUCHDB-2237?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14395820#comment-14395820
 ] 

Jan Lehnardt commented on COUCHDB-2237:
---

As I said on the GH ticket, you (Robert K) have enough momentum to land this 
and no -1. This is not “doesn’t have a lot of fans” :)

I do like `live` over `stream`.

tl;dr: do land the code :)

 Add a 'live' sugar for 'continuous'
 ---

 Key: COUCHDB-2237
 URL: https://issues.apache.org/jira/browse/COUCHDB-2237
 Project: CouchDB
  Issue Type: Improvement
  Security Level: public(Regular issues) 
  Components: HTTP Interface
Reporter: Dale Harvey

 With PouchDB we generally try to stick to the same param names as Couch, we 
 are even changing some we implemented first to be compatible 
 (https://github.com/pouchdb/pouchdb/issues/2193)
 However 'continuous' sucks to type, its confusing to type and spell and 
 everyone gets it wrong, we still support it but switched to documenting it as 
 'live' and life is awesome again



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (COUCHDB-2638) CouchDB should not be writing /etc/couchdb/local.ini

2015-03-16 Thread Jan Lehnardt (JIRA)

[ 
https://issues.apache.org/jira/browse/COUCHDB-2638?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14363136#comment-14363136
 ] 

Jan Lehnardt commented on COUCHDB-2638:
---

In addition, CouchDB has behaved like this since it had a config system (0.7.0 
or so, back in 2007 or 08), and has happily been on FreeBSD ever since and this 
is the first time this comes up :)

 CouchDB should not be writing /etc/couchdb/local.ini
 

 Key: COUCHDB-2638
 URL: https://issues.apache.org/jira/browse/COUCHDB-2638
 Project: CouchDB
  Issue Type: Bug
  Security Level: public(Regular issues) 
Reporter: Yuri
 Fix For: 2.0.0


 I am getting such messages in log on FreeBSD:
  Could not write config file /usr/local/etc/couchdb/local.ini: permission 
  denied
 The problem is that CoachDB supplies the original copy of local.ini, and it 
 is treated as a template for this configuration file. It is placed into 
 /usr/local/etc/couchdb/local.ini.sample, and its copy is placed into 
 /usr/local/etc/couchdb/local.ini. Everything under /etc is what admin 
 configures. Ideally admin can compare local.ini and local.ini.sample and see 
 if anything in default configuration was modified compared to the suggested 
 sample.
 When the executable itself modifies local.ini too, this makes it very 
 confusing. Admin will be confused if he should or shouldn't touch this file.
 My suggestion is that CouchDB should copy local.ini under /var/db/, or 
 somewhere else, and write it there. /etc isn't supposed to be writable by the 
 process.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (COUCHDB-2638) CouchDB should not be writing /etc/couchdb/local.ini

2015-03-16 Thread Jan Lehnardt (JIRA)

[ 
https://issues.apache.org/jira/browse/COUCHDB-2638?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14363535#comment-14363535
 ] 

Jan Lehnardt commented on COUCHDB-2638:
---

Rest assured, CouchDB is getting plenty of use. I don’t consider this a bug :)

 CouchDB should not be writing /etc/couchdb/local.ini
 

 Key: COUCHDB-2638
 URL: https://issues.apache.org/jira/browse/COUCHDB-2638
 Project: CouchDB
  Issue Type: Bug
  Security Level: public(Regular issues) 
Reporter: Yuri
 Fix For: 2.0.0


 I am getting such messages in log on FreeBSD:
  Could not write config file /usr/local/etc/couchdb/local.ini: permission 
  denied
 The problem is that CoachDB supplies the original copy of local.ini, and it 
 is treated as a template for this configuration file. It is placed into 
 /usr/local/etc/couchdb/local.ini.sample, and its copy is placed into 
 /usr/local/etc/couchdb/local.ini. Everything under /etc is what admin 
 configures. Ideally admin can compare local.ini and local.ini.sample and see 
 if anything in default configuration was modified compared to the suggested 
 sample.
 When the executable itself modifies local.ini too, this makes it very 
 confusing. Admin will be confused if he should or shouldn't touch this file.
 My suggestion is that CouchDB should copy local.ini under /var/db/, or 
 somewhere else, and write it there. /etc isn't supposed to be writable by the 
 process.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (COUCHDB-2638) CouchDB should not be writing /etc/couchdb/local.ini

2015-03-16 Thread Jan Lehnardt (JIRA)

[ 
https://issues.apache.org/jira/browse/COUCHDB-2638?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14363534#comment-14363534
 ] 

Jan Lehnardt commented on COUCHDB-2638:
---

Rest assured, CouchDB is getting plenty of use. I don’t consider this a bug :)

 CouchDB should not be writing /etc/couchdb/local.ini
 

 Key: COUCHDB-2638
 URL: https://issues.apache.org/jira/browse/COUCHDB-2638
 Project: CouchDB
  Issue Type: Bug
  Security Level: public(Regular issues) 
Reporter: Yuri
 Fix For: 2.0.0


 I am getting such messages in log on FreeBSD:
  Could not write config file /usr/local/etc/couchdb/local.ini: permission 
  denied
 The problem is that CoachDB supplies the original copy of local.ini, and it 
 is treated as a template for this configuration file. It is placed into 
 /usr/local/etc/couchdb/local.ini.sample, and its copy is placed into 
 /usr/local/etc/couchdb/local.ini. Everything under /etc is what admin 
 configures. Ideally admin can compare local.ini and local.ini.sample and see 
 if anything in default configuration was modified compared to the suggested 
 sample.
 When the executable itself modifies local.ini too, this makes it very 
 confusing. Admin will be confused if he should or shouldn't touch this file.
 My suggestion is that CouchDB should copy local.ini under /var/db/, or 
 somewhere else, and write it there. /etc isn't supposed to be writable by the 
 process.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Issue Comment Deleted] (COUCHDB-2638) CouchDB should not be writing /etc/couchdb/local.ini

2015-03-16 Thread Jan Lehnardt (JIRA)

 [ 
https://issues.apache.org/jira/browse/COUCHDB-2638?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jan Lehnardt updated COUCHDB-2638:
--
Comment: was deleted

(was: Rest assured, CouchDB is getting plenty of use. I don’t consider this a 
bug :))

 CouchDB should not be writing /etc/couchdb/local.ini
 

 Key: COUCHDB-2638
 URL: https://issues.apache.org/jira/browse/COUCHDB-2638
 Project: CouchDB
  Issue Type: Bug
  Security Level: public(Regular issues) 
Reporter: Yuri
 Fix For: 2.0.0


 I am getting such messages in log on FreeBSD:
  Could not write config file /usr/local/etc/couchdb/local.ini: permission 
  denied
 The problem is that CoachDB supplies the original copy of local.ini, and it 
 is treated as a template for this configuration file. It is placed into 
 /usr/local/etc/couchdb/local.ini.sample, and its copy is placed into 
 /usr/local/etc/couchdb/local.ini. Everything under /etc is what admin 
 configures. Ideally admin can compare local.ini and local.ini.sample and see 
 if anything in default configuration was modified compared to the suggested 
 sample.
 When the executable itself modifies local.ini too, this makes it very 
 confusing. Admin will be confused if he should or shouldn't touch this file.
 My suggestion is that CouchDB should copy local.ini under /var/db/, or 
 somewhere else, and write it there. /etc isn't supposed to be writable by the 
 process.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Closed] (COUCHDB-2638) CouchDB should not be writing /etc/couchdb/local.ini

2015-03-16 Thread Jan Lehnardt (JIRA)

 [ 
https://issues.apache.org/jira/browse/COUCHDB-2638?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jan Lehnardt closed COUCHDB-2638.
-

 CouchDB should not be writing /etc/couchdb/local.ini
 

 Key: COUCHDB-2638
 URL: https://issues.apache.org/jira/browse/COUCHDB-2638
 Project: CouchDB
  Issue Type: Bug
  Security Level: public(Regular issues) 
Reporter: Yuri
 Fix For: 2.0.0


 I am getting such messages in log on FreeBSD:
  Could not write config file /usr/local/etc/couchdb/local.ini: permission 
  denied
 The problem is that CoachDB supplies the original copy of local.ini, and it 
 is treated as a template for this configuration file. It is placed into 
 /usr/local/etc/couchdb/local.ini.sample, and its copy is placed into 
 /usr/local/etc/couchdb/local.ini. Everything under /etc is what admin 
 configures. Ideally admin can compare local.ini and local.ini.sample and see 
 if anything in default configuration was modified compared to the suggested 
 sample.
 When the executable itself modifies local.ini too, this makes it very 
 confusing. Admin will be confused if he should or shouldn't touch this file.
 My suggestion is that CouchDB should copy local.ini under /var/db/, or 
 somewhere else, and write it there. /etc isn't supposed to be writable by the 
 process.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (COUCHDB-2635) Replace hardcoded list of systems dbs with registration approach

2015-03-12 Thread Jan Lehnardt (JIRA)

[ 
https://issues.apache.org/jira/browse/COUCHDB-2635?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14355614#comment-14355614
 ] 

Jan Lehnardt commented on COUCHDB-2635:
---

I don’t think making this end-user configurable is a good idea.

 Replace hardcoded list of systems dbs with registration approach
 

 Key: COUCHDB-2635
 URL: https://issues.apache.org/jira/browse/COUCHDB-2635
 Project: CouchDB
  Issue Type: Improvement
  Security Level: public(Regular issues) 
Reporter: ILYA
Assignee: ILYA

 To replace this 
 https://github.com/apache/couchdb-couch/blob/master/include/couch_db.hrl#L43:L49



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (COUCHDB-2310) Add a bulk API for revs open_revs

2015-03-12 Thread Jan Lehnardt (JIRA)

[ 
https://issues.apache.org/jira/browse/COUCHDB-2310?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14358514#comment-14358514
 ] 

Jan Lehnardt commented on COUCHDB-2310:
---

Ok, trying to sum up this discussion. I’m aiming for least amount of work to 
get something tangible going.

1. Let us only consider 2.0 and beyond.
2. Let us only focus on an intermediate way to make PouchDB, Couchbase Mobile 
etc. replication faster. A fully streaming API is out of scope for this ticket 
(although we should work on it, once this lands).
3. I propose to use the existing `_bulk_get` spec from Couchbase Sync Server / 
Mobile / rcouch ([~benoitc] if you do have that CouchDB 2.0-compatible patch 
for _bulk_get, it’d be nice to see now, even if not 100% ready).
4. As [~rnewson] notes, we add this as `_bulk_revs` with an immediately 
deprecated alias `_bulk_get`. The two benefits here are easy feature detection 
(_bulk_revs/_get = 404 on older CouchDB versions) and immediate compatibility 
with existing versions of the other replicating stores.
5. PouchDB will have to be updated to use the `_bulk_get` endpoint. [~dholth]’s 
work, as far as I can tell, would only need minor adjustments. Would PouchDB 
accept such a patch into core ([~nolanlawson]).

Does this work for everyone?

 Add a bulk API for revs  open_revs
 ---

 Key: COUCHDB-2310
 URL: https://issues.apache.org/jira/browse/COUCHDB-2310
 Project: CouchDB
  Issue Type: Bug
  Security Level: public(Regular issues) 
  Components: HTTP Interface
Reporter: Nolan Lawson

 CouchDB replication is too slow.
 And what makes it so slow is that it's just so unnecessarily chatty. During 
 replication, you have to do a separate GET for each individual document, in 
 order to get the full {{_revisions}} object for that document (using the 
 {{revs}} and {{open_revs}} parameters ndash; refer to [the TouchDB 
 writeup|https://github.com/couchbaselabs/TouchDB-iOS/wiki/Replication-Algorithm]
  or [Benoit's writeup|http://dataprotocols.org/couchdb-replication/] if you 
 need a refresher).
 So for example, let's say you've got a database full of 10,000 documents, and 
 you replicate using a batch size of 500 (batch sizes are configurable in 
 PouchDB). The conversation for a single batch basically looks like this:
 {code}
 - REPLICATOR: gimme 500 changes since seq X (1 GET request)
   - SOURCE: okay
 - REPLICATOR: gimme the _revs_diff for these 500 docs/_revs (1 POST request)
   - SOURCE: okay
 - repeat 500 times:
   - REPLICATOR: gimme the _revisions for doc n with _revs [...] (1 GET 
 request)
 - SOURCE: okay
 - REPLICATOR: here's a _bulk_docs with 500 documents (1 POST request)
 - TARGET: okay
 {code}
 See the problem here? That 500-loop, where we have to do a GET for each one 
 of 500 documents, is a lot of unnecessary back-and-forth, considering that 
 the replicator already knows what it needs before the loop starts. You can 
 parallelize, but if you assume a browser (e.g. for PouchDB), most browsers 
 only let you do ~8 simultaneous requests at once. Plus, there's latency and 
 HTTP headers to consider. So overall, it's not cool.
 So why do we even need to do the separate requests? Shouldn't {{_all_docs}} 
 be good enough? Turns out it's not, because we need this special 
 {{_revisions}} object.
 For example, consider a document {{'foo'}} with 10 revisions. You may compact 
 the database, in which case revisions {{1-x}} through {{9-x}} are no longer 
 retrievable. However, if you query using {{revs}} and {{open_revs}}, those 
 rev IDs are still available:
 {code}
 $ curl 'http://nolan.iriscouch.com/test/foo?revs=trueopen_revs=all'
 {
   _id: foo,
   _rev: 10-c78e199ad5e996b240c9d6482907088e,
   _revisions: {
 start: 10,
 ids: [
   c78e199ad5e996b240c9d6482907088e,
   f560283f1968a05046f0c38e468006bb,
   0091198554171c632c27c8342ddec5af,
   e0a023e2ea59db73f812ad773ea08b17,
   65d7f8b8206a244035edd9f252f206ad,
   069d1432a003c58bdd23f01ff80b718f,
   d21f26bb604b7fe9eba03ce4562cf37b,
   31d380f99a6e54875855e1c24469622d,
   3b4791360024426eadafe31542a2c34b,
   967a00dff5e02add41819138abb3284d
 ]
   }
 }
 {code}
 And in the replication algorithm, _this full \_revisions object is required_ 
 at the point when you copy the document from one database to another, which 
 is accomplished with a POST to {{_bulk_docs}} using {{new_edits=false}}. If 
 you don't have the full {{_revisions}} object, CouchDB accepts the new 
 revision, but considers it to be a conflict. (The exception is with 
 generation-1 documents, since they have no history, so as it says in the 
 TouchDB writeup, you can safely just use {{_all_docs}} as an optimization for 
 such documents.)
 And unfortunately, this {{_revision}} object is only available from the {{GET 
 

[jira] [Commented] (COUCHDB-2310) Add a bulk API for revs open_revs

2015-03-12 Thread Jan Lehnardt (JIRA)

[ 
https://issues.apache.org/jira/browse/COUCHDB-2310?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14358633#comment-14358633
 ] 

Jan Lehnardt commented on COUCHDB-2310:
---

[~dholth] According to 
https://github.com/apache/couchdb-couch/pull/18#issuecomment-67550634 yes :)

 Add a bulk API for revs  open_revs
 ---

 Key: COUCHDB-2310
 URL: https://issues.apache.org/jira/browse/COUCHDB-2310
 Project: CouchDB
  Issue Type: Bug
  Security Level: public(Regular issues) 
  Components: HTTP Interface
Reporter: Nolan Lawson

 CouchDB replication is too slow.
 And what makes it so slow is that it's just so unnecessarily chatty. During 
 replication, you have to do a separate GET for each individual document, in 
 order to get the full {{_revisions}} object for that document (using the 
 {{revs}} and {{open_revs}} parameters ndash; refer to [the TouchDB 
 writeup|https://github.com/couchbaselabs/TouchDB-iOS/wiki/Replication-Algorithm]
  or [Benoit's writeup|http://dataprotocols.org/couchdb-replication/] if you 
 need a refresher).
 So for example, let's say you've got a database full of 10,000 documents, and 
 you replicate using a batch size of 500 (batch sizes are configurable in 
 PouchDB). The conversation for a single batch basically looks like this:
 {code}
 - REPLICATOR: gimme 500 changes since seq X (1 GET request)
   - SOURCE: okay
 - REPLICATOR: gimme the _revs_diff for these 500 docs/_revs (1 POST request)
   - SOURCE: okay
 - repeat 500 times:
   - REPLICATOR: gimme the _revisions for doc n with _revs [...] (1 GET 
 request)
 - SOURCE: okay
 - REPLICATOR: here's a _bulk_docs with 500 documents (1 POST request)
 - TARGET: okay
 {code}
 See the problem here? That 500-loop, where we have to do a GET for each one 
 of 500 documents, is a lot of unnecessary back-and-forth, considering that 
 the replicator already knows what it needs before the loop starts. You can 
 parallelize, but if you assume a browser (e.g. for PouchDB), most browsers 
 only let you do ~8 simultaneous requests at once. Plus, there's latency and 
 HTTP headers to consider. So overall, it's not cool.
 So why do we even need to do the separate requests? Shouldn't {{_all_docs}} 
 be good enough? Turns out it's not, because we need this special 
 {{_revisions}} object.
 For example, consider a document {{'foo'}} with 10 revisions. You may compact 
 the database, in which case revisions {{1-x}} through {{9-x}} are no longer 
 retrievable. However, if you query using {{revs}} and {{open_revs}}, those 
 rev IDs are still available:
 {code}
 $ curl 'http://nolan.iriscouch.com/test/foo?revs=trueopen_revs=all'
 {
   _id: foo,
   _rev: 10-c78e199ad5e996b240c9d6482907088e,
   _revisions: {
 start: 10,
 ids: [
   c78e199ad5e996b240c9d6482907088e,
   f560283f1968a05046f0c38e468006bb,
   0091198554171c632c27c8342ddec5af,
   e0a023e2ea59db73f812ad773ea08b17,
   65d7f8b8206a244035edd9f252f206ad,
   069d1432a003c58bdd23f01ff80b718f,
   d21f26bb604b7fe9eba03ce4562cf37b,
   31d380f99a6e54875855e1c24469622d,
   3b4791360024426eadafe31542a2c34b,
   967a00dff5e02add41819138abb3284d
 ]
   }
 }
 {code}
 And in the replication algorithm, _this full \_revisions object is required_ 
 at the point when you copy the document from one database to another, which 
 is accomplished with a POST to {{_bulk_docs}} using {{new_edits=false}}. If 
 you don't have the full {{_revisions}} object, CouchDB accepts the new 
 revision, but considers it to be a conflict. (The exception is with 
 generation-1 documents, since they have no history, so as it says in the 
 TouchDB writeup, you can safely just use {{_all_docs}} as an optimization for 
 such documents.)
 And unfortunately, this {{_revision}} object is only available from the {{GET 
 /:dbid/:docid}} endpoint. Trust me; I've tried the other APIs. You can't get 
 it anywhere else.
 This is a huge problem, especially in PouchDB where we often have to deal 
 with CORS, meaning the number of HTTP requests is doubled. So for those 500 
 GETs, it's an extra 500 OPTIONs, which is just unacceptable.
 Replication does not have to be slow. While we were experimenting with ways 
 of fetching documents in bulk, we tried a technique that just relied on using 
 {{_changes}} with {{include_docs=true}} 
 ([|\#2472|https://github.com/pouchdb/pouchdb/pull/2472]). This pushed 
 conflicts into the target database, but on the upside, you can sync ~95k 
 documents from npm's skimdb repository to the browser in less than 20 
 minutes! (See [npm-browser.com|http://npm-browser.com] for a demo.)
 What an amazing story we could tell about the beauty of CouchDB replication, 
 if only this trick actually worked!
 My proposal is a simple one: just add the {{revs}} and {{open_revs}} options 
 to 

[jira] [Commented] (COUCHDB-2310) Add a bulk API for revs open_revs

2015-03-12 Thread Jan Lehnardt (JIRA)

[ 
https://issues.apache.org/jira/browse/COUCHDB-2310?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14358558#comment-14358558
 ] 

Jan Lehnardt commented on COUCHDB-2310:
---

[~kxepal] Like I said, we will make lives better for people who are on existing 
versions who support _bulk_get. And it doesn’t cost us anything, it’s just an 
alias.

 Add a bulk API for revs  open_revs
 ---

 Key: COUCHDB-2310
 URL: https://issues.apache.org/jira/browse/COUCHDB-2310
 Project: CouchDB
  Issue Type: Bug
  Security Level: public(Regular issues) 
  Components: HTTP Interface
Reporter: Nolan Lawson

 CouchDB replication is too slow.
 And what makes it so slow is that it's just so unnecessarily chatty. During 
 replication, you have to do a separate GET for each individual document, in 
 order to get the full {{_revisions}} object for that document (using the 
 {{revs}} and {{open_revs}} parameters ndash; refer to [the TouchDB 
 writeup|https://github.com/couchbaselabs/TouchDB-iOS/wiki/Replication-Algorithm]
  or [Benoit's writeup|http://dataprotocols.org/couchdb-replication/] if you 
 need a refresher).
 So for example, let's say you've got a database full of 10,000 documents, and 
 you replicate using a batch size of 500 (batch sizes are configurable in 
 PouchDB). The conversation for a single batch basically looks like this:
 {code}
 - REPLICATOR: gimme 500 changes since seq X (1 GET request)
   - SOURCE: okay
 - REPLICATOR: gimme the _revs_diff for these 500 docs/_revs (1 POST request)
   - SOURCE: okay
 - repeat 500 times:
   - REPLICATOR: gimme the _revisions for doc n with _revs [...] (1 GET 
 request)
 - SOURCE: okay
 - REPLICATOR: here's a _bulk_docs with 500 documents (1 POST request)
 - TARGET: okay
 {code}
 See the problem here? That 500-loop, where we have to do a GET for each one 
 of 500 documents, is a lot of unnecessary back-and-forth, considering that 
 the replicator already knows what it needs before the loop starts. You can 
 parallelize, but if you assume a browser (e.g. for PouchDB), most browsers 
 only let you do ~8 simultaneous requests at once. Plus, there's latency and 
 HTTP headers to consider. So overall, it's not cool.
 So why do we even need to do the separate requests? Shouldn't {{_all_docs}} 
 be good enough? Turns out it's not, because we need this special 
 {{_revisions}} object.
 For example, consider a document {{'foo'}} with 10 revisions. You may compact 
 the database, in which case revisions {{1-x}} through {{9-x}} are no longer 
 retrievable. However, if you query using {{revs}} and {{open_revs}}, those 
 rev IDs are still available:
 {code}
 $ curl 'http://nolan.iriscouch.com/test/foo?revs=trueopen_revs=all'
 {
   _id: foo,
   _rev: 10-c78e199ad5e996b240c9d6482907088e,
   _revisions: {
 start: 10,
 ids: [
   c78e199ad5e996b240c9d6482907088e,
   f560283f1968a05046f0c38e468006bb,
   0091198554171c632c27c8342ddec5af,
   e0a023e2ea59db73f812ad773ea08b17,
   65d7f8b8206a244035edd9f252f206ad,
   069d1432a003c58bdd23f01ff80b718f,
   d21f26bb604b7fe9eba03ce4562cf37b,
   31d380f99a6e54875855e1c24469622d,
   3b4791360024426eadafe31542a2c34b,
   967a00dff5e02add41819138abb3284d
 ]
   }
 }
 {code}
 And in the replication algorithm, _this full \_revisions object is required_ 
 at the point when you copy the document from one database to another, which 
 is accomplished with a POST to {{_bulk_docs}} using {{new_edits=false}}. If 
 you don't have the full {{_revisions}} object, CouchDB accepts the new 
 revision, but considers it to be a conflict. (The exception is with 
 generation-1 documents, since they have no history, so as it says in the 
 TouchDB writeup, you can safely just use {{_all_docs}} as an optimization for 
 such documents.)
 And unfortunately, this {{_revision}} object is only available from the {{GET 
 /:dbid/:docid}} endpoint. Trust me; I've tried the other APIs. You can't get 
 it anywhere else.
 This is a huge problem, especially in PouchDB where we often have to deal 
 with CORS, meaning the number of HTTP requests is doubled. So for those 500 
 GETs, it's an extra 500 OPTIONs, which is just unacceptable.
 Replication does not have to be slow. While we were experimenting with ways 
 of fetching documents in bulk, we tried a technique that just relied on using 
 {{_changes}} with {{include_docs=true}} 
 ([|\#2472|https://github.com/pouchdb/pouchdb/pull/2472]). This pushed 
 conflicts into the target database, but on the upside, you can sync ~95k 
 documents from npm's skimdb repository to the browser in less than 20 
 minutes! (See [npm-browser.com|http://npm-browser.com] for a demo.)
 What an amazing story we could tell about the beauty of CouchDB replication, 
 if only this trick actually worked!
 My proposal is a simple 

[jira] [Commented] (COUCHDB-2635) Replace hardcoded list of systems dbs with registration approach

2015-03-10 Thread Jan Lehnardt (JIRA)

[ 
https://issues.apache.org/jira/browse/COUCHDB-2635?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14355624#comment-14355624
 ] 

Jan Lehnardt commented on COUCHDB-2635:
---

ah thanks, still don’t think this is a good idea.

What problem is this solving?

 Replace hardcoded list of systems dbs with registration approach
 

 Key: COUCHDB-2635
 URL: https://issues.apache.org/jira/browse/COUCHDB-2635
 Project: CouchDB
  Issue Type: Improvement
  Security Level: public(Regular issues) 
Reporter: ILYA
Assignee: ILYA

 To replace this 
 https://github.com/apache/couchdb-couch/blob/master/include/couch_db.hrl#L43:L49



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (COUCHDB-2635) Replace hardcoded list of systems dbs with registration approach

2015-03-10 Thread Jan Lehnardt (JIRA)

[ 
https://issues.apache.org/jira/browse/COUCHDB-2635?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14355645#comment-14355645
 ] 

Jan Lehnardt commented on COUCHDB-2635:
---

I’m weary because we then have to make sure to properly abstract that in all 
places it becomes relevant. If we can ensure that, the plugin argument gets me 
over the fence, but I warn against the ensuing complexity. Would also love to 
hear from [~pjdavis1970] or [~chewbranca].

 Replace hardcoded list of systems dbs with registration approach
 

 Key: COUCHDB-2635
 URL: https://issues.apache.org/jira/browse/COUCHDB-2635
 Project: CouchDB
  Issue Type: Improvement
  Security Level: public(Regular issues) 
Reporter: ILYA
Assignee: ILYA

 To replace this 
 https://github.com/apache/couchdb-couch/blob/master/include/couch_db.hrl#L43:L49



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Reopened] (COUCHDB-2585) Make admin check extensible in global_change

2015-02-27 Thread Jan Lehnardt (JIRA)

 [ 
https://issues.apache.org/jira/browse/COUCHDB-2585?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jan Lehnardt reopened COUCHDB-2585:
---
  Assignee: Jan Lehnardt  (was: ILYA)

 Make admin check extensible in global_change
 

 Key: COUCHDB-2585
 URL: https://issues.apache.org/jira/browse/COUCHDB-2585
 Project: CouchDB
  Issue Type: Improvement
  Security Level: public(Regular issues) 
  Components: Database Core
Reporter: ILYA
Assignee: Jan Lehnardt

 Currently there is no way to use different user here 
 https://github.com/apache/couchdb-global-changes/blob/master/src/global_changes_httpd.erl#L46



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (COUCHDB-2585) Make admin check extensible in global_change

2015-02-27 Thread Jan Lehnardt (JIRA)

[ 
https://issues.apache.org/jira/browse/COUCHDB-2585?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14340238#comment-14340238
 ] 

Jan Lehnardt commented on COUCHDB-2585:
---

Can somebody explain what the `allowed_owner` setting does?

And can we talk about naming, so far we don’t have the concept of “owners” in 
CouchDB. We have server admins, database admins and database members. How does 
an owner fit into this?

 Make admin check extensible in global_change
 

 Key: COUCHDB-2585
 URL: https://issues.apache.org/jira/browse/COUCHDB-2585
 Project: CouchDB
  Issue Type: Improvement
  Security Level: public(Regular issues) 
  Components: Database Core
Reporter: ILYA
Assignee: ILYA

 Currently there is no way to use different user here 
 https://github.com/apache/couchdb-global-changes/blob/master/src/global_changes_httpd.erl#L46



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (COUCHDB-2629) Hide internal config details from other applications

2015-02-27 Thread Jan Lehnardt (JIRA)

[ 
https://issues.apache.org/jira/browse/COUCHDB-2629?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14340700#comment-14340700
 ] 

Jan Lehnardt commented on COUCHDB-2629:
---

+1

 Hide internal config details from other applications
 

 Key: COUCHDB-2629
 URL: https://issues.apache.org/jira/browse/COUCHDB-2629
 Project: CouchDB
  Issue Type: Bug
  Security Level: public(Regular issues) 
  Components: Database Core
Reporter: Russell Branca

 Throughout the code base we do things like `config:get(couch_httpd_auth, 
 authentication_db, _users)` which exposes internal details to other 
 applications that don't need to be aware of the particulars. This duplicates 
 code unnecessarily and causes problematic typos to go unnoticed like in 
 COUCHDB-2628.
 One possible approach that I'm a fan of is to go into the application 
 responsible for relevant config value, and add a function to hide the 
 details. For instance, this is done in `cassim_metadata_cache:metadata_db`: 
 https://github.com/apache/couchdb-cassim/blob/windsor-merge/src/cassim_metadata_cache.erl#L58-L59



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (COUCHDB-2620) Rename cassim db to _metadata

2015-02-23 Thread Jan Lehnardt (JIRA)

[ 
https://issues.apache.org/jira/browse/COUCHDB-2620?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14333801#comment-14333801
 ] 

Jan Lehnardt commented on COUCHDB-2620:
---

To clarify: we discussed this in IRC and we are *proposing* a rename. We can’t 
obviously decide anything on IRC :)

 Rename cassim db to _metadata
 -

 Key: COUCHDB-2620
 URL: https://issues.apache.org/jira/browse/COUCHDB-2620
 Project: CouchDB
  Issue Type: Improvement
  Security Level: public(Regular issues) 
  Components: Database Core
Reporter: Alexander Shorin

 After IRC conversation with [~janl] and [~chewbranca] we decided to rename 
 cassim database into something more specific and concrete. This database 
 currently holds only _security of all cluster databases, but is designed for 
 more. In future, we could use it to handle config-per-database feature and 
 etc. The _metadata name reflects nicely such propose.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (COUCHDB-2620) Rename cassim db to _metadata

2015-02-23 Thread Jan Lehnardt (JIRA)

[ 
https://issues.apache.org/jira/browse/COUCHDB-2620?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14333819#comment-14333819
 ] 

Jan Lehnardt commented on COUCHDB-2620:
---

thanks :)

 Rename cassim db to _metadata
 -

 Key: COUCHDB-2620
 URL: https://issues.apache.org/jira/browse/COUCHDB-2620
 Project: CouchDB
  Issue Type: Improvement
  Security Level: public(Regular issues) 
  Components: Database Core
Reporter: Alexander Shorin

 After IRC conversation with [~janl] and [~chewbranca] we -decided- are 
 proposing to rename cassim database into something more specific and 
 concrete. This database currently holds only _security of all cluster 
 databases, but is designed for more. In future, we could use it to handle 
 config-per-database feature and etc. The _metadata name reflects nicely such 
 propose.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (COUCHDB-2621) Hide _metadata database from the world by default

2015-02-23 Thread Jan Lehnardt (JIRA)

[ 
https://issues.apache.org/jira/browse/COUCHDB-2621?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14333812#comment-14333812
 ] 

Jan Lehnardt commented on COUCHDB-2621:
---

again clarifying that the “decision” was just a quorum among the IRC 
participants, not a project-level decision. this all is just for your all 
consideration :)

A few clarifications:
 - the lack of validation logic means that unsuspecting end-users could write 
documents to the database that screw up database internals

 - replicating of metadata is definitely interesting and we could look at that 
in the future, but this isn’t a blocker for 2.0

- I’d suggest /_metadata returns 404, e.g. we just don’t hook it up to chttpd.

- in the future, we might want to add a config option that hooks up the 
database to chttpd, so expert users can do with it what they need to do. This 
is also not blocking for 2.0.

 Hide _metadata database from the world by default
 -

 Key: COUCHDB-2621
 URL: https://issues.apache.org/jira/browse/COUCHDB-2621
 Project: CouchDB
  Issue Type: Improvement
  Security Level: public(Regular issues) 
  Components: Database Core
Reporter: Alexander Shorin

 After IRC conversation with [~janl] and [~chewbranca] we decided to hide 
 _metadata database from the world by blocking all the access to it via HTTP 
 API.  The motivation is the following:
 - it lacks of validation logic, but adding such may hurt overall performance 
 a more;
 - it creates a confusion about database security management: should users use 
 /db/_security endpoint of /_metadata/db@security one?
 - technically, it allows to replicate databases metadata across the cluster, 
 but this use case is a dark room of black cats;
 - there is something about quorum thing, but I didn't get that completely (:
 The proposal is to add chttpd handler which returns a HTTP error (403 
 Forbidden?) on /_metadata request and only allows to access to it from HTTP 
 after setting couchdb/expose_metadata_database with value true in config file.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (COUCHDB-2310) Add a bulk API for revs open_revs

2015-02-23 Thread Jan Lehnardt (JIRA)

[ 
https://issues.apache.org/jira/browse/COUCHDB-2310?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14333758#comment-14333758
 ] 

Jan Lehnardt commented on COUCHDB-2310:
---

*nudge* :)

 Add a bulk API for revs  open_revs
 ---

 Key: COUCHDB-2310
 URL: https://issues.apache.org/jira/browse/COUCHDB-2310
 Project: CouchDB
  Issue Type: Bug
  Security Level: public(Regular issues) 
  Components: HTTP Interface
Reporter: Nolan Lawson

 CouchDB replication is too slow.
 And what makes it so slow is that it's just so unnecessarily chatty. During 
 replication, you have to do a separate GET for each individual document, in 
 order to get the full {{_revisions}} object for that document (using the 
 {{revs}} and {{open_revs}} parameters ndash; refer to [the TouchDB 
 writeup|https://github.com/couchbaselabs/TouchDB-iOS/wiki/Replication-Algorithm]
  or [Benoit's writeup|http://dataprotocols.org/couchdb-replication/] if you 
 need a refresher).
 So for example, let's say you've got a database full of 10,000 documents, and 
 you replicate using a batch size of 500 (batch sizes are configurable in 
 PouchDB). The conversation for a single batch basically looks like this:
 {code}
 - REPLICATOR: gimme 500 changes since seq X (1 GET request)
   - SOURCE: okay
 - REPLICATOR: gimme the _revs_diff for these 500 docs/_revs (1 POST request)
   - SOURCE: okay
 - repeat 500 times:
   - REPLICATOR: gimme the _revisions for doc n with _revs [...] (1 GET 
 request)
 - SOURCE: okay
 - REPLICATOR: here's a _bulk_docs with 500 documents (1 POST request)
 - TARGET: okay
 {code}
 See the problem here? That 500-loop, where we have to do a GET for each one 
 of 500 documents, is a lot of unnecessary back-and-forth, considering that 
 the replicator already knows what it needs before the loop starts. You can 
 parallelize, but if you assume a browser (e.g. for PouchDB), most browsers 
 only let you do ~8 simultaneous requests at once. Plus, there's latency and 
 HTTP headers to consider. So overall, it's not cool.
 So why do we even need to do the separate requests? Shouldn't {{_all_docs}} 
 be good enough? Turns out it's not, because we need this special 
 {{_revisions}} object.
 For example, consider a document {{'foo'}} with 10 revisions. You may compact 
 the database, in which case revisions {{1-x}} through {{9-x}} are no longer 
 retrievable. However, if you query using {{revs}} and {{open_revs}}, those 
 rev IDs are still available:
 {code}
 $ curl 'http://nolan.iriscouch.com/test/foo?revs=trueopen_revs=all'
 {
   _id: foo,
   _rev: 10-c78e199ad5e996b240c9d6482907088e,
   _revisions: {
 start: 10,
 ids: [
   c78e199ad5e996b240c9d6482907088e,
   f560283f1968a05046f0c38e468006bb,
   0091198554171c632c27c8342ddec5af,
   e0a023e2ea59db73f812ad773ea08b17,
   65d7f8b8206a244035edd9f252f206ad,
   069d1432a003c58bdd23f01ff80b718f,
   d21f26bb604b7fe9eba03ce4562cf37b,
   31d380f99a6e54875855e1c24469622d,
   3b4791360024426eadafe31542a2c34b,
   967a00dff5e02add41819138abb3284d
 ]
   }
 }
 {code}
 And in the replication algorithm, _this full \_revisions object is required_ 
 at the point when you copy the document from one database to another, which 
 is accomplished with a POST to {{_bulk_docs}} using {{new_edits=false}}. If 
 you don't have the full {{_revisions}} object, CouchDB accepts the new 
 revision, but considers it to be a conflict. (The exception is with 
 generation-1 documents, since they have no history, so as it says in the 
 TouchDB writeup, you can safely just use {{_all_docs}} as an optimization for 
 such documents.)
 And unfortunately, this {{_revision}} object is only available from the {{GET 
 /:dbid/:docid}} endpoint. Trust me; I've tried the other APIs. You can't get 
 it anywhere else.
 This is a huge problem, especially in PouchDB where we often have to deal 
 with CORS, meaning the number of HTTP requests is doubled. So for those 500 
 GETs, it's an extra 500 OPTIONs, which is just unacceptable.
 Replication does not have to be slow. While we were experimenting with ways 
 of fetching documents in bulk, we tried a technique that just relied on using 
 {{_changes}} with {{include_docs=true}} 
 ([|\#2472|https://github.com/pouchdb/pouchdb/pull/2472]). This pushed 
 conflicts into the target database, but on the upside, you can sync ~95k 
 documents from npm's skimdb repository to the browser in less than 20 
 minutes! (See [npm-browser.com|http://npm-browser.com] for a demo.)
 What an amazing story we could tell about the beauty of CouchDB replication, 
 if only this trick actually worked!
 My proposal is a simple one: just add the {{revs}} and {{open_revs}} options 
 to {{_all_docs}}. Presumably this would be aligned with {{keys}}, so similar 
 to how {{keys}} takes an 

[jira] [Commented] (COUCHDB-2191) Please consider including couchperuser in core

2015-02-20 Thread Jan Lehnardt (JIRA)

[ 
https://issues.apache.org/jira/browse/COUCHDB-2191?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14328981#comment-14328981
 ] 

Jan Lehnardt commented on COUCHDB-2191:
---

I’d be in favour of this.

 Please consider including couchperuser in core
 --

 Key: COUCHDB-2191
 URL: https://issues.apache.org/jira/browse/COUCHDB-2191
 Project: CouchDB
  Issue Type: Improvement
  Security Level: public(Regular issues) 
Reporter: Nolan Lawson

 I would love to be able to use CouchDB as the exclusive backend for all my 
 webapps.  The {{_users}} database with the automatic password salting/hashing 
 and session cookies is brilliant, and saves a lot of developer effort while 
 still ensuring I don't shoot myself in the foot trying to implement password 
 security.
 However, without creating a database per user, it's impossible to silo user 
 data in any way other than through {{validate_doc_update}} - i.e. every user 
 can see everybody else's data, but they can only write to theirs.  This use 
 case does exist (e.g. Twitter), but it's much less common than the case where 
 users can only read/write their own data.
 The plugin ecosystem is great and all, and I totally understand not wanting 
 to include the kitchen sink in Couch core, but I strongly feel 
 [couchperuser|https://github.com/etrepum/couchperuser] (or something like it) 
 should be a checkbox I can tick in the Couch config, rather than a plugin I 
 have to install manually.  It's just too common of a use case in typical 
 webapps.
 Some background: this was prompted by a [discussion in 
 PouchDB|https://github.com/daleharvey/pouchdb/issues/1575]; Dale has written 
 a fine solution in 
 [couch-persona|https://github.com/daleharvey/couch-persona], but I really 
 think the why Pouch/Couch? story would be more compelling if you could do 
 it in pure Couch without an extra server process.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (COUCHDB-2588) dereferencing type-punned pointer will break strict-aliasing rule

2015-02-19 Thread Jan Lehnardt (JIRA)

 [ 
https://issues.apache.org/jira/browse/COUCHDB-2588?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jan Lehnardt updated COUCHDB-2588:
--
Description: 
Happens on FreeBSD 9:

{code}
# gcc -v
Using built-in specs.
Target: i386-undermydesk-freebsd
Configured with: FreeBSD/i386 system compiler
Thread model: posix
gcc version 4.2.1 20070831 patched [FreeBSD]

== b64url (compile)
Compiled src/b64url.erl
Compiling /root/couchdb/src/b64url/c_src/b64url.c
cc1: warnings being treated as errors
/root/couchdb/src/b64url/c_src/b64url.c: In function 'b64url_encode_cont':
/root/couchdb/src/b64url/c_src/b64url.c:424: warning: dereferencing type-punned 
pointer will break strict-aliasing rules
/root/couchdb/src/b64url/c_src/b64url.c: In function 'b64url_decode_cont':
/root/couchdb/src/b64url/c_src/b64url.c:579: warning: dereferencing type-punned 
pointer will break strict-aliasing rules
ERROR: compile failed while processing /root/couchdb/src/b64url: rebar_abort
*** [couch] Error code 1

== khash (compile)
Compiled src/khash.erl
Compiling c_src/hash.c
Compiling /root/couchdb/src/khash/c_src/khash.c
cc1: warnings being treated as errors
/root/couchdb/src/khash/c_src/khash.c: In function 'khash_to_list':
/root/couchdb/src/khash/c_src/khash.c:232: warning: dereferencing type-punned 
pointer will break strict-aliasing rules
/root/couchdb/src/khash/c_src/khash.c: In function 'khash_clear':
/root/couchdb/src/khash/c_src/khash.c:264: warning: dereferencing type-punned 
pointer will break strict-aliasing rules
/root/couchdb/src/khash/c_src/khash.c: In function 'khash_lookup':
/root/couchdb/src/khash/c_src/khash.c:303: warning: dereferencing type-punned 
pointer will break strict-aliasing rules
/root/couchdb/src/khash/c_src/khash.c: In function 'khash_get':
/root/couchdb/src/khash/c_src/khash.c:337: warning: dereferencing type-punned 
pointer will break strict-aliasing rules
/root/couchdb/src/khash/c_src/khash.c: In function 'khash_put':
/root/couchdb/src/khash/c_src/khash.c:369: warning: dereferencing type-punned 
pointer will break strict-aliasing rules
/root/couchdb/src/khash/c_src/khash.c: In function 'khash_del':
/root/couchdb/src/khash/c_src/khash.c:409: warning: dereferencing type-punned 
pointer will break strict-aliasing rules
/root/couchdb/src/khash/c_src/khash.c: In function 'khash_size':
/root/couchdb/src/khash/c_src/khash.c:441: warning: dereferencing type-punned 
pointer will break strict-aliasing rules
/root/couchdb/src/khash/c_src/khash.c: In function 'khash_iter':
/root/couchdb/src/khash/c_src/khash.c:465: warning: dereferencing type-punned 
pointer will break strict-aliasing rules
/root/couchdb/src/khash/c_src/khash.c: In function 'khash_iter_next':
/root/couchdb/src/khash/c_src/khash.c:514: warning: dereferencing type-punned 
pointer will break strict-aliasing rules
ERROR: compile failed while processing /root/couchdb/src/khash: rebar_abort
*** [couch] Error code 1
{code}

  was:
Happens on FreeBSD:

{code}
# gcc -v
Using built-in specs.
Target: i386-undermydesk-freebsd
Configured with: FreeBSD/i386 system compiler
Thread model: posix
gcc version 4.2.1 20070831 patched [FreeBSD]

== b64url (compile)
Compiled src/b64url.erl
Compiling /root/couchdb/src/b64url/c_src/b64url.c
cc1: warnings being treated as errors
/root/couchdb/src/b64url/c_src/b64url.c: In function 'b64url_encode_cont':
/root/couchdb/src/b64url/c_src/b64url.c:424: warning: dereferencing type-punned 
pointer will break strict-aliasing rules
/root/couchdb/src/b64url/c_src/b64url.c: In function 'b64url_decode_cont':
/root/couchdb/src/b64url/c_src/b64url.c:579: warning: dereferencing type-punned 
pointer will break strict-aliasing rules
ERROR: compile failed while processing /root/couchdb/src/b64url: rebar_abort
*** [couch] Error code 1

== khash (compile)
Compiled src/khash.erl
Compiling c_src/hash.c
Compiling /root/couchdb/src/khash/c_src/khash.c
cc1: warnings being treated as errors
/root/couchdb/src/khash/c_src/khash.c: In function 'khash_to_list':
/root/couchdb/src/khash/c_src/khash.c:232: warning: dereferencing type-punned 
pointer will break strict-aliasing rules
/root/couchdb/src/khash/c_src/khash.c: In function 'khash_clear':
/root/couchdb/src/khash/c_src/khash.c:264: warning: dereferencing type-punned 
pointer will break strict-aliasing rules
/root/couchdb/src/khash/c_src/khash.c: In function 'khash_lookup':
/root/couchdb/src/khash/c_src/khash.c:303: warning: dereferencing type-punned 
pointer will break strict-aliasing rules
/root/couchdb/src/khash/c_src/khash.c: In function 'khash_get':
/root/couchdb/src/khash/c_src/khash.c:337: warning: dereferencing type-punned 
pointer will break strict-aliasing rules
/root/couchdb/src/khash/c_src/khash.c: In function 'khash_put':
/root/couchdb/src/khash/c_src/khash.c:369: warning: dereferencing type-punned 
pointer will break strict-aliasing rules
/root/couchdb/src/khash/c_src/khash.c: In function 'khash_del':

[jira] [Commented] (COUCHDB-2588) dereferencing type-punned pointer will break strict-aliasing rule

2015-02-19 Thread Jan Lehnardt (JIRA)

[ 
https://issues.apache.org/jira/browse/COUCHDB-2588?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14328136#comment-14328136
 ] 

Jan Lehnardt commented on COUCHDB-2588:
---

For anyone looking at this, the sources are at 
https://github.com/apache/couchdb-b64url and 
https://github.com/apache/couchdb-khash

 dereferencing type-punned pointer will break strict-aliasing rule
 -

 Key: COUCHDB-2588
 URL: https://issues.apache.org/jira/browse/COUCHDB-2588
 Project: CouchDB
  Issue Type: Bug
  Security Level: public(Regular issues) 
  Components: Database Core
Affects Versions: 2.0.0
 Environment: FreeBSD 9
Reporter: Alexander Shorin
Priority: Blocker
 Fix For: 2.0.0


 Happens on FreeBSD 9:
 {code}
 # gcc -v
 Using built-in specs.
 Target: i386-undermydesk-freebsd
 Configured with: FreeBSD/i386 system compiler
 Thread model: posix
 gcc version 4.2.1 20070831 patched [FreeBSD]
 == b64url (compile)
 Compiled src/b64url.erl
 Compiling /root/couchdb/src/b64url/c_src/b64url.c
 cc1: warnings being treated as errors
 /root/couchdb/src/b64url/c_src/b64url.c: In function 'b64url_encode_cont':
 /root/couchdb/src/b64url/c_src/b64url.c:424: warning: dereferencing 
 type-punned pointer will break strict-aliasing rules
 /root/couchdb/src/b64url/c_src/b64url.c: In function 'b64url_decode_cont':
 /root/couchdb/src/b64url/c_src/b64url.c:579: warning: dereferencing 
 type-punned pointer will break strict-aliasing rules
 ERROR: compile failed while processing /root/couchdb/src/b64url: rebar_abort
 *** [couch] Error code 1
 == khash (compile)
 Compiled src/khash.erl
 Compiling c_src/hash.c
 Compiling /root/couchdb/src/khash/c_src/khash.c
 cc1: warnings being treated as errors
 /root/couchdb/src/khash/c_src/khash.c: In function 'khash_to_list':
 /root/couchdb/src/khash/c_src/khash.c:232: warning: dereferencing type-punned 
 pointer will break strict-aliasing rules
 /root/couchdb/src/khash/c_src/khash.c: In function 'khash_clear':
 /root/couchdb/src/khash/c_src/khash.c:264: warning: dereferencing type-punned 
 pointer will break strict-aliasing rules
 /root/couchdb/src/khash/c_src/khash.c: In function 'khash_lookup':
 /root/couchdb/src/khash/c_src/khash.c:303: warning: dereferencing type-punned 
 pointer will break strict-aliasing rules
 /root/couchdb/src/khash/c_src/khash.c: In function 'khash_get':
 /root/couchdb/src/khash/c_src/khash.c:337: warning: dereferencing type-punned 
 pointer will break strict-aliasing rules
 /root/couchdb/src/khash/c_src/khash.c: In function 'khash_put':
 /root/couchdb/src/khash/c_src/khash.c:369: warning: dereferencing type-punned 
 pointer will break strict-aliasing rules
 /root/couchdb/src/khash/c_src/khash.c: In function 'khash_del':
 /root/couchdb/src/khash/c_src/khash.c:409: warning: dereferencing type-punned 
 pointer will break strict-aliasing rules
 /root/couchdb/src/khash/c_src/khash.c: In function 'khash_size':
 /root/couchdb/src/khash/c_src/khash.c:441: warning: dereferencing type-punned 
 pointer will break strict-aliasing rules
 /root/couchdb/src/khash/c_src/khash.c: In function 'khash_iter':
 /root/couchdb/src/khash/c_src/khash.c:465: warning: dereferencing type-punned 
 pointer will break strict-aliasing rules
 /root/couchdb/src/khash/c_src/khash.c: In function 'khash_iter_next':
 /root/couchdb/src/khash/c_src/khash.c:514: warning: dereferencing type-punned 
 pointer will break strict-aliasing rules
 ERROR: compile failed while processing /root/couchdb/src/khash: rebar_abort
 *** [couch] Error code 1
 {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (COUCHDB-2588) dereferencing type-punned pointer will break strict-aliasing rule

2015-02-19 Thread Jan Lehnardt (JIRA)

[ 
https://issues.apache.org/jira/browse/COUCHDB-2588?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14328133#comment-14328133
 ] 

Jan Lehnardt commented on COUCHDB-2588:
---

clang based FreeBSD 10+ not affected.

 dereferencing type-punned pointer will break strict-aliasing rule
 -

 Key: COUCHDB-2588
 URL: https://issues.apache.org/jira/browse/COUCHDB-2588
 Project: CouchDB
  Issue Type: Bug
  Security Level: public(Regular issues) 
  Components: Database Core
Affects Versions: 2.0.0
 Environment: FreeBSD 9
Reporter: Alexander Shorin
Priority: Blocker
 Fix For: 2.0.0


 Happens on FreeBSD 9:
 {code}
 # gcc -v
 Using built-in specs.
 Target: i386-undermydesk-freebsd
 Configured with: FreeBSD/i386 system compiler
 Thread model: posix
 gcc version 4.2.1 20070831 patched [FreeBSD]
 == b64url (compile)
 Compiled src/b64url.erl
 Compiling /root/couchdb/src/b64url/c_src/b64url.c
 cc1: warnings being treated as errors
 /root/couchdb/src/b64url/c_src/b64url.c: In function 'b64url_encode_cont':
 /root/couchdb/src/b64url/c_src/b64url.c:424: warning: dereferencing 
 type-punned pointer will break strict-aliasing rules
 /root/couchdb/src/b64url/c_src/b64url.c: In function 'b64url_decode_cont':
 /root/couchdb/src/b64url/c_src/b64url.c:579: warning: dereferencing 
 type-punned pointer will break strict-aliasing rules
 ERROR: compile failed while processing /root/couchdb/src/b64url: rebar_abort
 *** [couch] Error code 1
 == khash (compile)
 Compiled src/khash.erl
 Compiling c_src/hash.c
 Compiling /root/couchdb/src/khash/c_src/khash.c
 cc1: warnings being treated as errors
 /root/couchdb/src/khash/c_src/khash.c: In function 'khash_to_list':
 /root/couchdb/src/khash/c_src/khash.c:232: warning: dereferencing type-punned 
 pointer will break strict-aliasing rules
 /root/couchdb/src/khash/c_src/khash.c: In function 'khash_clear':
 /root/couchdb/src/khash/c_src/khash.c:264: warning: dereferencing type-punned 
 pointer will break strict-aliasing rules
 /root/couchdb/src/khash/c_src/khash.c: In function 'khash_lookup':
 /root/couchdb/src/khash/c_src/khash.c:303: warning: dereferencing type-punned 
 pointer will break strict-aliasing rules
 /root/couchdb/src/khash/c_src/khash.c: In function 'khash_get':
 /root/couchdb/src/khash/c_src/khash.c:337: warning: dereferencing type-punned 
 pointer will break strict-aliasing rules
 /root/couchdb/src/khash/c_src/khash.c: In function 'khash_put':
 /root/couchdb/src/khash/c_src/khash.c:369: warning: dereferencing type-punned 
 pointer will break strict-aliasing rules
 /root/couchdb/src/khash/c_src/khash.c: In function 'khash_del':
 /root/couchdb/src/khash/c_src/khash.c:409: warning: dereferencing type-punned 
 pointer will break strict-aliasing rules
 /root/couchdb/src/khash/c_src/khash.c: In function 'khash_size':
 /root/couchdb/src/khash/c_src/khash.c:441: warning: dereferencing type-punned 
 pointer will break strict-aliasing rules
 /root/couchdb/src/khash/c_src/khash.c: In function 'khash_iter':
 /root/couchdb/src/khash/c_src/khash.c:465: warning: dereferencing type-punned 
 pointer will break strict-aliasing rules
 /root/couchdb/src/khash/c_src/khash.c: In function 'khash_iter_next':
 /root/couchdb/src/khash/c_src/khash.c:514: warning: dereferencing type-punned 
 pointer will break strict-aliasing rules
 ERROR: compile failed while processing /root/couchdb/src/khash: rebar_abort
 *** [couch] Error code 1
 {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (COUCHDB-2588) dereferencing type-punned pointer will break strict-aliasing rule

2015-02-19 Thread Jan Lehnardt (JIRA)

 [ 
https://issues.apache.org/jira/browse/COUCHDB-2588?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jan Lehnardt updated COUCHDB-2588:
--
Environment: FreeBSD 9

 dereferencing type-punned pointer will break strict-aliasing rule
 -

 Key: COUCHDB-2588
 URL: https://issues.apache.org/jira/browse/COUCHDB-2588
 Project: CouchDB
  Issue Type: Bug
  Security Level: public(Regular issues) 
  Components: Database Core
Affects Versions: 2.0.0
 Environment: FreeBSD 9
Reporter: Alexander Shorin
Priority: Blocker
 Fix For: 2.0.0


 Happens on FreeBSD 9:
 {code}
 # gcc -v
 Using built-in specs.
 Target: i386-undermydesk-freebsd
 Configured with: FreeBSD/i386 system compiler
 Thread model: posix
 gcc version 4.2.1 20070831 patched [FreeBSD]
 == b64url (compile)
 Compiled src/b64url.erl
 Compiling /root/couchdb/src/b64url/c_src/b64url.c
 cc1: warnings being treated as errors
 /root/couchdb/src/b64url/c_src/b64url.c: In function 'b64url_encode_cont':
 /root/couchdb/src/b64url/c_src/b64url.c:424: warning: dereferencing 
 type-punned pointer will break strict-aliasing rules
 /root/couchdb/src/b64url/c_src/b64url.c: In function 'b64url_decode_cont':
 /root/couchdb/src/b64url/c_src/b64url.c:579: warning: dereferencing 
 type-punned pointer will break strict-aliasing rules
 ERROR: compile failed while processing /root/couchdb/src/b64url: rebar_abort
 *** [couch] Error code 1
 == khash (compile)
 Compiled src/khash.erl
 Compiling c_src/hash.c
 Compiling /root/couchdb/src/khash/c_src/khash.c
 cc1: warnings being treated as errors
 /root/couchdb/src/khash/c_src/khash.c: In function 'khash_to_list':
 /root/couchdb/src/khash/c_src/khash.c:232: warning: dereferencing type-punned 
 pointer will break strict-aliasing rules
 /root/couchdb/src/khash/c_src/khash.c: In function 'khash_clear':
 /root/couchdb/src/khash/c_src/khash.c:264: warning: dereferencing type-punned 
 pointer will break strict-aliasing rules
 /root/couchdb/src/khash/c_src/khash.c: In function 'khash_lookup':
 /root/couchdb/src/khash/c_src/khash.c:303: warning: dereferencing type-punned 
 pointer will break strict-aliasing rules
 /root/couchdb/src/khash/c_src/khash.c: In function 'khash_get':
 /root/couchdb/src/khash/c_src/khash.c:337: warning: dereferencing type-punned 
 pointer will break strict-aliasing rules
 /root/couchdb/src/khash/c_src/khash.c: In function 'khash_put':
 /root/couchdb/src/khash/c_src/khash.c:369: warning: dereferencing type-punned 
 pointer will break strict-aliasing rules
 /root/couchdb/src/khash/c_src/khash.c: In function 'khash_del':
 /root/couchdb/src/khash/c_src/khash.c:409: warning: dereferencing type-punned 
 pointer will break strict-aliasing rules
 /root/couchdb/src/khash/c_src/khash.c: In function 'khash_size':
 /root/couchdb/src/khash/c_src/khash.c:441: warning: dereferencing type-punned 
 pointer will break strict-aliasing rules
 /root/couchdb/src/khash/c_src/khash.c: In function 'khash_iter':
 /root/couchdb/src/khash/c_src/khash.c:465: warning: dereferencing type-punned 
 pointer will break strict-aliasing rules
 /root/couchdb/src/khash/c_src/khash.c: In function 'khash_iter_next':
 /root/couchdb/src/khash/c_src/khash.c:514: warning: dereferencing type-punned 
 pointer will break strict-aliasing rules
 ERROR: compile failed while processing /root/couchdb/src/khash: rebar_abort
 *** [couch] Error code 1
 {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (COUCHDB-2597) Release: make targets

2015-02-19 Thread Jan Lehnardt (JIRA)

[ 
https://issues.apache.org/jira/browse/COUCHDB-2597?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14328172#comment-14328172
 ] 

Jan Lehnardt commented on COUCHDB-2597:
---

This will all be covered in https://github.com/apache/couchdb/pull/302

Docs building is already part of this.

`make dist` is now `make release` and still work in progress

 Release: make targets
 -

 Key: COUCHDB-2597
 URL: https://issues.apache.org/jira/browse/COUCHDB-2597
 Project: CouchDB
  Issue Type: Task
  Security Level: public(Regular issues) 
  Components: Build System
Reporter: Robert Kowalski
Assignee: Jan Lehnardt
Priority: Blocker

 make dist and make docs are still missing for 2.0. Additionaly the Thanks.in 
 file that was generated by autotools when preparing a release must be readded



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (COUCHDB-2602) delayed deletion as safety net

2015-02-19 Thread Jan Lehnardt (JIRA)

[ 
https://issues.apache.org/jira/browse/COUCHDB-2602?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14328171#comment-14328171
 ] 

Jan Lehnardt commented on COUCHDB-2602:
---

it’s less a timer and more a “soft delete” where we move databases out of the 
way, but don’t delete them right away.

 delayed deletion as safety net
 --

 Key: COUCHDB-2602
 URL: https://issues.apache.org/jira/browse/COUCHDB-2602
 Project: CouchDB
  Issue Type: Task
  Security Level: public(Regular issues) 
  Components: Database Core
Affects Versions: 2.1
Reporter: Robert Kowalski

 Delay deletion as a safety net for users.
 Make the delay configurable



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (COUCHDB-2595) Packaging/Release: tarball

2015-02-19 Thread Jan Lehnardt (JIRA)

[ 
https://issues.apache.org/jira/browse/COUCHDB-2595?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14328176#comment-14328176
 ] 

Jan Lehnardt commented on COUCHDB-2595:
---

This will be part of https://github.com/apache/couchdb/pull/302

 Packaging/Release: tarball
 --

 Key: COUCHDB-2595
 URL: https://issues.apache.org/jira/browse/COUCHDB-2595
 Project: CouchDB
  Issue Type: Task
  Security Level: public(Regular issues) 
  Components: Build System
Reporter: Robert Kowalski
Assignee: Jan Lehnardt
Priority: Blocker

 We have to create a tarball for the release of 2.0



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (COUCHDB-2588) dereferencing type-punned pointer will break strict-aliasing rule

2015-02-19 Thread Jan Lehnardt (JIRA)

[ 
https://issues.apache.org/jira/browse/COUCHDB-2588?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14328224#comment-14328224
 ] 

Jan Lehnardt commented on COUCHDB-2588:
---

Trusted pointer wrangler Justin McCormack suggests to compile with  
-Wno-strict-aliasing

https://twitter.com/justincormack/status/568537462676402176

 dereferencing type-punned pointer will break strict-aliasing rule
 -

 Key: COUCHDB-2588
 URL: https://issues.apache.org/jira/browse/COUCHDB-2588
 Project: CouchDB
  Issue Type: Bug
  Security Level: public(Regular issues) 
  Components: Database Core
Affects Versions: 2.0.0
 Environment: FreeBSD 9
Reporter: Alexander Shorin
Priority: Blocker
 Fix For: 2.0.0


 Happens on FreeBSD 9:
 {code}
 # gcc -v
 Using built-in specs.
 Target: i386-undermydesk-freebsd
 Configured with: FreeBSD/i386 system compiler
 Thread model: posix
 gcc version 4.2.1 20070831 patched [FreeBSD]
 == b64url (compile)
 Compiled src/b64url.erl
 Compiling /root/couchdb/src/b64url/c_src/b64url.c
 cc1: warnings being treated as errors
 /root/couchdb/src/b64url/c_src/b64url.c: In function 'b64url_encode_cont':
 /root/couchdb/src/b64url/c_src/b64url.c:424: warning: dereferencing 
 type-punned pointer will break strict-aliasing rules
 /root/couchdb/src/b64url/c_src/b64url.c: In function 'b64url_decode_cont':
 /root/couchdb/src/b64url/c_src/b64url.c:579: warning: dereferencing 
 type-punned pointer will break strict-aliasing rules
 ERROR: compile failed while processing /root/couchdb/src/b64url: rebar_abort
 *** [couch] Error code 1
 == khash (compile)
 Compiled src/khash.erl
 Compiling c_src/hash.c
 Compiling /root/couchdb/src/khash/c_src/khash.c
 cc1: warnings being treated as errors
 /root/couchdb/src/khash/c_src/khash.c: In function 'khash_to_list':
 /root/couchdb/src/khash/c_src/khash.c:232: warning: dereferencing type-punned 
 pointer will break strict-aliasing rules
 /root/couchdb/src/khash/c_src/khash.c: In function 'khash_clear':
 /root/couchdb/src/khash/c_src/khash.c:264: warning: dereferencing type-punned 
 pointer will break strict-aliasing rules
 /root/couchdb/src/khash/c_src/khash.c: In function 'khash_lookup':
 /root/couchdb/src/khash/c_src/khash.c:303: warning: dereferencing type-punned 
 pointer will break strict-aliasing rules
 /root/couchdb/src/khash/c_src/khash.c: In function 'khash_get':
 /root/couchdb/src/khash/c_src/khash.c:337: warning: dereferencing type-punned 
 pointer will break strict-aliasing rules
 /root/couchdb/src/khash/c_src/khash.c: In function 'khash_put':
 /root/couchdb/src/khash/c_src/khash.c:369: warning: dereferencing type-punned 
 pointer will break strict-aliasing rules
 /root/couchdb/src/khash/c_src/khash.c: In function 'khash_del':
 /root/couchdb/src/khash/c_src/khash.c:409: warning: dereferencing type-punned 
 pointer will break strict-aliasing rules
 /root/couchdb/src/khash/c_src/khash.c: In function 'khash_size':
 /root/couchdb/src/khash/c_src/khash.c:441: warning: dereferencing type-punned 
 pointer will break strict-aliasing rules
 /root/couchdb/src/khash/c_src/khash.c: In function 'khash_iter':
 /root/couchdb/src/khash/c_src/khash.c:465: warning: dereferencing type-punned 
 pointer will break strict-aliasing rules
 /root/couchdb/src/khash/c_src/khash.c: In function 'khash_iter_next':
 /root/couchdb/src/khash/c_src/khash.c:514: warning: dereferencing type-punned 
 pointer will break strict-aliasing rules
 ERROR: compile failed while processing /root/couchdb/src/khash: rebar_abort
 *** [couch] Error code 1
 {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (COUCHDB-2310) Add a bulk API for revs open_revs

2015-01-27 Thread Jan Lehnardt (JIRA)

[ 
https://issues.apache.org/jira/browse/COUCHDB-2310?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14293463#comment-14293463
 ] 

Jan Lehnardt commented on COUCHDB-2310:
---

Cool, thanks, no worries :) — Also feel free to post incomplete stuff, happy to 
pick it up.

 Add a bulk API for revs  open_revs
 ---

 Key: COUCHDB-2310
 URL: https://issues.apache.org/jira/browse/COUCHDB-2310
 Project: CouchDB
  Issue Type: Bug
  Security Level: public(Regular issues) 
  Components: HTTP Interface
Reporter: Nolan Lawson

 CouchDB replication is too slow.
 And what makes it so slow is that it's just so unnecessarily chatty. During 
 replication, you have to do a separate GET for each individual document, in 
 order to get the full {{_revisions}} object for that document (using the 
 {{revs}} and {{open_revs}} parameters ndash; refer to [the TouchDB 
 writeup|https://github.com/couchbaselabs/TouchDB-iOS/wiki/Replication-Algorithm]
  or [Benoit's writeup|http://dataprotocols.org/couchdb-replication/] if you 
 need a refresher).
 So for example, let's say you've got a database full of 10,000 documents, and 
 you replicate using a batch size of 500 (batch sizes are configurable in 
 PouchDB). The conversation for a single batch basically looks like this:
 {code}
 - REPLICATOR: gimme 500 changes since seq X (1 GET request)
   - SOURCE: okay
 - REPLICATOR: gimme the _revs_diff for these 500 docs/_revs (1 POST request)
   - SOURCE: okay
 - repeat 500 times:
   - REPLICATOR: gimme the _revisions for doc n with _revs [...] (1 GET 
 request)
 - SOURCE: okay
 - REPLICATOR: here's a _bulk_docs with 500 documents (1 POST request)
 - TARGET: okay
 {code}
 See the problem here? That 500-loop, where we have to do a GET for each one 
 of 500 documents, is a lot of unnecessary back-and-forth, considering that 
 the replicator already knows what it needs before the loop starts. You can 
 parallelize, but if you assume a browser (e.g. for PouchDB), most browsers 
 only let you do ~8 simultaneous requests at once. Plus, there's latency and 
 HTTP headers to consider. So overall, it's not cool.
 So why do we even need to do the separate requests? Shouldn't {{_all_docs}} 
 be good enough? Turns out it's not, because we need this special 
 {{_revisions}} object.
 For example, consider a document {{'foo'}} with 10 revisions. You may compact 
 the database, in which case revisions {{1-x}} through {{9-x}} are no longer 
 retrievable. However, if you query using {{revs}} and {{open_revs}}, those 
 rev IDs are still available:
 {code}
 $ curl 'http://nolan.iriscouch.com/test/foo?revs=trueopen_revs=all'
 {
   _id: foo,
   _rev: 10-c78e199ad5e996b240c9d6482907088e,
   _revisions: {
 start: 10,
 ids: [
   c78e199ad5e996b240c9d6482907088e,
   f560283f1968a05046f0c38e468006bb,
   0091198554171c632c27c8342ddec5af,
   e0a023e2ea59db73f812ad773ea08b17,
   65d7f8b8206a244035edd9f252f206ad,
   069d1432a003c58bdd23f01ff80b718f,
   d21f26bb604b7fe9eba03ce4562cf37b,
   31d380f99a6e54875855e1c24469622d,
   3b4791360024426eadafe31542a2c34b,
   967a00dff5e02add41819138abb3284d
 ]
   }
 }
 {code}
 And in the replication algorithm, _this full \_revisions object is required_ 
 at the point when you copy the document from one database to another, which 
 is accomplished with a POST to {{_bulk_docs}} using {{new_edits=false}}. If 
 you don't have the full {{_revisions}} object, CouchDB accepts the new 
 revision, but considers it to be a conflict. (The exception is with 
 generation-1 documents, since they have no history, so as it says in the 
 TouchDB writeup, you can safely just use {{_all_docs}} as an optimization for 
 such documents.)
 And unfortunately, this {{_revision}} object is only available from the {{GET 
 /:dbid/:docid}} endpoint. Trust me; I've tried the other APIs. You can't get 
 it anywhere else.
 This is a huge problem, especially in PouchDB where we often have to deal 
 with CORS, meaning the number of HTTP requests is doubled. So for those 500 
 GETs, it's an extra 500 OPTIONs, which is just unacceptable.
 Replication does not have to be slow. While we were experimenting with ways 
 of fetching documents in bulk, we tried a technique that just relied on using 
 {{_changes}} with {{include_docs=true}} 
 ([|\#2472|https://github.com/pouchdb/pouchdb/pull/2472]). This pushed 
 conflicts into the target database, but on the upside, you can sync ~95k 
 documents from npm's skimdb repository to the browser in less than 20 
 minutes! (See [npm-browser.com|http://npm-browser.com] for a demo.)
 What an amazing story we could tell about the beauty of CouchDB replication, 
 if only this trick actually worked!
 My proposal is a simple one: just add the {{revs}} and {{open_revs}} options 
 to {{_all_docs}}. 

[jira] [Commented] (COUCHDB-2310) Add a bulk API for revs open_revs

2015-01-27 Thread Jan Lehnardt (JIRA)

[ 
https://issues.apache.org/jira/browse/COUCHDB-2310?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14293450#comment-14293450
 ] 

Jan Lehnardt commented on COUCHDB-2310:
---

[~benoitc] any news? :)

 Add a bulk API for revs  open_revs
 ---

 Key: COUCHDB-2310
 URL: https://issues.apache.org/jira/browse/COUCHDB-2310
 Project: CouchDB
  Issue Type: Bug
  Security Level: public(Regular issues) 
  Components: HTTP Interface
Reporter: Nolan Lawson

 CouchDB replication is too slow.
 And what makes it so slow is that it's just so unnecessarily chatty. During 
 replication, you have to do a separate GET for each individual document, in 
 order to get the full {{_revisions}} object for that document (using the 
 {{revs}} and {{open_revs}} parameters ndash; refer to [the TouchDB 
 writeup|https://github.com/couchbaselabs/TouchDB-iOS/wiki/Replication-Algorithm]
  or [Benoit's writeup|http://dataprotocols.org/couchdb-replication/] if you 
 need a refresher).
 So for example, let's say you've got a database full of 10,000 documents, and 
 you replicate using a batch size of 500 (batch sizes are configurable in 
 PouchDB). The conversation for a single batch basically looks like this:
 {code}
 - REPLICATOR: gimme 500 changes since seq X (1 GET request)
   - SOURCE: okay
 - REPLICATOR: gimme the _revs_diff for these 500 docs/_revs (1 POST request)
   - SOURCE: okay
 - repeat 500 times:
   - REPLICATOR: gimme the _revisions for doc n with _revs [...] (1 GET 
 request)
 - SOURCE: okay
 - REPLICATOR: here's a _bulk_docs with 500 documents (1 POST request)
 - TARGET: okay
 {code}
 See the problem here? That 500-loop, where we have to do a GET for each one 
 of 500 documents, is a lot of unnecessary back-and-forth, considering that 
 the replicator already knows what it needs before the loop starts. You can 
 parallelize, but if you assume a browser (e.g. for PouchDB), most browsers 
 only let you do ~8 simultaneous requests at once. Plus, there's latency and 
 HTTP headers to consider. So overall, it's not cool.
 So why do we even need to do the separate requests? Shouldn't {{_all_docs}} 
 be good enough? Turns out it's not, because we need this special 
 {{_revisions}} object.
 For example, consider a document {{'foo'}} with 10 revisions. You may compact 
 the database, in which case revisions {{1-x}} through {{9-x}} are no longer 
 retrievable. However, if you query using {{revs}} and {{open_revs}}, those 
 rev IDs are still available:
 {code}
 $ curl 'http://nolan.iriscouch.com/test/foo?revs=trueopen_revs=all'
 {
   _id: foo,
   _rev: 10-c78e199ad5e996b240c9d6482907088e,
   _revisions: {
 start: 10,
 ids: [
   c78e199ad5e996b240c9d6482907088e,
   f560283f1968a05046f0c38e468006bb,
   0091198554171c632c27c8342ddec5af,
   e0a023e2ea59db73f812ad773ea08b17,
   65d7f8b8206a244035edd9f252f206ad,
   069d1432a003c58bdd23f01ff80b718f,
   d21f26bb604b7fe9eba03ce4562cf37b,
   31d380f99a6e54875855e1c24469622d,
   3b4791360024426eadafe31542a2c34b,
   967a00dff5e02add41819138abb3284d
 ]
   }
 }
 {code}
 And in the replication algorithm, _this full \_revisions object is required_ 
 at the point when you copy the document from one database to another, which 
 is accomplished with a POST to {{_bulk_docs}} using {{new_edits=false}}. If 
 you don't have the full {{_revisions}} object, CouchDB accepts the new 
 revision, but considers it to be a conflict. (The exception is with 
 generation-1 documents, since they have no history, so as it says in the 
 TouchDB writeup, you can safely just use {{_all_docs}} as an optimization for 
 such documents.)
 And unfortunately, this {{_revision}} object is only available from the {{GET 
 /:dbid/:docid}} endpoint. Trust me; I've tried the other APIs. You can't get 
 it anywhere else.
 This is a huge problem, especially in PouchDB where we often have to deal 
 with CORS, meaning the number of HTTP requests is doubled. So for those 500 
 GETs, it's an extra 500 OPTIONs, which is just unacceptable.
 Replication does not have to be slow. While we were experimenting with ways 
 of fetching documents in bulk, we tried a technique that just relied on using 
 {{_changes}} with {{include_docs=true}} 
 ([|\#2472|https://github.com/pouchdb/pouchdb/pull/2472]). This pushed 
 conflicts into the target database, but on the upside, you can sync ~95k 
 documents from npm's skimdb repository to the browser in less than 20 
 minutes! (See [npm-browser.com|http://npm-browser.com] for a demo.)
 What an amazing story we could tell about the beauty of CouchDB replication, 
 if only this trick actually worked!
 My proposal is a simple one: just add the {{revs}} and {{open_revs}} options 
 to {{_all_docs}}. Presumably this would be aligned with {{keys}}, so similar 
 to how 

[jira] [Commented] (COUCHDB-2541) couchdbctl

2015-01-19 Thread Jan Lehnardt (JIRA)

[ 
https://issues.apache.org/jira/browse/COUCHDB-2541?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14282636#comment-14282636
 ] 

Jan Lehnardt commented on COUCHDB-2541:
---

Are you proposing we should have such a tool? Or do you have one?

There is https://github.com/dscape/futoncli which aims to do something similar 
and afaik @dscape is up for donating it to the ASF.

Maybe we can roll it into the `couchdb` script (by way of clever wrapping, I 
don’t want to do all this in pure shell :), so it is all one thing. (maybe this 
is a bad idea, dunno :)

Either way though, I really like this :)

 couchdbctl
 --

 Key: COUCHDB-2541
 URL: https://issues.apache.org/jira/browse/COUCHDB-2541
 Project: CouchDB
  Issue Type: New Feature
  Security Level: public(Regular issues) 
Reporter: Alexander Shorin

 couchdbctl is CouchDB control service utility that aims to help users manage 
 and inspect their CouchDB instance, keeping it well and health.
 Few ideas what it may do:
 - register users with easy:
 {code}
 $ couchdbctl users add Jan
 Password:
 {code}
 hides routines to create /_users/org.couchdb.users:Jan document with all 
 required fields;
 - run service operations:
 {code}
 $ couchdbctl db compact
 {code}
 - connect to node and provide shell:
 {code}
 $ couchdbctl attach
 {code}
 - run security audit as like as 
 [audit-couchdb|https://github.com/iriscouch/audit_couchdb] or 
 [couchdb-auditor|https://github.com/kxepal/python-couchdb-auditor] does;
 {code}
 $ couchdbctl audit
 {code}
 - see erltop;
 {code}
 $ couchdbctl top
 {code}
 - monitor stats and active tasks in realtime;
 - run replications with single command without worry about JSON and required 
 fields:
 {code}
 $ couchdbctl replicate foo http://example.com/bar --continuous --create-target
 {code}
 - check cluster health, add/remove nodes to it;
 - explain errors in logs:
 {code}
 $ couchdbctl errors
 [error] [0.125.0] {error_report,0.30.0,
  {0.125.0,crash_report,
   [[{initial_call,{couch_file,init,['Argument__1']}},
 {pid,0.125.0},
 {registered_name,[]},
 {error_info,
  {exit,
   {{badmatch,{error,eacces}},
[{couch_file,init,1,
 ...
 eacess error - insufficient or invalid permissions, please verify that 
 couchdb user has all r permissions to the following paths:
 /var/lib/couchdb - read+write
 /var/log/couchdb - read+write
 /etc/couchdb - read+write
 /usr/lib64/couchdb/erlang/lib/couch-2.0.0/priv/lib - read
 {code}
 And so on and so forth. It's easy to find how this utility may improve users 
 experience with CouchDB by simplifying common maintaining routes.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (COUCHDB-2541) couchdbctl

2015-01-19 Thread Jan Lehnardt (JIRA)

[ 
https://issues.apache.org/jira/browse/COUCHDB-2541?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14282741#comment-14282741
 ] 

Jan Lehnardt commented on COUCHDB-2541:
---

 `couchdb` script is one the made in bash? I don't feel that this will be a 
 simple in implementation, but indeed it will be simple in realization (sorry 
 Windows).

What I meant is that the cli name could maybe `couchdb` instead of 
`couchdbctl`. I wouldn’t want to implement all the functionality in shell (I 
think/hope we use plain sh, not bash), but pipe all commands to a binary where 
such things are easier implemented. E.g. `couchdb start` runs the shell routine 
that starts CouchDB, `couchdb db compact` would not match any shell routine, so 
we pass this onto a sub-program that does the job.


 couchdbctl
 --

 Key: COUCHDB-2541
 URL: https://issues.apache.org/jira/browse/COUCHDB-2541
 Project: CouchDB
  Issue Type: New Feature
  Security Level: public(Regular issues) 
Reporter: Alexander Shorin

 couchdbctl is CouchDB control service utility that aims to help users manage 
 and inspect their CouchDB instance, keeping it well and health.
 Few ideas what it may do:
 - register users with easy:
 {code}
 $ couchdbctl users add Jan
 Password:
 {code}
 hides routines to create /_users/org.couchdb.users:Jan document with all 
 required fields;
 - run service operations:
 {code}
 $ couchdbctl db compact
 {code}
 - connect to node and provide shell:
 {code}
 $ couchdbctl attach
 {code}
 - run security audit as like as 
 [audit-couchdb|https://github.com/iriscouch/audit_couchdb] or 
 [couchdb-auditor|https://github.com/kxepal/python-couchdb-auditor] does;
 {code}
 $ couchdbctl audit
 {code}
 - see erltop;
 {code}
 $ couchdbctl top
 {code}
 - monitor stats and active tasks in realtime;
 - run replications with single command without worry about JSON and required 
 fields:
 {code}
 $ couchdbctl replicate foo http://example.com/bar --continuous --create-target
 {code}
 - check cluster health, add/remove nodes to it;
 - explain errors in logs:
 {code}
 $ couchdbctl errors
 [error] [0.125.0] {error_report,0.30.0,
  {0.125.0,crash_report,
   [[{initial_call,{couch_file,init,['Argument__1']}},
 {pid,0.125.0},
 {registered_name,[]},
 {error_info,
  {exit,
   {{badmatch,{error,eacces}},
[{couch_file,init,1,
 ...
 eacess error - insufficient or invalid permissions, please verify that 
 couchdb user has all r permissions to the following paths:
 /var/lib/couchdb - read+write
 /var/log/couchdb - read+write
 /etc/couchdb - read+write
 /usr/lib64/couchdb/erlang/lib/couch-2.0.0/priv/lib - read
 {code}
 And so on and so forth. It's easy to find how this utility may improve users 
 experience with CouchDB by simplifying common maintaining routes.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (COUCHDB-2310) Add a bulk API for revs open_revs

2015-01-05 Thread Jan Lehnardt (JIRA)

[ 
https://issues.apache.org/jira/browse/COUCHDB-2310?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14264487#comment-14264487
 ] 

Jan Lehnardt commented on COUCHDB-2310:
---

[~benoitc] Just to make sure I read this correctly: You have a 2.x compatible 
_bulk_get implementation? That’d be awesome!

I’m sure we can sort out the rest.

 Add a bulk API for revs  open_revs
 ---

 Key: COUCHDB-2310
 URL: https://issues.apache.org/jira/browse/COUCHDB-2310
 Project: CouchDB
  Issue Type: Bug
  Security Level: public(Regular issues) 
  Components: HTTP Interface
Reporter: Nolan Lawson

 CouchDB replication is too slow.
 And what makes it so slow is that it's just so unnecessarily chatty. During 
 replication, you have to do a separate GET for each individual document, in 
 order to get the full {{_revisions}} object for that document (using the 
 {{revs}} and {{open_revs}} parameters ndash; refer to [the TouchDB 
 writeup|https://github.com/couchbaselabs/TouchDB-iOS/wiki/Replication-Algorithm]
  or [Benoit's writeup|http://dataprotocols.org/couchdb-replication/] if you 
 need a refresher).
 So for example, let's say you've got a database full of 10,000 documents, and 
 you replicate using a batch size of 500 (batch sizes are configurable in 
 PouchDB). The conversation for a single batch basically looks like this:
 {code}
 - REPLICATOR: gimme 500 changes since seq X (1 GET request)
   - SOURCE: okay
 - REPLICATOR: gimme the _revs_diff for these 500 docs/_revs (1 POST request)
   - SOURCE: okay
 - repeat 500 times:
   - REPLICATOR: gimme the _revisions for doc n with _revs [...] (1 GET 
 request)
 - SOURCE: okay
 - REPLICATOR: here's a _bulk_docs with 500 documents (1 POST request)
 - TARGET: okay
 {code}
 See the problem here? That 500-loop, where we have to do a GET for each one 
 of 500 documents, is a lot of unnecessary back-and-forth, considering that 
 the replicator already knows what it needs before the loop starts. You can 
 parallelize, but if you assume a browser (e.g. for PouchDB), most browsers 
 only let you do ~8 simultaneous requests at once. Plus, there's latency and 
 HTTP headers to consider. So overall, it's not cool.
 So why do we even need to do the separate requests? Shouldn't {{_all_docs}} 
 be good enough? Turns out it's not, because we need this special 
 {{_revisions}} object.
 For example, consider a document {{'foo'}} with 10 revisions. You may compact 
 the database, in which case revisions {{1-x}} through {{9-x}} are no longer 
 retrievable. However, if you query using {{revs}} and {{open_revs}}, those 
 rev IDs are still available:
 {code}
 $ curl 'http://nolan.iriscouch.com/test/foo?revs=trueopen_revs=all'
 {
   _id: foo,
   _rev: 10-c78e199ad5e996b240c9d6482907088e,
   _revisions: {
 start: 10,
 ids: [
   c78e199ad5e996b240c9d6482907088e,
   f560283f1968a05046f0c38e468006bb,
   0091198554171c632c27c8342ddec5af,
   e0a023e2ea59db73f812ad773ea08b17,
   65d7f8b8206a244035edd9f252f206ad,
   069d1432a003c58bdd23f01ff80b718f,
   d21f26bb604b7fe9eba03ce4562cf37b,
   31d380f99a6e54875855e1c24469622d,
   3b4791360024426eadafe31542a2c34b,
   967a00dff5e02add41819138abb3284d
 ]
   }
 }
 {code}
 And in the replication algorithm, _this full \_revisions object is required_ 
 at the point when you copy the document from one database to another, which 
 is accomplished with a POST to {{_bulk_docs}} using {{new_edits=false}}. If 
 you don't have the full {{_revisions}} object, CouchDB accepts the new 
 revision, but considers it to be a conflict. (The exception is with 
 generation-1 documents, since they have no history, so as it says in the 
 TouchDB writeup, you can safely just use {{_all_docs}} as an optimization for 
 such documents.)
 And unfortunately, this {{_revision}} object is only available from the {{GET 
 /:dbid/:docid}} endpoint. Trust me; I've tried the other APIs. You can't get 
 it anywhere else.
 This is a huge problem, especially in PouchDB where we often have to deal 
 with CORS, meaning the number of HTTP requests is doubled. So for those 500 
 GETs, it's an extra 500 OPTIONs, which is just unacceptable.
 Replication does not have to be slow. While we were experimenting with ways 
 of fetching documents in bulk, we tried a technique that just relied on using 
 {{_changes}} with {{include_docs=true}} 
 ([|\#2472|https://github.com/pouchdb/pouchdb/pull/2472]). This pushed 
 conflicts into the target database, but on the upside, you can sync ~95k 
 documents from npm's skimdb repository to the browser in less than 20 
 minutes! (See [npm-browser.com|http://npm-browser.com] for a demo.)
 What an amazing story we could tell about the beauty of CouchDB replication, 
 if only this trick actually worked!
 My proposal is a simple one: just 

[jira] [Commented] (COUCHDB-2310) Add a bulk API for revs open_revs

2014-12-18 Thread Jan Lehnardt (JIRA)

[ 
https://issues.apache.org/jira/browse/COUCHDB-2310?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14252457#comment-14252457
 ] 

Jan Lehnardt commented on COUCHDB-2310:
---

How about this for an option:

1. We include the rcouch code in 1.7.0 as _bulk_get.
2. We *may* make a chttpd version in 2.0.
3. We mark it/them as deprecated from the start.
4. We design a desirable replication stream for 2.x and forward together with 
the PouchDB and TouchDB folks. Roughly, this would be a multipart stream that 
mirrors /_changes + include_docs + open_revs (plus handwaving, bear with me). 
Something like /db/_replication_stream or so.

We can’t get around POST APIs for potentially large key-requests as per real 
world HTTP constraints. Maybe HTTP2 with its multiplexing helps? I don’t know. 
We should also definitely support the GET version of these requests if the 
client knows that the amount of data it has to upload to get the right response 
is within any practical limits for the given setup.

I’d say though, for the discussion of this ticket, that is out of scope.



 Add a bulk API for revs  open_revs
 ---

 Key: COUCHDB-2310
 URL: https://issues.apache.org/jira/browse/COUCHDB-2310
 Project: CouchDB
  Issue Type: Bug
  Security Level: public(Regular issues) 
  Components: HTTP Interface
Reporter: Nolan Lawson

 CouchDB replication is too slow.
 And what makes it so slow is that it's just so unnecessarily chatty. During 
 replication, you have to do a separate GET for each individual document, in 
 order to get the full {{_revisions}} object for that document (using the 
 {{revs}} and {{open_revs}} parameters ndash; refer to [the TouchDB 
 writeup|https://github.com/couchbaselabs/TouchDB-iOS/wiki/Replication-Algorithm]
  or [Benoit's writeup|http://dataprotocols.org/couchdb-replication/] if you 
 need a refresher).
 So for example, let's say you've got a database full of 10,000 documents, and 
 you replicate using a batch size of 500 (batch sizes are configurable in 
 PouchDB). The conversation for a single batch basically looks like this:
 {code}
 - REPLICATOR: gimme 500 changes since seq X (1 GET request)
   - SOURCE: okay
 - REPLICATOR: gimme the _revs_diff for these 500 docs/_revs (1 POST request)
   - SOURCE: okay
 - repeat 500 times:
   - REPLICATOR: gimme the _revisions for doc n with _revs [...] (1 GET 
 request)
 - SOURCE: okay
 - REPLICATOR: here's a _bulk_docs with 500 documents (1 POST request)
 - TARGET: okay
 {code}
 See the problem here? That 500-loop, where we have to do a GET for each one 
 of 500 documents, is a lot of unnecessary back-and-forth, considering that 
 the replicator already knows what it needs before the loop starts. You can 
 parallelize, but if you assume a browser (e.g. for PouchDB), most browsers 
 only let you do ~8 simultaneous requests at once. Plus, there's latency and 
 HTTP headers to consider. So overall, it's not cool.
 So why do we even need to do the separate requests? Shouldn't {{_all_docs}} 
 be good enough? Turns out it's not, because we need this special 
 {{_revisions}} object.
 For example, consider a document {{'foo'}} with 10 revisions. You may compact 
 the database, in which case revisions {{1-x}} through {{9-x}} are no longer 
 retrievable. However, if you query using {{revs}} and {{open_revs}}, those 
 rev IDs are still available:
 {code}
 $ curl 'http://nolan.iriscouch.com/test/foo?revs=trueopen_revs=all'
 {
   _id: foo,
   _rev: 10-c78e199ad5e996b240c9d6482907088e,
   _revisions: {
 start: 10,
 ids: [
   c78e199ad5e996b240c9d6482907088e,
   f560283f1968a05046f0c38e468006bb,
   0091198554171c632c27c8342ddec5af,
   e0a023e2ea59db73f812ad773ea08b17,
   65d7f8b8206a244035edd9f252f206ad,
   069d1432a003c58bdd23f01ff80b718f,
   d21f26bb604b7fe9eba03ce4562cf37b,
   31d380f99a6e54875855e1c24469622d,
   3b4791360024426eadafe31542a2c34b,
   967a00dff5e02add41819138abb3284d
 ]
   }
 }
 {code}
 And in the replication algorithm, _this full \_revisions object is required_ 
 at the point when you copy the document from one database to another, which 
 is accomplished with a POST to {{_bulk_docs}} using {{new_edits=false}}. If 
 you don't have the full {{_revisions}} object, CouchDB accepts the new 
 revision, but considers it to be a conflict. (The exception is with 
 generation-1 documents, since they have no history, so as it says in the 
 TouchDB writeup, you can safely just use {{_all_docs}} as an optimization for 
 such documents.)
 And unfortunately, this {{_revision}} object is only available from the {{GET 
 /:dbid/:docid}} endpoint. Trust me; I've tried the other APIs. You can't get 
 it anywhere else.
 This is a huge problem, especially in PouchDB where we often have to deal 
 with CORS, meaning the number of 

[jira] [Created] (COUCHDB-2495) Switch PBKDF2 to SHA256

2014-12-08 Thread Jan Lehnardt (JIRA)
Jan Lehnardt created COUCHDB-2495:
-

 Summary: Switch PBKDF2 to SHA256
 Key: COUCHDB-2495
 URL: https://issues.apache.org/jira/browse/COUCHDB-2495
 Project: CouchDB
  Issue Type: Improvement
  Security Level: public (Regular issues)
  Components: Database Core
Reporter: Jan Lehnardt


We currently use SHA1 for PBKDF2 hashing. While the way SHA1 is used, this 
doesn’t pose a security issue, it is generally advisable to use a newer hash 
function, e.g. SHA256. [~kxepal] noted on the user@ list, that this would leave 
older Erlang versions (R14 and R15) behind, so we can’t do it right now, but we 
should think about it for the future.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (COUCHDB-2488) Respawn no longer works

2014-12-04 Thread Jan Lehnardt (JIRA)

[ 
https://issues.apache.org/jira/browse/COUCHDB-2488?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14234171#comment-14234171
 ] 

Jan Lehnardt commented on COUCHDB-2488:
---

Curious! I am fairly sure we didn’t change anything there.

In addition, I think the 1.6.1 behaviour is correct, as you shouldn’t get 
restarts when you normally shut down the CouchDB instance.

A better test would be to kill the beam[.smp] process and waiting for a respawn.

What are your respective Erlang versions?

(also, hi  waves from Kotti :)

 Respawn no longer works
 ---

 Key: COUCHDB-2488
 URL: https://issues.apache.org/jira/browse/COUCHDB-2488
 Project: CouchDB
  Issue Type: Bug
  Security Level: public(Regular issues) 
Reporter: Kristine Jetzke

 I noticed that CouchDB does not get restarted anymore if it was killed. Were 
 there any changes between 1.5 and 1.6?
 Using 1.5.1:
 {code}
 tine$ couchdb -r 5 -b
 Apache CouchDB has started, time to relax.
 tine$ couchdb -k
 Apache CouchDB crashed, restarting in 5 seconds.
 Apache CouchDB has been killed.
 tine$ curl localhost:5984
 {couchdb:Welcome,uuid:9ed01bc924270ea8c58fb659db662eb7,version:1.5.1,vendor:{version:1.6.1-1,name:Homebrew}}
 {code}
 Using 1.6.1:
 {code}
 tine$ couchdb -r 5 -b
 Apache CouchDB has started, time to relax.
 tine$ couchdb -k
 Apache CouchDB has been killed.
 tine$ curl localhost:5984
 curl: (7) Failed to connect to localhost port 5984: Connection refused
 {code}
 I'm on Mac OS X Yosemite. I used homebrew to install CouchDB and {{brew 
 switch couchdb 1.5.1}} and {{brew switch couchdb 1.6.1_1}} to test the 
 different versions. However, I initially noticed the problem on a system with 
 only 1.6.1 installed.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (COUCHDB-1577) Refuse start when underlying Erlang version has changed

2014-11-19 Thread Jan Lehnardt (JIRA)

[ 
https://issues.apache.org/jira/browse/COUCHDB-1577?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14217677#comment-14217677
 ] 

Jan Lehnardt commented on COUCHDB-1577:
---

[~kxepal] yeah, I think so™ :)

 Refuse start when underlying Erlang version has changed
 ---

 Key: COUCHDB-1577
 URL: https://issues.apache.org/jira/browse/COUCHDB-1577
 Project: CouchDB
  Issue Type: Bug
Affects Versions: 1.2
 Environment: All
Reporter: Jan Lehnardt

 When a user installs CouchDB from source and then updates the Erlang version 
 on the system, spurious errors can occur (like COUCHDB-1571). On install, we 
 should detect the Erlang version and store it with the CouchDB installation, 
 and then bail if things don't match up during start time. I recon this could 
 be coded entirely in bin/couchdb, no erlang required.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (COUCHDB-732) ruby versions of the query server spec functions

2014-11-10 Thread Jan Lehnardt (JIRA)

[ 
https://issues.apache.org/jira/browse/COUCHDB-732?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14205209#comment-14205209
 ] 

Jan Lehnardt commented on COUCHDB-732:
--

Word!

 ruby versions of the query server spec functions
 

 Key: COUCHDB-732
 URL: https://issues.apache.org/jira/browse/COUCHDB-732
 Project: CouchDB
  Issue Type: Improvement
  Components: Test Suite
Reporter: Matt Lyon
Assignee: Robert Kowalski
Priority: Trivial

 In the process of creating the a ruby version of the query server, I wrote 
 these to determine it was working correctly. Even though the repository for 
 the ruby query server contains its own test suite, I figure these might be 
 welcomed into the main query server specs. If not, no big deal. They assume 
 the ruby query server's repository is in the same parent directory as couchdb.
 diff --git a/test/view_server/query_server_spec.rb 
 b/test/view_server/query_server_spec.rb
 index 1de8e5b..c427e35 100644
 --- a/test/view_server/query_server_spec.rb
 +++ b/test/view_server/query_server_spec.rb
 @@ -117,7 +117,8 @@ class QueryServerRunner  OSProcessRunner
  
COMMANDS = {
  js = #{COUCH_ROOT}/bin/couchjs_dev 
 #{COUCH_ROOT}/share/server/main.js,
 -erlang = #{COUCH_ROOT}/test/view_server/run_native_process.es
 +erlang = #{COUCH_ROOT}/test/view_server/run_native_process.es,
 +ruby = /usr/bin/env ruby -- 
 #{COUCH_ROOT}/../couchdb-ruby-query-server/bin/couchdb_view_server --safe
}
  
def self.run_command
 @@ -137,13 +138,14 @@ end
  functions = {
emit-twice = {
  js = %{function(doc){emit(foo,doc.a); emit(bar,doc.a)}},
 -erlang = -ERLANG
 +erlang = -ERLANG,
fun({Doc}) -
  A = proplists:get_value(a, Doc, null),
  Emit(foo, A),
  Emit(bar, A)
end.
  ERLANG
 +ruby = lambda{|doc| emit('foo',doc['a']); emit('bar',doc['a']) }
},
emit-once = {
  js = -JS,
 @@ -151,20 +153,39 @@ functions = {
  emit(baz,doc.a)
}
JS
 -erlang = -ERLANG
 +erlang = -ERLANG,
  fun({Doc}) -
  A = proplists:get_value(a, Doc, null),
  Emit(baz, A)
  end.
  ERLANG
 +ruby = -RUBY
 +  lambda {|doc| emit(baz, doc['a']) }
 +RUBY
 +  },
 +  map-invalid-expression = {
 +js = %{function(doc {emit(foo, doc.a);}},
 +erlang = %|fun({Doc}|,
 +ruby = lambda{
 +  },
 +  map-non-function-expression = {
 +js = 3,
 +erlang = 3,
 +ruby = 3
 +  },
 +  map-logging = {
 +js = %{function(doc){ log(doc); emit(logged, doc.a);}},
 +ruby = %{lambda{|doc| log(doc); emit(logged, doc['a']) }}
},
reduce-values-length = {
  js = %{function(keys, values, rereduce) { return values.length; }},
 -erlang = %{fun(Keys, Values, ReReduce) - length(Values) end.}
 +erlang = %{fun(Keys, Values, ReReduce) - length(Values) end.},
 +ruby = %{lambda{|keys, values, rereduce| values.size }}
},
reduce-values-sum = {
  js = %{function(keys, values, rereduce) { return sum(values); }},
 -erlang = %{fun(Keys, Values, ReReduce) - lists:sum(Values) end.}
 +erlang = %{fun(Keys, Values, ReReduce) - lists:sum(Values) end.},
 +ruby = %{lambda{|keys, values, rereduce| values.inject(0){|sum, val| 
 sum += val} }}
},
validate-forbidden = {
  js = -JS,
 @@ -173,7 +194,7 @@ functions = {
throw({forbidden:bad doc}); foo bar;
}
JS
 -erlang = -ERLANG
 +erlang = -ERLANG,
fun({NewDoc}, _OldDoc, _UserCtx) -
  case proplists:get_value(bad, NewDoc) of
  undefined - 1;
 @@ -181,6 +202,13 @@ functions = {
  end
end.
  ERLANG
 +ruby = -RUBY
 +  lambda{|new_doc, old_doc, user_ctx|
 +if (new_doc['bad'])
 +  throw(:forbidden, bad doc)
 +end
 +  }
 +RUBY
},
show-simple = {
  js = -JS,
 @@ -189,7 +217,7 @@ functions = {
  return [doc.title, doc.body].join(' - ');
  }
  JS
 -erlang = -ERLANG
 +erlang = -ERLANG,
fun({Doc}, Req) -
  Title = proplists:get_value(title, Doc),
  Body = proplists:get_value(body, Doc),
 @@ -197,6 +225,9 @@ functions = {
  {[{body, Resp}]}
end.
  ERLANG
 +ruby = -RUBY
 +  lambda{|doc, req| [doc['title'], doc['body']].join(' - ') }
 +RUBY
},
show-headers = {
  js = -JS,
 @@ -206,7 +237,7 @@ functions = {
return resp;
  }
   JS
 -erlang = -ERLANG
 +erlang = -ERLANG,
fun({Doc}, Req) -
  Title = proplists:get_value(title, Doc),
  Body = proplists:get_value(body, Doc),
 @@ -218,6 +249,12 @@ functions = {
]}
end.
  ERLANG
 +ruby = -RUBY
 +  lambda {|doc, 

[jira] [Created] (COUCHDB-2433) Allow downloading of views

2014-11-04 Thread Jan Lehnardt (JIRA)
Jan Lehnardt created COUCHDB-2433:
-

 Summary: Allow downloading of views
 Key: COUCHDB-2433
 URL: https://issues.apache.org/jira/browse/COUCHDB-2433
 Project: CouchDB
  Issue Type: Improvement
  Security Level: public (Regular issues)
  Components: Fauxton
Reporter: Jan Lehnardt


I have a non-technical user of CouchDB that would like a “JSON Export” of views 
in Fauxton. They can’t use the command line where they can just `curl $viewurl 
 export.json`.

One way to implement this is add a new query parameter to view queries could be 
`/db/_design/_view/name?download=true` which adds a Content-Disposition header 
so browsers offer the link as a download (and whatever else is necessary to 
make browsers behave :)



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (COUCHDB-2433) Allow downloading of views

2014-11-04 Thread Jan Lehnardt (JIRA)

 [ 
https://issues.apache.org/jira/browse/COUCHDB-2433?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jan Lehnardt updated COUCHDB-2433:
--
 Priority: Minor  (was: Major)
Affects Version/s: 2.0.0
  Skill Level: New Contributors Level (Easy)

 Allow downloading of views
 --

 Key: COUCHDB-2433
 URL: https://issues.apache.org/jira/browse/COUCHDB-2433
 Project: CouchDB
  Issue Type: Improvement
  Security Level: public(Regular issues) 
  Components: Fauxton
Affects Versions: 2.0.0
Reporter: Jan Lehnardt
Priority: Minor

 I have a non-technical user of CouchDB that would like a “JSON Export” of 
 views in Fauxton. They can’t use the command line where they can just `curl 
 $viewurl  export.json`.
 One way to implement this is add a new query parameter to view queries could 
 be `/db/_design/_view/name?download=true` which adds a Content-Disposition 
 header so browsers offer the link as a download (and whatever else is 
 necessary to make browsers behave :)



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Reopened] (COUCHDB-1985) ./bootstrap feature deprecation warnings

2014-11-03 Thread Jan Lehnardt (JIRA)

 [ 
https://issues.apache.org/jira/browse/COUCHDB-1985?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jan Lehnardt reopened COUCHDB-1985:
---

 ./bootstrap feature deprecation warnings
 

 Key: COUCHDB-1985
 URL: https://issues.apache.org/jira/browse/COUCHDB-1985
 Project: CouchDB
  Issue Type: Bug
  Components: Build System
Affects Versions: 1.x.x
Reporter: Jan Lehnardt

 Running ./bootstrap on master gives me:
  ./bootstrap 
 configure.ac:29: installing 'build-aux/compile'
 configure.ac:34: installing 'build-aux/config.guess'
 configure.ac:34: installing 'build-aux/config.sub'
 configure.ac:27: installing 'build-aux/install-sh'
 configure.ac:27: installing 'build-aux/missing'
 src/couchdb/priv/Makefile.am:44: warning: source file 
 'couch_ejson_compare/couch_ejson_compare.c' is in a subdirectory,
 src/couchdb/priv/Makefile.am:44: but option 'subdir-objects' is disabled
 automake: warning: possible forward-incompatibility.
 automake: At least a source file is in a subdirectory, but the 
 'subdir-objects'
 automake: automake option hasn't been enabled.  For now, the corresponding 
 output
 automake: object file(s) will be placed in the top-level directory.  However,
 automake: this behaviour will change in future Automake versions: they will
 automake: unconditionally cause object files to be placed in the same 
 subdirectory
 automake: of the corresponding sources.
 automake: You are advised to start using 'subdir-objects' option throughout 
 your
 automake: project, to avoid future incompatibilities.
 src/couchdb/priv/Makefile.am:52: warning: source file 
 'icu_driver/couch_icu_driver.c' is in a subdirectory,
 src/couchdb/priv/Makefile.am:52: but option 'subdir-objects' is disabled
 src/couchdb/priv/Makefile.am:61: warning: source file 'couch_js/http.c' is in 
 a subdirectory,
 src/couchdb/priv/Makefile.am:61: but option 'subdir-objects' is disabled
 src/couchdb/priv/Makefile.am:61: warning: source file 'couch_js/main.c' is in 
 a subdirectory,
 src/couchdb/priv/Makefile.am:61: but option 'subdir-objects' is disabled
 src/couchdb/priv/Makefile.am:61: warning: source file 'couch_js/utf8.c' is in 
 a subdirectory,
 src/couchdb/priv/Makefile.am:61: but option 'subdir-objects' is disabled
 src/couchdb/priv/Makefile.am:61: warning: source file 'couch_js/util.c' is in 
 a subdirectory,
 src/couchdb/priv/Makefile.am:61: but option 'subdir-objects' is disabled
 src/couchdb/priv/Makefile.am:103: warning: source file 
 'spawnkillable/couchspawnkillable_win.c' is in a subdirectory,
 src/couchdb/priv/Makefile.am:103: but option 'subdir-objects' is disabled
 src/couchdb/priv/Makefile.am: installing 'build-aux/depcomp'
 src/ejson/Makefile.am:21: warning: source file 'yajl/yajl_alloc.c' is in a 
 subdirectory,
 src/ejson/Makefile.am:21: but option 'subdir-objects' is disabled
 src/ejson/Makefile.am:21: warning: source file 'yajl/yajl_buf.c' is in a 
 subdirectory,
 src/ejson/Makefile.am:21: but option 'subdir-objects' is disabled
 src/ejson/Makefile.am:21: warning: source file 'yajl/yajl.c' is in a 
 subdirectory,
 src/ejson/Makefile.am:21: but option 'subdir-objects' is disabled
 src/ejson/Makefile.am:21: warning: source file 'yajl/yajl_encode.c' is in a 
 subdirectory,
 src/ejson/Makefile.am:21: but option 'subdir-objects' is disabled
 src/ejson/Makefile.am:21: warning: source file 'yajl/yajl_gen.c' is in a 
 subdirectory,
 src/ejson/Makefile.am:21: but option 'subdir-objects' is disabled
 src/ejson/Makefile.am:21: warning: source file 'yajl/yajl_lex.c' is in a 
 subdirectory,
 src/ejson/Makefile.am:21: but option 'subdir-objects' is disabled
 src/ejson/Makefile.am:21: warning: source file 'yajl/yajl_parser.c' is in a 
 subdirectory,
 src/ejson/Makefile.am:21: but option 'subdir-objects' is disabled
 src/snappy/Makefile.am:16: warning: source file 'google-snappy/snappy.cc' is 
 in a subdirectory,
 src/snappy/Makefile.am:16: but option 'subdir-objects' is disabled
 src/snappy/Makefile.am:16: warning: source file 
 'google-snappy/snappy-sinksource.cc' is in a subdirectory,
 src/snappy/Makefile.am:16: but option 'subdir-objects' is disabled
 src/snappy/Makefile.am:16: warning: source file 
 'google-snappy/snappy-stubs-internal.cc' is in a subdirectory,
 src/snappy/Makefile.am:16: but option 'subdir-objects' is disabled
 You have bootstrapped Apache CouchDB, time to relax.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (COUCHDB-1985) ./bootstrap feature deprecation warnings

2014-11-03 Thread Jan Lehnardt (JIRA)

 [ 
https://issues.apache.org/jira/browse/COUCHDB-1985?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jan Lehnardt updated COUCHDB-1985:
--
Affects Version/s: 1.x.x

 ./bootstrap feature deprecation warnings
 

 Key: COUCHDB-1985
 URL: https://issues.apache.org/jira/browse/COUCHDB-1985
 Project: CouchDB
  Issue Type: Bug
  Components: Build System
Affects Versions: 1.x.x
Reporter: Jan Lehnardt

 Running ./bootstrap on master gives me:
  ./bootstrap 
 configure.ac:29: installing 'build-aux/compile'
 configure.ac:34: installing 'build-aux/config.guess'
 configure.ac:34: installing 'build-aux/config.sub'
 configure.ac:27: installing 'build-aux/install-sh'
 configure.ac:27: installing 'build-aux/missing'
 src/couchdb/priv/Makefile.am:44: warning: source file 
 'couch_ejson_compare/couch_ejson_compare.c' is in a subdirectory,
 src/couchdb/priv/Makefile.am:44: but option 'subdir-objects' is disabled
 automake: warning: possible forward-incompatibility.
 automake: At least a source file is in a subdirectory, but the 
 'subdir-objects'
 automake: automake option hasn't been enabled.  For now, the corresponding 
 output
 automake: object file(s) will be placed in the top-level directory.  However,
 automake: this behaviour will change in future Automake versions: they will
 automake: unconditionally cause object files to be placed in the same 
 subdirectory
 automake: of the corresponding sources.
 automake: You are advised to start using 'subdir-objects' option throughout 
 your
 automake: project, to avoid future incompatibilities.
 src/couchdb/priv/Makefile.am:52: warning: source file 
 'icu_driver/couch_icu_driver.c' is in a subdirectory,
 src/couchdb/priv/Makefile.am:52: but option 'subdir-objects' is disabled
 src/couchdb/priv/Makefile.am:61: warning: source file 'couch_js/http.c' is in 
 a subdirectory,
 src/couchdb/priv/Makefile.am:61: but option 'subdir-objects' is disabled
 src/couchdb/priv/Makefile.am:61: warning: source file 'couch_js/main.c' is in 
 a subdirectory,
 src/couchdb/priv/Makefile.am:61: but option 'subdir-objects' is disabled
 src/couchdb/priv/Makefile.am:61: warning: source file 'couch_js/utf8.c' is in 
 a subdirectory,
 src/couchdb/priv/Makefile.am:61: but option 'subdir-objects' is disabled
 src/couchdb/priv/Makefile.am:61: warning: source file 'couch_js/util.c' is in 
 a subdirectory,
 src/couchdb/priv/Makefile.am:61: but option 'subdir-objects' is disabled
 src/couchdb/priv/Makefile.am:103: warning: source file 
 'spawnkillable/couchspawnkillable_win.c' is in a subdirectory,
 src/couchdb/priv/Makefile.am:103: but option 'subdir-objects' is disabled
 src/couchdb/priv/Makefile.am: installing 'build-aux/depcomp'
 src/ejson/Makefile.am:21: warning: source file 'yajl/yajl_alloc.c' is in a 
 subdirectory,
 src/ejson/Makefile.am:21: but option 'subdir-objects' is disabled
 src/ejson/Makefile.am:21: warning: source file 'yajl/yajl_buf.c' is in a 
 subdirectory,
 src/ejson/Makefile.am:21: but option 'subdir-objects' is disabled
 src/ejson/Makefile.am:21: warning: source file 'yajl/yajl.c' is in a 
 subdirectory,
 src/ejson/Makefile.am:21: but option 'subdir-objects' is disabled
 src/ejson/Makefile.am:21: warning: source file 'yajl/yajl_encode.c' is in a 
 subdirectory,
 src/ejson/Makefile.am:21: but option 'subdir-objects' is disabled
 src/ejson/Makefile.am:21: warning: source file 'yajl/yajl_gen.c' is in a 
 subdirectory,
 src/ejson/Makefile.am:21: but option 'subdir-objects' is disabled
 src/ejson/Makefile.am:21: warning: source file 'yajl/yajl_lex.c' is in a 
 subdirectory,
 src/ejson/Makefile.am:21: but option 'subdir-objects' is disabled
 src/ejson/Makefile.am:21: warning: source file 'yajl/yajl_parser.c' is in a 
 subdirectory,
 src/ejson/Makefile.am:21: but option 'subdir-objects' is disabled
 src/snappy/Makefile.am:16: warning: source file 'google-snappy/snappy.cc' is 
 in a subdirectory,
 src/snappy/Makefile.am:16: but option 'subdir-objects' is disabled
 src/snappy/Makefile.am:16: warning: source file 
 'google-snappy/snappy-sinksource.cc' is in a subdirectory,
 src/snappy/Makefile.am:16: but option 'subdir-objects' is disabled
 src/snappy/Makefile.am:16: warning: source file 
 'google-snappy/snappy-stubs-internal.cc' is in a subdirectory,
 src/snappy/Makefile.am:16: but option 'subdir-objects' is disabled
 You have bootstrapped Apache CouchDB, time to relax.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (COUCHDB-1985) ./bootstrap feature deprecation warnings

2014-11-03 Thread Jan Lehnardt (JIRA)

[ 
https://issues.apache.org/jira/browse/COUCHDB-1985?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14194387#comment-14194387
 ] 

Jan Lehnardt commented on COUCHDB-1985:
---

Let’s keep this open for 1.x.x.

 ./bootstrap feature deprecation warnings
 

 Key: COUCHDB-1985
 URL: https://issues.apache.org/jira/browse/COUCHDB-1985
 Project: CouchDB
  Issue Type: Bug
  Components: Build System
Affects Versions: 1.x.x
Reporter: Jan Lehnardt

 Running ./bootstrap on master gives me:
  ./bootstrap 
 configure.ac:29: installing 'build-aux/compile'
 configure.ac:34: installing 'build-aux/config.guess'
 configure.ac:34: installing 'build-aux/config.sub'
 configure.ac:27: installing 'build-aux/install-sh'
 configure.ac:27: installing 'build-aux/missing'
 src/couchdb/priv/Makefile.am:44: warning: source file 
 'couch_ejson_compare/couch_ejson_compare.c' is in a subdirectory,
 src/couchdb/priv/Makefile.am:44: but option 'subdir-objects' is disabled
 automake: warning: possible forward-incompatibility.
 automake: At least a source file is in a subdirectory, but the 
 'subdir-objects'
 automake: automake option hasn't been enabled.  For now, the corresponding 
 output
 automake: object file(s) will be placed in the top-level directory.  However,
 automake: this behaviour will change in future Automake versions: they will
 automake: unconditionally cause object files to be placed in the same 
 subdirectory
 automake: of the corresponding sources.
 automake: You are advised to start using 'subdir-objects' option throughout 
 your
 automake: project, to avoid future incompatibilities.
 src/couchdb/priv/Makefile.am:52: warning: source file 
 'icu_driver/couch_icu_driver.c' is in a subdirectory,
 src/couchdb/priv/Makefile.am:52: but option 'subdir-objects' is disabled
 src/couchdb/priv/Makefile.am:61: warning: source file 'couch_js/http.c' is in 
 a subdirectory,
 src/couchdb/priv/Makefile.am:61: but option 'subdir-objects' is disabled
 src/couchdb/priv/Makefile.am:61: warning: source file 'couch_js/main.c' is in 
 a subdirectory,
 src/couchdb/priv/Makefile.am:61: but option 'subdir-objects' is disabled
 src/couchdb/priv/Makefile.am:61: warning: source file 'couch_js/utf8.c' is in 
 a subdirectory,
 src/couchdb/priv/Makefile.am:61: but option 'subdir-objects' is disabled
 src/couchdb/priv/Makefile.am:61: warning: source file 'couch_js/util.c' is in 
 a subdirectory,
 src/couchdb/priv/Makefile.am:61: but option 'subdir-objects' is disabled
 src/couchdb/priv/Makefile.am:103: warning: source file 
 'spawnkillable/couchspawnkillable_win.c' is in a subdirectory,
 src/couchdb/priv/Makefile.am:103: but option 'subdir-objects' is disabled
 src/couchdb/priv/Makefile.am: installing 'build-aux/depcomp'
 src/ejson/Makefile.am:21: warning: source file 'yajl/yajl_alloc.c' is in a 
 subdirectory,
 src/ejson/Makefile.am:21: but option 'subdir-objects' is disabled
 src/ejson/Makefile.am:21: warning: source file 'yajl/yajl_buf.c' is in a 
 subdirectory,
 src/ejson/Makefile.am:21: but option 'subdir-objects' is disabled
 src/ejson/Makefile.am:21: warning: source file 'yajl/yajl.c' is in a 
 subdirectory,
 src/ejson/Makefile.am:21: but option 'subdir-objects' is disabled
 src/ejson/Makefile.am:21: warning: source file 'yajl/yajl_encode.c' is in a 
 subdirectory,
 src/ejson/Makefile.am:21: but option 'subdir-objects' is disabled
 src/ejson/Makefile.am:21: warning: source file 'yajl/yajl_gen.c' is in a 
 subdirectory,
 src/ejson/Makefile.am:21: but option 'subdir-objects' is disabled
 src/ejson/Makefile.am:21: warning: source file 'yajl/yajl_lex.c' is in a 
 subdirectory,
 src/ejson/Makefile.am:21: but option 'subdir-objects' is disabled
 src/ejson/Makefile.am:21: warning: source file 'yajl/yajl_parser.c' is in a 
 subdirectory,
 src/ejson/Makefile.am:21: but option 'subdir-objects' is disabled
 src/snappy/Makefile.am:16: warning: source file 'google-snappy/snappy.cc' is 
 in a subdirectory,
 src/snappy/Makefile.am:16: but option 'subdir-objects' is disabled
 src/snappy/Makefile.am:16: warning: source file 
 'google-snappy/snappy-sinksource.cc' is in a subdirectory,
 src/snappy/Makefile.am:16: but option 'subdir-objects' is disabled
 src/snappy/Makefile.am:16: warning: source file 
 'google-snappy/snappy-stubs-internal.cc' is in a subdirectory,
 src/snappy/Makefile.am:16: but option 'subdir-objects' is disabled
 You have bootstrapped Apache CouchDB, time to relax.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (COUCHDB-1985) ./bootstrap feature deprecation warnings

2014-11-03 Thread Jan Lehnardt (JIRA)

[ 
https://issues.apache.org/jira/browse/COUCHDB-1985?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14194390#comment-14194390
 ] 

Jan Lehnardt commented on COUCHDB-1985:
---

it is because of an older version of automake, IIRC. All systems with it have 
this issue.

 ./bootstrap feature deprecation warnings
 

 Key: COUCHDB-1985
 URL: https://issues.apache.org/jira/browse/COUCHDB-1985
 Project: CouchDB
  Issue Type: Bug
  Components: Build System
Affects Versions: 1.x.x
Reporter: Jan Lehnardt

 Running ./bootstrap on master gives me:
  ./bootstrap 
 configure.ac:29: installing 'build-aux/compile'
 configure.ac:34: installing 'build-aux/config.guess'
 configure.ac:34: installing 'build-aux/config.sub'
 configure.ac:27: installing 'build-aux/install-sh'
 configure.ac:27: installing 'build-aux/missing'
 src/couchdb/priv/Makefile.am:44: warning: source file 
 'couch_ejson_compare/couch_ejson_compare.c' is in a subdirectory,
 src/couchdb/priv/Makefile.am:44: but option 'subdir-objects' is disabled
 automake: warning: possible forward-incompatibility.
 automake: At least a source file is in a subdirectory, but the 
 'subdir-objects'
 automake: automake option hasn't been enabled.  For now, the corresponding 
 output
 automake: object file(s) will be placed in the top-level directory.  However,
 automake: this behaviour will change in future Automake versions: they will
 automake: unconditionally cause object files to be placed in the same 
 subdirectory
 automake: of the corresponding sources.
 automake: You are advised to start using 'subdir-objects' option throughout 
 your
 automake: project, to avoid future incompatibilities.
 src/couchdb/priv/Makefile.am:52: warning: source file 
 'icu_driver/couch_icu_driver.c' is in a subdirectory,
 src/couchdb/priv/Makefile.am:52: but option 'subdir-objects' is disabled
 src/couchdb/priv/Makefile.am:61: warning: source file 'couch_js/http.c' is in 
 a subdirectory,
 src/couchdb/priv/Makefile.am:61: but option 'subdir-objects' is disabled
 src/couchdb/priv/Makefile.am:61: warning: source file 'couch_js/main.c' is in 
 a subdirectory,
 src/couchdb/priv/Makefile.am:61: but option 'subdir-objects' is disabled
 src/couchdb/priv/Makefile.am:61: warning: source file 'couch_js/utf8.c' is in 
 a subdirectory,
 src/couchdb/priv/Makefile.am:61: but option 'subdir-objects' is disabled
 src/couchdb/priv/Makefile.am:61: warning: source file 'couch_js/util.c' is in 
 a subdirectory,
 src/couchdb/priv/Makefile.am:61: but option 'subdir-objects' is disabled
 src/couchdb/priv/Makefile.am:103: warning: source file 
 'spawnkillable/couchspawnkillable_win.c' is in a subdirectory,
 src/couchdb/priv/Makefile.am:103: but option 'subdir-objects' is disabled
 src/couchdb/priv/Makefile.am: installing 'build-aux/depcomp'
 src/ejson/Makefile.am:21: warning: source file 'yajl/yajl_alloc.c' is in a 
 subdirectory,
 src/ejson/Makefile.am:21: but option 'subdir-objects' is disabled
 src/ejson/Makefile.am:21: warning: source file 'yajl/yajl_buf.c' is in a 
 subdirectory,
 src/ejson/Makefile.am:21: but option 'subdir-objects' is disabled
 src/ejson/Makefile.am:21: warning: source file 'yajl/yajl.c' is in a 
 subdirectory,
 src/ejson/Makefile.am:21: but option 'subdir-objects' is disabled
 src/ejson/Makefile.am:21: warning: source file 'yajl/yajl_encode.c' is in a 
 subdirectory,
 src/ejson/Makefile.am:21: but option 'subdir-objects' is disabled
 src/ejson/Makefile.am:21: warning: source file 'yajl/yajl_gen.c' is in a 
 subdirectory,
 src/ejson/Makefile.am:21: but option 'subdir-objects' is disabled
 src/ejson/Makefile.am:21: warning: source file 'yajl/yajl_lex.c' is in a 
 subdirectory,
 src/ejson/Makefile.am:21: but option 'subdir-objects' is disabled
 src/ejson/Makefile.am:21: warning: source file 'yajl/yajl_parser.c' is in a 
 subdirectory,
 src/ejson/Makefile.am:21: but option 'subdir-objects' is disabled
 src/snappy/Makefile.am:16: warning: source file 'google-snappy/snappy.cc' is 
 in a subdirectory,
 src/snappy/Makefile.am:16: but option 'subdir-objects' is disabled
 src/snappy/Makefile.am:16: warning: source file 
 'google-snappy/snappy-sinksource.cc' is in a subdirectory,
 src/snappy/Makefile.am:16: but option 'subdir-objects' is disabled
 src/snappy/Makefile.am:16: warning: source file 
 'google-snappy/snappy-stubs-internal.cc' is in a subdirectory,
 src/snappy/Makefile.am:16: but option 'subdir-objects' is disabled
 You have bootstrapped Apache CouchDB, time to relax.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (COUCHDB-2310) Add a bulk API for revs open_revs

2014-10-24 Thread Jan Lehnardt (JIRA)

[ 
https://issues.apache.org/jira/browse/COUCHDB-2310?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14182625#comment-14182625
 ] 

Jan Lehnardt commented on COUCHDB-2310:
---

Heya Daniel, cool work thanks!

While we can’t use the lua implementation in CouchDB obviously, it is a great 
prototype for any work we can do on the Erlang side.

FWIW, this would make a great first Erlang/CouchDB project, if you feel so 
inclined :) — Or anyone, for that matter!

 Add a bulk API for revs  open_revs
 ---

 Key: COUCHDB-2310
 URL: https://issues.apache.org/jira/browse/COUCHDB-2310
 Project: CouchDB
  Issue Type: Bug
  Security Level: public(Regular issues) 
  Components: HTTP Interface
Reporter: Nolan Lawson

 CouchDB replication is too slow.
 And what makes it so slow is that it's just so unnecessarily chatty. During 
 replication, you have to do a separate GET for each individual document, in 
 order to get the full {{_revisions}} object for that document (using the 
 {{revs}} and {{open_revs}} parameters ndash; refer to [the TouchDB 
 writeup|https://github.com/couchbaselabs/TouchDB-iOS/wiki/Replication-Algorithm]
  or [Benoit's writeup|http://dataprotocols.org/couchdb-replication/] if you 
 need a refresher).
 So for example, let's say you've got a database full of 10,000 documents, and 
 you replicate using a batch size of 500 (batch sizes are configurable in 
 PouchDB). The conversation for a single batch basically looks like this:
 {code}
 - REPLICATOR: gimme 500 changes since seq X (1 GET request)
   - SOURCE: okay
 - REPLICATOR: gimme the _revs_diff for these 500 docs/_revs (1 POST request)
   - SOURCE: okay
 - repeat 500 times:
   - REPLICATOR: gimme the _revisions for doc n with _revs [...] (1 GET 
 request)
 - SOURCE: okay
 - REPLICATOR: here's a _bulk_docs with 500 documents (1 POST request)
 - TARGET: okay
 {code}
 See the problem here? That 500-loop, where we have to do a GET for each one 
 of 500 documents, is a lot of unnecessary back-and-forth, considering that 
 the replicator already knows what it needs before the loop starts. You can 
 parallelize, but if you assume a browser (e.g. for PouchDB), most browsers 
 only let you do ~8 simultaneous requests at once. Plus, there's latency and 
 HTTP headers to consider. So overall, it's not cool.
 So why do we even need to do the separate requests? Shouldn't {{_all_docs}} 
 be good enough? Turns out it's not, because we need this special 
 {{_revisions}} object.
 For example, consider a document {{'foo'}} with 10 revisions. You may compact 
 the database, in which case revisions {{1-x}} through {{9-x}} are no longer 
 retrievable. However, if you query using {{revs}} and {{open_revs}}, those 
 rev IDs are still available:
 {code}
 $ curl 'http://nolan.iriscouch.com/test/foo?revs=trueopen_revs=all'
 {
   _id: foo,
   _rev: 10-c78e199ad5e996b240c9d6482907088e,
   _revisions: {
 start: 10,
 ids: [
   c78e199ad5e996b240c9d6482907088e,
   f560283f1968a05046f0c38e468006bb,
   0091198554171c632c27c8342ddec5af,
   e0a023e2ea59db73f812ad773ea08b17,
   65d7f8b8206a244035edd9f252f206ad,
   069d1432a003c58bdd23f01ff80b718f,
   d21f26bb604b7fe9eba03ce4562cf37b,
   31d380f99a6e54875855e1c24469622d,
   3b4791360024426eadafe31542a2c34b,
   967a00dff5e02add41819138abb3284d
 ]
   }
 }
 {code}
 And in the replication algorithm, _this full \_revisions object is required_ 
 at the point when you copy the document from one database to another, which 
 is accomplished with a POST to {{_bulk_docs}} using {{new_edits=false}}. If 
 you don't have the full {{_revisions}} object, CouchDB accepts the new 
 revision, but considers it to be a conflict. (The exception is with 
 generation-1 documents, since they have no history, so as it says in the 
 TouchDB writeup, you can safely just use {{_all_docs}} as an optimization for 
 such documents.)
 And unfortunately, this {{_revision}} object is only available from the {{GET 
 /:dbid/:docid}} endpoint. Trust me; I've tried the other APIs. You can't get 
 it anywhere else.
 This is a huge problem, especially in PouchDB where we often have to deal 
 with CORS, meaning the number of HTTP requests is doubled. So for those 500 
 GETs, it's an extra 500 OPTIONs, which is just unacceptable.
 Replication does not have to be slow. While we were experimenting with ways 
 of fetching documents in bulk, we tried a technique that just relied on using 
 {{_changes}} with {{include_docs=true}} 
 ([|\#2472|https://github.com/pouchdb/pouchdb/pull/2472]). This pushed 
 conflicts into the target database, but on the upside, you can sync ~95k 
 documents from npm's skimdb repository to the browser in less than 20 
 minutes! (See [npm-browser.com|http://npm-browser.com] for a demo.)
 What an amazing story we 

[jira] [Commented] (COUCHDB-2403) Build Fauxton for a different url paths?

2014-10-24 Thread Jan Lehnardt (JIRA)

[ 
https://issues.apache.org/jira/browse/COUCHDB-2403?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14182812#comment-14182812
 ] 

Jan Lehnardt commented on COUCHDB-2403:
---

[~kxepal] JIRA is fine for asking dev related questions.

[~michaelcole] at this point I’m not aware of any other solution, maybe some of 
the Fauxton devs have more insight (I’m only looking at Fauxton from a 
packaging perspective and I have had to change the URL too :) CC [~garren] 
[~deathbear] [~robertkowalski]

 Build Fauxton for a different url paths?
 

 Key: COUCHDB-2403
 URL: https://issues.apache.org/jira/browse/COUCHDB-2403
 Project: CouchDB
  Issue Type: Bug
  Security Level: public(Regular issues) 
  Components: Fauxton
Reporter: Michael Cole

 Hey, I'm trying to use Fauxton in another project:  express-pouchdb
 We'd like Fauxton to not know it's URL, until it's being served.  So someone 
 could configure a PouchDB server in Express at their [own 
 URL](https://github.com/MichaelJCole/express-pouchdb#example-usage) like this:
 /mydb/  -- PouchDB server
 /mydb/_utils  -- Fauxton
 The best I could figure out to do was hard-
 code the URL in settings.json and use `grunt release` to build Fauxton for 
 that specific URL.
 Is there a better way?
 Thanks!
 Mike



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Reopened] (COUCHDB-2403) Build Fauxton for a different url paths?

2014-10-24 Thread Jan Lehnardt (JIRA)

 [ 
https://issues.apache.org/jira/browse/COUCHDB-2403?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jan Lehnardt reopened COUCHDB-2403:
---
Skill Level: Regular Contributors Level (Easy to Medium)

 Build Fauxton for a different url paths?
 

 Key: COUCHDB-2403
 URL: https://issues.apache.org/jira/browse/COUCHDB-2403
 Project: CouchDB
  Issue Type: Bug
  Security Level: public(Regular issues) 
  Components: Fauxton
Reporter: Michael Cole

 Hey, I'm trying to use Fauxton in another project:  express-pouchdb
 We'd like Fauxton to not know it's URL, until it's being served.  So someone 
 could configure a PouchDB server in Express at their [own 
 URL](https://github.com/MichaelJCole/express-pouchdb#example-usage) like this:
 /mydb/  -- PouchDB server
 /mydb/_utils  -- Fauxton
 The best I could figure out to do was hard-
 code the URL in settings.json and use `grunt release` to build Fauxton for 
 that specific URL.
 Is there a better way?
 Thanks!
 Mike



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (COUCHDB-1521) multipart parser gets multiple attachments mixed up

2014-10-10 Thread Jan Lehnardt (JIRA)

[ 
https://issues.apache.org/jira/browse/COUCHDB-1521?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14166604#comment-14166604
 ] 

Jan Lehnardt commented on COUCHDB-1521:
---

I think we still do the “process according to json order” bit, though.

 multipart parser gets multiple attachments mixed up
 ---

 Key: COUCHDB-1521
 URL: https://issues.apache.org/jira/browse/COUCHDB-1521
 Project: CouchDB
  Issue Type: Bug
  Components: HTTP Interface
Affects Versions: 1.2
Reporter: Jens Alfke
Assignee: Randall Leeds

 When receiving a document PUT in multipart format, CouchDB gets the 
 attachments and MIME parts mixed up. Instead of looking at the headers of a 
 MIME part to identify which attachment it is (most likely by using the 
 'filename' property of the 'Content-Disposition:' header), it processes the 
 attachments according to the order in which their metadata objects appear in 
 the JSON body's '_attachments:' object.
 The problem with this is that JSON objects (dictionaries) are _not_ ordered 
 collections. I know that Erlang's implementation of them (as linked lists of 
 key/value pairs) happens to be ordered, and I think some JavaScript 
 implementations have the side effect of preserving order; but in many 
 languages these are implemented as hash tables and genuinely unordered.
 This means that when a program written in such a language converts a native 
 object to JSON, it has no control over (and probably no knowledge of) the 
 order in which the keys of the JSON object are written out. This makes it 
 impossible to then write the attachments in the same order.
 The only workaround seems to be for the program to implement its own custom 
 JSON encoder just so that it can write object keys in a known order (probably 
 sorted), which then enables it to write the attachment bodies in the same 
 order.
 NOTE: This is the flip side of COUCHDB-1368 which I filed last year; that bug 
 has to do with the same ordering issue when CouchDB _generates_ multipart 
 responses (and presents similar problems for clients not written in Erlang.)



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (COUCHDB-1863) Documentation link should be on top links of front page

2014-10-08 Thread Jan Lehnardt (JIRA)

[ 
https://issues.apache.org/jira/browse/COUCHDB-1863?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14163915#comment-14163915
 ] 

Jan Lehnardt commented on COUCHDB-1863:
---

I think it doesn’t matter that the navigation metaphor is “broken”. I think we 
need “Doc” or “Documentation” (literally) in that top row. I’m happy for other 
things to move around, but a rename to “Learn  Discuss” just to keep a 
navigation metaphor is as good as not having it. I’d prefer to revert to the 
previous model until we have a new website.

 Documentation link should be on top links of front page
 ---

 Key: COUCHDB-1863
 URL: https://issues.apache.org/jira/browse/COUCHDB-1863
 Project: CouchDB
  Issue Type: Bug
  Components: Website
Reporter: Dale Harvey
Assignee: Noah Slater

 Its about the most important link there and nobody (including me) can find it.
 Can send in a patch



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (COUCHDB-1863) Documentation link should be on top links of front page

2014-10-08 Thread Jan Lehnardt (JIRA)

[ 
https://issues.apache.org/jira/browse/COUCHDB-1863?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14163923#comment-14163923
 ] 

Jan Lehnardt commented on COUCHDB-1863:
---

I just noticed that Docs was gone earlier, I’m vehemently against that change 
and I suggest we re-add it ASAP until any new changes are all finished. I’m 
sorry I didn’t catch this earlier, but I feel this is a really really bad 
change.

 Documentation link should be on top links of front page
 ---

 Key: COUCHDB-1863
 URL: https://issues.apache.org/jira/browse/COUCHDB-1863
 Project: CouchDB
  Issue Type: Bug
  Components: Website
Reporter: Dale Harvey
Assignee: Noah Slater

 Its about the most important link there and nobody (including me) can find it.
 Can send in a patch



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (COUCHDB-1863) Documentation link should be on top links of front page

2014-10-08 Thread Jan Lehnardt (JIRA)

[ 
https://issues.apache.org/jira/browse/COUCHDB-1863?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14163949#comment-14163949
 ] 

Jan Lehnardt commented on COUCHDB-1863:
---

heya, sorry for jumping in, please keep discussing the proposed change as 
usual. My vote is for having “Docs” or “Documentation” front and center.

I consider not having the link there that our site is broken and I decided to 
re-add it right now as a hot-fix. Please don’t let hat influence this 
particular discussion (aside from my vote above).

Sorry for the noise.

 Documentation link should be on top links of front page
 ---

 Key: COUCHDB-1863
 URL: https://issues.apache.org/jira/browse/COUCHDB-1863
 Project: CouchDB
  Issue Type: Bug
  Components: Website
Reporter: Dale Harvey
Assignee: Noah Slater

 Its about the most important link there and nobody (including me) can find it.
 Can send in a patch



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (COUCHDB-1863) Documentation link should be on top links of front page

2014-10-08 Thread Jan Lehnardt (JIRA)

[ 
https://issues.apache.org/jira/browse/COUCHDB-1863?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14163982#comment-14163982
 ] 

Jan Lehnardt commented on COUCHDB-1863:
---

I really like the Learn  Discuss section, maybe we can just keep it as is 
*and* have the direct link Docs in the nav bar, with a symbol that signifies 
that the link is external (like you suggest). I kind of have Wikipedia in mind, 
that has a little arrow type thing. I think having a direct link to the RTD 
docs up top is really important in a “remove frustration” kind of way, e.g. if 
I’m in JUST NEED DOCS” mode, I don’t want to learn what other stuff there is, I 
want “The Docs” (I understand it is a little myopic, but I can just see myself 
in that situation, and I’m sure you can, too :)

 Documentation link should be on top links of front page
 ---

 Key: COUCHDB-1863
 URL: https://issues.apache.org/jira/browse/COUCHDB-1863
 Project: CouchDB
  Issue Type: Bug
  Components: Website
Reporter: Dale Harvey
Assignee: Noah Slater

 Its about the most important link there and nobody (including me) can find it.
 Can send in a patch



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (COUCHDB-2350) Finish move of the wiki documentation; clean up references in docs.couchdb.org

2014-10-06 Thread Jan Lehnardt (JIRA)

[ 
https://issues.apache.org/jira/browse/COUCHDB-2350?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14160207#comment-14160207
 ] 

Jan Lehnardt commented on COUCHDB-2350:
---

[~candeira] What is your username on the old wiki?

 Finish move of the wiki documentation; clean up references in docs.couchdb.org
 --

 Key: COUCHDB-2350
 URL: https://issues.apache.org/jira/browse/COUCHDB-2350
 Project: CouchDB
  Issue Type: Improvement
  Security Level: public(Regular issues) 
  Components: Documentation, Website
Reporter: Javier Candeira

 It occurs to me that as a new inductee into the project I'm in a privileged 
 position to update and restructure the documentation as I take the project 
 in, and it would probably be a better first task than to go after individual 
 bugs.
 This is how I'd go about working on restructuring the documentation:
 - move the old wiki content to confluence and 301 all wiki.apache.org pages 
 to the new wiki. No new content added. 
 - track all links and references to old wiki in docs.couchdb.org, and rewrite 
 them to point at new wiki. Still no new content added.
 - then I would start triaging documentation bugs. There are many tasks that 
 are better done by a newcomer, since we need to follow the documentation or 
 be confused by it.
 This is what I'd need:
 - To be added to the confluence wiki contributors list (username: candeira)
 - To be added to the old wiki contributors list (username: JavierCandeira)
 - Optionally, to have a test confluence wiki so I can test migrating the old 
 one to the new one via scripts without making public changes until bugs have 
 been ironed out.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (COUCHDB-2350) Finish move of the wiki documentation; clean up references in docs.couchdb.org

2014-10-06 Thread Jan Lehnardt (JIRA)

[ 
https://issues.apache.org/jira/browse/COUCHDB-2350?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14160304#comment-14160304
 ] 

Jan Lehnardt commented on COUCHDB-2350:
---

Heya, you are already in the contributors list, you should be able to edit 
everything! :)

 Finish move of the wiki documentation; clean up references in docs.couchdb.org
 --

 Key: COUCHDB-2350
 URL: https://issues.apache.org/jira/browse/COUCHDB-2350
 Project: CouchDB
  Issue Type: Improvement
  Security Level: public(Regular issues) 
  Components: Documentation, Website
Reporter: Javier Candeira

 It occurs to me that as a new inductee into the project I'm in a privileged 
 position to update and restructure the documentation as I take the project 
 in, and it would probably be a better first task than to go after individual 
 bugs.
 This is how I'd go about working on restructuring the documentation:
 - move the old wiki content to confluence and 301 all wiki.apache.org pages 
 to the new wiki. No new content added. 
 - track all links and references to old wiki in docs.couchdb.org, and rewrite 
 them to point at new wiki. Still no new content added.
 - then I would start triaging documentation bugs. There are many tasks that 
 are better done by a newcomer, since we need to follow the documentation or 
 be confused by it.
 This is what I'd need:
 - To be added to the confluence wiki contributors list (username: candeira)
 - To be added to the old wiki contributors list (username: JavierCandeira)
 - Optionally, to have a test confluence wiki so I can test migrating the old 
 one to the new one via scripts without making public changes until bugs have 
 been ironed out.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (COUCHDB-2257) BulkRequest, when conflict include _rev as well to e.g. ease retry bulk delete

2014-08-31 Thread Jan Lehnardt (JIRA)

[ 
https://issues.apache.org/jira/browse/COUCHDB-2257?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14116675#comment-14116675
 ] 

Jan Lehnardt commented on COUCHDB-2257:
---

+1

 BulkRequest, when conflict include _rev as well to e.g. ease retry bulk delete
 --

 Key: COUCHDB-2257
 URL: https://issues.apache.org/jira/browse/COUCHDB-2257
 Project: CouchDB
  Issue Type: New Feature
  Security Level: public(Regular issues) 
  Components: HTTP Interface
Reporter: Daniel Wertheim

 When doing a BulkRequest and e.g. including document headers (_id, _rev) for 
 deletion and there are conflicts. Can the current _rev be returned in the 
 response as well. That would ease e.g. doing a new bulk delete.



--
This message was sent by Atlassian JIRA
(v6.2#6252)


[jira] [Commented] (COUCHDB-2310) Add a bulk API for revs open_revs

2014-08-31 Thread Jan Lehnardt (JIRA)

[ 
https://issues.apache.org/jira/browse/COUCHDB-2310?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14116848#comment-14116848
 ] 

Jan Lehnardt commented on COUCHDB-2310:
---

(bikeshed) or we make it a new endpoint /_bulk_revs (or something) that we can 
build up as we like.

 Add a bulk API for revs  open_revs
 ---

 Key: COUCHDB-2310
 URL: https://issues.apache.org/jira/browse/COUCHDB-2310
 Project: CouchDB
  Issue Type: Bug
  Security Level: public(Regular issues) 
  Components: HTTP Interface
Reporter: Nolan Lawson

 CouchDB replication is too slow.
 And what makes it so slow is that it's just so unnecessarily chatty. During 
 replication, you have to do a separate GET for each individual document, in 
 order to get the full {{_revisions}} object for that document (using the 
 {{revs}} and {{open_revs}} parameters ndash; refer to [the TouchDB 
 writeup|https://github.com/couchbaselabs/TouchDB-iOS/wiki/Replication-Algorithm]
  or [Benoit's writeup|http://dataprotocols.org/couchdb-replication/] if you 
 need a refresher).
 So for example, let's say you've got a database full of 10,000 documents, and 
 you replicate using a batch size of 500 (batch sizes are configurable in 
 PouchDB). The conversation for a single batch basically looks like this:
 {code}
 - REPLICATOR: gimme 500 changes since seq X (1 GET request)
   - SOURCE: okay
 - REPLICATOR: gimme the _revs_diff for these 500 docs/_revs (1 POST request)
   - SOURCE: okay
 - repeat 500 times:
   - REPLICATOR: gimme the _revisions for doc n with _revs [...] (1 GET 
 request)
 - SOURCE: okay
 - REPLICATOR: here's a _bulk_docs with 500 documents (1 POST request)
 - TARGET: okay
 {code}
 See the problem here? That 500-loop, where we have to do a GET for each one 
 of 500 documents, is a lot of unnecessary back-and-forth, considering that 
 the replicator already knows what it needs before the loop starts. You can 
 parallelize, but if you assume a browser (e.g. for PouchDB), most browsers 
 only let you do ~8 simultaneous requests at once. Plus, there's latency and 
 HTTP headers to consider. So overall, it's not cool.
 So why do we even need to do the separate requests? Shouldn't {{_all_docs}} 
 be good enough? Turns out it's not, because we need this special 
 {{_revisions}} object.
 For example, consider a document {{'foo'}} with 10 revisions. You may compact 
 the database, in which case revisions {{1-x}} through {{9-x}} are no longer 
 retrievable. However, if you query using {{revs}} and {{open_revs}}, those 
 rev IDs are still available:
 {code}
 $ curl 'http://nolan.iriscouch.com/test/foo?revs=trueopen_revs=all'
 {
   _id: foo,
   _rev: 10-c78e199ad5e996b240c9d6482907088e,
   _revisions: {
 start: 10,
 ids: [
   c78e199ad5e996b240c9d6482907088e,
   f560283f1968a05046f0c38e468006bb,
   0091198554171c632c27c8342ddec5af,
   e0a023e2ea59db73f812ad773ea08b17,
   65d7f8b8206a244035edd9f252f206ad,
   069d1432a003c58bdd23f01ff80b718f,
   d21f26bb604b7fe9eba03ce4562cf37b,
   31d380f99a6e54875855e1c24469622d,
   3b4791360024426eadafe31542a2c34b,
   967a00dff5e02add41819138abb3284d
 ]
   }
 }
 {code}
 And in the replication algorithm, _this full \_revisions object is required_ 
 at the point when you copy the document from one database to another, which 
 is accomplished with a POST to {{_bulk_docs}} using {{new_edits=false}}. If 
 you don't have the full {{_revisions}} object, CouchDB accepts the new 
 revision, but considers it to be a conflict. (The exception is with 
 generation-1 documents, since they have no history, so as it says in the 
 TouchDB writeup, you can safely just use {{_all_docs}} as an optimization for 
 such documents.)
 And unfortunately, this {{_revision}} object is only available from the {{GET 
 /:dbid/:docid}} endpoint. Trust me; I've tried the other APIs. You can't get 
 it anywhere else.
 This is a huge problem, especially in PouchDB where we often have to deal 
 with CORS, meaning the number of HTTP requests is doubled. So for those 500 
 GETs, it's an extra 500 OPTIONs, which is just unacceptable.
 Replication does not have to be slow. While we were experimenting with ways 
 of fetching documents in bulk, we tried a technique that just relied on using 
 {{_changes}} with {{include_docs=true}} 
 ([|\#2472|https://github.com/pouchdb/pouchdb/pull/2472]). This pushed 
 conflicts into the target database, but on the upside, you can sync ~95k 
 documents from npm's skimdb repository to the browser in less than 20 
 minutes! (See [npm-browser.com|http://npm-browser.com] for a demo.)
 What an amazing story we could tell about the beauty of CouchDB replication, 
 if only this trick actually worked!
 My proposal is a simple one: just add the {{revs}} and {{open_revs}} options 
 to 

[jira] [Closed] (COUCHDB-2197) Invalid couchjs raises EPIPE, should raise (useful) ENOENT

2014-05-06 Thread Jan Lehnardt (JIRA)

 [ 
https://issues.apache.org/jira/browse/COUCHDB-2197?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jan Lehnardt closed COUCHDB-2197.
-

Resolution: Duplicate

 Invalid couchjs raises EPIPE, should raise (useful) ENOENT
 --

 Key: COUCHDB-2197
 URL: https://issues.apache.org/jira/browse/COUCHDB-2197
 Project: CouchDB
  Issue Type: Bug
  Security Level: public(Regular issues) 
Reporter: Isaac Z. Schlueter

 If you accidentally point your couchjs config at a file that doesn't exist, 
 then it'll raise an EPIPE when it tries to write to the process's stdin.
 However, it would be much more useful if it instead raised the ENOENT that it 
 got when it tried to run the process.



--
This message was sent by Atlassian JIRA
(v6.2#6252)


[jira] [Commented] (COUCHDB-1994) merge rcouch with couchdb 1.6 in a branch

2014-04-16 Thread Jan Lehnardt (JIRA)

[ 
https://issues.apache.org/jira/browse/COUCHDB-1994?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13971863#comment-13971863
 ] 

Jan Lehnardt commented on COUCHDB-1994:
---

Adding this post from Benoit from dev@ for reference:

I did many posts during the merge here asking for a review:

https://www.mail-archive.com/search?l=dev%40couchdb.apache.orgq=rcouch+status

That should help any dev interested in the review.

COUCHDB-1994 can be used to track any review. wohali started some here:

https://issues.apache.org/jira/browse/COUCHDB-1994

Any information on the rcouch wiki are still valid also:

https://wiki.refuge.io/display/RCOUCH/rcouch

Hope it helps.

 merge rcouch with couchdb 1.6 in a branch
 -

 Key: COUCHDB-1994
 URL: https://issues.apache.org/jira/browse/COUCHDB-1994
 Project: CouchDB
  Issue Type: Task
  Components: Build System, Database Core, HTTP Interface, JavaScript 
 View Server
Reporter: Benoit Chesneau





--
This message was sent by Atlassian JIRA
(v6.2#6252)


[jira] [Commented] (COUCHDB-2008) CI: Create repeatable images for different operating system configurations

2014-03-18 Thread Jan Lehnardt (JIRA)

[ 
https://issues.apache.org/jira/browse/COUCHDB-2008?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13939102#comment-13939102
 ] 

Jan Lehnardt commented on COUCHDB-2008:
---

[~crigor] From APT.

 CI: Create repeatable images for different operating system configurations
 --

 Key: COUCHDB-2008
 URL: https://issues.apache.org/jira/browse/COUCHDB-2008
 Project: CouchDB
  Issue Type: New Feature
  Components: Infrastructure
Reporter: Jan Lehnardt

 Dave suggests to look into Ansible  Packer to create images for CI.
 The idea would be to run these configurations on the CI server and controlled 
 by Jenkins. It should also be possible to set up a configuration locally that 
 matches the CI box exactly, so one can do debugging under the same 
 circumstances the CI server runs tests.
 The requirement for now is that it all needs to work with a set of VMs that 
 we have SSH access to, but we don’t manage the host. I’m not too familiar 
 with all the automation and VM image packaging tools, so I don’t know if one 
 or another is useful in that context or not.



--
This message was sent by Atlassian JIRA
(v6.2#6252)


[jira] [Commented] (COUCHDB-1986) 04-replication-large-atts.t times out

2014-02-26 Thread Jan Lehnardt (JIRA)

[ 
https://issues.apache.org/jira/browse/COUCHDB-1986?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13913692#comment-13913692
 ] 

Jan Lehnardt commented on COUCHDB-1986:
---

[~andywenk] can you re-run this? The 200 test is also one of the ones that 
fails spuriously, albeit a lot less often.

 04-replication-large-atts.t times out
 -

 Key: COUCHDB-1986
 URL: https://issues.apache.org/jira/browse/COUCHDB-1986
 Project: CouchDB
  Issue Type: Bug
  Components: Replication
Affects Versions: 1.5.0
Reporter: Jan Lehnardt

 04-replication-large-atts.t gets stuck around 558, sometimes a little earlier 
 or later, but it times out eventually, regardless of the timeout. I tried 
 doubling and such.



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)


[jira] [Updated] (COUCHDB-1780) Upgrade users password hash on login, not password change

2014-02-16 Thread Jan Lehnardt (JIRA)

 [ 
https://issues.apache.org/jira/browse/COUCHDB-1780?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jan Lehnardt updated COUCHDB-1780:
--

Fix Version/s: 1.7.0

 Upgrade users password hash on login, not password change
 -

 Key: COUCHDB-1780
 URL: https://issues.apache.org/jira/browse/COUCHDB-1780
 Project: CouchDB
  Issue Type: Improvement
Reporter: Robert Newson
 Fix For: 1.7.0


 We can upgrade users hashes to PBKDF2 on login, we don't need to wait for a 
 password change.



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)


[jira] [Commented] (COUCHDB-2066) Don't allow stupid storage of passwords

2014-02-15 Thread Jan Lehnardt (JIRA)

[ 
https://issues.apache.org/jira/browse/COUCHDB-2066?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13902584#comment-13902584
 ] 

Jan Lehnardt commented on COUCHDB-2066:
---

Since 1.3.0, CouchDB uses PBKDF2 for password hashing for user accounts.

CouchDB will accept the old sha+salt format to not break BC, since it was 
introduced in a minor version update.

Users are discouraged to use the old sha/salt ones though, we just kept the API 
intact.

What we should do, though, is adding a transparent layer to turn sha+salt-style 
PWs into pbkdf2 PWs transparently.

I’m not sure how to swing that without a API BC break, and we should run this 
plan by a proper cryptographer.



 Don't allow stupid storage of passwords
 ---

 Key: COUCHDB-2066
 URL: https://issues.apache.org/jira/browse/COUCHDB-2066
 Project: CouchDB
  Issue Type: Bug
  Security Level: public(Regular issues) 
Reporter: Isaac Z. Schlueter

 If a password_sha/salt combination is PUT into the _users db, wrap that up in 
 PBKDF2.
 Discussion:
 https://twitter.com/janl/status/434818855626502144
 https://twitter.com/izs/status/434835388213899264
 https://twitter.com/janl/status/434835614790586368



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)


[jira] [Commented] (COUCHDB-2066) Don't allow stupid storage of passwords

2014-02-15 Thread Jan Lehnardt (JIRA)

[ 
https://issues.apache.org/jira/browse/COUCHDB-2066?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13902590#comment-13902590
 ] 

Jan Lehnardt commented on COUCHDB-2066:
---

[~isaacs] I totally follow that train of though. But I also know that crypto is 
tricky and I don’t want to end up in a situation where we double XOR and then 
double ROT13 our PWs :)

 Don't allow stupid storage of passwords
 ---

 Key: COUCHDB-2066
 URL: https://issues.apache.org/jira/browse/COUCHDB-2066
 Project: CouchDB
  Issue Type: Bug
  Security Level: public(Regular issues) 
Reporter: Isaac Z. Schlueter

 If a password_sha/salt combination is PUT into the _users db, wrap that up in 
 PBKDF2.
 Discussion:
 https://twitter.com/janl/status/434818855626502144
 https://twitter.com/izs/status/434835388213899264
 https://twitter.com/janl/status/434835614790586368



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)


[jira] [Commented] (COUCHDB-2066) Don't allow stupid storage of passwords

2014-02-15 Thread Jan Lehnardt (JIRA)

[ 
https://issues.apache.org/jira/browse/COUCHDB-2066?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13902593#comment-13902593
 ] 

Jan Lehnardt commented on COUCHDB-2066:
---

This ticket is now for a way to upgrade old style sha+salt PWs to PBKDF2 in a 
non-disruptive as possible way.

For all other security related discussions, please use the 
secur...@couchdb.apache.org mailing list. Thanks!

 Don't allow stupid storage of passwords
 ---

 Key: COUCHDB-2066
 URL: https://issues.apache.org/jira/browse/COUCHDB-2066
 Project: CouchDB
  Issue Type: Bug
  Security Level: public(Regular issues) 
Reporter: Isaac Z. Schlueter

 If a password_sha/salt combination is PUT into the _users db, wrap that up in 
 PBKDF2.
 Discussion:
 https://twitter.com/janl/status/434818855626502144
 https://twitter.com/izs/status/434835388213899264
 https://twitter.com/janl/status/434835614790586368



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)


[jira] [Commented] (COUCHDB-2052) Add API for discovering feature availability

2014-02-07 Thread Jan Lehnardt (JIRA)

[ 
https://issues.apache.org/jira/browse/COUCHDB-2052?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13894894#comment-13894894
 ] 

Jan Lehnardt commented on COUCHDB-2052:
---

[~snej] Thanks for your patience, this is discussion is extremely fruitful, 
please continue :) — I am sure that we will find a good solution for this once 
we’ve talked it all over. Team CouchDB is definitely interested in getting this 
right.

 Add API for discovering feature availability
 

 Key: COUCHDB-2052
 URL: https://issues.apache.org/jira/browse/COUCHDB-2052
 Project: CouchDB
  Issue Type: Improvement
  Security Level: public(Regular issues) 
  Components: HTTP Interface
Reporter: Jens Alfke

 I propose adding to the response of GET / a property called features or 
 extensions whose value is an array of strings, each string being an 
 agreed-upon identifier of a specific optional feature. For example:
   {couchdb: welcome, features: [_bulk_get, persona]}, vendor: 
 …
 Rationale:
 Features are being added to CouchDB over time, plug-ins may add features, and 
 there are compatible servers that may have nonstandard features (like 
 _bulk_get). But there isn't a clear way for a client (which might be another 
 server's replicator) to determine what features a server has. Currently a 
 client looking at the response of a GET / has to figure out what server and 
 version thereof it's talking to, and then has to consult hardcoded knowledge 
 that version X of server Y supports feature Z.
 (True, you can often get away without needing to check, by assuming a feature 
 exists but falling back to standard behavior if you get an error. But not all 
 features may be so easy to detect — the behavior of an unaware server might 
 be to ignore the feature and do the wrong thing, rather than returning an 
 error — and anyway this adds extra round-trips that slow down the operation.)



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)


[jira] [Created] (COUCHDB-2043) [replicator] handle non-200 response of _changes-feed items gracefully

2014-01-30 Thread Jan Lehnardt (JIRA)
Jan Lehnardt created COUCHDB-2043:
-

 Summary: [replicator] handle non-200 response of _changes-feed 
items gracefully
 Key: COUCHDB-2043
 URL: https://issues.apache.org/jira/browse/COUCHDB-2043
 Project: CouchDB
  Issue Type: Bug
  Components: Replication
Reporter: Jan Lehnardt


See http://markmail.org/message/jmrvq6spfcmrvzcy for details.




--
This message was sent by Atlassian JIRA
(v6.1.5#6160)


[jira] [Commented] (COUCHDB-1960) Provide pagination for /_all_dbs

2014-01-06 Thread Jan Lehnardt (JIRA)

[ 
https://issues.apache.org/jira/browse/COUCHDB-1960?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13863188#comment-13863188
 ] 

Jan Lehnardt commented on COUCHDB-1960:
---

Excellent point. Forward compatibly is definitely desired now that we have the 
opportunity *and* the foreknowledge.

 Provide pagination for /_all_dbs
 

 Key: COUCHDB-1960
 URL: https://issues.apache.org/jira/browse/COUCHDB-1960
 Project: CouchDB
  Issue Type: Improvement
  Components: Fauxton, HTTP Interface
Reporter: Benjamin Young

 The database-per-user design pattern has increased in popularity and 
 consequently causes long lists of databases when one hits {{/_all_dbs}}
 To keep this sane, we need some pagination.
 {{?skip=10limit=10}} style seems to be the simplest to implement (and there 
 should be existing code from Cloudant for this one).
 Thanks!



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)


[jira] [Commented] (COUCHDB-1960) Provide pagination for /_all_dbs

2014-01-06 Thread Jan Lehnardt (JIRA)

[ 
https://issues.apache.org/jira/browse/COUCHDB-1960?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13863286#comment-13863286
 ] 

Jan Lehnardt commented on COUCHDB-1960:
---

heh, the point is that skip is not recommended for pagination on larger 
clustered dbs, I think Russell suggests we also add means to do the regular 
linked-list-pagination with start key and limit+1 for the next startkey.

 Provide pagination for /_all_dbs
 

 Key: COUCHDB-1960
 URL: https://issues.apache.org/jira/browse/COUCHDB-1960
 Project: CouchDB
  Issue Type: Improvement
  Components: Fauxton, HTTP Interface
Reporter: Benjamin Young

 The database-per-user design pattern has increased in popularity and 
 consequently causes long lists of databases when one hits {{/_all_dbs}}
 To keep this sane, we need some pagination.
 {{?skip=10limit=10}} style seems to be the simplest to implement (and there 
 should be existing code from Cloudant for this one).
 Thanks!



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)


[jira] [Commented] (COUCHDB-1989) move src/couchjs-node in an `extra` repository

2014-01-05 Thread Jan Lehnardt (JIRA)

[ 
https://issues.apache.org/jira/browse/COUCHDB-1989?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13862538#comment-13862538
 ] 

Jan Lehnardt commented on COUCHDB-1989:
---

is there a rebar / erlang convention for optional sources or are we inventing 
something on the fly here?

Why aren’t we using src/extra or src/optional?

 move src/couchjs-node in an `extra` repository
 --

 Key: COUCHDB-1989
 URL: https://issues.apache.org/jira/browse/COUCHDB-1989
 Project: CouchDB
  Issue Type: Improvement
  Components: Build System, JavaScript View Server
Reporter: Benoit Chesneau

 Since the build of couchjs-node is optional we should put it outside of the 
 src/ folder and move it to an `extra` folder (and the same for all extras). 
 The reasoning behind is that we should separate more clearly what is an addon 
 from what is the core product.



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)


[jira] [Commented] (COUCHDB-1960) Provide pagination for /_all_dbs

2014-01-05 Thread Jan Lehnardt (JIRA)

[ 
https://issues.apache.org/jira/browse/COUCHDB-1960?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13862541#comment-13862541
 ] 

Jan Lehnardt commented on COUCHDB-1960:
---

Just one nitpick: Skip0 and Limit0 can be called Skip and Limit in 
handle_all_dbs_req/1. I assume all_dbs_fun/2 was factored out of there at a 
later time and Skip0 and Limit0 are remains of that.

 Provide pagination for /_all_dbs
 

 Key: COUCHDB-1960
 URL: https://issues.apache.org/jira/browse/COUCHDB-1960
 Project: CouchDB
  Issue Type: Improvement
  Components: Fauxton, HTTP Interface
Reporter: Benjamin Young

 The database-per-user design pattern has increased in popularity and 
 consequently causes long lists of databases when one hits {{/_all_dbs}}
 To keep this sane, we need some pagination.
 {{?skip=10limit=10}} style seems to be the simplest to implement (and there 
 should be existing code from Cloudant for this one).
 Thanks!



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)


[jira] [Commented] (COUCHDB-1960) Provide pagination for /_all_dbs

2014-01-05 Thread Jan Lehnardt (JIRA)

[ 
https://issues.apache.org/jira/browse/COUCHDB-1960?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13862542#comment-13862542
 ] 

Jan Lehnardt commented on COUCHDB-1960:
---

Oh, and regular docs are still missing :)

 Provide pagination for /_all_dbs
 

 Key: COUCHDB-1960
 URL: https://issues.apache.org/jira/browse/COUCHDB-1960
 Project: CouchDB
  Issue Type: Improvement
  Components: Fauxton, HTTP Interface
Reporter: Benjamin Young

 The database-per-user design pattern has increased in popularity and 
 consequently causes long lists of databases when one hits {{/_all_dbs}}
 To keep this sane, we need some pagination.
 {{?skip=10limit=10}} style seems to be the simplest to implement (and there 
 should be existing code from Cloudant for this one).
 Thanks!



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)


[jira] [Created] (COUCHDB-2023) Plugins: use better mechanism to ensure compatibility than CouchDB Erlang Version

2014-01-05 Thread Jan Lehnardt (JIRA)
Jan Lehnardt created COUCHDB-2023:
-

 Summary: Plugins: use better mechanism to ensure compatibility 
than CouchDB  Erlang Version
 Key: COUCHDB-2023
 URL: https://issues.apache.org/jira/browse/COUCHDB-2023
 Project: CouchDB
  Issue Type: New Feature
  Components: Plugins
Reporter: Jan Lehnardt


Currently a plugin can only be auto-installed if there is a binary available 
that has been built with the same CouchDB and Erlang version as the target 
CouchDB.

The reason for this is ensuring that only plugins that are compatible can be 
installed.

A problem with this is, that plugins for 1.2 also work in 1.2, 1.3 and 1.4 and 
1.5. So the mechanism above is a but coarse and it puts a burden on the Plugin 
author to recompile their plugins with each of CouchDB’s now relatively 
frequent releases.

Since we started using SemVer in earnest now, it should be enough to match on 
the major version number for CouchDB and Erlang version. Are there cases where 
this isn’t holding compatibility?



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)


[jira] [Commented] (COUCHDB-1989) move src/couchjs-node in an `extra` repository

2014-01-05 Thread Jan Lehnardt (JIRA)

[ 
https://issues.apache.org/jira/browse/COUCHDB-1989?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13862553#comment-13862553
 ] 

Jan Lehnardt commented on COUCHDB-1989:
---

I don’t mind the change, I just want to do the right thing. Would love to hear 
from other folks here as well. This is an excellent bikeshed, don’t pass on the 
opportunity to participate.

 move src/couchjs-node in an `extra` repository
 --

 Key: COUCHDB-1989
 URL: https://issues.apache.org/jira/browse/COUCHDB-1989
 Project: CouchDB
  Issue Type: Improvement
  Components: Build System, JavaScript View Server
Reporter: Benoit Chesneau

 Since the build of couchjs-node is optional we should put it outside of the 
 src/ folder and move it to an `extra` folder (and the same for all extras). 
 The reasoning behind is that we should separate more clearly what is an addon 
 from what is the core product.



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)


[jira] [Commented] (COUCHDB-2016) Plugins meet BigCouch

2014-01-05 Thread Jan Lehnardt (JIRA)

[ 
https://issues.apache.org/jira/browse/COUCHDB-2016?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13862558#comment-13862558
 ] 

Jan Lehnardt commented on COUCHDB-2016:
---

I talked this over a bit with [~rnewson].

Money quote: “rnewson so couchdb plugins are erlang applications that we have 
scripting to ease their integration into the couchdb release (and the inverse).”

There are multiple issues intermingled here:

1. How to (un)install and start a CouchDB Plugin on an installation that uses 
Erlang Releases (BigCouch  rcouch  up)?
2. How to ensure a plugin gets installed into every node of a cluster?


As for 1., Erlang Releases can be upgraded to newer versions while they are 
running. A plugin installation is simply an upgrade to a newer release. The 
difference from regular release updates is that these releases would be 
triggered by CouchDB itself (e.g. the couch_plugins application). We would have 
to figure out how to do version numbers in this case and everything else that 
retains Erlang Release semantics.

2. Installation of plugins should be done on each node separately. Once a 
plugin is installed on all nodes, the nodes can be upgraded as per 1. to 
activate the plugin. The API for this could disallow installation and upgrade 
if the cluster is in a unhealthy state. That way, we don’t have to worry about 
nodes that don’t receive an update instruction. Allowing this for unhealthy 
clusters could be tackled later, but is punted on for now.


 Plugins meet BigCouch
 -

 Key: COUCHDB-2016
 URL: https://issues.apache.org/jira/browse/COUCHDB-2016
 Project: CouchDB
  Issue Type: New Feature
  Components: Plugins
Reporter: Jan Lehnardt

 Currently Plugins don’t work with BigCouch. Two options that I can see so far:
 1. Find a way to dynamically install plugins into a cluster, surviving 
 offline nodes that get a delayed installation on recovery (or only allow 
 plugins into a fully online cluster).
 2. Make plugin building a static affair where plugins are installed with the 
 rest of CouchDB as an Erlang release and do not allow dynamic updates of apps.
 I’d prefer 1, but any other options are welcome too.



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)


[jira] [Created] (COUCHDB-2015) Plugin Registry

2014-01-04 Thread Jan Lehnardt (JIRA)
Jan Lehnardt created COUCHDB-2015:
-

 Summary: Plugin Registry
 Key: COUCHDB-2015
 URL: https://issues.apache.org/jira/browse/COUCHDB-2015
 Project: CouchDB
  Issue Type: New Feature
  Components: Plugins
Reporter: Jan Lehnardt


 - Instead of hardcoding a list of plugins into Futon/Fauxton, we load
   a list of applicable plugins from a central (and configurable)
   plugins repository.
 - This allows plugin authors to publish new plugins and new versions
   of existing plugins independently.





--
This message was sent by Atlassian JIRA
(v6.1.5#6160)


[jira] [Created] (COUCHDB-2016) Plugins meet BigCouch

2014-01-04 Thread Jan Lehnardt (JIRA)
Jan Lehnardt created COUCHDB-2016:
-

 Summary: Plugins meet BigCouch
 Key: COUCHDB-2016
 URL: https://issues.apache.org/jira/browse/COUCHDB-2016
 Project: CouchDB
  Issue Type: New Feature
  Components: Plugins
Reporter: Jan Lehnardt


Currently Plugins don’t work with BigCouch. Two options that I can see so far:

1. Find a way to dynamically install plugins into a cluster, surviving offline 
nodes that get a delayed installation on recovery (or only allow plugins into a 
fully online cluster).

2. Make plugin building a static affair where plugins are installed with the 
rest of CouchDB as an Erlang release and do not allow dynamic updates of apps.

I’d prefer 1, but any other options are welcome too.



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)


[jira] [Created] (COUCHDB-2017) Plugins meet Erlang Releases

2014-01-04 Thread Jan Lehnardt (JIRA)
Jan Lehnardt created COUCHDB-2017:
-

 Summary: Plugins meet Erlang Releases
 Key: COUCHDB-2017
 URL: https://issues.apache.org/jira/browse/COUCHDB-2017
 Project: CouchDB
  Issue Type: New Feature
  Components: Plugins
Reporter: Jan Lehnardt


In the near future, CouchDB’s distribution will be based around Erlang releases 
and zero downtime upgrades. Plugins will have to play well with that world.



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)


[jira] [Created] (COUCHDB-2018) Plugins with external dependencies

2014-01-04 Thread Jan Lehnardt (JIRA)
Jan Lehnardt created COUCHDB-2018:
-

 Summary: Plugins with external dependencies
 Key: COUCHDB-2018
 URL: https://issues.apache.org/jira/browse/COUCHDB-2018
 Project: CouchDB
  Issue Type: New Feature
  Components: Plugins
Reporter: Jan Lehnardt


Figure out how to handle plugins that have native ports, C library, or Java 
dependencies (or whatever else people would like to wrap into plugins)



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)


[jira] [Updated] (COUCHDB-2015) Plugin Registry

2014-01-04 Thread Jan Lehnardt (JIRA)

 [ 
https://issues.apache.org/jira/browse/COUCHDB-2015?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jan Lehnardt updated COUCHDB-2015:
--

Description: 
 - Instead of hardcoding a list of plugins into Futon/Fauxton, we load
   a list of applicable plugins from a central (and configurable)
   plugins repository.
 - This allows plugin authors to publish new plugins and new versions
   of existing plugins independently. The focus should be on ease of publishing.



  was:
 - Instead of hardcoding a list of plugins into Futon/Fauxton, we load
   a list of applicable plugins from a central (and configurable)
   plugins repository.
 - This allows plugin authors to publish new plugins and new versions
   of existing plugins independently.




 Plugin Registry
 ---

 Key: COUCHDB-2015
 URL: https://issues.apache.org/jira/browse/COUCHDB-2015
 Project: CouchDB
  Issue Type: New Feature
  Components: Plugins
Reporter: Jan Lehnardt

  - Instead of hardcoding a list of plugins into Futon/Fauxton, we load
a list of applicable plugins from a central (and configurable)
plugins repository.
  - This allows plugin authors to publish new plugins and new versions
of existing plugins independently. The focus should be on ease of 
 publishing.



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)


[jira] [Created] (COUCHDB-2020) Tie plugins to identities / sign plugins

2014-01-04 Thread Jan Lehnardt (JIRA)
Jan Lehnardt created COUCHDB-2020:
-

 Summary: Tie plugins to identities / sign plugins
 Key: COUCHDB-2020
 URL: https://issues.apache.org/jira/browse/COUCHDB-2020
 Project: CouchDB
  Issue Type: New Feature
  Components: Plugins
Reporter: Jan Lehnardt


It should be possible to cryptographically ensure that a plugin has been 
provided by its supposed author. A web of trust for plugin authors could be a 
useful thing to have.



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)


[jira] [Created] (COUCHDB-2019) Handle CouchDB crashes during plugin installation gracefully

2014-01-04 Thread Jan Lehnardt (JIRA)
Jan Lehnardt created COUCHDB-2019:
-

 Summary: Handle CouchDB crashes during plugin installation 
gracefully
 Key: COUCHDB-2019
 URL: https://issues.apache.org/jira/browse/COUCHDB-2019
 Project: CouchDB
  Issue Type: New Feature
  Components: Plugins
Reporter: Jan Lehnardt


Currently installing a plugin and crashing CouchDB somewhere in between results 
in an unknown state. Installation should be more resilient.



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)


[jira] [Created] (COUCHDB-2021) Plugins should install tests docs

2014-01-04 Thread Jan Lehnardt (JIRA)
Jan Lehnardt created COUCHDB-2021:
-

 Summary: Plugins should install tests  docs
 Key: COUCHDB-2021
 URL: https://issues.apache.org/jira/browse/COUCHDB-2021
 Project: CouchDB
  Issue Type: New Feature
  Components: Plugins
Reporter: Jan Lehnardt


currently plugins can’t install tests or docs. That should be fixed.



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)


[jira] [Created] (COUCHDB-2022) ./couchdb should honour --additional_plugin_dir=DIR

2014-01-04 Thread Jan Lehnardt (JIRA)
Jan Lehnardt created COUCHDB-2022:
-

 Summary: ./couchdb should honour --additional_plugin_dir=DIR
 Key: COUCHDB-2022
 URL: https://issues.apache.org/jira/browse/COUCHDB-2022
 Project: CouchDB
  Issue Type: New Feature
  Components: Plugins
Reporter: Jan Lehnardt


It should be possible to point to another directory with plugins.



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)


[jira] [Commented] (COUCHDB-2015) Plugin Registry

2014-01-04 Thread Jan Lehnardt (JIRA)

[ 
https://issues.apache.org/jira/browse/COUCHDB-2015?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13862420#comment-13862420
 ] 

Jan Lehnardt commented on COUCHDB-2015:
---

I’d like to steal as many ideas from npm as possible as they seem to have 
gotten things pretty right. Also, they use CouchDB underneath, so yeah :)

 Plugin Registry
 ---

 Key: COUCHDB-2015
 URL: https://issues.apache.org/jira/browse/COUCHDB-2015
 Project: CouchDB
  Issue Type: New Feature
  Components: Plugins
Reporter: Jan Lehnardt

  - Instead of hardcoding a list of plugins into Futon/Fauxton, we load
a list of applicable plugins from a central (and configurable)
plugins repository.
  - This allows plugin authors to publish new plugins and new versions
of existing plugins independently. The focus should be on ease of 
 publishing.



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)


[jira] [Commented] (COUCHDB-2008) CI: Create repeatable images for different operating system configurations

2013-12-27 Thread Jan Lehnardt (JIRA)

[ 
https://issues.apache.org/jira/browse/COUCHDB-2008?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13857664#comment-13857664
 ] 

Jan Lehnardt commented on COUCHDB-2008:
---

[~crigor] sounds good, looking forward to your Ansible work!

We can get new VMs with any OS configuration on demand, I opted for the older 
ones since they are still supported and the current CI system and many devs 
cover the current ubuntus.



 CI: Create repeatable images for different operating system configurations
 --

 Key: COUCHDB-2008
 URL: https://issues.apache.org/jira/browse/COUCHDB-2008
 Project: CouchDB
  Issue Type: New Feature
  Components: Infrastructure
Reporter: Jan Lehnardt

 Dave suggests to look into Ansible  Packer to create images for CI.
 The idea would be to run these configurations on the CI server and controlled 
 by Jenkins. It should also be possible to set up a configuration locally that 
 matches the CI box exactly, so one can do debugging under the same 
 circumstances the CI server runs tests.
 The requirement for now is that it all needs to work with a set of VMs that 
 we have SSH access to, but we don’t manage the host. I’m not too familiar 
 with all the automation and VM image packaging tools, so I don’t know if one 
 or another is useful in that context or not.



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)


[jira] [Commented] (COUCHDB-1946) Trying to replicate NPM grinds to a halt after 40GB

2013-12-26 Thread Jan Lehnardt (JIRA)

[ 
https://issues.apache.org/jira/browse/COUCHDB-1946?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13857118#comment-13857118
 ] 

Jan Lehnardt commented on COUCHDB-1946:
---

[~indexzero] Are you replicating form a single CouchDB or through a load 
balancer with multiple couches behind it?

 Trying to replicate NPM grinds to a halt after 40GB
 ---

 Key: COUCHDB-1946
 URL: https://issues.apache.org/jira/browse/COUCHDB-1946
 Project: CouchDB
  Issue Type: Bug
  Components: Database Core
Reporter: Marc Trudel
 Attachments: couch.log


 I have been able to replicate the Node.js NPM database until 40G or so, then 
 I get this:
 https://gist.github.com/stelcheck/7723362
 I one case I have gotten a flat-out OOM error, but I didn't take a dump of 
 the log output at the time.
 CentOS6.4 with CouchDB 1.5 (also tried 1.3.1, but to no avail). Also tried to 
 restart replication from scratch - twice - bot cases stalling at 40GB.



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)


[jira] [Closed] (COUCHDB-1987) make distcheck broken

2013-12-19 Thread Jan Lehnardt (JIRA)

 [ 
https://issues.apache.org/jira/browse/COUCHDB-1987?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jan Lehnardt closed COUCHDB-1987.
-

Resolution: Fixed

 make distcheck broken
 -

 Key: COUCHDB-1987
 URL: https://issues.apache.org/jira/browse/COUCHDB-1987
 Project: CouchDB
  Issue Type: Bug
  Components: Build System
Reporter: Jan Lehnardt

 make[1]: Entering directory `/vagrant/src'
 make[1]: *** No rule to make target `fauxton/app/initialize.js', needed by 
 `distdir'.  Stop.
 make[1]: Leaving directory `/vagrant/src'
 make: *** [distdir] Error 1



--
This message was sent by Atlassian JIRA
(v6.1.4#6159)


[jira] [Created] (COUCHDB-2007) Building docs under CI fails

2013-12-19 Thread Jan Lehnardt (JIRA)
Jan Lehnardt created COUCHDB-2007:
-

 Summary: Building docs under CI fails
 Key: COUCHDB-2007
 URL: https://issues.apache.org/jira/browse/COUCHDB-2007
 Project: CouchDB
  Issue Type: Bug
  Components: Build System, Documentation
Reporter: Jan Lehnardt


Building the PDF version of the docs fails under CI due to release name:

The CouchDB.tex file that gets generated includes a line that looks like this:

\release{1.6.0+build.jenkins-ERLANG_VERSION=R14B04,label=Mac-OS-10-8-2-832-76-g2996574}

It isn’t clear whether this is plain to long or whether there are invalid 
characters in there.

I don’t quite understand how docs inherit the release name, so I need to ask 
for help here.

The release name otherwise is valid, as it encodes the different build matrix 
settings.





--
This message was sent by Atlassian JIRA
(v6.1.4#6159)


[jira] [Commented] (COUCHDB-2007) Building docs under CI fails

2013-12-19 Thread Jan Lehnardt (JIRA)

[ 
https://issues.apache.org/jira/browse/COUCHDB-2007?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13852992#comment-13852992
 ] 

Jan Lehnardt commented on COUCHDB-2007:
---

Builds started failing after this commit: 
https://github.com/apache/couchdb/commit/dd20a0fa69e85e985f70e65d6291416d529a2c34
 — Maybe we can add a clause that strips the long CI name down somehow?

 Building docs under CI fails
 

 Key: COUCHDB-2007
 URL: https://issues.apache.org/jira/browse/COUCHDB-2007
 Project: CouchDB
  Issue Type: Bug
  Components: Build System, Documentation
Reporter: Jan Lehnardt

 Building the PDF version of the docs fails under CI due to release name:
 The CouchDB.tex file that gets generated includes a line that looks like this:
 \release{1.6.0+build.jenkins-ERLANG_VERSION=R14B04,label=Mac-OS-10-8-2-832-76-g2996574}
 It isn’t clear whether this is plain to long or whether there are invalid 
 characters in there.
 I don’t quite understand how docs inherit the release name, so I need to ask 
 for help here.
 The release name otherwise is valid, as it encodes the different build matrix 
 settings.



--
This message was sent by Atlassian JIRA
(v6.1.4#6159)


[jira] [Commented] (COUCHDB-2007) Building docs under CI fails

2013-12-19 Thread Jan Lehnardt (JIRA)

[ 
https://issues.apache.org/jira/browse/COUCHDB-2007?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13853022#comment-13853022
 ] 

Jan Lehnardt commented on COUCHDB-2007:
---

The linked branch includes a commit that does the job, however the python, 
while it works, is not a prettiest. I wouldn’t mind an idiomatic adjustment :)

 Building docs under CI fails
 

 Key: COUCHDB-2007
 URL: https://issues.apache.org/jira/browse/COUCHDB-2007
 Project: CouchDB
  Issue Type: Bug
  Components: Build System, Documentation
Reporter: Jan Lehnardt

 Building the PDF version of the docs fails under CI due to release name:
 The CouchDB.tex file that gets generated includes a line that looks like this:
 \release{1.6.0+build.jenkins-ERLANG_VERSION=R14B04,label=Mac-OS-10-8-2-832-76-g2996574}
 It isn’t clear whether this is plain to long or whether there are invalid 
 characters in there.
 I don’t quite understand how docs inherit the release name, so I need to ask 
 for help here.
 The release name otherwise is valid, as it encodes the different build matrix 
 settings.



--
This message was sent by Atlassian JIRA
(v6.1.4#6159)


[jira] [Created] (COUCHDB-2008) CI: Create repeatable images for different operating system configurations

2013-12-19 Thread Jan Lehnardt (JIRA)
Jan Lehnardt created COUCHDB-2008:
-

 Summary: CI: Create repeatable images for different operating 
system configurations
 Key: COUCHDB-2008
 URL: https://issues.apache.org/jira/browse/COUCHDB-2008
 Project: CouchDB
  Issue Type: New Feature
  Components: Infrastructure
Reporter: Jan Lehnardt


Dave suggests to look into Ansible  Packer to create images for CI.

The idea would be to run these configurations on the CI server and controlled 
by Jenkins. It should also be possible to set up a configuration locally that 
matches the CI box exactly, so one can do debugging under the same 
circumstances the CI server runs tests.

The requirement for now is that it all needs to work with a set of VMs that we 
have SSH access to, but we don’t manage the host. I’m not too familiar with all 
the automation and VM image packaging tools, so I don’t know if one or another 
is useful in that context or not.



--
This message was sent by Atlassian JIRA
(v6.1.4#6159)


[jira] [Closed] (COUCHDB-2007) Building docs under CI fails

2013-12-19 Thread Jan Lehnardt (JIRA)

 [ 
https://issues.apache.org/jira/browse/COUCHDB-2007?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jan Lehnardt closed COUCHDB-2007.
-

   Resolution: Fixed
Fix Version/s: 1.6.0
   1.5.1

 Building docs under CI fails
 

 Key: COUCHDB-2007
 URL: https://issues.apache.org/jira/browse/COUCHDB-2007
 Project: CouchDB
  Issue Type: Bug
  Components: Build System, Documentation
Reporter: Jan Lehnardt
 Fix For: 1.5.1, 1.6.0


 Building the PDF version of the docs fails under CI due to release name:
 The CouchDB.tex file that gets generated includes a line that looks like this:
 \release{1.6.0+build.jenkins-ERLANG_VERSION=R14B04,label=Mac-OS-10-8-2-832-76-g2996574}
 It isn’t clear whether this is plain to long or whether there are invalid 
 characters in there.
 I don’t quite understand how docs inherit the release name, so I need to ask 
 for help here.
 The release name otherwise is valid, as it encodes the different build matrix 
 settings.



--
This message was sent by Atlassian JIRA
(v6.1.4#6159)


[jira] [Commented] (COUCHDB-1986) 04-replication-large-atts.t times out

2013-12-16 Thread Jan Lehnardt (JIRA)

[ 
https://issues.apache.org/jira/browse/COUCHDB-1986?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13849272#comment-13849272
 ] 

Jan Lehnardt commented on COUCHDB-1986:
---

Some more testing today, bumping the test timeout waiting for replication to 
finish from 30 to 60 makes this pass again.

Looking at the request log can see that PUTing docs to the remote db takes 
disproportionally long (1 minute + a few seconds each):

[Mon, 16 Dec 2013 12:23:27 GMT] [info] [0.321.0] 127.0.0.1 - - PUT 
/couch_test_rep_db_b/_local/8831f8738bd5d17e00da7
1581b23 201
[Mon, 16 Dec 2013 12:24:30 GMT] [info] [0.322.0] 127.0.0.1 - - PUT 
/couch_test_rep_db_b/doc5?new_edits=false 201
[Mon, 16 Dec 2013 12:25:38 GMT] [info] [0.322.0] 127.0.0.1 - - PUT 
/couch_test_rep_db_b/doc4?new_edits=false 201
[Mon, 16 Dec 2013 12:26:51 GMT] [info] [0.322.0] 127.0.0.1 - - PUT 
/couch_test_rep_db_b/doc3?new_edits=false 201
[Mon, 16 Dec 2013 12:27:58 GMT] [info] [0.322.0] 127.0.0.1 - - PUT 
/couch_test_rep_db_b/doc2?new_edits=false 201
[Mon, 16 Dec 2013 12:29:06 GMT] [info] [0.322.0] 127.0.0.1 - - PUT 
/couch_test_rep_db_b/doc11?new_edits=false 201
[Mon, 16 Dec 2013 12:30:13 GMT] [info] [0.322.0] 127.0.0.1 - - PUT 
/couch_test_rep_db_b/doc10?new_edits=false 201
[Mon, 16 Dec 2013 12:31:20 GMT] [info] [0.322.0] 127.0.0.1 - - PUT 
/couch_test_rep_db_b/doc1?new_edits=false 201
[Mon, 16 Dec 2013 12:31:20 GMT] [info] [0.322.0] 127.0.0.1 - - POST 
/couch_test_rep_db_b/_ensure_full_commit 201

After the last one all other requests come in at expected speeds.

I’m not too familiar with this part of the replicator code, so I couldn’t 
quickly find why either the requests take that long, or why the replicator 
waits a minute until it continues.

Another thing I tried was seeing whether the new R16B scheduling behaviour 
introduced this, but running the test with

 ERL_FLAGS=+sws legacy ./test/etap/run -v 
 src/couch_replicator/test/04-replication-large-atts.t

and the original timeout still times out.


 04-replication-large-atts.t times out
 -

 Key: COUCHDB-1986
 URL: https://issues.apache.org/jira/browse/COUCHDB-1986
 Project: CouchDB
  Issue Type: Bug
  Components: Replication
Affects Versions: 1.5.0
Reporter: Jan Lehnardt

 04-replication-large-atts.t gets stuck around 558, sometimes a little earlier 
 or later, but it times out eventually, regardless of the timeout. I tried 
 doubling and such.



--
This message was sent by Atlassian JIRA
(v6.1.4#6159)


[jira] [Commented] (COUCHDB-1987) make distcheck broken

2013-12-15 Thread Jan Lehnardt (JIRA)

[ 
https://issues.apache.org/jira/browse/COUCHDB-1987?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13848582#comment-13848582
 ] 

Jan Lehnardt commented on COUCHDB-1987:
---

Noah said he’s going to fix this in his build-fauxton branch, but I’d like to 
explain this for posterity.

make indeed throws this error, I didn’t suggest it is a grunt.js error, but 
it’s the way we use Autotools. In particular, in how we use Autotools for 
packaging. Each file that is supposed to end up in our final 
apache-couchdb-x.y.z.tar.gz tarball needs to be marked as such in a 
Makefile.am. For Fauxton that means we maintain a list of Fauxton files in 
src/Makefila.am specified as `FAUXTON_FILES`:

FAUXTON_FILES = \
fauxton/app/addons/activetasks/assets/less/activetasks.less \
fauxton/app/addons/activetasks/base.js \
fauxton/app/addons/activetasks/resources.js \
…and so on

In that list, there is a line: `fauxton/app/initialize.js`, e.g. where we say 
that file is supposed to go into the release tarball. That file however does 
not exist at the time `make dist` is run, so make complains. I assume the 
solution is that make needs to call grunt at some point to turn 
fauxton/app/initialize.underscore into fauxton/app/initialize.js and I think 
that is what Noah is doing in his branch. I just wanted to explain, why this 
isn’t a make error.


 make distcheck broken
 -

 Key: COUCHDB-1987
 URL: https://issues.apache.org/jira/browse/COUCHDB-1987
 Project: CouchDB
  Issue Type: Bug
  Components: Build System
Reporter: Jan Lehnardt

 make[1]: Entering directory `/vagrant/src'
 make[1]: *** No rule to make target `fauxton/app/initialize.js', needed by 
 `distdir'.  Stop.
 make[1]: Leaving directory `/vagrant/src'
 make: *** [distdir] Error 1



--
This message was sent by Atlassian JIRA
(v6.1.4#6159)


[jira] [Created] (COUCHDB-1999) Merge BigCouch and rcouch

2013-12-15 Thread Jan Lehnardt (JIRA)
Jan Lehnardt created COUCHDB-1999:
-

 Summary: Merge BigCouch and rcouch
 Key: COUCHDB-1999
 URL: https://issues.apache.org/jira/browse/COUCHDB-1999
 Project: CouchDB
  Issue Type: New Feature
Reporter: Jan Lehnardt


This issue is the master issue to track the BigCouch and rcouch.

{noformat}
  rebase
 nebraska master done
  +---x+--++X---
  ||  ||+
  ||  |||
 integration  |v  vvv
  +---x+
  | ^^   ^   ^  ^  |
  | ||   |   |  |  |
 rcouch   | ||   |   |  +  |
  +---x-++---+---+--X--|
  ||
  ||
 master   ||
  +---xv
merge to master
{noformat}’
via http://www.asciiflow.com/#Draw3086755538105541081/1497478309

1. nebraska and rcouch branches rebase from master from tag merge-rebase-target 
/ d5f0976.
2. nebraska continues with its work and periodically pushes to integration.
3. rcouch continues with its work and periodically pushes to integration.
4. at point `done`, both rcouch and nebraska can verify all their stuff works.
5. at point `merge to master` the end result goes into CouchDB master and we 
can make a release.

Please link all related issues with this one.




--
This message was sent by Atlassian JIRA
(v6.1.4#6159)


[jira] [Updated] (COUCHDB-1993) Make fabric work with the refactored view engine

2013-12-15 Thread Jan Lehnardt (JIRA)

 [ 
https://issues.apache.org/jira/browse/COUCHDB-1993?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jan Lehnardt updated COUCHDB-1993:
--

Component/s: (was: Database Core)
 BigCouch

 Make fabric work with the refactored view engine
 

 Key: COUCHDB-1993
 URL: https://issues.apache.org/jira/browse/COUCHDB-1993
 Project: CouchDB
  Issue Type: Improvement
  Components: BigCouch
Reporter: Volker Mische





--
This message was sent by Atlassian JIRA
(v6.1.4#6159)


[jira] [Assigned] (COUCHDB-1992) move build to an Erlang release

2013-12-15 Thread Jan Lehnardt (JIRA)

 [ 
https://issues.apache.org/jira/browse/COUCHDB-1992?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jan Lehnardt reassigned COUCHDB-1992:
-

Assignee: Jan Lehnardt

 move build to an Erlang release
 ---

 Key: COUCHDB-1992
 URL: https://issues.apache.org/jira/browse/COUCHDB-1992
 Project: CouchDB
  Issue Type: Improvement
Reporter: Benoit Chesneau
Assignee: Jan Lehnardt

 Backports changes from rcouch



--
This message was sent by Atlassian JIRA
(v6.1.4#6159)


[jira] [Updated] (COUCHDB-1992) move build to an Erlang release

2013-12-15 Thread Jan Lehnardt (JIRA)

 [ 
https://issues.apache.org/jira/browse/COUCHDB-1992?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jan Lehnardt updated COUCHDB-1992:
--

Component/s: BigCouch

 move build to an Erlang release
 ---

 Key: COUCHDB-1992
 URL: https://issues.apache.org/jira/browse/COUCHDB-1992
 Project: CouchDB
  Issue Type: Improvement
  Components: BigCouch
Reporter: Benoit Chesneau
Assignee: Jan Lehnardt

 Backports changes from rcouch



--
This message was sent by Atlassian JIRA
(v6.1.4#6159)


[jira] [Updated] (COUCHDB-1991) improve supervision of o=couchdb

2013-12-15 Thread Jan Lehnardt (JIRA)

 [ 
https://issues.apache.org/jira/browse/COUCHDB-1991?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jan Lehnardt updated COUCHDB-1991:
--

Component/s: BigCouch

 improve supervision of o=couchdb
 

 Key: COUCHDB-1991
 URL: https://issues.apache.org/jira/browse/COUCHDB-1991
 Project: CouchDB
  Issue Type: Improvement
  Components: BigCouch
Reporter: Benoit Chesneau

 Improve the supervision by backporting changes from rcouch mixed with the 
 nebraska branch



--
This message was sent by Atlassian JIRA
(v6.1.4#6159)


[jira] [Updated] (COUCHDB-1999) Merge BigCouch and rcouch

2013-12-15 Thread Jan Lehnardt (JIRA)

 [ 
https://issues.apache.org/jira/browse/COUCHDB-1999?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jan Lehnardt updated COUCHDB-1999:
--

Description: 
This issue is the master issue to track the BigCouch and rcouch.

{noformat}
  rebase
 nebraska master done
  +---x+--++X---
  ||  ||+
  ||  |||
 integration  |v  vvv
  +---x+
  | ^^   ^   ^  ^  |
  | ||   |   |  |  |
 rcouch   | ||   |   |  +  |
  +---x-++---+---+--X--|
  ||
  ||
 master   ||
  +---xv
merge to master
{noformat}
via http://www.asciiflow.com/#Draw3086755538105541081/1497478309

1. nebraska and rcouch branches rebase from master from tag merge-rebase-target 
/ d5f0976.
2. nebraska continues with its work and periodically pushes to integration.
3. rcouch continues with its work and periodically pushes to integration.
4. at point `done`, both rcouch and nebraska can verify all their stuff works.
5. at point `merge to master` the end result goes into CouchDB master and we 
can make a release.

Please link all related issues with this one.


  was:
This issue is the master issue to track the BigCouch and rcouch.

{noformat}
  rebase
 nebraska master done
  +---x+--++X---
  ||  ||+
  ||  |||
 integration  |v  vvv
  +---x+
  | ^^   ^   ^  ^  |
  | ||   |   |  |  |
 rcouch   | ||   |   |  +  |
  +---x-++---+---+--X--|
  ||
  ||
 master   ||
  +---xv
merge to master
{noformat}’
via http://www.asciiflow.com/#Draw3086755538105541081/1497478309

1. nebraska and rcouch branches rebase from master from tag merge-rebase-target 
/ d5f0976.
2. nebraska continues with its work and periodically pushes to integration.
3. rcouch continues with its work and periodically pushes to integration.
4. at point `done`, both rcouch and nebraska can verify all their stuff works.
5. at point `merge to master` the end result goes into CouchDB master and we 
can make a release.

Please link all related issues with this one.



 Merge BigCouch and rcouch
 -

 Key: COUCHDB-1999
 URL: https://issues.apache.org/jira/browse/COUCHDB-1999
 Project: CouchDB
  Issue Type: New Feature
Reporter: Jan Lehnardt

 This issue is the master issue to track the BigCouch and rcouch.
 {noformat}
   rebase
  nebraska master done
   +---x+--++X---
   ||  ||+
   ||  |||
  integration  |v  vvv
   +---x+
   | ^^   ^   ^  ^  |
   | ||   |   |  |  |
  rcouch   | ||   |   |  +  |
   +---x-++---+---+--X--|
   ||
   ||
  master   ||
   +---xv
 merge to master
 {noformat}
 via http://www.asciiflow.com/#Draw3086755538105541081/1497478309
 1. nebraska and rcouch branches rebase from master from tag 
 merge-rebase-target / d5f0976.
 2. nebraska continues with its work and periodically pushes to integration.
 3. rcouch continues with its work and periodically pushes to integration.
 4. at point `done`, both rcouch and nebraska can verify all their stuff works.
 5. at point `merge 

  1   2   3   4   5   6   7   8   9   >