Perkeep (née Camlistore) is your personal storage system for life: a way of storing, syncing, sharing, modelling and backing up content.
Go to file
mpl 6f5a718ad1 cmd/camget: update client share chain when getting blobs from cache
When fetching shared blobs, we rely on the share chain to verify if a
blob can be reached. This chain is updated whenever we fetch an
additional link of the chain, by updating the Client.via map. However,
when some blobs of the chain are already cached in camget's DiskCache,
because we get them from the cache, we don't fetch them with
Client.FetchVia, which means the Client.via map isn't updated. And thus
the chain is broken.

This change adds Client.UpdateShareChain, and sets it as a hook to be
called by the CachingFetcher in the event of a cache hit. That way, we
ensure that the share chain is updated even when we get blobs from the
cache (instead of from the Client).

We also add a mutex to guard Client.via, because it is accessed by
concurrent smartFetch calls in case of a static-set.

As FetchVia was undocumented and not used by anyone, I made it
unexported. We can always export it again later when needed.

Fixes #856

Change-Id: I767cbec4b6f382cbccc25c0b97782b2a7472deb8
2016-09-26 19:03:04 +02:00
.hackfests Add a hackfest entry. Missed a lot of these, but still fun. 2013-12-27 16:16:09 -08:00
app Merge "pkg/index: use mime.TypeByExtension to record MIMEType" 2016-09-06 20:57:48 +00:00
bin New build tool. Should even work on Windows, if Go 1.1 is available, without MinGW/msys/etc. 2013-06-11 00:55:17 +02:00
clients android: build client with Go 1.7 2016-09-05 21:53:29 +02:00
cmd cmd/camget: update client share chain when getting blobs from cache 2016-09-26 19:03:04 +02:00
config config/config/dev-server-config.json: fix SourceRoot for publisher 2016-08-30 18:42:14 +02:00
dev make.go: remove --use_gopath 2016-05-09 17:22:39 +02:00
doc website: monthly release: 10aa2b3fbd 2016-09-05 19:01:50 +02:00
internal/chanworker add canonical import paths 2016-03-13 19:57:14 -07:00
lib/python Send auth header with GET requests too. 2013-08-02 21:13:53 -07:00
misc misc/docker: gensearchtypes.sh does not exist anymore 2016-09-05 16:50:06 +02:00
old Move remaining stuff in third_party/* to vendor/* 2016-04-20 16:49:15 -07:00
pkg cmd/camget: update client share chain when getting blobs from cache 2016-09-26 19:03:04 +02:00
server vendor: rename google.golang.org/cloud to cloud.google.com/go 2016-09-08 15:14:12 +02:00
vendor vendor: add google.golang.org/api/internal 2016-09-09 12:34:45 +02:00
website website: clean up previous docker git container 2016-09-05 23:51:41 +02:00
.dockerignore Dockerfile: update 2016-03-11 18:05:35 +01:00
.gitignore gitignore: bin/website 2016-06-29 17:04:54 +02:00
.header updated year in header template to 2015 2015-04-19 21:47:46 +02:00
.travis.yml travis CI: update to go 1.7 2016-09-19 15:50:52 +02:00
AUTHORS Merge "C+A: add Tilman Dilo (Individual CLA)" 2016-04-30 21:25:19 +00:00
BUILDING Update build instructions wrt Go 1.5 requirement 2015-08-23 16:32:21 +02:00
CONTRIBUTING.md website: update CLA instruction 2016-06-24 18:12:42 +02:00
CONTRIBUTORS CONTRIBUTORS: update CLA link 2016-05-01 20:59:52 -07:00
COPYING Add Apache license. 2011-01-27 23:00:13 -08:00
Dockerfile Dockerfile: update 2016-06-09 16:20:31 +02:00
Makefile path fixes for third_party move 2016-04-21 12:25:17 -07:00
README rename HACKING to CONTRIBUTING.md 2016-04-27 12:16:29 -07:00
TESTS cond: clean-up and start of tests 2014-01-19 15:06:55 -08:00
TODO Address TODO by moving CAMLI_DEBUG checks into env 2015-08-25 07:22:14 -07:00
make.go make.go: use host GOOS and GOARCH when go generating zsearch.go 2016-09-05 18:40:10 +02:00

README

Camlistore is your personal storage system for life.

It's a way to store, sync, share, model and back up content.

It stands for "Content-Addressable Multi-Layer Indexed Storage", for
lack of a better name.  For more, see:

     https://camlistore.org/
     https://camlistore.org/doc/

Other useful files:

     BUILDING       how to compile it ("go run make.go")
     CONTRIBUTING   how to do development and contribute

Mailing lists:

     http://camlistore.org/lists

Bugs and contributing:

     https://github.com/camlistore/camlistore/issues
     https://camlistore.org/doc/contributing