Skip to content

Cannot import database in low-ram profile #670

@retaggi

Description

@retaggi

ArcadeDB Version: v22.12.1-SNAPSHOT

JDK Version: openjdk 11.0.17 2022-10-18

OS: Ubuntu 22.04.1 LTS

Expected behavior

Even with low-ram profile (128mb ram or lower) I expect to import any database if I have enough space on my disk.

Actual behavior

java.lang.OutOfMemoryError (java heap space)

`
2022-12-14 10:50:15.027 INFO [ArcadeDBServer] <ArcadeDB_0> ArcadeDB Server v22.12.1-SNAPSHOT (build 81566f3/1670890687610/main) is starting up...
2022-12-14 10:50:15.029 INFO [ArcadeDBServer] <ArcadeDB_0> Starting ArcadeDB Server with plugins [Redis, MongoDB, Postgres, GremlinServer] ...
2022-12-14 10:50:15.051 INFO [ArcadeDBServer] <ArcadeDB_0> - JMX Metrics Started...
2022-12-14 10:50:15.090 INFO [ServerSecurity] <ArcadeDB_0> Creating root user with the provided password
2022-12-14 10:50:15.224 INFO [ArcadeDBServer] <ArcadeDB_0> Creating default database 'Imported'...
2022-12-14 10:50:15.391 INFO [SourceDiscovery] <ArcadeDB_0> Analyzing url: https://github.com/ArcadeData/arcadedb-datasets/raw/main/orientdb/OpenBeer.gz...
2022-12-14 10:50:16.343 INFO [SourceDiscovery] <ArcadeDB_0> Recognized format OrientDB (parsingLimitBytes=9.54MB parsingLimitEntries=0)
Importing OrientDB database from stream to './databases/Imported'
Creation of the schema: types, properties and indexes

  • Created type 'V' with the following properties {}
  • Created type 'Beer' with the following properties {id=INTEGER}
  • Created type 'Brewery' with the following properties {id=INTEGER}
  • Created type 'Category' with the following properties {id=INTEGER}
  • Created type 'E' with the following properties {}
  • Created type 'HasBrewery' with the following properties {}
  • Created type 'HasCategory' with the following properties {}
  • Created type 'HasStyle' with the following properties {}
  • Created type 'Style' with the following properties {id=INTEGER}
  • Created index UNIQUE on Beer[id]
  • Created index UNIQUE on Brewery[id]
  • Created index UNIQUE on Style[id]
    java.lang.OutOfMemoryError: Java heap space
    Dumping heap to java_pid1.hprof ...
    Heap dump file created [81224816 bytes in 0.106 secs]
  • Status update: parsed 0 (0/sec) - 0 documents (0/sec) - 0 vertices (0/sec) - 0 edges (0/sec) - 0 skipped edges - 0 linked edges (0/sec - 0%)
    2022-12-14 10:50:16.344 INFO [Importer] <ArcadeDB_0> Checking schema...Exception in thread "main" com.arcadedb.exception.CommandExecutionException: Error on importing database
    at com.arcadedb.query.sql.parser.ImportDatabaseStatement.executeSimple(ImportDatabaseStatement.java:70)
    at com.arcadedb.query.sql.executor.SingleOpExecutionPlan.executeInternal(SingleOpExecutionPlan.java:115)
    at com.arcadedb.query.sql.parser.SimpleExecStatement.execute(SimpleExecStatement.java:56)
    at com.arcadedb.query.sql.parser.Statement.execute(Statement.java:82)
    at com.arcadedb.query.sql.parser.Statement.execute(Statement.java:66)
    at com.arcadedb.query.sql.SQLQueryEngine.command(SQLQueryEngine.java:88)
    at com.arcadedb.database.EmbeddedDatabase.command(EmbeddedDatabase.java:1223)
    at com.arcadedb.server.ArcadeDBServer.loadDefaultDatabases(ArcadeDBServer.java:468)
    at com.arcadedb.server.ArcadeDBServer.start(ArcadeDBServer.java:130)
    at com.arcadedb.server.ArcadeDBServer.main(ArcadeDBServer.java:91)
    Caused by: com.arcadedb.integration.importer.ImportException: Error on parsing source 'https://github.com/ArcadeData/arcadedb-datasets/raw/main/orientdb/OpenBeer.gz (compressed=true size=1085781)'
    at com.arcadedb.integration.importer.Importer.load(Importer.java:62)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at com.arcadedb.query.sql.parser.ImportDatabaseStatement.executeSimple(ImportDatabaseStatement.java:65)
    ... 9 more
    Caused by: com.arcadedb.index.IndexException: Error on creating index on type 'Category', properties [id]
    at com.arcadedb.schema.EmbeddedSchema.createTypeIndex(EmbeddedSchema.java:506)
    at com.arcadedb.schema.EmbeddedSchema.getOrCreateTypeIndex(EmbeddedSchema.java:541)
    at com.arcadedb.integration.importer.OrientDBImporter.parseIndexes(OrientDBImporter.java:772)
    at com.arcadedb.integration.importer.OrientDBImporter.createRecord(OrientDBImporter.java:424)
    at com.arcadedb.integration.importer.OrientDBImporter.createRecords(OrientDBImporter.java:384)
    at com.arcadedb.integration.importer.OrientDBImporter.parseRecords(OrientDBImporter.java:333)
    at com.arcadedb.integration.importer.OrientDBImporter.parseInputFile(OrientDBImporter.java:286)
    at com.arcadedb.integration.importer.OrientDBImporter.run(OrientDBImporter.java:175)
    at com.arcadedb.integration.importer.format.OrientDBImporterFormat.load(OrientDBImporterFormat.java:48)
    at com.arcadedb.integration.importer.Importer.loadFromSource(Importer.java:90)
    at com.arcadedb.integration.importer.Importer.load(Importer.java:53)
    ... 14 more
    Caused by: com.arcadedb.exception.DatabaseOperationException: Error during read lock
    at com.arcadedb.database.EmbeddedDatabase.executeInReadLock(EmbeddedDatabase.java:1357)
    at com.arcadedb.database.EmbeddedDatabase.commit(EmbeddedDatabase.java:359)
    at com.arcadedb.database.EmbeddedDatabase.transaction(EmbeddedDatabase.java:998)
    at com.arcadedb.schema.EmbeddedSchema.lambda$createTypeIndex$4(EmbeddedSchema.java:484)
    at com.arcadedb.database.EmbeddedDatabase.executeInWriteLock(EmbeddedDatabase.java:1372)
    at com.arcadedb.database.EmbeddedDatabase.recordFileChanges(EmbeddedDatabase.java:1392)
    at com.arcadedb.schema.EmbeddedSchema.recordFileChanges(EmbeddedSchema.java:1370)
    at com.arcadedb.schema.EmbeddedSchema.createTypeIndex(EmbeddedSchema.java:483)
    ... 24 more
    Caused by: java.lang.OutOfMemoryError: Java heap space
    at com.arcadedb.database.Binary.(Binary.java:64)
    at com.arcadedb.database.Binary.(Binary.java:71)
    at com.arcadedb.engine.WALFile.writeTransactionToBuffer(WALFile.java:237)
    at com.arcadedb.engine.TransactionManager.createTransactionBuffer(TransactionManager.java:138)
    at com.arcadedb.database.TransactionContext.commit1stPhase(TransactionContext.java:507)
    at com.arcadedb.database.TransactionContext.commit(TransactionContext.java:114)
    at com.arcadedb.database.EmbeddedDatabase.lambda$commit$2(EmbeddedDatabase.java:364)
    at com.arcadedb.database.EmbeddedDatabase$$Lambda$111/0x0000000840128c40.call(Unknown Source)
    at com.arcadedb.database.EmbeddedDatabase.executeInReadLock(EmbeddedDatabase.java:1346)
    at com.arcadedb.database.EmbeddedDatabase.commit(EmbeddedDatabase.java:359)
    at com.arcadedb.database.EmbeddedDatabase.transaction(EmbeddedDatabase.java:998)
    at com.arcadedb.schema.EmbeddedSchema.lambda$createTypeIndex$4(EmbeddedSchema.java:484)
    at com.arcadedb.schema.EmbeddedSchema$$Lambda$156/0x0000000840207840.call(Unknown Source)
    at com.arcadedb.database.EmbeddedDatabase.executeInWriteLock(EmbeddedDatabase.java:1372)
    at com.arcadedb.database.EmbeddedDatabase.recordFileChanges(EmbeddedDatabase.java:1392)
    at com.arcadedb.schema.EmbeddedSchema.recordFileChanges(EmbeddedSchema.java:1370)
    at com.arcadedb.schema.EmbeddedSchema.createTypeIndex(EmbeddedSchema.java:483)
    at com.arcadedb.schema.EmbeddedSchema.getOrCreateTypeIndex(EmbeddedSchema.java:541)
    at com.arcadedb.integration.importer.OrientDBImporter.parseIndexes(OrientDBImporter.java:772)
    at com.arcadedb.integration.importer.OrientDBImporter.createRecord(OrientDBImporter.java:424)
    at com.arcadedb.integration.importer.OrientDBImporter.createRecords(OrientDBImporter.java:384)
    at com.arcadedb.integration.importer.OrientDBImporter.parseRecords(OrientDBImporter.java:333)
    at com.arcadedb.integration.importer.OrientDBImporter.parseInputFile(OrientDBImporter.java:286)
    at com.arcadedb.integration.importer.OrientDBImporter.run(OrientDBImporter.java:175)
    at com.arcadedb.integration.importer.format.OrientDBImporterFormat.load(OrientDBImporterFormat.java:48)
    at com.arcadedb.integration.importer.Importer.loadFromSource(Importer.java:90)
    at com.arcadedb.integration.importer.Importer.load(Importer.java:53)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at com.arcadedb.query.sql.parser.ImportDatabaseStatement.executeSimple(ImportDatabaseStatement.java:65)
    `

Steps to reproduce

docker run -d --rm  -p 2480:2480 -p 2424:2424 -p 6379:6379 -p 5432:5432 -p 8182:8182 \
--name arcadedb \
--env ARCADEDB_OPTS_MEMORY="-Xms128M -Xmx128M" \
--env JAVA_OPTS="-Darcadedb.server.rootPassword=playwithdata \
-Darcadedb.profile=low-ram \
-Darcadedb.server.defaultDatabases=Imported[root]{import:https://github.com/ArcadeData/arcadedb-datasets/raw/main/orientdb/OpenBeer.gz} \
-Darcadedb.server.plugins=Redis:com.arcadedb.redis.RedisProtocolPlugin,MongoDB:com.arcadedb.mongo.MongoDBProtocolPlugin,Postgres:com.arcadedb.postgres.PostgresProtocolPlugin,GremlinServer:com.arcadedb.server.gremlin.GremlinServerPlugin " \
arcadedata/arcadedb:latest

I tried with some tuning like the following, without success:

-Darcadedb.sqlStatementCache=10 \
-Darcadedb.freePageRAM=100 \
-Darcadedb.indexCompactionRAM=1 \
-Darcadedb.maxPageRAM=1024 \

I tried even without defaultDatabases and with import database https://github.com/ArcadeData/arcadedb-datasets/raw/main/orientdb/OpenBeer.gz after the startup of the server.

Thank you

Metadata

Metadata

Assignees

Labels

questionFurther information is requested

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions