Skip to content

Driver fail to reconnect if cluster changes #150

@marvinkite

Description

@marvinkite
  • Neo4j version: Neo4J Aura (4 Enterprise)
  • Neo4j Mode: HA cluster with 3 members/Casual cluster with 1 core 2 read-replica
  • Driver version: 1.8 Go driver v1.8.3
  • Operating system: Linux Alpine
  • Steps to reproduce
    Time to time execute some QueryTransaction
  • Expected behavior
    Always returns a result and recovers from errors if possible.
  • Actual behavior
    The application was not used over night when I assume the routing table contained the server 4 and 5 and 6. When the first query hit the server the operation failed but the second query succeeded.
    Running the CALL dbms.cluster.routing.getRoutingTable({}) cypher showed the cluster is reconfigured to server 7 (WRITE) and 8,9 (READ). The operation was executed with session from driver.Session(neo4j.AccessModeRead) so following the number logic the lowest number might be the write node so seems odd that the operation was trying to connect to server 4 and log shows it may checked 5 and 6 before. My application received the EOF error instead of driver recovering and returning with the result.
  1. router 1:Reading routing table for '' from any of [neo4j-core-xxxxx-6.production-orch-0001.neo4j.io:7687 neo4j-core-xxxxx-5.production-orch-0001.neo4j.io:7687 neo4j-core-xxxxxxxx-4.production-orch-0001.neo4j.io:7687]

  2. pool 1:No server connection available to any of [neo4j-core-xxxxx-6.production-orch-0001.neo4j.io:7687]

  3. pool 1:No server connection available to any of [neo4j-core-xxxxx-5.production-orch-0001.neo4j.io:7687]

  4. [email protected]:7687/v4:write tcp 10.xxxxx:43874->xxx:7687: write: broken pipe

    github.com/neo4j/neo4j-go-driver/neo4j.adaptorLogger.Error
        /vendor/github.com/neo4j/neo4j-go-driver/neo4j/logging.go:121
    github.com/neo4j/neo4j-go-driver/neo4j/internal/bolt.(*bolt4).sendMsg
        /vendor/github.com/neo4j/neo4j-go-driver/neo4j/internal/bolt/bolt4.go:139
    github.com/neo4j/neo4j-go-driver/neo4j/internal/bolt.(*bolt4).Close
        /vendor/github.com/neo4j/neo4j-go-driver/neo4j/internal/bolt/bolt4.go:663"
    
  5. pool 1:No server connection available to any of [neo4j-core-xxxxxx-4.production-orch-0001.neo4j.io:7687]

  6. router 1:Unable to retrieve routing table from neo4j-core-xxxxxx-4.production-orch-0001.neo4j.io:7687: EOF

    github.com/neo4j/neo4j-go-driver/neo4j.adaptorLogger.Error
        /vendor/github.com/neo4j/neo4j-go-driver/neo4j/logging.go:121
    github.com/neo4j/neo4j-go-driver/neo4j/internal/router.(*Router).getTable
        /vendor/github.com/neo4j/neo4j-go-driver/neo4j/internal/router/router.go:108
    github.com/neo4j/neo4j-go-driver/neo4j/internal/router.(*Router).Readers
        /vendor/github.com/neo4j/neo4j-go-driver/neo4j/internal/router/router.go:122
    github.com/neo4j/neo4j-go-driver/neo4j.(*session).borrowConn
        /vendor/github.com/neo4j/neo4j-go-driver/neo4j/session.go:379
    github.com/neo4j/neo4j-go-driver/neo4j.(*session).Run
        /vendor/github.com/neo4j/neo4j-go-driver/neo4j/session.go:456
    
  7. [email protected]:7687/v4:write tcp 10.8.1.168:43868->35.187.125.190:7687: write: broken pipe

    github.com/neo4j/neo4j-go-driver/neo4j.adaptorLogger.Error
        /vendor/github.com/neo4j/neo4j-go-driver/neo4j/logging.go:121
    github.com/neo4j/neo4j-go-driver/neo4j/internal/bolt.(*bolt4).sendMsg
        /vendor/github.com/neo4j/neo4j-go-driver/neo4j/internal/bolt/bolt4.go:139
    github.com/neo4j/neo4j-go-driver/neo4j/internal/bolt.(*bolt4).Close
        /vendor/github.com/neo4j/neo4j-go-driver/neo4j/internal/bolt/bolt4.go:663
    

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