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

"Remote connections to this server are not allowed" on version 0.9.5703 and 0.9.5697 #5

Closed
rafaeldelboni opened this issue Feb 17, 2019 · 5 comments

Comments

@rafaeldelboni
Copy link

I'm getting the error bellow while using the lastest two released versions (0.9.5703 and 0.9.5697), I'm almost sure this is an problem with Datomic itself than with this docker image, but maybe you can help me to find an way to make it work again 😃

How to replicate

  • lein new app test-datomic-free
  • project.clj add this dependency [com.datomic/datomic-free "0.9.5697"]
  • make your src/test_datomic_free/core.clj looks like this:
(ns test-datomic-free.core
  (:gen-class)
  (:require [datomic.api :as d]))

(def schema
  [{:db/doc         "todo description"
    :db/ident       :todo/text
    :db/index       true
    :db/fulltext    true
    :db/valueType   :db.type/string
    :db/cardinality :db.cardinality/one
    :db/id          (d/tempid :db.part/db)}])

(def db-uri "datomic:free://localhost:4334/todos") 

(defn init-db! []
  (d/create-database db-uri)
  (let [conn (d/connect db-uri)]
    @(d/transact conn schema)
    conn))

(defn -main
  "I don't do a whole lot ... yet."
  [& args]
  (println "Hello, World!")
  (init-db!))

Using the latest image doesn't work:
docker run -d -p 4334-4336:4334-4336 --name datomic-free-latest akiel/datomic-free:latest

But if I use 9.5656 it works fine:
docker run -d -p 4334-4336:4334-4336 --name datomic-free-9-5656 akiel/datomic-free:0.9.5656

Error

Exception in thread "main" Syntax error compiling at (/tmp/form-init9030479392409965530.clj:1:73).
        at clojure.lang.Compiler.load(Compiler.java:7647)
        at clojure.lang.Compiler.loadFile(Compiler.java:7573)
        at clojure.main$load_script.invokeStatic(main.clj:452)
        at clojure.main$init_opt.invokeStatic(main.clj:454)
        at clojure.main$init_opt.invoke(main.clj:454)
        at clojure.main$initialize.invokeStatic(main.clj:485)
        at clojure.main$null_opt.invokeStatic(main.clj:519)
        at clojure.main$null_opt.invoke(main.clj:516)
        at clojure.main$main.invokeStatic(main.clj:598)
        at clojure.main$main.doInvoke(main.clj:561)
        at clojure.lang.RestFn.applyTo(RestFn.java:137)
        at clojure.lang.Var.applyTo(Var.java:705)
        at clojure.main.main(main.java:37)
Caused by: java.util.concurrent.ExecutionException: org.h2.jdbc.JdbcSQLException: Remote connections to this server are not allowed, see -tcpAllowOthers [90117-171]
        at org.h2.message.DbException.getJdbcSQLException(DbException.java:329)
        at org.h2.message.DbException.get(DbException.java:169)
        at org.h2.message.DbException.get(DbException.java:146)
        at org.h2.message.DbException.get(DbException.java:135)
        at org.h2.server.TcpServerThread.run(TcpServerThread.java:81)
        at java.lang.Thread.run(Thread.java:748)

        at java.base/java.util.concurrent.FutureTask.report(FutureTask.java:122)
        at java.base/java.util.concurrent.FutureTask.get(FutureTask.java:191)
        at clojure.core$deref_future.invokeStatic(core.clj:2300)
        at clojure.core$future_call$reify__8439.deref(core.clj:6974)
        at clojure.core$deref.invokeStatic(core.clj:2320)
        at clojure.core$deref.invoke(core.clj:2306)
        at datomic.coordination$lookup_transactor_endpoint$fn__5953.invoke(coordination.clj:129)
        at datomic.coordination$lookup_transactor_endpoint.invokeStatic(coordination.clj:127)
        at datomic.coordination$lookup_transactor_endpoint.invoke(coordination.clj:124)
        at datomic.coordination$lookup_compatible_transactor_endpoint.invokeStatic(coordination.clj:145)
        at datomic.coordination$lookup_compatible_transactor_endpoint.invoke(coordination.clj:143)
        at datomic.peer$send_admin_request$fn__8430.invoke(peer.clj:758)
        at datomic.peer$send_admin_request.invokeStatic(peer.clj:752)
        at datomic.peer$send_admin_request.invoke(peer.clj:750)
        at datomic.peer$create_database.invokeStatic(peer.clj:772)
        at datomic.peer$create_database.invoke(peer.clj:762)
        at datomic.peer$create_database.invokeStatic(peer.clj:764)
        at datomic.peer$create_database.invoke(peer.clj:762)
        at clojure.lang.Var.invoke(Var.java:384)
        at datomic.Peer.createDatabase(Peer.java:117)
        at datomic.api$create_database.invokeStatic(api.clj:19)
        at datomic.api$create_database.invoke(api.clj:17)
        at test_datomic_free.core$init_db_BANG_.invokeStatic(core.clj:17)
        at test_datomic_free.core$init_db_BANG_.invoke(core.clj:16)
        at test_datomic_free.core$_main.invokeStatic(core.clj:26)
        at test_datomic_free.core$_main.doInvoke(core.clj:22)
        at clojure.lang.RestFn.invoke(RestFn.java:397)
        at clojure.lang.Var.invoke(Var.java:380)
        at user$eval140.invokeStatic(form-init9030479392409965530.clj:1)
        at user$eval140.invoke(form-init9030479392409965530.clj:1)
        at clojure.lang.Compiler.eval(Compiler.java:7176)
        at clojure.lang.Compiler.eval(Compiler.java:7166)
        at clojure.lang.Compiler.load(Compiler.java:7635)
        ... 12 more
Caused by: org.h2.jdbc.JdbcSQLException: Remote connections to this server are not allowed, see -tcpAllowOthers [90117-171]
        at org.h2.message.DbException.getJdbcSQLException(DbException.java:329)
        at org.h2.message.DbException.get(DbException.java:169)
        at org.h2.message.DbException.get(DbException.java:146)
        at org.h2.message.DbException.get(DbException.java:135)
        at org.h2.server.TcpServerThread.run(TcpServerThread.java:81)
        at java.lang.Thread.run(Thread.java:748)

        at org.h2.engine.SessionRemote.done(SessionRemote.java:568)
        at org.h2.engine.SessionRemote.initTransfer(SessionRemote.java:111)
        at org.h2.engine.SessionRemote.connectServer(SessionRemote.java:395)
        at org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:287)
        at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:109)
        at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:93)
        at org.h2.Driver.connect(Driver.java:72)
        at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:266)
        at org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:175)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:684)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:616)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.init(ConnectionPool.java:479)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.<init>(ConnectionPool.java:135)
        at org.apache.tomcat.jdbc.pool.DataSourceProxy.pCreatePool(DataSourceProxy.java:114)
        at org.apache.tomcat.jdbc.pool.DataSourceProxy.createPool(DataSourceProxy.java:101)
        at org.apache.tomcat.jdbc.pool.DataSourceProxy.getConnection(DataSourceProxy.java:125)
        at datomic.sql$connect.invokeStatic(sql.clj:16)
        at datomic.sql$connect.invoke(sql.clj:13)
        at datomic.sql$select.invokeStatic(sql.clj:77)
        at datomic.sql$select.invoke(sql.clj:75)
        at datomic.kv_sql.KVSql.get(kv_sql.clj:60)
        at datomic.kv_cluster.KVCluster$fn__3221$fn__3224$fn__3225.invoke(kv_cluster.clj:225)
        at datomic.kv_cluster$retry_fn$fn__3136.invoke(kv_cluster.clj:82)
        at datomic.kv_cluster$retry_fn.invokeStatic(kv_cluster.clj:82)
        at datomic.kv_cluster$retry_fn.invoke(kv_cluster.clj:57)
        at clojure.lang.AFn.applyToHelper(AFn.java:178)
        at clojure.lang.AFn.applyTo(AFn.java:144)
        at clojure.core$apply.invokeStatic(core.clj:671)
        at clojure.core$partial$fn__5830.doInvoke(core.clj:2643)
        at clojure.lang.RestFn.invoke(RestFn.java:421)
        at datomic.kv_cluster.KVCluster$fn__3221$fn__3224.invoke(kv_cluster.clj:223)
        at datomic.kv_cluster.KVCluster$fn__3221.invoke(kv_cluster.clj:221)
        at clojure.core$binding_conveyor_fn$fn__5739.invoke(core.clj:2030)
        at clojure.lang.AFn.call(AFn.java:18)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
        at java.base/java.lang.Thread.run(Thread.java:834)

Using: Docker version 18.09.2-ce, build 62479626f2

@taurauko
Copy link

Facing the same issue. I tried passing in the -tcpAllowOthers option in JAVA_OPTS env var but then it died saying that option is unknown.

@fmnoise
Copy link

fmnoise commented Mar 16, 2019

the same issue with datomic-pro 0.9.5786

@fmnoise
Copy link

fmnoise commented Mar 16, 2019

ah, that's because of https://forum.datomic.com/t/important-security-update-0-9-5697/379
and this should help https://docs.datomic.com/on-prem/configuring-embedded.html

rafaeldelboni added a commit to rafaeldelboni/datomic-free that referenced this issue Mar 17, 2019
The release 0.9.5697 makes some security changes that enforces you
to open the JDBC server to external connections.
For this you must explicitly enable it via a property setting and also
set passwords for the ‘admin’ and ‘datomic’ users.

Fix Github issue alexanderkiel#5
@alexanderkiel
Copy link
Owner

I'm on it.

@knoppiks
Copy link
Contributor

Fixed by #7
thanks @rafaeldelboni for the contribution. I tweaked it a bit in consultation with @alexanderkiel to allow different passwords for admin and datomic. Additionally we wanted the password(s) to be required.

alexanderkiel added a commit that referenced this issue Apr 25, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants