Skip to content

Commit

Permalink
Check bootstrap status in NewDMap
Browse files Browse the repository at this point in the history
  • Loading branch information
buraksezer committed Oct 27, 2019
1 parent 57982bf commit 450f4c1
Show file tree
Hide file tree
Showing 20 changed files with 237 additions and 121 deletions.
7 changes: 5 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,7 @@ configuration.
Create a **DMap** object to access the cluster:

```go
dm := db.NewDMap("my-dmap")
dm, err := db.NewDMap("my-dmap")
```

DMap object has *Put*, *PutEx*, *Get*, *Delete*, *LockWithTimeout*, *Unlock* and *Destroy* methods to access and modify data in Olric.
Expand Down Expand Up @@ -492,7 +492,10 @@ func main() {
}()

// Put 10 items into the DMap object.
dm := db.NewDMap("bucket-of-arbitrary-items")
dm, err := db.NewDMap("bucket-of-arbitrary-items")
if err != nil {
log.Fatalf("Failed to call Start: %v", err)
}
for i := 0; i < 10; i++ {
c := customType{}
c.Field1 = fmt.Sprintf("num: %d", i)
Expand Down
20 changes: 16 additions & 4 deletions client/client_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,10 @@ func TestClient_Get(t *testing.T) {
}

name := "mymap"
dm := db.NewDMap(name)
dm, err := db.NewDMap(name)
if err != nil {
t.Fatalf("Expected nil. Got: %v", err)
}
key, value := "my-key", "my-value"
err = dm.Put(key, value)
if err != nil {
Expand Down Expand Up @@ -139,7 +142,10 @@ func TestClient_Put(t *testing.T) {
t.Fatalf("Expected nil. Got: %v", err)
}

dm := db.NewDMap(name)
dm, err := db.NewDMap(name)
if err != nil {
t.Fatalf("Expected nil. Got: %v", err)
}
val, err := dm.Get(key)
if err != nil {
t.Fatalf("Expected nil. Got: %v", err)
Expand Down Expand Up @@ -176,7 +182,10 @@ func TestClient_PutEx(t *testing.T) {

// Wait for updating currentUnixNano in Olric.
time.Sleep(100 * time.Millisecond)
dm := db.NewDMap(name)
dm, err := db.NewDMap(name)
if err != nil {
t.Fatalf("Expected nil. Got: %v", err)
}
v, err := dm.Get(key)
if err != olric.ErrKeyNotFound {
t.Fatalf("Expected olric.ErrKeyNotFound. Got: %v", err)
Expand Down Expand Up @@ -252,7 +261,10 @@ func TestClient_LockWithTimeout(t *testing.T) {
t.Fatalf("Expected nil. Got: %v", err)
}

dm := db.NewDMap(name)
dm, err := db.NewDMap(name)
if err != nil {
t.Fatalf("Expected nil. Got: %v", err)
}
err = dm.Unlock(key)
if err != nil {
t.Fatalf("Expected nil. Got: %v", err)
Expand Down
15 changes: 12 additions & 3 deletions dmap_atomic_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,10 @@ func TestDMap_AtomicIncr(t *testing.T) {
}
}

dm := db.NewDMap("atomic_test")
dm, err := db.NewDMap("atomic_test")
if err != nil {
t.Fatalf("Expected nil. Got: %v", err)
}
start = make(chan struct{})
for i := 0; i < 100; i++ {
wg.Add(1)
Expand Down Expand Up @@ -93,7 +96,10 @@ func TestDMap_AtomicDecr(t *testing.T) {
}
}

dm := db.NewDMap("atomic_test")
dm, err := db.NewDMap("atomic_test")
if err != nil {
t.Fatalf("Expected nil. Got: %v", err)
}
start = make(chan struct{})
for i := 0; i < 100; i++ {
wg.Add(1)
Expand Down Expand Up @@ -142,7 +148,10 @@ func TestDMap_AtomicGetPut(t *testing.T) {
}
}

dm := db.NewDMap("atomic_test")
dm, err := db.NewDMap("atomic_test")
if err != nil {
t.Fatalf("Expected nil. Got: %v", err)
}
start = make(chan struct{})
var final int64
for i := 0; i < 100; i++ {
Expand Down
30 changes: 15 additions & 15 deletions dmap_backup_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,10 @@ func TestDMap_PutBackup(t *testing.T) {
syncClusterMembers(db1, db2)

mname := "mymap"
dm := db1.NewDMap(mname)
dm, err := db1.NewDMap(mname)
if err != nil {
t.Fatalf("Expected nil. Got: %v", err)
}
for i := 0; i < 10; i++ {
err = dm.Put(bkey(i), bval(i))
if err != nil {
Expand All @@ -56,10 +59,7 @@ func TestDMap_PutBackup(t *testing.T) {

for i := 0; i < 10; i++ {
key := bkey(i)
owner, hkey, err := dm.db.locateKey(mname, key)
if err != nil {
t.Fatalf("Expected nil. Got: %v", err)
}
owner, hkey := dm.db.locateKey(mname, key)
var backup = db1
if hostCmp(owner, db1.this) {
backup = db2
Expand Down Expand Up @@ -114,7 +114,10 @@ func TestDMap_DeleteBackup(t *testing.T) {
syncClusterMembers(db1, db2)

mname := "mymap"
dm := db1.NewDMap(mname)
dm, err := db1.NewDMap(mname)
if err != nil {
t.Fatalf("Expected nil. Got: %v", err)
}
for i := 0; i < 10; i++ {
err = dm.Put(bkey(i), bval(i))
if err != nil {
Expand All @@ -131,10 +134,7 @@ func TestDMap_DeleteBackup(t *testing.T) {

for i := 0; i < 10; i++ {
key := bkey(i)
owner, hkey, err := dm.db.locateKey(mname, key)
if err != nil {
t.Fatalf("Expected nil. Got: %v", err)
}
owner, hkey := dm.db.locateKey(mname, key)
var backup = db1
if hostCmp(owner, db1.this) {
backup = db2
Expand Down Expand Up @@ -180,7 +180,10 @@ func TestDMap_GetBackup(t *testing.T) {
syncClusterMembers(db1, db2)

mname := "mymap"
dm := db1.NewDMap(mname)
dm, err := db1.NewDMap(mname)
if err != nil {
t.Fatalf("Expected nil. Got: %v", err)
}
for i := 0; i < 10; i++ {
err = dm.Put(bkey(i), bval(i))
if err != nil {
Expand All @@ -190,10 +193,7 @@ func TestDMap_GetBackup(t *testing.T) {

for i := 0; i < 10; i++ {
key := bkey(i)
owner, hkey, err := dm.db.locateKey(mname, key)
if err != nil {
t.Fatalf("Expected nil. Got: %v", err)
}
owner, hkey := dm.db.locateKey(mname, key)
var kloc = db1
if !hostCmp(owner, db1.this) {
kloc = db2
Expand Down
5 changes: 1 addition & 4 deletions dmap_delete.go
Original file line number Diff line number Diff line change
Expand Up @@ -110,10 +110,7 @@ func (db *Olric) delKeyVal(dm *dmap, hkey uint64, name, key string) error {
}

func (db *Olric) deleteKey(name, key string) error {
member, hkey, err := db.locateKey(name, key)
if err != nil {
return err
}
member, hkey := db.locateKey(name, key)
if !hostCmp(member, db.this) {
msg := &protocol.Message{
DMap: name,
Expand Down
20 changes: 16 additions & 4 deletions dmap_delete_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,10 @@ func TestDMap_Delete(t *testing.T) {

syncClusterMembers(db1, db2)

dm := db1.NewDMap("mymap")
dm, err := db1.NewDMap("mymap")
if err != nil {
t.Fatalf("Expected nil. Got: %v", err)
}
for i := 0; i < 100; i++ {
err = dm.Put(bkey(i), bval(i))
if err != nil {
Expand Down Expand Up @@ -91,7 +94,10 @@ func TestDMap_DeleteLookup(t *testing.T) {
}()
syncClusterMembers(db1, db2)

dm := db1.NewDMap("mymap")
dm, err := db1.NewDMap("mymap")
if err != nil {
t.Fatalf("Expected nil. Got: %v", err)
}
for i := 0; i < 100; i++ {
err = dm.Put(bkey(i), bval(i))
if err != nil {
Expand All @@ -111,7 +117,10 @@ func TestDMap_DeleteLookup(t *testing.T) {
}()
syncClusterMembers(db1, db2, db3)

dm3 := db3.NewDMap("mymap")
dm3, err := db3.NewDMap("mymap")
if err != nil {
t.Fatalf("Expected nil. Got: %v", err)
}
for i := 0; i < 100; i++ {
key := bkey(i)
err = dm3.Delete(key)
Expand Down Expand Up @@ -155,7 +164,10 @@ func TestDMap_DeleteStaleDMaps(t *testing.T) {
syncClusterMembers(db1, db2)

mname := "mymap"
dm := db1.NewDMap(mname)
dm, err := db1.NewDMap(mname)
if err != nil {
t.Fatalf("Expected nil. Got: %v", err)
}
for i := 0; i < 100; i++ {
err = dm.Put(bkey(i), bval(i))
if err != nil {
Expand Down
4 changes: 0 additions & 4 deletions dmap_destroy.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,6 @@ import (
)

func (db *Olric) destroyDMap(name string) error {
if err := db.checkBootstrap(); err != nil {
return err
}

var g errgroup.Group
for _, item := range db.discovery.GetMembers() {
addr := item.String()
Expand Down
5 changes: 4 additions & 1 deletion dmap_destroy_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,10 @@ func TestDMap_Destroy(t *testing.T) {

syncClusterMembers(db1, db2)

dm := db1.NewDMap("mymap")
dm, err := db1.NewDMap("mymap")
if err != nil {
t.Fatalf("Expected nil. Got: %v", err)
}
for i := 0; i < 100; i++ {
err = dm.Put(bkey(i), bval(i))
if err != nil {
Expand Down
20 changes: 16 additions & 4 deletions dmap_eviction_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,10 @@ func TestDMap_TTLEviction(t *testing.T) {

syncClusterMembers(db1, db2)

dm := db1.NewDMap("mymap")
dm, err := db1.NewDMap("mymap")
if err != nil {
t.Fatalf("Expected nil. Got: %v", err)
}
for i := 0; i < 100; i++ {
err = dm.PutEx(bkey(i), bval(i), time.Millisecond)
if err != nil {
Expand Down Expand Up @@ -93,7 +96,10 @@ func TestDMap_TTLDuration(t *testing.T) {
// This is not recommended but forgivable for testing.
db.config.Cache = &config.CacheConfig{TTLDuration: 10 * time.Millisecond}

dm := db.NewDMap("mymap")
dm, err := db.NewDMap("mymap")
if err != nil {
t.Fatalf("Expected nil. Got: %v", err)
}
for i := 0; i < 10; i++ {
err = dm.Put(bkey(i), bval(i))
if err != nil {
Expand Down Expand Up @@ -137,7 +143,10 @@ func TestDMap_TTLMaxIdleDuration(t *testing.T) {
// This is not recommended but forgivable for testing.
db.config.Cache = &config.CacheConfig{MaxIdleDuration: 10 * time.Millisecond}

dm := db.NewDMap("mymap")
dm, err := db.NewDMap("mymap")
if err != nil {
t.Fatalf("Expected nil. Got: %v", err)
}
for i := 0; i < 10; i++ {
err = dm.Put(bkey(i), bval(i))
if err != nil {
Expand Down Expand Up @@ -183,7 +192,10 @@ func TestDMap_EvictionPolicyLRU(t *testing.T) {
// We have 7 partitions in test setup. So MaxKeys is 10 for every partition.
db.config.Cache = &config.CacheConfig{MaxKeys: 70, EvictionPolicy: config.LRUEviction}

dm := db.NewDMap("mymap")
dm, err := db.NewDMap("mymap")
if err != nil {
t.Fatalf("Expected nil. Got: %v", err)
}
for i := 0; i < 100; i++ {
err = dm.Put(bkey(i), bval(i))
if err != nil {
Expand Down
5 changes: 1 addition & 4 deletions dmap_get.go
Original file line number Diff line number Diff line change
Expand Up @@ -255,10 +255,7 @@ func (db *Olric) callGetOnCluster(hkey uint64, name, key string) ([]byte, error)
}

func (db *Olric) get(name, key string) ([]byte, error) {
member, hkey, err := db.locateKey(name, key)
if err != nil {
return nil, err
}
member, hkey := db.locateKey(name, key)
// We are on the partition owner
if hostCmp(member, db.this) {
return db.callGetOnCluster(hkey, name, key)
Expand Down

0 comments on commit 450f4c1

Please sign in to comment.