Skip to content
This repository was archived by the owner on Mar 28, 2023. It is now read-only.

Commit 55ddc75

Browse files
authored
Merge pull request #943 from OpenBazaar/TS_fix_inventory_cache
BUGFIX: Fix ipfs keystore caching.
2 parents 2e9f8fb + e212a3e commit 55ddc75

File tree

1 file changed

+9
-16
lines changed

1 file changed

+9
-16
lines changed

repo/ipfs_keystore.go

+9-16
Original file line numberDiff line numberDiff line change
@@ -58,12 +58,7 @@ func GetObjectFromIPFS(ctx commands.Context, p peer.ID, name string, maxCacheLen
5858
getObjectFromIPFSCacheMu.Lock()
5959
defer getObjectFromIPFSCacheMu.Unlock()
6060

61-
entry, ok := getObjectFromIPFSCache[getIPFSCacheKey(p, name)]
62-
if !ok {
63-
return fetchObjectFromIPFS(ctx, p, name)
64-
}
65-
66-
if entry.created.Add(maxCacheLen).Before(time.Now()) {
61+
fetchAndUpdateCache := func() ([]byte, error) {
6762
objBytes, err := fetchObjectFromIPFS(ctx, p, name)
6863
if err != nil {
6964
return nil, err
@@ -77,19 +72,16 @@ func GetObjectFromIPFS(ctx commands.Context, p peer.ID, name string, maxCacheLen
7772
return objBytes, nil
7873
}
7974

75+
entry, ok := getObjectFromIPFSCache[getIPFSCacheKey(p, name)]
76+
if !ok || entry.created.Add(maxCacheLen).Before(time.Now()) {
77+
return fetchAndUpdateCache()
78+
}
79+
8080
// Update cache in background after a successful read
81-
func() {
81+
go func() {
8282
getObjectFromIPFSCacheMu.Lock()
8383
defer getObjectFromIPFSCacheMu.Unlock()
84-
objBytes, err := fetchObjectFromIPFS(ctx, p, name)
85-
if err != nil {
86-
log.Error("error update inventory cache:", err)
87-
}
88-
89-
getObjectFromIPFSCache[getIPFSCacheKey(p, name)] = getObjectFromIPFSCacheEntry{
90-
bytes: objBytes,
91-
created: time.Now(),
92-
}
84+
fetchAndUpdateCache()
9385
}()
9486

9587
return entry.bytes, nil
@@ -101,6 +93,7 @@ func fetchObjectFromIPFS(ctx commands.Context, p peer.ID, name string) ([]byte,
10193
if err != nil {
10294
return nil, err
10395
}
96+
10497
bytes, err := ipfs.Cat(ctx, root, time.Minute)
10598
if err != nil {
10699
return nil, err

0 commit comments

Comments
 (0)