Skip to content

Error 1129: Host 'xxx' blocked because of many connection errors #1056

Closed
@iliacimpoes

Description

@iliacimpoes

Issue description

After multiple successive deadline exceeded errors, on connection Open or Ping Error 1129 is returned and can no longer connect to the DB unless FLUSH HOSTS is called.

Looks like #941 is causing the problem. I was able to reproduce it on 17ef3dd and 89ec2a9. But not on df597a2

Example code

package main

import (
	"context"
	"database/sql"
	"log"
	"time"

	"github.com/go-sql-driver/mysql"
)

func main() {
	for {
		conn, err := mysql.MySQLDriver{}.OpenConnector("user:password@tcp(addr:port)/db")
		if err != nil {
			log.Fatal("OpenConnector", err)
		}
		db := sql.OpenDB(conn)
		err = db.Ping()
		if err != nil {
			log.Fatal("Ping", err)
		}

		for j := 0; j < 200; j++ {
			query(db)
		}
		log.Println("Close", db.Close())
	}
}

func query(d *sql.DB) {
	ctx, cancel := context.WithTimeout(context.Background(), 100*time.Millisecond)
	defer cancel()
	rows, err := d.QueryContext(ctx, "SELECT * FROM my_table")
	if err != nil {
		log.Println("QueryContext", err)
		return
	}
	defer rows.Close()
}

Logs

....
2020/01/21 11:40:55 QueryContext context deadline exceeded
2020/01/21 11:40:55 QueryContext context deadline exceeded
2020/01/21 11:40:55 QueryContext context deadline exceeded
2020/01/21 11:40:55 QueryContext context deadline exceeded
2020/01/21 11:40:55 QueryContext context deadline exceeded
2020/01/21 11:40:55 Close <nil>
2020/01/21 11:40:55 PingError 1129: Host '10.9.10.189' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'

Process finished with exit code 1

Configuration

Driver version (or git SHA): 1.5.0 17ef3dd

Go version: go version go1.13.4 darwin/amd64

Server version: 10.1.34-MariaDB

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions