Skip to content

[BUG] MemGraph+neo4j-go-driver is stuck if cypher contains any path and does not have RETURN #650

Description

@inv2004

Memgraph version
2.4.1 (mage)

Environment
docker on WSL2

Describe the bug
memgraph+neo4j-go-driver is stuck on sess.Close or res.Consume if cypher contains any path and does not have RETURN. neo4j works ok

To Reproduce

package main

import (
	"context"
	"fmt"
	"time"

	"github.com/neo4j/neo4j-go-driver/v5/neo4j"
)

const url = "bolt://localhost:7687"

func query(driver neo4j.DriverWithContext, cypher string) error {
	ctx := context.Background()
	ctx, cancel := context.WithTimeout(ctx, 2*time.Second)
	defer cancel()
	sess := driver.NewSession(ctx, neo4j.SessionConfig{})
	defer sess.Close(ctx) // stuck here is no res.Consume

	res, err := sess.Run(ctx, cypher, nil)
	if err != nil {
		return err
	}

	for res.Next(ctx) {
		fmt.Println(res.Record().Values...)
	}

	err = res.Err()
	if err != nil {
		return err
	}

	if res.IsOpen() {
		fmt.Println("trying to consume")
		_, err := res.Consume(ctx)
		if err != nil {
			return err
		}
		fmt.Println("ok")
	}

	return nil
}

func example() error {
	driver, err := neo4j.NewDriverWithContext(url, neo4j.BasicAuth("", "", ""))
	if err != nil {
		return err
	}

	if err := query(driver, "RETURN 1+1"); err != nil {
		return err
	}
	if err := query(driver, "MATCH ()-[r]->() SET r.test = 123 RETURN DISTINCT 1"); err != nil {
		fmt.Println(err)
	}
	if err := query(driver, "MATCH ()-[r]->() SET r.test = 123"); err != nil {
		fmt.Println(err)
	}
	if err := query(driver, "MATCH (r)-[]->() SET r.test = 123"); err != nil {
		fmt.Println(err)
	}

	return nil
}

func main() {
	if err := example(); err != nil {
		panic(err)
	}
}

Expected behavior
No timeout errors

Logs

2
1
trying to consume
ConnectivityError: Timeout while reading from connection [server-side timeout hint: -1ns, user-provided context deadline: 2022-11-15 16:09:01.720096798 +0300 MSK m=+2.011375250]: context deadline exceeded
trying to consume
ConnectivityError: Timeout while reading from connection [server-side timeout hint: -1ns, user-provided context deadline: 2022-11-15 16:09:03.722075187 +0300 MSK m=+4.013353634]: context deadline exceeded

Metadata

Metadata

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions