Hi Simon, Ok, so it must be a bug. Could you please file an issue here https://github.com/orientechnologies/orientdb/issues
Thanks Luigi Il giorno ven 14 set 2018 alle ore 09:28 'Simon Erhardt' via OrientDB < [email protected]> ha scritto: > Hi Luigi, > > yes, although we use the remote protocol, client and server are run in the > same process. Our classpath contains the following libraries: > > orientdb-client-2.2.34.jar > orientdb-core-2.2.34.jar > orientdb-graphdb-2.2.34.jar > orientdb-server-2.2.34.jar > orientdb-tools-2.2.34.jar > > Simon > > Am Fr., 14. Sep. 2018 um 07:47 Uhr schrieb Luigi Dell'Aquila < > [email protected]>: > >> Hi Simon, >> >> Are you using the exact same OrientDB version on both the client and the >> server? >> >> Thanks >> >> Luigi >> >> Il giorno gio 13 set 2018 alle ore 14:16 'Simon Erhardt' via OrientDB < >> [email protected]> ha scritto: >> >>> Hello community, >>> >>> we are using OrientDB in our product, and since the update from version >>> 2.1.15 to version 2.2.34, we have the problem described below, which occurs >>> sporadically. >>> Is there anything we can do to mitigate it or to identify the actual >>> error source? >>> We are grateful for every kind of help. >>> >>> - Simon >>> >>> *OrientDB release?* >>> 2.2.34 >>> >>> *What steps will reproduce the problem?* >>> Unknown - our attempts to reproduce the problem have been very >>> unsatisfying yet. Nonetheless, the problem occurs again and again (without >>> a recognizable pattern), in different runtime environments of different >>> customers, and in different situations. It seems to happen in random >>> situations when the database is accessed. It happens that one query is >>> successful, and the next one fails (with the error below), and then every >>> subsequent query also fails. >>> >>> Symptoms: >>> An InvalidClassException occurs sometimes when querying the database: >>> Caused by: com.orientechnologies.common.io.OIOException: com.o; >>> serializable and externalizable flags conflict >>> at >>> com.orientechnologies.orient.client.remote.OStorageRemote.handleIOException(OStorageRemote.java:321) >>> at >>> com.orientechnologies.orient.client.remote.OStorageRemote.baseNetworkOperation(OStorageRemote.java:292) >>> at >>> com.orientechnologies.orient.client.remote.OStorageRemote.networkOperationRetry(OStorageRemote.java:204) >>> at >>> com.orientechnologies.orient.client.remote.OStorageRemote.networkOperation(OStorageRemote.java:215) >>> at >>> com.orientechnologies.orient.client.remote.OStorageRemote.command(OStorageRemote.java:1187) >>> at >>> com.orientechnologies.orient.core.command.OCommandRequestTextAbstract.execute(OCommandRequestTextAbstract.java:69) >>> at >>> com.tinkerpop.blueprints.impls.orient.OrientGraphCommand.execute(OrientGraphCommand.java:49) >>> at com.mycompany.BaseDAOImpl.query(OrientConnection.java:188) >>> ... 13 common frames omitted >>> Caused by: java.io.InvalidClassException: com.o; serializable and >>> externalizable flags conflict >>> at java.base/java.io.ObjectStreamClass.readNonProxy(Unknown Source) >>> at java.base/java.io.ObjectInputStream.readClassDescriptor(Unknown >>> Source) >>> at java.base/java.io.ObjectInputStream.readNonProxyDesc(Unknown Source) >>> at java.base/java.io.ObjectInputStream.readClassDesc(Unknown Source) >>> at java.base/java.io.ObjectInputStream.readOrdinaryObject(Unknown Source) >>> at java.base/java.io.ObjectInputStream.readObject0(Unknown Source) >>> at java.base/java.io.ObjectInputStream.readObject(Unknown Source) >>> at >>> com.orientechnologies.orient.client.binary.OChannelBinaryAsynchClient.throwSerializedException(OChannelBinaryAsynchClient.java:436) >>> at >>> com.orientechnologies.orient.client.binary.OChannelBinaryAsynchClient.handleStatus(OChannelBinaryAsynchClient.java:400) >>> at >>> com.orientechnologies.orient.client.binary.OChannelBinaryAsynchClient.beginResponse(OChannelBinaryAsynchClient.java:283) >>> at >>> com.orientechnologies.orient.client.binary.OChannelBinaryAsynchClient.beginResponse(OChannelBinaryAsynchClient.java:167) >>> at >>> com.orientechnologies.orient.client.remote.OStorageRemote.beginResponse(OStorageRemote.java:2365) >>> at >>> com.orientechnologies.orient.client.remote.OStorageRemote$27.execute(OStorageRemote.java:1211) >>> at >>> com.orientechnologies.orient.client.remote.OStorageRemote$2.execute(OStorageRemote.java:207) >>> at >>> com.orientechnologies.orient.client.remote.OStorageRemote.baseNetworkOperation(OStorageRemote.java:252) >>> ... 19 common frames omitted >>> >>> The *BaseDAOImpl.query* looks like: >>> public Iterable<Vertex> query(String query, Object... params) throws >>> PersistenceException { >>> OrientBaseGraph graph = OrientGraph.getActiveGraph(); >>> try { >>> OCommandSQL command = new OCommandSQL(query); >>> graph.clearCache(); >>> return graph.command(command).execute(params); >>> } catch (Exception e) { >>> throw new PersistenceException("Query triggered an exception", e); >>> } >>> } >>> >>> It is called in the following context: >>> OrientGraphFactory factory = new >>> OrientGraphFactory("remote:localhost/mydb", user, password).setupPool(10, >>> 50); >>> setRequireTransaction(true); >>> setAutoStartTx(false); >>> OrientGraph db = factory.getTx(); >>> ... >>> baseDAO.query("select from MyClass"); >>> ... >>> db.shutdown(); >>> >>> >>> *If you're using custom settings please provide them below (to dump all >>> the settings run the application using the JVM >>> argument -Denvironment.dumpCfgAtStartup=true):* >>> OrientDB 2.2.34 (build f340442755a31eabc91b87cb3ef99eda5cee6ebd, branch >>> 2.2.x) configuration dump: >>> - ENVIRONMENT >>> + environment.dumpCfgAtStartup = true >>> + environment.concurrent = true >>> + environment.lockManager.concurrency.level = 64 >>> + environment.allowJVMShutdown = true >>> - SCRIPT >>> + script.pool.maxSize = 20 >>> - MEMORY >>> + memory.useUnsafe = true >>> + memory.chunk.size = 2147483647 >>> + memory.directMemory.safeMode = true >>> + memory.directMemory.trackMode = false >>> + memory.directMemory.onlyAlignedMemoryAccess = true >>> - JVM >>> + jvm.gc.delayForOptimize = 600 >>> - STORAGE >>> + storage.openFiles.limit = 512 >>> + storage.componentsLock.cache = 10000 >>> + storage.diskCache.pinnedPages = 20 >>> + storage.diskCache.bufferSize = 4054 >>> + storage.diskCache.writeCachePart = 15 >>> + storage.diskCache.writeCachePageTTL = 86400 >>> + storage.diskCache.writeCachePageFlushInterval = 25 >>> + storage.diskCache.writeCacheFlushInactivityInterval = 60000 >>> + storage.diskCache.writeCacheFlushLockTimeout = -1 >>> + storage.diskCache.diskFreeSpaceCheckInterval = 5 >>> + storage.diskCache.diskFreeSpaceCheckIntervalInPages = 2048 >>> + storage.diskCache.keepState = true >>> + storage.diskCache.checksumMode = StoreAndSwitchReadOnlyMode >>> + storage.configuration.syncOnUpdate = true >>> + storage.compressionMethod = nothing >>> + storage.encryptionMethod = nothing >>> + storage.encryptionKey = <hidden> >>> + storage.makeFullCheckpointAfterCreate = false >>> + storage.makeFullCheckpointAfterOpen = false >>> + storage.makeFullCheckpointAfterClusterCreate = true >>> + storage.trackChangedRecordsInWAL = false >>> + storage.useWAL = true >>> + storage.wal.syncOnPageFlush = true >>> + storage.wal.cacheSize = 3000 >>> + storage.wal.fileAutoCloseInterval = 10 >>> + storage.wal.maxSegmentSize = 128 >>> + storage.wal.maxSize = 4096 >>> + storage.wal.commitTimeout = 1000 >>> + storage.wal.shutdownTimeout = 10000 >>> + storage.wal.fuzzyCheckpointInterval = 300 >>> + storage.wal.reportAfterOperationsDuringRestore = 10000 >>> + storage.wal.restore.batchSize = 50000 >>> + storage.wal.readCacheSize = 1000 >>> + storage.wal.fuzzyCheckpointShutdownWait = 600 >>> + storage.wal.fullCheckpointShutdownTimeout = 600 >>> + storage.wal.path = null >>> + storage.diskCache.pageSize = 64 >>> + storage.diskCache.diskFreeSpaceLimit = 256 >>> + storage.lowestFreeListBound = 16 >>> + storage.lockTimeout = 0 >>> + storage.record.lockTimeout = 2000 >>> + storage.useTombstones = false >>> - RECORD >>> + record.downsizing.enabled = true >>> - OBJECT >>> + object.saveOnlyDirty = false >>> - DB >>> + db.pool.min = 50 >>> + db.pool.max = 100 >>> + db.pool.idleTimeout = 0 >>> + db.pool.idleCheckDelay = 0 >>> + db.mvcc.throwfast = false >>> + db.validation = true >>> - NONTX >>> + nonTX.recordUpdate.synch = false >>> + nonTX.clusters.sync.immediately = manindex >>> - TX >>> + tx.trackAtomicOperations = false >>> + tx.pageCacheSize = 12 >>> - INDEX >>> + index.embeddedToSbtreeBonsaiThreshold = 40 >>> + index.sbtreeBonsaiToEmbeddedThreshold = -1 >>> - HASHTABLE >>> + hashTable.slitBucketsBuffer.length = 1500 >>> - INDEX >>> + index.auto.synchronousAutoRebuild = true >>> + index.auto.lazyUpdates = 10000 >>> + index.flushAfterCreate = true >>> + index.manual.lazyUpdates = 1 >>> + index.durableInNonTxMode = true >>> + index.ignoreNullValuesDefault = false >>> + index.txMode = FULL >>> + index.cursor.prefetchSize = 10000 >>> - SBTREE >>> + sbtree.maxDepth = 64 >>> + sbtree.maxKeySize = 10240 >>> + sbtree.maxEmbeddedValueSize = 40960 >>> - SBTREEBONSAI >>> + sbtreebonsai.bucketSize = 2 >>> + sbtreebonsai.linkBagCache.size = 100000 >>> + sbtreebonsai.linkBagCache.evictionSize = 1000 >>> + sbtreebonsai.freeSpaceReuseTrigger = 0.5 >>> - RIDBAG >>> + ridBag.embeddedDefaultSize = 4 >>> + ridBag.embeddedToSbtreeBonsaiThreshold = 40 >>> + ridBag.sbtreeBonsaiToEmbeddedToThreshold = -1 >>> - COLLECTIONS >>> + collections.preferSBTreeSet = false >>> - FILE >>> + file.trackFileClose = false >>> + file.lock = true >>> + file.deleteDelay = 10 >>> + file.deleteRetry = 50 >>> - SECURITY >>> + security.userPasswordSaltIterations = 65536 >>> + security.userPasswordSaltCacheSize = 500 >>> + security.userPasswordDefaultAlgorithm = PBKDF2WithHmacSHA256 >>> - NETWORK >>> + network.maxConcurrentSessions = 1000 >>> + network.socketBufferSize = 0 >>> + network.lockTimeout = 15000 >>> + network.socketTimeout = 15000 >>> + network.requestTimeout = 3600000 >>> + network.retry.strategy = auto >>> + network.retry = 5 >>> + network.retryDelay = 500 >>> + network.binary.loadBalancing.enabled = false >>> + network.binary.loadBalancing.timeout = 2000 >>> + network.binary.maxLength = 16384 >>> + network.binary.readResponse.maxTimes = 20 >>> + network.binary.debug = false >>> + network.http.installDefaultCommands = true >>> + network.http.serverInfo = OrientDB Server v.2.2.34 (build >>> f340442755a31eabc91b87cb3ef99eda5cee6ebd, branch 2.2.x) >>> + network.http.maxLength = 1000000 >>> + network.http.streaming = false >>> + network.http.charset = utf-8 >>> + network.http.jsonResponseError = true >>> + network.http.jsonp = false >>> + network.http.sessionExpireTimeout = 300 >>> + network.http.useToken = false >>> + network.token.secretKey = >>> + network.token.encryptionAlgorithm = HmacSHA256 >>> + network.token.expireTimeout = 60 >>> - PROFILER >>> + profiler.enabled = false >>> + profiler.config = null >>> + profiler.autoDump.interval = 0 >>> + profiler.autoDump.type = full >>> + profiler.maxValues = 200 >>> + profiler.memoryCheckInterval = 120000 >>> - SEQUENCE >>> + sequence.maxRetry = 100 >>> + sequence.retryDelay = 200 >>> - STORAGEPROFILER >>> + storageProfiler.intervalBetweenSnapshots = 100 >>> + storageProfiler.cleanUpInterval = 5000 >>> - LOG >>> + log.console.level = info >>> + log.file.level = fine >>> - CLASS >>> + class.minimumClusters = 0 >>> - LOG >>> + log.console.ansi = auto >>> - CACHE >>> + cache.local.impl = >>> com.orientechnologies.orient.core.cache.ORecordCacheWeakRefs >>> - COMMAND >>> + command.timeout = 0 >>> + command.cache.enabled = false >>> + command.cache.evictStrategy = PER_CLUSTER >>> + command.cache.minExecutionTime = 10 >>> + command.cache.maxResultsetSize = 500 >>> - QUERY >>> + query.useSoftReferencesInResultSet = false >>> + query.parallelAuto = false >>> + query.parallelMinimumRecords = 300000 >>> + query.parallelResultQueueSize = 20000 >>> + query.scanPrefetchPages = 20 >>> + query.scanBatchSize = 1000 >>> + query.scanThresholdTip = 50000 >>> + query.limitThresholdTip = 10000 >>> + query.live.support = true >>> + query.timeout.defaultStrategy = EXCEPTION >>> - LUCENE >>> + lucene.query.pageSize = 10000 >>> - STATEMENT >>> + statement.cacheSize = 100 >>> - SQL >>> + sql.graphConsistencyMode = tx >>> - CLIENT >>> + client.channel.maxPool = 200 >>> + client.connectionPool.waitTimeout = 5000 >>> + client.channel.dbReleaseWaitTimeout = 10000 >>> + client.ssl.enabled = false >>> + client.ssl.keyStore = null >>> + client.ssl.keyStorePass = null >>> + client.ssl.trustStore = null >>> + client.ssl.trustStorePass = null >>> - SERVER >>> + server.openAllDatabasesAtStartup = false >>> + server.channel.cleanDelay = 5000 >>> + server.cache.staticFile = false >>> + server.log.dumpClientExceptionLevel = FINE >>> + server.log.dumpClientExceptionFullStackTrace = false >>> - DISTRIBUTED >>> + distributed.dumpStatsEvery = 0 >>> + distributed.crudTaskTimeout = 10000 >>> + distributed.maxStartupDelay = 10000 >>> + distributed.commandTaskTimeout = 120000 >>> + distributed.commandQuickTaskTimeout = 5000 >>> + distributed.commandLongTaskTimeout = 86400000 >>> + distributed.deployDbTaskTimeout = 1200000 >>> + distributed.deployChunkTaskTimeout = 60000 >>> + distributed.deployDbTaskCompression = 7 >>> + distributed.asynchQueueSize = 0 >>> + distributed.asynchResponsesTimeout = 15000 >>> + distributed.purgeResponsesTimerDelay = 15000 >>> + distributed.conflictResolverRepairerChain = >>> quorum,content,majority,version >>> + distributed.conflictResolverRepairerCheckEvery = 5000 >>> + distributed.conflictResolverRepairerBatch = 50 >>> + distributed.txAliveTimeout = 30000 >>> + distributed.requestChannels = 1 >>> + distributed.responseChannels = 1 >>> + distributed.queueTimeout = 15000 >>> + distributed.heartbeatTimeout = 10000 >>> + distributed.checkHealthCanOfflineServer = false >>> + distributed.checkHealthEvery = 10000 >>> + distributed.autoRemoveOfflineServers = 0 >>> + distributed.publishNodeStatusEvery = 10000 >>> + distributed.localQueueSize = 10000 >>> + distributed.dbWorkerThreads = 0 >>> + distributed.queueMaxSize = 10000 >>> + distributed.backupDirectory = ../backup/databases >>> + distributed.backupTryIncrementalFirst = true >>> + distributed.checkIntegrityLastTxs = 16 >>> + distributed.concurrentTxMaxAutoRetry = 15 >>> + distributed.atomicLockTimeout = 1000 >>> + distributed.concurrentTxAutoRetryDelay = 10 >>> - DB >>> + db.document.serializer = ORecordSerializerBinary >>> - CLIENT >>> + client.krb5.config = null >>> + client.krb5.ccname = null >>> + client.krb5.ktname = null >>> + client.credentialinterceptor = null >>> + client.ci.keyalgorithm = AES >>> + client.ci.ciphertransform = AES/CBC/PKCS5Padding >>> + client.ci.keystore.file = null >>> + client.ci.keystore.password = null >>> - SECURITY >>> + security.createDefaultUsers = true >>> - SERVER >>> + server.security.file = null >>> - ORIENT >>> + orient.initInServletContextListener = true >>> - JNA >>> + jna.disable.system.library = true >>> - DB >>> + db.makeFullCheckpointOnIndexChange = true >>> + db.makeFullCheckpointOnSchemaChange = true >>> - CLIENT >>> + client.session.tokenBased = true >>> - OAUTH2 >>> + oauth2.secretkey = >>> - STORAGE >>> + storage.cluster.usecrc32 = false >>> - LAZYSET >>> + lazyset.workOnStream = true >>> - DB >>> + db.mvcc = true >>> + db.use.distributedVersion = false >>> - MVRBTREE >>> + mvrbtree.timeout = 0 >>> + mvrbtree.nodePageSize = 256 >>> + mvrbtree.loadFactor = 0.7 >>> + mvrbtree.optimizeThreshold = 100000 >>> + mvrbtree.entryPoints = 64 >>> + mvrbtree.optimizeEntryPointsFactor = 1.0 >>> + mvrbtree.entryKeysInMemory = false >>> + mvrbtree.entryValuesInMemory = false >>> + mvrbtree.ridBinaryThreshold = -1 >>> + mvrbtree.ridNodePageSize = 64 >>> + mvrbtree.ridNodeSaveMemory = false >>> - TX >>> + tx.commit.synch = false >>> + tx.autoRetry = 1 >>> + tx.log.fileType = classic >>> + tx.log.synch = false >>> + tx.useLog = true >>> - INDEX >>> + index.auto.rebuildAfterNotSoftClose = true >>> - CLIENT >>> + client.channel.minPool = 50 >>> - STORAGE >>> + storage.keepOpen = true >>> - CACHE >>> + cache.local.enabled = true >>> - DISTRIBUTED >>> + distributed.shutdownTimeout = 2000 >>> >>> -- >>> >>> --- >>> You received this message because you are subscribed to the Google >>> Groups "OrientDB" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to [email protected]. >>> For more options, visit https://groups.google.com/d/optout. >>> >> -- >> >> --- >> You received this message because you are subscribed to a topic in the >> Google Groups "OrientDB" group. >> To unsubscribe from this topic, visit >> https://groups.google.com/d/topic/orient-database/8UE029Na4jE/unsubscribe >> . >> To unsubscribe from this group and all its topics, send an email to >> [email protected]. >> For more options, visit https://groups.google.com/d/optout. >> > -- > > --- > You received this message because you are subscribed to the Google Groups > "OrientDB" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > For more options, visit https://groups.google.com/d/optout. > -- --- You received this message because you are subscribed to the Google Groups "OrientDB" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
