Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[QUESTION] Unable to connect to Neo4j Desktop graph instance #560

Open
es50678 opened this issue Apr 27, 2020 · 8 comments
Open

[QUESTION] Unable to connect to Neo4j Desktop graph instance #560

es50678 opened this issue Apr 27, 2020 · 8 comments
Labels

Comments

@es50678
Copy link

es50678 commented Apr 27, 2020

  • Neo4j version: 4.0.1 Enterprise (via Neo4j Desktop 1.2.7)
  • Neo4j Mode: Single Instance(?)
  • Driver Version: 4.0.2
  • Operating System: Windows 10 Pro 10.0.19041 N/A Build 19041

index.js

const neo4j = require('neo4j-driver');

const driver = neo4j.driver('neo4j://localhost', neo4j.auth.basic('neo4j', 'root'));

driver.session().run('CREATE (:Category {name: "verification" })')
  .then((results) => {
    console.log(results);
  }).catch((errors) => {
  console.log(errors);
});

I'm starting my Neo4j instance from Neo4j Desktop. The following is the log output when the instance starts:

2020-04-27 22:03:59.409+0000 INFO  ======== Neo4j 4.0.1 ========
2020-04-27 22:03:59.418+0000 INFO  Starting...
2020-04-27 22:04:09.086+0000 INFO  Sending metrics to CSV file at C:\Users\Eduardo\.Neo4jDesktop\neo4jDatabases\database-d61afe34-ba8a-4563-95ba-28a5c3fda71b\installation-4.0.1\metrics
2020-04-27 22:04:09.132+0000 INFO  Bolt enabled on localhost:7687.
2020-04-27 22:04:09.133+0000 INFO  Started.
2020-04-27 22:04:09.662+0000 INFO  Server thread metrics have been registered successfully
2020-04-27 22:04:11.557+0000 INFO  Remote interface available at http://localhost:7474/

Expected behavior

Running node index.js should result in:

{
  records: [],
  summary: ResultSummary {
    query: {
      text: 'CREATE (:Category {name: "verification" })',
      parameters: {}
    },
    queryType: 'w',
    counters: QueryStatistics { _stats: [Object], _systemUpdates: 0 },
    updateStatistics: QueryStatistics { _stats: [Object], _systemUpdates: 0 },
    plan: false,
    profile: false,
    notifications: [],
    server: ServerInfo { address: '0.0.0.0:7687', version: 'Neo4j/4.0.1' },
    resultConsumedAfter: Integer { low: 0, high: 0 },
    resultAvailableAfter: Integer { low: 174, high: 0 },
    database: { name: 'neo4j' }
  }
}

Actual behavior

Running node index.js should results in:

Neo4jError: Could not perform discovery. No routing servers available. Known routing table: RoutingTable[database=default database, expirationTime=0, currentTime=1588025071685, routers=[], readers=[], writers=[]]

    at captureStacktrace (/mnt/c/Users/Eduardo/wsl/projects/test/node_modules/neo4j-driver/lib/result.js:263:15)
    at new Result (/mnt/c/Users/Eduardo/wsl/projects/test/node_modules/neo4j-driver/lib/result.js:68:19)
    at Session._run (/mnt/c/Users/Eduardo/wsl/projects/test/node_modules/neo4j-driver/lib/session.js:174:14)
    at Session.run (/mnt/c/Users/Eduardo/wsl/projects/test/node_modules/neo4j-driver/lib/session.js:135:19)
    at Object.<anonymous> (/mnt/c/Users/Eduardo/wsl/projects/test/test.js:5:18)
    at Module._compile (internal/modules/cjs/loader.js:1156:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1176:10)
    at Module.load (internal/modules/cjs/loader.js:1000:32)
    at Function.Module._load (internal/modules/cjs/loader.js:899:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:74:12) {
  code: 'ServiceUnavailable',
  name: 'Neo4jError'
}

Workaround

  • Neo4j Version: 4.0.1
  • Docker Image: neo4j:4.0.4
  • Driver Version: 4.0.2
  • Operating System: Windows 10

Currently, I'm getting around this by running neo4j in a docker container.

I use the following to start up the docker container:

docker run -p 7474:7474 -p 7687:7687 --env NEO4J_AUTH=neo4j/root neo4j:4.0.1

This is the same version and username/password used in the Neo4j Desktop instance.

The only difference I can see is that it's running in docker.

The following is the log from starting up the docker instance:

Changed password for user 'neo4j'.
Directories in use:
  home:         /var/lib/neo4j
  config:       /var/lib/neo4j/conf
  logs:         /logs
  plugins:      /var/lib/neo4j/plugins
  import:       /var/lib/neo4j/import
  data:         /var/lib/neo4j/data
  certificates: /var/lib/neo4j/certificates
  run:          /var/lib/neo4j/run
Starting Neo4j.
2020-04-27 22:01:31.727+0000 INFO  ======== Neo4j 4.0.1 ========
2020-04-27 22:01:31.740+0000 INFO  Starting...
2020-04-27 22:01:39.771+0000 INFO  Bolt enabled on 0.0.0.0:7687.
2020-04-27 22:01:39.772+0000 INFO  Started.
2020-04-27 22:01:41.577+0000 INFO  Remote interface available at http://0.0.0.0:7474/

Has anyone else ran into this? Can you help point me in the right direction?

I intend to continue using the docker instance instead of Neo4j Desktop, I'm just curious as to what the difference is that's causing my issue.

@MuddyBootsCode
Copy link

I have the same issue. When using the latest version of the driver I cannot connect to my Aura instance at all. I get the same error.

@zhenlineo
Copy link
Contributor

@es50678 You need to configured the advertised address to be something like 0.0.0.0.
Your log already tells you. In the failed case, log contains
2020-04-27 22:04:09.132+0000 INFO Bolt enabled on localhost:7687.

While when using docker, log says
2020-04-27 22:01:39.771+0000 INFO Bolt enabled on 0.0.0.0:7687.

@MuddyBootsCode Try if you have the same, otherwise, be free to start your own issue.

@MuddyBootsCode
Copy link

@zhenlineo Will do. It's worth noting that this does not occur with version 1.7 of the driver. It's only when I upgraded that I began experiencing issues.

@es50678
Copy link
Author

es50678 commented May 13, 2020

@es50678 You need to configured the advertised address to be something like 0.0.0.0.
Your log already tells you. In the failed case, log contains
2020-04-27 22:04:09.132+0000 INFO Bolt enabled on localhost:7687.

While when using docker, log says
2020-04-27 22:01:39.771+0000 INFO Bolt enabled on 0.0.0.0:7687.

I changed the following variables in the config file:
dbms.default_advertised_address=0.0.0.0

I tried again and received the same error.

I tried with both const driver = neo4j.driver('neo4j://localhost', neo4j.auth.basic('neo4j', 'root')); and const driver = neo4j.driver('neo4j://0.0.0.0', neo4j.auth.basic('neo4j', 'root'));

Both result in the same error message:

Neo4jError: Could not perform discovery. No routing servers available. Known routing table: RoutingTable[database=default database, expirationTime=0, currentTime=1589408119298, routers=[], readers=[], writers=[]]

    at captureStacktrace (/mnt/c/Users/Eduardo/wsl/projects/freshit-api/node_modules/neo4j-driver/lib/result.js:263:15)
    at new Result (/mnt/c/Users/Eduardo/wsl/projects/freshit-api/node_modules/neo4j-driver/lib/result.js:68:19)
    at Session._run (/mnt/c/Users/Eduardo/wsl/projects/freshit-api/node_modules/neo4j-driver/lib/session.js:174:14)
    at Session.run (/mnt/c/Users/Eduardo/wsl/projects/freshit-api/node_modules/neo4j-driver/lib/session.js:135:19)
    at Object.<anonymous> (/mnt/c/Users/Eduardo/wsl/projects/freshit-api/index.js:5:18)
    at Module._compile (internal/modules/cjs/loader.js:1156:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1176:10)
    at Module.load (internal/modules/cjs/loader.js:1000:32)
    at Function.Module._load (internal/modules/cjs/loader.js:899:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:74:12) {
  code: 'ServiceUnavailable',
  name: 'Neo4jError'
}

In addition, I also tried changing the following config variables in addition to the default advertised address:

dbms.connector.bolt.listen_address=:7687
dbms.connector.http.listen_address=:7474

@MuddyBootsCode did it work for you after changing the advertised address? Am I changing the wrong config variable?

@oskarhane
Copy link
Member

oskarhane commented May 14, 2020

The dbms.default_advertised_address should never be 0.0.0.0, it should be something that's reachable.
I think the driver using neo4j:// scheme can't handle that when building it's routing table.
If you try bolt:// instead of neo4j:// I suspect it works.
But the real fix is to advertise something else, that's reachable.

The dbms.default_listen_address could be 0.0.0.0, if you want the dbms to accept connections from anywhere.

@mikefontaine
Copy link

I'm having the same issue using Neo4j desktop and bolt:://localhost:7687. This is happening with both JS and C#.NET. Everything worked fine until I upgraded to 1.1.21. I uninstalled and tried again on 1.2.8 and I have the same issue. I have confirmed that 7687 is not blocked and that the DB is running. I was able to connect using the REST interface in JS. I even disabled TLS in case that was a problem.

Was there a change in 1.1.21 that might account for this? It seems that the BOLT protocol just isn't working.

dbms.connector.bolt.enabled=true dbms.connector.bolt.tls_level=DISABLED

# Bolt SSL configuration #dbms.ssl.policy.bolt.enabled=true #dbms.ssl.policy.bolt.base_directory=certificates/bolt #dbms.ssl.policy.bolt.private_key=private.key #dbms.ssl.policy.bolt.public_certificate=public.crt

@es50678
Copy link
Author

es50678 commented May 31, 2020

@oskarhane

I changed:

  • dbms.default_advertised_address to dbms.default_advertised_address=localhost
  • dbms.default_listen_address to dbms.default_listen_address=localhost

I tried with the driver using neo4j://localhost and bolt://localhost.

Unfortunately, neither worked, I'm still receiving:

Neo4jError: Could not perform discovery. No routing servers available. Known routing table: RoutingTable[database=default database, expirationTime=0, currentTime=1589408119298, routers=[], readers=[], writers=[]]

    at captureStacktrace (/mnt/c/Users/Eduardo/wsl/projects/freshit-api/node_modules/neo4j-driver/lib/result.js:263:15)
    at new Result (/mnt/c/Users/Eduardo/wsl/projects/freshit-api/node_modules/neo4j-driver/lib/result.js:68:19)
    at Session._run (/mnt/c/Users/Eduardo/wsl/projects/freshit-api/node_modules/neo4j-driver/lib/session.js:174:14)
    at Session.run (/mnt/c/Users/Eduardo/wsl/projects/freshit-api/node_modules/neo4j-driver/lib/session.js:135:19)
    at Object.<anonymous> (/mnt/c/Users/Eduardo/wsl/projects/freshit-api/index.js:5:18)
    at Module._compile (internal/modules/cjs/loader.js:1156:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1176:10)
    at Module.load (internal/modules/cjs/loader.js:1000:32)
    at Function.Module._load (internal/modules/cjs/loader.js:899:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:74:12) {
  code: 'ServiceUnavailable',
  name: 'Neo4jError'
}

I'm sorry that it took me so long to reply. Thank you all again for helping me out with this ❤️

@alete89
Copy link

alete89 commented Jun 2, 2020

  • Neo4j Version: 4.0.4
  • Docker Image: neo4j:4.0.4
  • Driver Version: ?
  • Operating System: Windows 10

experiencing the same.

running neo4j v4 with latest official docker image. On windows 10 host. using neo4j:// uri scheme, also tried with bolt:// with no success. both
my docker-compose.yml looks like this:

neo4j:
    image: neo4j:4.0.4
    environment:
      - NEO4J_AUTH=neo4j/Password
      - NEO4J_dbms_connector_http_advertised__address=localhost:7474
      - NEO4J_dbms_connector_bolt_advertised__address=localhost:7687
    expose:
      - 7474
      - 7687
    ports:
      - 7474:7474
      - 7687:7687

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

7 participants