浏览代码

keep trying to get schemas until the deadline

Chris Bannister 10 年之前
父节点
当前提交
fd5e48d695
共有 1 个文件被更改,包括 10 次插入6 次删除
  1. 10 6
      conn.go

+ 10 - 6
conn.go

@@ -839,7 +839,7 @@ func (c *Conn) setKeepalive(d time.Duration) error {
 	return nil
 }
 
-func (c *Conn) awaitSchemaAgreement() error {
+func (c *Conn) awaitSchemaAgreement() (err error) {
 
 	const (
 		// TODO(zariel): if we export this make this configurable
@@ -865,9 +865,8 @@ func (c *Conn) awaitSchemaAgreement() error {
 			schemaVersion = ""
 		}
 
-		if err := iter.Close(); err != nil {
-			// TODO: should we keep trying?
-			return err
+		if err = iter.Close(); err != nil {
+			goto cont
 		}
 
 		iter = c.executeQuery(&Query{
@@ -880,17 +879,22 @@ func (c *Conn) awaitSchemaAgreement() error {
 			schemaVersion = ""
 		}
 
-		if err := iter.Close(); err != nil {
-			return err
+		if err = iter.Close(); err != nil {
+			goto cont
 		}
 
 		if len(versions) <= 1 {
 			return nil
 		}
 
+	cont:
 		time.Sleep(200 * time.Millisecond)
 	}
 
+	if err != nil {
+		return
+	}
+
 	// not exported
 	return errors.New("gocql: cluster schema versions not consistent")
 }