Add support for the reboot command in go bindings
This commit is contained in:
parent
129a7b5daf
commit
dca18ac71e
|
@ -25,7 +25,6 @@ You can also build this package, in the top level of this repository run:
|
||||||
|
|
||||||
This will create binary packages for the appropriate platform within the "build" subdirectory of this folder.
|
This will create binary packages for the appropriate platform within the "build" subdirectory of this folder.
|
||||||
|
|
||||||
|
|
||||||
Documentation
|
Documentation
|
||||||
-------------
|
-------------
|
||||||
|
|
||||||
|
|
|
@ -27,6 +27,7 @@ package fdb
|
||||||
import "C"
|
import "C"
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
"runtime"
|
"runtime"
|
||||||
|
|
||||||
"golang.org/x/xerrors"
|
"golang.org/x/xerrors"
|
||||||
|
@ -82,6 +83,32 @@ func (d Database) CreateTransaction() (Transaction, error) {
|
||||||
return Transaction{t}, nil
|
return Transaction{t}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// RebootWorker is a wrapper around fdb_database_reboot_worker and allows to reboot processes
|
||||||
|
// from the go bindings. If a suspendDuration > 0 is provided the rebooted process will be
|
||||||
|
// suspended for suspendDuration seconds. If checkFile is set to true the process will check
|
||||||
|
// if the data directory is writeable by creating a validation file. The address must be a
|
||||||
|
// process address is the form of IP:Port pair.
|
||||||
|
func (d Database) RebootWorker(address string, checkFile bool, suspendDuration int) error {
|
||||||
|
t := &futureInt64{
|
||||||
|
future: newFuture(C.fdb_database_reboot_worker(
|
||||||
|
d.ptr,
|
||||||
|
byteSliceToPtr([]byte(address)),
|
||||||
|
C.int(len(address)),
|
||||||
|
C.fdb_bool_t(boolToInt(checkFile)),
|
||||||
|
C.int(suspendDuration),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
}
|
||||||
|
|
||||||
|
dbVersion, err := t.Get()
|
||||||
|
|
||||||
|
if dbVersion == 0 {
|
||||||
|
return errors.New("failed to send reboot process request")
|
||||||
|
}
|
||||||
|
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
func retryable(wrapped func() (interface{}, error), onError func(Error) FutureNil) (ret interface{}, e error) {
|
func retryable(wrapped func() (interface{}, error), onError func(Error) FutureNil) (ret interface{}, e error) {
|
||||||
for {
|
for {
|
||||||
ret, e = wrapped()
|
ret, e = wrapped()
|
||||||
|
|
|
@ -101,7 +101,7 @@ func TestReadTransactionOptions(t *testing.T) {
|
||||||
fdb.MustAPIVersion(710)
|
fdb.MustAPIVersion(710)
|
||||||
db := fdb.MustOpenDefault()
|
db := fdb.MustOpenDefault()
|
||||||
_, e := db.ReadTransact(func(rtr fdb.ReadTransaction) (interface{}, error) {
|
_, e := db.ReadTransact(func(rtr fdb.ReadTransaction) (interface{}, error) {
|
||||||
rtr.Options().SetAccessSystemKeys();
|
rtr.Options().SetAccessSystemKeys()
|
||||||
return rtr.Get(fdb.Key("\xff/")).MustGet(), nil
|
return rtr.Get(fdb.Key("\xff/")).MustGet(), nil
|
||||||
})
|
})
|
||||||
if e != nil {
|
if e != nil {
|
||||||
|
@ -109,7 +109,6 @@ func TestReadTransactionOptions(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
func ExampleTransactor() {
|
func ExampleTransactor() {
|
||||||
fdb.MustAPIVersion(710)
|
fdb.MustAPIVersion(710)
|
||||||
db := fdb.MustOpenDefault()
|
db := fdb.MustOpenDefault()
|
||||||
|
|
Loading…
Reference in New Issue