From 3c383bcc8b1289fa52506300356aa40b1e3f3105 Mon Sep 17 00:00:00 2001 From: Steven Allen Date: Fri, 15 Mar 2019 15:43:03 -0700 Subject: [PATCH] make in-memory datastore thread-safe License: MIT Signed-off-by: Steven Allen --- repo/fsrepo/datastores.go | 3 ++- repo/repo.go | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/repo/fsrepo/datastores.go b/repo/fsrepo/datastores.go index 58e8f2124ed..8cdf25fc29f 100644 --- a/repo/fsrepo/datastores.go +++ b/repo/fsrepo/datastores.go @@ -10,6 +10,7 @@ import ( ds "github.com/ipfs/go-datastore" "github.com/ipfs/go-datastore/mount" + dssync "github.com/ipfs/go-datastore/sync" "github.com/ipfs/go-ds-measure" ) @@ -174,7 +175,7 @@ func (c *memDatastoreConfig) DiskSpec() DiskSpec { } func (c *memDatastoreConfig) Create(string) (repo.Datastore, error) { - return ds.NewMapDatastore(), nil + return dssync.MutexWrap(ds.NewMapDatastore()), nil } type logDatastoreConfig struct { diff --git a/repo/repo.go b/repo/repo.go index 753c8fce154..ffb024afae7 100644 --- a/repo/repo.go +++ b/repo/repo.go @@ -59,5 +59,5 @@ type Repo interface { // Datastore is the interface required from a datastore to be // acceptable to FSRepo. type Datastore interface { - ds.Batching // should be threadsafe, just be careful + ds.Batching // must be thread-safe }