orientechnologies / orientdb-docker

OrientDB running in a docker container
MIT License
63 stars 63 forks source link

orientdb crashes #24

Closed javathebob closed 7 years ago

javathebob commented 7 years ago

I'm just starting to learn orientdb...

Started orientdb via the docker command per orient docs (but I removed -d arg to keep it in foreground):

$ docker run --name orientdb -p 2424:2424 -p 2480:2480 -e ORIENTDB_ROOT_PASSWORD=root orientdb:latest

When I download the GratefulDeadConcerts database, the JVM crashed with segmentation violation:

# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x00007f442da33bc5, pid=1, tid=0x00007f440cfc0ab0
#
# JRE version: OpenJDK Runtime Environment (8.0_111-b14) (build 1.8.0_111-internal-alpine-r0-b14)
# Java VM: OpenJDK 64-Bit Server VM (25.111-b14 mixed mode linux-amd64 compressed oops)
# Problematic frame:
# C  [ld-musl-x86_64.so.1+0x4fbc5]  memcpy+0x11
#
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
# An error report file with more information is saved as:
# /orientdb/bin/hs_err_pid1.log

I noticed during startup, it complained about memory:

WARNI Not enough physical memory available for DISKCACHE: 1,997MB (heap=491MB direct=524,288MB). Set lower Maximum Heap (-Xmx setting on JVM) and restart OrientDB. Now running with DISKCACHE=256MB [orientechnologies]
lvca commented 7 years ago

What OS are you using?

javathebob commented 7 years ago

MacOS 10.12.1

lvca commented 7 years ago

It has to be related to OpenJDK. Please use Oracle JDK.

javathebob commented 7 years ago

Do you know of a docker image with java 8 + orientdb? Otherwise, I'll create it.

Thanks.

javathebob commented 7 years ago

Switched to oracle jdk (1.8.0_102), but now get this error when starting:

java.lang.NoClassDefFoundError: Could not initialize class com.orientechnologies.orient.core.db.ODatabaseRecordThreadLocal
    at com.orientechnologies.orient.server.OSystemDatabase.init(OSystemDatabase.java:147)
    at com.orientechnologies.orient.server.OSystemDatabase.<init>(OSystemDatabase.java:44)
    at com.orientechnologies.orient.server.OServer.initSystemDatabase(OServer.java:1280)
    at com.orientechnologies.orient.server.OServer.activate(OServer.java:350)
    at com.orientechnologies.orient.server.OServerMain$1.run(OServerMain.java:46)
robfrank commented 7 years ago

I usually test our images on mac, nothing bad happen. That said, we cannot distribute a docker image with Oracle JDK, pick our Dockerfile, modify it to be based on Oracle JDK. Please tell mi wich version of ORientDB image are you using, wich version of Docker etc. If you build the image by your own with oracle JDK, please post your Dockerfile too

robfrank commented 7 years ago

Umh, weird, I tested other dbs, like GameOfThrones and movie ratings, and they work fine. I evene use docker images in my demos. It seems we have a problem with that db in particular. I will check.

brooklynbagel commented 7 years ago

I've been having similar issues with the GratefulDeadConcerts database using OrientDB on Docker as well. I tested downloading the Whisky, VehicleHistoryGraph, and MoveRatings databases (available at http://orientdb.com/public-databases/) which all seem to connect. I notice the contents of the GratefulDeadConcerts directory for OrientDB 2.2.13 are significantly different than those when you unzip the file at public databases. I was wondering if the latter is out of date?

lvca commented 7 years ago

Do you mean in terms of size?

brooklynbagel commented 7 years ago

Size and contents. I copied the contents of both of version of the GratefulDeadConcerts database. Attempting to connect to the version available on the public databases portal gives an error

OK
Connecting to database [remote:localhost/GratefulDeadConcerts] with user 'admin'...
Error: com.orientechnologies.orient.core.exception.ORecordNotFoundException: The record with id '#0:1' was not found
    DB name="GratefulDeadConcerts"
    DB name="GratefulDeadConcerts"

Error: com.orientechnologies.orient.core.exception.ODatabaseException: Error on retrieving record #0:1 (cluster: internal)
    DB name="GratefulDeadConcerts"

Error: java.lang.UnsatisfiedLinkError: /tmp/snappy-1.1.0.1-2a3b1837-aa63-4d83-9e61-657d78a0fdb4-libsnappyjava.so: Error loading shared library ld-linux-x86-64.so.2: No such file or directory (needed by /tmp/snappy-1.1.0.1-2a3b1837-aa63-4d83-9e61-657d78a0fdb4-libsnappyjava.so)

whereas connecting with the recent version seems to work. Could this be a backwards compatibility issue with the newer OrientDB on Docker and older GratefulDeadConcerts database?

GratefulDeadConcerts-09-09-2014.txt GratefulDeadConcerts-orientdb-2.2.13.txt

robfrank commented 7 years ago

hi, I replaced the db with a copy of the one bundled with the tar.gz. I tested it with the container (2.2.13) and the brew package (2.2.14) and it works properly. Feel free to