Skip to content

Commit 399b8b0

Browse files
author
Dylan Clendenin
committed
execute set and del in goroutines
1 parent 4c467d7 commit 399b8b0

File tree

2 files changed

+27
-35
lines changed

2 files changed

+27
-35
lines changed

cmd/del.go

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import (
1818
"fmt"
1919
"os"
2020
"strings"
21+
"sync"
2122

2223
"github.com/deepthawtz/kv/store"
2324
consul "github.com/hashicorp/consul/api"
@@ -53,12 +54,19 @@ func Del(cmd *cobra.Command, args []string) {
5354
}
5455

5556
func del(client *consul.KV, args ...string) error {
57+
var wg sync.WaitGroup
5658
for _, k := range args {
57-
key := strings.Join([]string{prefix, k}, "/")
58-
_, err := client.Delete(key, nil)
59-
if err != nil {
60-
return err
61-
}
59+
wg.Add(1)
60+
go func(k string) {
61+
key := strings.Join([]string{prefix, k}, "/")
62+
_, err := client.Delete(key, nil)
63+
if err != nil {
64+
panic(err)
65+
}
66+
wg.Done()
67+
}(k)
6268
}
69+
wg.Wait()
70+
6371
return nil
6472
}

cmd/set.go

Lines changed: 14 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import (
1818
"fmt"
1919
"os"
2020
"strings"
21+
"sync"
2122

2223
"github.com/deepthawtz/kv/store"
2324
consul "github.com/hashicorp/consul/api"
@@ -63,43 +64,26 @@ func Set(cmd *cobra.Command, args []string) {
6364
}
6465

6566
func set(client *consul.KV, args ...string) error {
66-
// TODO: use txn when using Consul 0.7
67-
// var ops []*consul.KVTxnOp
67+
var wg sync.WaitGroup
6868
for _, raw := range args {
6969
parts := strings.Split(raw, "=")
7070
if len(parts) != 2 {
7171
return fmt.Errorf(help)
7272
}
73-
k := strings.Join([]string{prefix, parts[0]}, "/")
74-
v := parts[1]
75-
fmt.Printf("setting %s = %s\n", k, v)
76-
if _, err := client.Put(&consul.KVPair{Key: k, Value: []byte(v)}, nil); err != nil {
77-
return err
78-
}
7973

80-
// TODO: use txn when using Consul 0.7
81-
// ops = append(ops, &consul.KVTxnOp{
82-
// Verb: "set",
83-
// Key: fmt.Sprintf("/env/%s/%s/%s", prefix, k),
84-
// Value: []byte(v),
85-
// })
74+
wg.Add(1)
75+
go func() {
76+
k := strings.Join([]string{prefix, parts[0]}, "/")
77+
v := parts[1]
78+
fmt.Printf("setting %s = %s\n", k, v)
79+
if _, err := client.Put(&consul.KVPair{Key: k, Value: []byte(v)}, nil); err != nil {
80+
panic(err)
81+
}
82+
wg.Done()
83+
}()
84+
85+
wg.Wait()
8686
}
8787

8888
return nil
89-
90-
// TODO: use txn when using Consul 0.7
91-
// ops := []*consul.KVTxnOp{
92-
// &consul.KVTxnOp{
93-
// Verb: "get",
94-
// Key: fmt.Sprintf("/env/%s/%s/%s", prefix, "YO"),
95-
// },
96-
// }
97-
// ok, resp, meta, err := kv.Txn(ops, nil)
98-
// if err != nil {
99-
// fmt.Println(err, resp, meta)
100-
// os.Exit(-1)
101-
// }
102-
// if ok {
103-
// fmt.Println(resp)
104-
// }
10589
}

0 commit comments

Comments
 (0)