* dropbox/find-photos: encode auth token in photo URLs so they can
work in UI.
* Remove requirement for datePublished from photo-index
Dropbox doesn't have a publish date
* fix test
* review comments
* npm test
Previously we would clone them from the original cursor, to (a) not
modify the original cursor, and (b) have initialization and finalization
not interfere with each other.
However, this isn't necessary and it just creates unnecessary churn. For
example, when we read-ahead, it would be wasteful to re-read the
read-head chunks from initialization.
This puts the flow header after the copyright header.
It also:
* fixes the existing files to have valid headers
* Makes sure the script can handle doctype
The code in fetch.js and http_batch_store.js weren't really
agreeing on how HTTP failures were reported up the stack. Now,
they agree, and this allows HttpBatchStore.updateRoot() to
correctly detect a conflict response and return false.
This means that the merge logic in Database.commit() works right,
now.
Fixes#2699
* Introduce samples/js/dropbox/slurp
Doing the filter step will be a bit different because Dropbox does
not provide secret URLs for every photo by default. Requests have
to be oauth-authenticated so we'll have to figure out how to do
that.
* vendor golang.org/x/oauth2 and golang.org/x/net
* Introduce oauthify and modify dropbox/slurp to use
In some cases where the same chunk appears more than once in a given
writeValue request, the handleWriteValue code is able to recognize
this and skip re-decoding and re-hashing it. In that case an empty
result winds up percolating through the code, and I wasn't handling
this correctly. Fixed and added a unit test to catch this.
Fixes#2695
There are two places where ValidatingBatchingSink could be more
concurrent: Prepare(), where it's reading in hints, and Enqueue().
Making Prepare() handle many hints concurrently is easy because the
hints don't depend on one another, so that method now just spins up
a number of goroutines and runs them all at once.
Enqueue() is more complex, because while Chunk decoding and validation
of its hash can proceed concurrently, validating that a given Chunk is
'ref-complete' requires that the chunks in the writeValue payload all
be processed in order. So, this patch uses orderedparallel to run the
new Decode() method on chunks in parallel, but then return to serial
operation before calling the modified Enqueue() method.
Fixes#1935
demo-server was using a read-through cache to allow it to serve more
concurrent requests more quickly by reducing disk I/O. As seen in issue
across Databases, leading to incorrect sync results in some instances.
Since we're not worried about demo-server load right now, simply delete
the cache.
Fixes#2688