|
@@ -15,33 +15,12 @@ import (
|
|
|
var lockSyncDataNode sync.Mutex
|
|
|
|
|
|
func SyncDataNode(cont context.Context) (err error) {
|
|
|
- ctx, cancel := context.WithTimeout(cont, 5*time.Minute)
|
|
|
- defer cancel()
|
|
|
- if err = lockWithTimeout(ctx); err != nil {
|
|
|
- fmt.Println("获取锁失败, err", err)
|
|
|
- utils.FileLog.Info("SyncDataNode-获取锁失败, err:%s", err.Error())
|
|
|
- return
|
|
|
- }
|
|
|
+ lockSyncDataNode.Lock()
|
|
|
defer lockSyncDataNode.Unlock()
|
|
|
syncDataNodeExecute()
|
|
|
return
|
|
|
}
|
|
|
|
|
|
-func lockWithTimeout(ctx context.Context) error {
|
|
|
- done := make(chan struct{})
|
|
|
- go func() {
|
|
|
- lockSyncDataNode.Lock()
|
|
|
- close(done)
|
|
|
- }()
|
|
|
- select {
|
|
|
- case <-done:
|
|
|
- return nil
|
|
|
- case <-ctx.Done():
|
|
|
- return fmt.Errorf("lockWithTimeout: %v", ctx.Err())
|
|
|
- }
|
|
|
-
|
|
|
-}
|
|
|
-
|
|
|
func syncDataNodeExecute() (err error) {
|
|
|
fmt.Println("准备同步数据节点")
|
|
|
utils.FileLog.Info("准备同步数据节点")
|