Skip to content

Commit ec05168

Browse files
authored
Merge pull request #259 from CovenantSQL/feature/beta_wait_create_tx
Add transaction hash as return value in create/drop
2 parents b0c46a4 + 970277b commit ec05168

File tree

8 files changed

+33
-27
lines changed

8 files changed

+33
-27
lines changed

client/clientbench_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ func BenchmarkCovenantSQLDriver(b *testing.B) {
6666
// create
6767
meta := ResourceMeta{}
6868
meta.Node = 3
69-
dsn, err := Create(meta)
69+
_, dsn, err := Create(meta)
7070
if err != nil {
7171
b.Fatal(err)
7272
}
@@ -109,7 +109,7 @@ func BenchmarkCovenantSQLDriver(b *testing.B) {
109109
if err != nil {
110110
b.Fatal(err)
111111
}
112-
err = Drop(dsn)
112+
_, err = Drop(dsn)
113113
if err != nil {
114114
b.Fatal(err)
115115
}

client/driver.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -144,8 +144,8 @@ func Init(configFile string, masterKey []byte) (err error) {
144144
return
145145
}
146146

147-
// Create send create database operation to block producer.
148-
func Create(meta ResourceMeta) (dsn string, err error) {
147+
// Create sends create database operation to block producer.
148+
func Create(meta ResourceMeta) (txHash hash.Hash, dsn string, err error) {
149149
if atomic.LoadUint32(&driverInitialized) == 0 {
150150
err = ErrNotInitialized
151151
return
@@ -202,6 +202,7 @@ func Create(meta ResourceMeta) (dsn string, err error) {
202202
return
203203
}
204204

205+
txHash = req.Tx.Hash()
205206
cfg := NewConfig()
206207
cfg.DatabaseID = string(proto.FromAccountAndNonce(clientAddr, uint32(nonceResp.Nonce)))
207208
dsn = cfg.FormatDSN()
@@ -268,8 +269,8 @@ func WaitBPDatabaseCreation(
268269
}
269270
}
270271

271-
// Drop send drop database operation to block producer.
272-
func Drop(dsn string) (err error) {
272+
// Drop sends drop database operation to block producer.
273+
func Drop(dsn string) (txHash hash.Hash, err error) {
273274
if atomic.LoadUint32(&driverInitialized) == 0 {
274275
err = ErrNotInitialized
275276
return

client/driver_test.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -118,20 +118,20 @@ func TestCreate(t *testing.T) {
118118
var err error
119119
var dsn string
120120

121-
dsn, err = Create(ResourceMeta{})
121+
_, dsn, err = Create(ResourceMeta{})
122122
So(err, ShouldEqual, ErrNotInitialized)
123123

124124
// fake driver initialized
125125
atomic.StoreUint32(&driverInitialized, 1)
126-
dsn, err = Create(ResourceMeta{})
126+
_, dsn, err = Create(ResourceMeta{})
127127
So(err, ShouldNotBeNil)
128128
// reset driver not initialized
129129
atomic.StoreUint32(&driverInitialized, 0)
130130

131131
stopTestService, _, err = startTestService()
132132
So(err, ShouldBeNil)
133133
defer stopTestService()
134-
dsn, err = Create(ResourceMeta{})
134+
_, dsn, err = Create(ResourceMeta{})
135135
So(err, ShouldBeNil)
136136
dsnCfg, err := ParseDSN(dsn)
137137
So(err, ShouldBeNil)
@@ -171,16 +171,16 @@ func TestDrop(t *testing.T) {
171171
var stopTestService func()
172172
var err error
173173

174-
err = Drop("covenantsql://db")
174+
_, err = Drop("covenantsql://db")
175175
So(err, ShouldEqual, ErrNotInitialized)
176176

177177
stopTestService, _, err = startTestService()
178178
So(err, ShouldBeNil)
179179
defer stopTestService()
180-
err = Drop("covenantsql://db")
180+
_, err = Drop("covenantsql://db")
181181
So(err, ShouldBeNil)
182182

183-
err = Drop("invalid dsn")
183+
_, err = Drop("invalid dsn")
184184
So(err, ShouldNotBeNil)
185185
})
186186
}
@@ -259,7 +259,7 @@ func TestWaitDBCreation(t *testing.T) {
259259
err = WaitDBCreation(ctx, "covenantsql://db")
260260
So(err, ShouldBeNil)
261261

262-
dsn, err = Create(ResourceMeta{})
262+
_, dsn, err = Create(ResourceMeta{})
263263
So(err, ShouldBeNil)
264264
err = WaitDBCreation(ctx, dsn)
265265
So(err, ShouldNotBeNil)

cmd/cql-adapter/storage/covenantsql.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ func (s *CovenantSQLStorage) Create(nodeCnt int) (dbID string, err error) {
3737
meta.Node = uint16(nodeCnt)
3838

3939
var dsn string
40-
if dsn, err = client.Create(meta); err != nil {
40+
if _, dsn, err = client.Create(meta); err != nil {
4141
return
4242
}
4343

@@ -54,7 +54,7 @@ func (s *CovenantSQLStorage) Create(nodeCnt int) (dbID string, err error) {
5454
func (s *CovenantSQLStorage) Drop(dbID string) (err error) {
5555
cfg := client.NewConfig()
5656
cfg.DatabaseID = dbID
57-
err = client.Drop(cfg.FormatDSN())
57+
_, err = client.Drop(cfg.FormatDSN())
5858
return
5959
}
6060

cmd/cql-fuse/block_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -256,7 +256,7 @@ func initTestDB() (*sql.DB, func()) {
256256
// create
257257
meta := client.ResourceMeta{}
258258
meta.Node = 1
259-
dsn, err := client.Create(meta)
259+
_, dsn, err := client.Create(meta)
260260
if err != nil {
261261
log.Errorf("create db failed: %v", err)
262262
return nil, stopNodes

cmd/cql-minerd/integration_test.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -395,7 +395,7 @@ func TestFullProcess(t *testing.T) {
395395
t.Fatalf("wait for chain service failed: %v", err)
396396
}
397397

398-
dsn, err := client.Create(meta)
398+
_, dsn, err := client.Create(meta)
399399
So(err, ShouldBeNil)
400400
dsnCfg, err := client.ParseDSN(dsn)
401401
So(err, ShouldBeNil)
@@ -769,7 +769,7 @@ func benchMiner(b *testing.B, minerCount uint16, bypassSign bool, useEventualCon
769769
// create
770770
meta := client.ResourceMeta{
771771
ResourceMeta: types.ResourceMeta{
772-
Node: minerCount,
772+
Node: minerCount,
773773
UseEventualConsistency: useEventualConsistency,
774774
},
775775
}
@@ -781,7 +781,7 @@ func benchMiner(b *testing.B, minerCount uint16, bypassSign bool, useEventualCon
781781
b.Fatalf("wait for chain service failed: %v", err)
782782
}
783783

784-
dsn, err = client.Create(meta)
784+
_, dsn, err = client.Create(meta)
785785
So(err, ShouldBeNil)
786786
log.Infof("the created database dsn is %v", dsn)
787787
err = ioutil.WriteFile(dsnFile, []byte(dsn), 0666)
@@ -804,7 +804,7 @@ func benchMiner(b *testing.B, minerCount uint16, bypassSign bool, useEventualCon
804804

805805
benchDB(b, db, minerCount > 0)
806806

807-
err = client.Drop(dsn)
807+
_, err = client.Drop(dsn)
808808
So(err, ShouldBeNil)
809809
time.Sleep(5 * time.Second)
810810
stopNodes()
@@ -892,7 +892,7 @@ func benchOutsideMinerWithTargetMinerList(
892892
b.Fatalf("wait for chain service failed: %v", err)
893893
}
894894

895-
dsn, err = client.Create(meta)
895+
_, dsn, err = client.Create(meta)
896896
So(err, ShouldBeNil)
897897
log.Infof("the created database dsn is %v", dsn)
898898

cmd/cql-observer/observation_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -696,10 +696,10 @@ func TestFullProcess(t *testing.T) {
696696
So(ensureSuccess(res.Int("block", "height")), ShouldBeGreaterThanOrEqualTo, 0)
697697
log.Info(err, res)
698698

699-
err = client.Drop(dsn)
699+
_, err = client.Drop(dsn)
700700
So(err, ShouldBeNil)
701701

702-
err = client.Drop(dsn2)
702+
_, err = client.Drop(dsn2)
703703
So(err, ShouldBeNil)
704704

705705
observerCmd.Cmd.Process.Signal(os.Interrupt)

cmd/cql/main.go

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -316,12 +316,17 @@ func main() {
316316
dropDB = cfg.FormatDSN()
317317
}
318318

319-
if err := client.Drop(dropDB); err != nil {
319+
txHash, err := client.Drop(dropDB)
320+
if err != nil {
320321
// drop database failed
321322
log.WithField("db", dropDB).WithError(err).Error("drop database failed")
322323
return
323324
}
324325

326+
if waitTxConfirmation {
327+
wait(txHash)
328+
}
329+
325330
// drop database success
326331
log.Infof("drop database %#v success", dropDB)
327332
return
@@ -346,21 +351,21 @@ func main() {
346351
meta.Node = uint16(nodeCnt)
347352
}
348353

349-
dsn, err := client.Create(meta)
354+
txHash, dsn, err := client.Create(meta)
350355
if err != nil {
351356
log.WithError(err).Error("create database failed")
352357
os.Exit(-1)
353358
return
354359
}
355360

356361
if waitTxConfirmation {
362+
wait(txHash)
357363
var ctx, cancel = context.WithTimeout(context.Background(), waitTxConfirmationMaxDuration)
358364
defer cancel()
359365
err = client.WaitDBCreation(ctx, dsn)
360366
if err != nil {
361-
log.WithError(err).Error("create database failed durating creation")
367+
log.WithError(err).Error("wait database failed during creation")
362368
os.Exit(-1)
363-
return
364369
}
365370
}
366371

0 commit comments

Comments
 (0)