Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add transaction hash as return value in create/drop #259

Merged
merged 3 commits into from Feb 19, 2019
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
4 changes: 2 additions & 2 deletions client/clientbench_test.go
Expand Up @@ -66,7 +66,7 @@ func BenchmarkCovenantSQLDriver(b *testing.B) {
// create
meta := ResourceMeta{}
meta.Node = 3
dsn, err := Create(meta)
_, dsn, err := Create(meta)
if err != nil {
b.Fatal(err)
}
Expand Down Expand Up @@ -109,7 +109,7 @@ func BenchmarkCovenantSQLDriver(b *testing.B) {
if err != nil {
b.Fatal(err)
}
err = Drop(dsn)
_, err = Drop(dsn)
if err != nil {
b.Fatal(err)
}
Expand Down
9 changes: 5 additions & 4 deletions client/driver.go
Expand Up @@ -144,8 +144,8 @@ func Init(configFile string, masterKey []byte) (err error) {
return
}

// Create send create database operation to block producer.
func Create(meta ResourceMeta) (dsn string, err error) {
// Create sends create database operation to block producer.
func Create(meta ResourceMeta) (txHash hash.Hash, dsn string, err error) {
if atomic.LoadUint32(&driverInitialized) == 0 {
err = ErrNotInitialized
return
Expand Down Expand Up @@ -202,6 +202,7 @@ func Create(meta ResourceMeta) (dsn string, err error) {
return
}

txHash = req.Tx.Hash()
cfg := NewConfig()
cfg.DatabaseID = string(proto.FromAccountAndNonce(clientAddr, uint32(nonceResp.Nonce)))
dsn = cfg.FormatDSN()
Expand Down Expand Up @@ -268,8 +269,8 @@ func WaitBPDatabaseCreation(
}
}

// Drop send drop database operation to block producer.
func Drop(dsn string) (err error) {
// Drop sends drop database operation to block producer.
func Drop(dsn string) (txHash hash.Hash, err error) {
if atomic.LoadUint32(&driverInitialized) == 0 {
err = ErrNotInitialized
return
Expand Down
14 changes: 7 additions & 7 deletions client/driver_test.go
Expand Up @@ -118,20 +118,20 @@ func TestCreate(t *testing.T) {
var err error
var dsn string

dsn, err = Create(ResourceMeta{})
_, dsn, err = Create(ResourceMeta{})
So(err, ShouldEqual, ErrNotInitialized)

// fake driver initialized
atomic.StoreUint32(&driverInitialized, 1)
dsn, err = Create(ResourceMeta{})
_, dsn, err = Create(ResourceMeta{})
So(err, ShouldNotBeNil)
// reset driver not initialized
atomic.StoreUint32(&driverInitialized, 0)

stopTestService, _, err = startTestService()
So(err, ShouldBeNil)
defer stopTestService()
dsn, err = Create(ResourceMeta{})
_, dsn, err = Create(ResourceMeta{})
So(err, ShouldBeNil)
dsnCfg, err := ParseDSN(dsn)
So(err, ShouldBeNil)
Expand Down Expand Up @@ -171,16 +171,16 @@ func TestDrop(t *testing.T) {
var stopTestService func()
var err error

err = Drop("covenantsql://db")
_, err = Drop("covenantsql://db")
So(err, ShouldEqual, ErrNotInitialized)

stopTestService, _, err = startTestService()
So(err, ShouldBeNil)
defer stopTestService()
err = Drop("covenantsql://db")
_, err = Drop("covenantsql://db")
So(err, ShouldBeNil)

err = Drop("invalid dsn")
_, err = Drop("invalid dsn")
So(err, ShouldNotBeNil)
})
}
Expand Down Expand Up @@ -259,7 +259,7 @@ func TestWaitDBCreation(t *testing.T) {
err = WaitDBCreation(ctx, "covenantsql://db")
So(err, ShouldBeNil)

dsn, err = Create(ResourceMeta{})
_, dsn, err = Create(ResourceMeta{})
So(err, ShouldBeNil)
err = WaitDBCreation(ctx, dsn)
So(err, ShouldNotBeNil)
Expand Down
4 changes: 2 additions & 2 deletions cmd/cql-adapter/storage/covenantsql.go
Expand Up @@ -37,7 +37,7 @@ func (s *CovenantSQLStorage) Create(nodeCnt int) (dbID string, err error) {
meta.Node = uint16(nodeCnt)

var dsn string
if dsn, err = client.Create(meta); err != nil {
if _, dsn, err = client.Create(meta); err != nil {
return
}

Expand All @@ -54,7 +54,7 @@ func (s *CovenantSQLStorage) Create(nodeCnt int) (dbID string, err error) {
func (s *CovenantSQLStorage) Drop(dbID string) (err error) {
cfg := client.NewConfig()
cfg.DatabaseID = dbID
err = client.Drop(cfg.FormatDSN())
_, err = client.Drop(cfg.FormatDSN())
return
}

Expand Down
2 changes: 1 addition & 1 deletion cmd/cql-fuse/block_test.go
Expand Up @@ -256,7 +256,7 @@ func initTestDB() (*sql.DB, func()) {
// create
meta := client.ResourceMeta{}
meta.Node = 1
dsn, err := client.Create(meta)
_, dsn, err := client.Create(meta)
if err != nil {
log.Errorf("create db failed: %v", err)
return nil, stopNodes
Expand Down
10 changes: 5 additions & 5 deletions cmd/cql-minerd/integration_test.go
Expand Up @@ -395,7 +395,7 @@ func TestFullProcess(t *testing.T) {
t.Fatalf("wait for chain service failed: %v", err)
}

dsn, err := client.Create(meta)
_, dsn, err := client.Create(meta)
So(err, ShouldBeNil)
dsnCfg, err := client.ParseDSN(dsn)
So(err, ShouldBeNil)
Expand Down Expand Up @@ -769,7 +769,7 @@ func benchMiner(b *testing.B, minerCount uint16, bypassSign bool, useEventualCon
// create
meta := client.ResourceMeta{
ResourceMeta: types.ResourceMeta{
Node: minerCount,
Node: minerCount,
UseEventualConsistency: useEventualConsistency,
},
}
Expand All @@ -781,7 +781,7 @@ func benchMiner(b *testing.B, minerCount uint16, bypassSign bool, useEventualCon
b.Fatalf("wait for chain service failed: %v", err)
}

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

benchDB(b, db, minerCount > 0)

err = client.Drop(dsn)
_, err = client.Drop(dsn)
So(err, ShouldBeNil)
time.Sleep(5 * time.Second)
stopNodes()
Expand Down Expand Up @@ -892,7 +892,7 @@ func benchOutsideMinerWithTargetMinerList(
b.Fatalf("wait for chain service failed: %v", err)
}

dsn, err = client.Create(meta)
_, dsn, err = client.Create(meta)
So(err, ShouldBeNil)
log.Infof("the created database dsn is %v", dsn)

Expand Down
4 changes: 2 additions & 2 deletions cmd/cql-observer/observation_test.go
Expand Up @@ -696,10 +696,10 @@ func TestFullProcess(t *testing.T) {
So(ensureSuccess(res.Int("block", "height")), ShouldBeGreaterThanOrEqualTo, 0)
log.Info(err, res)

err = client.Drop(dsn)
_, err = client.Drop(dsn)
So(err, ShouldBeNil)

err = client.Drop(dsn2)
_, err = client.Drop(dsn2)
So(err, ShouldBeNil)

observerCmd.Cmd.Process.Signal(os.Interrupt)
Expand Down
18 changes: 8 additions & 10 deletions cmd/cql/main.go
Expand Up @@ -316,12 +316,17 @@ func main() {
dropDB = cfg.FormatDSN()
}

if err := client.Drop(dropDB); err != nil {
txHash, err := client.Drop(dropDB)
if err != nil {
// drop database failed
log.WithField("db", dropDB).WithError(err).Error("drop database failed")
return
}

if waitTxConfirmation {
wait(txHash)
}

// drop database success
log.Infof("drop database %#v success", dropDB)
return
Expand All @@ -346,22 +351,15 @@ func main() {
meta.Node = uint16(nodeCnt)
}

dsn, err := client.Create(meta)
txHash, dsn, err := client.Create(meta)
if err != nil {
log.WithError(err).Error("create database failed")
os.Exit(-1)
return
}

if waitTxConfirmation {
var ctx, cancel = context.WithTimeout(context.Background(), waitTxConfirmationMaxDuration)
defer cancel()
err = client.WaitDBCreation(ctx, dsn)
if err != nil {
log.WithError(err).Error("create database failed durating creation")
os.Exit(-1)
return
}
wait(txHash)
leventeliu marked this conversation as resolved.
Show resolved Hide resolved
}

log.Infof("the newly created database is: %#v", dsn)
Expand Down