[GitHub] [couchdb] rjharmon commented on issue #2015: parse_revid - Badarg error in HTTP request

2020-06-25 Thread GitBox


rjharmon commented on issue #2015:
URL: https://github.com/apache/couchdb/issues/2015#issuecomment-649790164


   Can good 32-byte-hex-ints continue to get an optimized code path, while 
other 32-byte _revs get a working result as with non-32-byte _rev's?



This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org




[GitHub] [couchdb] rjharmon commented on issue #2015: parse_revid - Badarg error in HTTP request

2020-06-25 Thread GitBox


rjharmon commented on issue #2015:
URL: https://github.com/apache/couchdb/issues/2015#issuecomment-649783342


   As a developer who uses it, I selected couchdb in part because the _rev is 
opaque and CAN be controlled from outside couchdb.   Using 
md5(erlang-data-representation) in those _revs is far from ideal for 
deterministic versioning, so it's not just a nice point of flexibility. But it 
is nice, for sure.
   
   Would push replicators from other versions/implementations (including and 
not limited to PouchDB) have to pull the new _rev and write it back to disk, 
when pushing to a server that ignores provided _rev's?  If so, that would be a 
minor ick.  
   
   Impact assessment: if one generates revs that have a 32-byte non-int, one 
would get an error, search and find this issue and then add or remove a byte 
from their _rev representation.  I'm not seeing that as "sharp", myself.  Did I 
miss something?
   
   I would suggest, as the simplest change, to continue the existing semantic 
of "support provided _rev's opaquely", while correcting the unintended 
crash-on-32-char-rev's-not-parsable.  I might also add any needed guidance for 
integrators and authors of custom replicators that they SHOULD generate 
deterministic _rev's if they use an algorithm different from couchdb's default 
internal mechanism.  
   
   Might it be helpful to strengthen any language for proxies and replication 
implementers to treat observed _rev's as opaque at baseline? while possibly 
noting that custom replicators are allowed to probe for any special meanings 
for some optimization purposes (just as the int-parsing logic does currently), 
but that they MUST be robust to opaque _rev's that don't fit their hopes and 
dreams.  I think that's another way of indicating the high-level outcome that 
it seems @ricellis drives at.
   
   @davisp It's possible to suggest people SHOULD NOT use flags in the revs for 
indicating such facts as deletion or update-times, although given that _rev's 
are opaque values, it's not clear to me that these bits of meaning even 
**could** be harmful to anyone (reminding myself that if one does such things, 
they can also evaluate and test against any potentially-colliding changes made 
in later releases of the server) - essentially as Paul said.  I'd leave off 
this bit, myself.  
   
   There's some additional perspective from the field.



This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org