Commit Graph

15 Commits

Author SHA1 Message Date
mpl 71090f7c80 pkg/server: add files "zipper" to DownloadHandler
We want to add a feature for clients (the web UI), where they can select
a bunch of files and ask the server for a zip archive of all these files.

This CL modifies the DownloadHandler so it does exactly that upon
reception of a POST request with a query parameter of the form
files=sha1-foo,sha1-bar,sha1-baz

This CL also adds a new button to the contextual sidebar of the web UI,
that takes care of sending the download request to the server.

known limitations: only permanodes with file as camliContent are
accepted as a valid selection (i.e. no sets, or static-dirs, etc) for
now.

Implementation detail:
We're creating an ephemeral DOM form on the fly to send the request.
The reason is: if we sent it as a Go http request, we'd have to read
the response manually and then we'd have no way of writing it to disk.
If we did it with an xhr, we could write the response to disk by
creating a File or Blob and then using URL.createObjectURL(), but we'd
have to keep the response in memory while doing so, which is
unacceptable for large enough archives.

Fixes #899

Change-Id: I104f7c5bd10ab3369e28d33752380dd12b5b3e6b
2017-03-17 00:59:19 +01:00
Brad Fitzpatrick e93e4f3822 Fix deadlock in search/index.
The describe requests were launching a storm of RLocks which weren't
safe in the presence of goroutines trying to acquire write locks.

Instead, make the corpus locking the responsibility of the caller and
add Lock/Unlock/RLock/RUnlock methods to the index and move locking up
a level.

This also adds a fair bit of context.Context plumbing which was used
in earlier debugging.

Fixes camlistore/camlistore#709

Change-Id: I8d7254d1e1da541f8c080d62f5408aac807fd3b1
2016-04-22 14:57:10 -07:00
mpl e0d719ba21 pkg/types: remove
Most of it replaced with vendor/go4.org/types and
vendor/go4.org/readerutil

u32 went where needed in pkg/blobserver/*
invertedBool went in pkg/types/serverconfig
atomics64 went in pkg/fs

Change-Id: I230426cda35be4b45ed67e869f14e6fdae89be22
2016-02-05 18:28:47 +01:00
Brad Fitzpatrick f88da2ae70 Set X-Camlistore-Packed in download handler for debugging.
Change-Id: I30704f566159df6b4cd3b57b16d89f0ba8b0b042
2015-04-13 21:02:41 +02:00
Brad Fitzpatrick f947f8fc19 ui: use WholeRefFetcher for downloads and thumbnails, if available
This makes downloads and the thumbnailer's reading of full images use
blobpacked's WholeRefFetcher fast path, when available. The end result
is many fewer blob fetches.

Updates #532

Change-Id: I3bfd1cb0f04f68f81b80a63378c7b365bd73c974
2015-04-13 20:38:41 +02:00
Brad Fitzpatrick ff31f9f3d3 blobpacked: start of serving from blobpacked packs
Update #532

Change-Id: I35cc74a5013fe8796b05ae1a4bd27f10b5c90cea
2015-02-04 21:07:59 -08:00
Brad Fitzpatrick 6425d033fd server: refactor ui's DownloadHandler
Prep for efficient serving from blobpacked.

Change-Id: I5ea0902e6adcc0ba24e89984f684f0f2d4052022
2015-02-02 10:41:35 +01:00
Mario Russo 999a148b32 ui: added 'View original' link to sidebar
Notes:
-this patch also introduces the sidebar to the contents listing aspect (when viewing members of a set)
-the link will only appear for a _single_ selected item

https://code.google.com/p/camlistore/issues/detail?id=541
https://code.google.com/p/camlistore/issues/detail?id=546

Change-Id: Icc93eaa2478f40f3fe272520b1f6ede41f0731dc
2014-12-01 11:47:28 +01:00
Brad Fitzpatrick f3a519d3e5 schema: remove FileReader.FileSchema returning private type
Change-Id: I66af87155edfb7672294072fe18878af0811cf62
2014-06-13 15:47:14 -07:00
Brad Fitzpatrick bf94a73859 Get rid of SeekFetcher vs StreamingFetcher distinction and complexity.
StreamingFetcher is now just Fetcher, and its FetchStreaming is now
just Fetch.

SeekFetcher is gone. Blobs are max 16 MB anyway, so we can slurp to
memory when needed. The main thing that cared about SeekFetcher
was the GET handler, ServeBlobref, because http.ServeContent needed
one for range requests. That's rewritten in an earlier commit, using
the FakeSeeker from another earlier commit.

Lot of code got simpler as a result.

Change-Id: Ib819413e48a8f9b8d97f596d0fbf771dab211f11
2014-03-14 12:29:13 -07:00
Brad Fitzpatrick 0bdf20884b all: delete pkg/blobref; convert all from *blobref.BlobRef to new blob.Ref
Change-Id: Id2dfb7f19452bedf4f3c9310b36227fd8117b225
2013-08-03 19:54:30 -07:00
Brad Fitzpatrick 13105dad21 server: use http.ServeContent and use cache headers in download handler
Change-Id: I5c24f39c86f6308b32167cf0d92ee68f801b9181
2013-01-25 15:18:32 -08:00
Brad Fitzpatrick 06aed874c5 server: remove unnecessary log spam. dev-server --verbose will show this
Change-Id: Ia6613730ad2b40a436cb91806610e10a3b97cf48
2013-01-20 14:28:42 -08:00
Brad Fitzpatrick e3247edafb Change blobref.SeekerFromStreamingFetcher signature to not return an error.
Change-Id: I77f693e3b3d0d116e08bca3d3f4cb45ef2a00b27
2012-12-25 10:27:35 -08:00
Brad Fitzpatrick 0714a463c9 Update from r60 to [almost] Go 1.
A lot is still broken, but most stuff at least compiles now.

The directory tree has been rearranged now too.  Go libraries are now
under "pkg".  Fully qualified, they are e.g. "camlistore.org/pkg/jsonsign".

The go tool cannot yet fetch from arbitrary domains, but discussion is
happening now on which mechanism to use to allow that.

For now, put the camlistore root under $GOPATH/src.  Typically $GOPATH
is $HOME, so Camlistore should be at $HOME/src/camlistore.org.

Then you can:

$ go build ./server/camlistored

... etc

The build.pl script is currently disabled.  It'll be resurrected at
some point, but with a very different role (helping create a fake
GOPATH and running the go build command, if things are installed at
the wrong place, and/or running fileembed generators).

Many things are certainly broken.

Many things are disabled.  (MySQL, all indexing, etc).

Many things need to be moved into
camlistore.org/third_party/{code.google.com,github.com} and updated
from their r60 to Go 1 versions, where applicable.

The GoMySQL stuff should be updated to use database/sql and the ziutek
library implementing database/sql/driver.

Help wanted.

Change-Id: If71217dc5c8f0e70dbe46e9504ca5131c6eeacde
2012-02-18 21:53:06 -08:00