Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
M
mybee
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
vicotor
mybee
Commits
6e46128f
Unverified
Commit
6e46128f
authored
Jun 15, 2020
by
acud
Committed by
GitHub
Jun 15, 2020
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
localstore: remove gc check hack (#302)
parent
a884705f
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
3 additions
and
169 deletions
+3
-169
localstore.go
pkg/localstore/localstore.go
+0
-11
mode_put.go
pkg/localstore/mode_put.go
+3
-39
mode_put_test.go
pkg/localstore/mode_put_test.go
+0
-119
No files found.
pkg/localstore/localstore.go
View file @
6e46128f
...
@@ -118,8 +118,6 @@ type DB struct {
...
@@ -118,8 +118,6 @@ type DB struct {
// are done
// are done
collectGarbageWorkerDone
chan
struct
{}
collectGarbageWorkerDone
chan
struct
{}
putToGCCheck
func
([]
byte
)
bool
// wait for all subscriptions to finish before closing
// wait for all subscriptions to finish before closing
// underlaying BadgerDB to prevent possible panics from
// underlaying BadgerDB to prevent possible panics from
// iterators
// iterators
...
@@ -138,10 +136,6 @@ type Options struct {
...
@@ -138,10 +136,6 @@ type Options struct {
// MetricsPrefix defines a prefix for metrics names.
// MetricsPrefix defines a prefix for metrics names.
MetricsPrefix
string
MetricsPrefix
string
Tags
*
tags
.
Tags
Tags
*
tags
.
Tags
// PutSetCheckFunc is a function called after a Put of a chunk
// to verify whether that chunk needs to be Set and added to
// garbage collection index too
PutToGCCheck
func
([]
byte
)
bool
}
}
// New returns a new DB. All fields and indexes are initialized
// New returns a new DB. All fields and indexes are initialized
...
@@ -155,10 +149,6 @@ func New(path string, baseKey []byte, o *Options, logger logging.Logger) (db *DB
...
@@ -155,10 +149,6 @@ func New(path string, baseKey []byte, o *Options, logger logging.Logger) (db *DB
}
}
}
}
if
o
.
PutToGCCheck
==
nil
{
o
.
PutToGCCheck
=
func
(
_
[]
byte
)
bool
{
return
false
}
}
db
=
&
DB
{
db
=
&
DB
{
capacity
:
o
.
Capacity
,
capacity
:
o
.
Capacity
,
baseKey
:
baseKey
,
baseKey
:
baseKey
,
...
@@ -170,7 +160,6 @@ func New(path string, baseKey []byte, o *Options, logger logging.Logger) (db *DB
...
@@ -170,7 +160,6 @@ func New(path string, baseKey []byte, o *Options, logger logging.Logger) (db *DB
collectGarbageTrigger
:
make
(
chan
struct
{},
1
),
collectGarbageTrigger
:
make
(
chan
struct
{},
1
),
close
:
make
(
chan
struct
{}),
close
:
make
(
chan
struct
{}),
collectGarbageWorkerDone
:
make
(
chan
struct
{}),
collectGarbageWorkerDone
:
make
(
chan
struct
{}),
putToGCCheck
:
o
.
PutToGCCheck
,
metrics
:
newMetrics
(),
metrics
:
newMetrics
(),
logger
:
logger
,
logger
:
logger
,
}
}
...
...
pkg/localstore/mode_put.go
View file @
6e46128f
...
@@ -204,13 +204,7 @@ func (db *DB) putUpload(batch *leveldb.Batch, binIDs map[uint8]uint64, item shed
...
@@ -204,13 +204,7 @@ func (db *DB) putUpload(batch *leveldb.Batch, binIDs map[uint8]uint64, item shed
return
false
,
0
,
err
return
false
,
0
,
err
}
}
if
exists
{
if
exists
{
if
db
.
putToGCCheck
(
item
.
Address
)
{
return
true
,
0
,
nil
gcSizeChange
,
err
=
db
.
setGC
(
batch
,
item
)
if
err
!=
nil
{
return
false
,
0
,
err
}
}
return
true
,
gcSizeChange
,
nil
}
}
anonymous
:=
false
anonymous
:=
false
if
db
.
tags
!=
nil
&&
item
.
Tag
!=
0
{
if
db
.
tags
!=
nil
&&
item
.
Tag
!=
0
{
...
@@ -241,19 +235,7 @@ func (db *DB) putUpload(batch *leveldb.Batch, binIDs map[uint8]uint64, item shed
...
@@ -241,19 +235,7 @@ func (db *DB) putUpload(batch *leveldb.Batch, binIDs map[uint8]uint64, item shed
}
}
}
}
if
db
.
putToGCCheck
(
item
.
Address
)
{
return
false
,
0
,
nil
// TODO: this might result in an edge case where a node
// that has very little storage and uploads using an anonymous
// upload will have some of the content GCd before being able
// to sync it
gcSizeChange
,
err
=
db
.
setGC
(
batch
,
item
)
if
err
!=
nil
{
return
false
,
0
,
err
}
}
return
false
,
gcSizeChange
,
nil
}
}
// putSync adds an Item to the batch by updating required indexes:
// putSync adds an Item to the batch by updating required indexes:
...
@@ -266,14 +248,7 @@ func (db *DB) putSync(batch *leveldb.Batch, binIDs map[uint8]uint64, item shed.I
...
@@ -266,14 +248,7 @@ func (db *DB) putSync(batch *leveldb.Batch, binIDs map[uint8]uint64, item shed.I
return
false
,
0
,
err
return
false
,
0
,
err
}
}
if
exists
{
if
exists
{
if
db
.
putToGCCheck
(
item
.
Address
)
{
return
true
,
0
,
nil
gcSizeChange
,
err
=
db
.
setGC
(
batch
,
item
)
if
err
!=
nil
{
return
false
,
0
,
err
}
}
return
true
,
gcSizeChange
,
nil
}
}
item
.
StoreTimestamp
=
now
()
item
.
StoreTimestamp
=
now
()
...
@@ -290,17 +265,6 @@ func (db *DB) putSync(batch *leveldb.Batch, binIDs map[uint8]uint64, item shed.I
...
@@ -290,17 +265,6 @@ func (db *DB) putSync(batch *leveldb.Batch, binIDs map[uint8]uint64, item shed.I
return
false
,
0
,
err
return
false
,
0
,
err
}
}
if
db
.
putToGCCheck
(
item
.
Address
)
{
// TODO: this might result in an edge case where a node
// that has very little storage and uploads using an anonymous
// upload will have some of the content GCd before being able
// to sync it
gcSizeChange
,
err
=
db
.
setGC
(
batch
,
item
)
if
err
!=
nil
{
return
false
,
0
,
err
}
}
return
false
,
gcSizeChange
,
nil
return
false
,
gcSizeChange
,
nil
}
}
...
...
pkg/localstore/mode_put_test.go
View file @
6e46128f
...
@@ -26,7 +26,6 @@ import (
...
@@ -26,7 +26,6 @@ import (
"github.com/ethersphere/bee/pkg/storage"
"github.com/ethersphere/bee/pkg/storage"
"github.com/ethersphere/bee/pkg/swarm"
"github.com/ethersphere/bee/pkg/swarm"
"github.com/syndtr/goleveldb/leveldb"
)
)
// TestModePutRequest validates ModePutRequest index values on the provided DB.
// TestModePutRequest validates ModePutRequest index values on the provided DB.
...
@@ -313,124 +312,6 @@ func TestModePut_sameChunk(t *testing.T) {
...
@@ -313,124 +312,6 @@ func TestModePut_sameChunk(t *testing.T) {
}
}
}
}
// TestModePutSync_addToGc validates ModePut* with PutSetCheckFunc stub results
// in the added chunk to show up in GC index
func
TestModePut_addToGc
(
t
*
testing
.
T
)
{
retVal
:=
true
// PutSetCheckFunc's output is toggled from the test case
opts
:=
&
Options
{
PutToGCCheck
:
func
(
_
[]
byte
)
bool
{
return
retVal
}}
for
_
,
m
:=
range
[]
struct
{
mode
storage
.
ModePut
putToGc
bool
}{
{
mode
:
storage
.
ModePutSync
,
putToGc
:
true
},
{
mode
:
storage
.
ModePutSync
,
putToGc
:
false
},
{
mode
:
storage
.
ModePutUpload
,
putToGc
:
true
},
{
mode
:
storage
.
ModePutUpload
,
putToGc
:
false
},
{
mode
:
storage
.
ModePutRequest
,
putToGc
:
true
},
// in ModePutRequest we always insert to GC, so putToGc=false not needed
}
{
for
_
,
tc
:=
range
multiChunkTestCases
{
t
.
Run
(
tc
.
name
,
func
(
t
*
testing
.
T
)
{
retVal
=
m
.
putToGc
db
:=
newTestDB
(
t
,
opts
)
wantTimestamp
:=
time
.
Now
()
.
UTC
()
.
UnixNano
()
defer
setNow
(
func
()
(
t
int64
)
{
return
wantTimestamp
})()
chunks
:=
generateTestRandomChunks
(
tc
.
count
)
_
,
err
:=
db
.
Put
(
context
.
Background
(),
m
.
mode
,
chunks
...
)
if
err
!=
nil
{
t
.
Fatal
(
err
)
}
binIDs
:=
make
(
map
[
uint8
]
uint64
)
for
_
,
ch
:=
range
chunks
{
po
:=
db
.
po
(
ch
.
Address
())
binIDs
[
po
]
++
var
wantErr
error
if
!
m
.
putToGc
{
wantErr
=
leveldb
.
ErrNotFound
}
newRetrieveIndexesTestWithAccess
(
db
,
ch
,
wantTimestamp
,
wantTimestamp
)
newGCIndexTest
(
db
,
ch
,
wantTimestamp
,
wantTimestamp
,
binIDs
[
po
],
wantErr
)(
t
)
}
})
}
}
}
// TestModePutSync_addToGcExisting validates ModePut* with PutSetCheckFunc stub results
// in the added chunk to show up in GC index
func
TestModePut_addToGcExisting
(
t
*
testing
.
T
)
{
retVal
:=
true
// PutSetCheckFunc's output is toggled from the test case
opts
:=
&
Options
{
PutToGCCheck
:
func
(
_
[]
byte
)
bool
{
return
retVal
}}
for
_
,
m
:=
range
[]
struct
{
mode
storage
.
ModePut
putToGc
bool
}{
{
mode
:
storage
.
ModePutSync
,
putToGc
:
true
},
{
mode
:
storage
.
ModePutSync
,
putToGc
:
false
},
{
mode
:
storage
.
ModePutUpload
,
putToGc
:
true
},
{
mode
:
storage
.
ModePutUpload
,
putToGc
:
false
},
{
mode
:
storage
.
ModePutRequest
,
putToGc
:
true
},
// in ModePutRequest we always insert to GC, so putToGc=false not needed
}
{
for
_
,
tc
:=
range
multiChunkTestCases
{
t
.
Run
(
tc
.
name
,
func
(
t
*
testing
.
T
)
{
retVal
=
m
.
putToGc
db
:=
newTestDB
(
t
,
opts
)
wantStoreTimestamp
:=
time
.
Now
()
.
UTC
()
.
UnixNano
()
defer
setNow
(
func
()
(
t
int64
)
{
return
wantStoreTimestamp
})()
chunks
:=
generateTestRandomChunks
(
tc
.
count
)
_
,
err
:=
db
.
Put
(
context
.
Background
(),
m
.
mode
,
chunks
...
)
if
err
!=
nil
{
t
.
Fatal
(
err
)
}
time
.
Sleep
(
1
*
time
.
Millisecond
)
// change the timestamp, put the chunks again and
// expect the access timestamp to change
wantAccessTimestamp
:=
time
.
Now
()
.
UTC
()
.
UnixNano
()
defer
setNow
(
func
()
(
t
int64
)
{
return
wantAccessTimestamp
})()
_
,
err
=
db
.
Put
(
context
.
Background
(),
m
.
mode
,
chunks
...
)
if
err
!=
nil
{
t
.
Fatal
(
err
)
}
binIDs
:=
make
(
map
[
uint8
]
uint64
)
for
_
,
ch
:=
range
chunks
{
po
:=
db
.
po
(
ch
.
Address
())
binIDs
[
po
]
++
var
wantErr
error
if
!
m
.
putToGc
{
wantErr
=
leveldb
.
ErrNotFound
}
newRetrieveIndexesTestWithAccess
(
db
,
ch
,
wantStoreTimestamp
,
wantAccessTimestamp
)
newGCIndexTest
(
db
,
ch
,
wantStoreTimestamp
,
wantAccessTimestamp
,
binIDs
[
po
],
wantErr
)(
t
)
}
})
}
}
}
// TestPutDuplicateChunks validates the expected behaviour for
// TestPutDuplicateChunks validates the expected behaviour for
// passing duplicate chunks to the Put method.
// passing duplicate chunks to the Put method.
func
TestPutDuplicateChunks
(
t
*
testing
.
T
)
{
func
TestPutDuplicateChunks
(
t
*
testing
.
T
)
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment