javafueled javafueled - 4 months ago 25
Java Question

OrientDB Verify Error

This is tough one.

We have a

xlsx
parser that creating vertexes. However, this recently started happening after refactoring the original free-form project in Maven (I'm not ready to blame the refactoring... yet.)

However, we can't see past this error as we're not doing anything that would typically generate this error.

We are using the v2.1.8 OrientJars, tinkerpop 2.6.0, there is a OrientDB 2.1.8 DB running and the connection via the console, e.g.,
connect database user password
works.

All the test cases reading the
xlsx
pass from the JAR pass. Meaning

InputStream is = ReadAndPopulateList.class.getResourceAsStream(filepath);
reads the file from the JAR.

In fact, we typically see the debugging output from the loading the
xlsx


The error follows with the first internal error below that:

Exception in thread "main" java.lang.VerifyError: Bad type on operand stack
Exception Details:
Location:
com/orientechnologies/orient/core/Orient.startup()Lcom/orientechnologies/orient/core/Orient; @78: putfield
Reason:
Type 'com/orientechnologies/common/profiler/OProfilerStub' (current frame, stack[1]) is not assignable to 'com/orientechnologies/common/profiler/OProfiler'
Current Frame:
bci: @78
flags: { }
locals: { 'com/orientechnologies/orient/core/Orient' }
stack: { 'com/orientechnologies/orient/core/Orient', 'com/orientechnologies/common/profiler/OProfilerStub' }
Bytecode:
0x0000000: 2ab4 0015 b900 3801 00b9 0039 0100 2ab4
0x0000010: 0024 9900 152a 4c2a b400 15b9 0038 0100
0x0000020: b900 3a01 002b b02a 123b b800 2cb6 003c
0x0000030: b500 3d2a b400 3ec7 000f 2abb 003f 5904
0x0000040: b700 40b5 003e 2abb 0041 59b7 0042 b500
0x0000050: 432a bb00 4459 b700 45b5 0046 2ab4 0047
0x0000060: c700 152a bb00 4859 b700 49b5 0047 2ab4
0x0000070: 0047 b600 4ab8 004b b600 4c3c 2abb 004d
0x0000080: 591b 1b06 6814 004e b200 50bb 0051 592a
0x0000090: 1b11 01f4 68b7 0052 b700 53b5 0054 2abb
0x00000a0: 0055 59b7 0056 b600 572a bb00 5859 b700
0x00000b0: 59b6 0057 2a12 5ab7 005b b200 5cb6 005d
0x00000c0: 9900 09b2 005e b800 5f2a 04b5 0024 2ab4
0x00000d0: 001e b900 6001 004d 2cb9 0061 0100 9900
0x00000e0: 2e2c b900 6201 00c0 0063 4e2d c600 092d
0x00000f0: b900 6401 00a7 0014 3a04 b800 662a 1267
0x0000100: 1904 03bd 0068 b600 69a7 ffcf 2ab7 006a
0x0000110: 2ab4 001f b900 6001 004d 2cb9 0061 0100
0x0000120: 9900 3d2c b900 6201 00c0 006b 4e2d c600
0x0000130: 182d b600 6cc0 0063 3a04 1904 c600 0a19
0x0000140: 04b9 0064 0100 a700 143a 04b8 0066 2a12
0x0000150: 6719 0403 bd00 68b6 0069 a7ff c02a b400
0x0000160: 15b9 0038 0100 b900 3a01 00a7 0016 3a05
0x0000170: 2ab4 0015 b900 3801 00b9 003a 0100 1905
0x0000180: bf2a b0
Exception Handler Table:
bci [235, 245] => handler: 248
bci [301, 326] => handler: 329
bci [14, 23] => handler: 366
bci [39, 349] => handler: 366
bci [366, 368] => handler: 366
Stackmap Table:
same_frame(@39)
same_frame(@70)
same_frame(@117)
append_frame(@201,Integer)
append_frame(@216,Object[#351])
append_frame(@245,Object[#352])
same_locals_1_stack_item_frame(@248,Object[#353])
chop_frame(@265,1)
chop_frame(@268,1)
append_frame(@282,Object[#351])
append_frame(@326,Object[#354])
same_locals_1_stack_item_frame(@329,Object[#353])
chop_frame(@346,1)
chop_frame(@349,2)
same_locals_1_stack_item_frame(@366,Object[#355])
same_frame(@385)

at com.orientechnologies.orient.core.serialization.serializer.record.string.ORecordSerializerStringAbstract.<clinit>(ORecordSerializerStringAbstract.java:52)
at com.orientechnologies.orient.core.serialization.serializer.record.ORecordSerializerFactory.<init>(ORecordSerializerFactory.java:47)
at com.orientechnologies.orient.core.serialization.serializer.record.ORecordSerializerFactory.<clinit>(ORecordSerializerFactory.java:37)
at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.<clinit>(ODatabaseDocumentTx.java:129)
at com.orientechnologies.orient.core.db.OPartitionedDatabasePool.initQueue(OPartitionedDatabasePool.java:386)
at com.orientechnologies.orient.core.db.OPartitionedDatabasePool.<init>(OPartitionedDatabasePool.java:186)
at com.tinkerpop.blueprints.impls.orient.OrientGraphFactory.setupPool(OrientGraphFactory.java:161)
at com.capitalone.orientdb.dataimport.DBConnectionFactory.createOrientGraphFactory(DBConnectionFactory.java:13)
at com.capitalone.orientdb.dataimport.CreateAgentVertex.createAgentVertex(CreateAgentVertex.java:13)
at com.capitalone.orientdb.dataimport.ReadAndPopulateList.createAgentResource(ReadAndPopulateList.java:172)
at com.capitalone.orientdb.dataimport.ReadAndPopulateList.main(ReadAndPopulateList.java:24)


com.capitalone.orientdb.dataimport.CreateAgentVertex.createAgentVertex(CreateAgentVertex.java:13
follows:

...
import com.orientechnologies.orient.core.metadata.schema.OClass;
import com.orientechnologies.orient.core.metadata.schema.OType;
import com.tinkerpop.blueprints.impls.orient.OrientGraph;
import com.tinkerpop.blueprints.impls.orient.OrientGraphNoTx;
import com.tinkerpop.blueprints.impls.orient.OrientVertex;

public class CreateAgentVertex {
public void createAgentVertex(List<Resource> resourceList){
OrientGraphNoTx graph=DBConnectionFactory.createOrientGraphFactory().getNoTx();
...


<dependencies>
<dependency>
<groupId>com.tinkerpop.blueprints</groupId>
<artifactId>blueprints-core</artifactId>
<version>2.6.0</version>
</dependency>
<dependency>
<groupId>com.googlecode.concurrentlinkedhashmap</groupId>
<artifactId>concurrentlinkedhashmap-lru</artifactId>
<version>1.4.2</version>
</dependency>
<dependency>
<groupId>org.lucee</groupId>
<artifactId>dom4j</artifactId>
<version>1.6.1</version>
</dependency>
<dependency>
<groupId>net.java.dev.jna</groupId>
<artifactId>jna</artifactId>
<version>4.2.1</version>
</dependency>
<dependency>
<groupId>net.java.dev.jna</groupId>
<artifactId>jna-platform</artifactId>
<version>4.2.1</version>
</dependency>
<dependency>
<groupId>com.orientechnologies</groupId>
<artifactId>orient-commons</artifactId>
<version>1.7.10</version>
</dependency>
<dependency>
<groupId>com.orientechnologies</groupId>
<artifactId>orientdb-client</artifactId>
<version>2.1.8</version>
</dependency>
<dependency>
<groupId>com.orientechnologies</groupId>
<artifactId>orientdb-core</artifactId>
<version>2.1.8</version>
</dependency>
<dependency>
<groupId>com.orientechnologies</groupId>
<artifactId>orientdb-enterprise</artifactId>
<version>2.1.8</version>
</dependency>
<dependency>
<groupId>com.orientechnologies</groupId>
<artifactId>orientdb-graphdb</artifactId>
<version>2.1.8</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.13</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.13</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml-schemas</artifactId>
<version>3.13</version>
</dependency>
<dependency>
<groupId>org.apache.xmlbeans</groupId>
<artifactId>xmlbeans</artifactId>
<version>2.6.0</version>
</dependency>
</dependencies>

Answer

Well, 2.1.8 is quite old, we just released 2.1.20 last week and 2.2.6. I see a `Well, 2.1.8 is quite old, we just released 2.1.20 last week and 2.2.6. BTW, I see a

<dependency>
      <groupId>com.orientechnologies</groupId>
      <artifactId>orient-commons</artifactId>
      <version>1.7.10</version>
</dependency> 

Be consistent with versions! The best way is to define a property in the properties section of you pom and then refer to it inside dependency :

<properties>
        <orientdb.version>2.1.8</orientdb.version>
</properties>

    <dependency>
          <groupId>com.orientechnologies</groupId>
          <artifactId>orient-commons</artifactId>
          <version>${orientdb.version}</version>
    </dependency> 

Moreover, I suggest to get rid of

<dependency>
      <groupId>com.tinkerpop.blueprints</groupId>
      <artifactId>blueprints-core</artifactId>
      <version>2.6.0</version>
    </dependency>
    <dependency>
      <groupId>com.googlecode.concurrentlinkedhashmap</groupId>
      <artifactId>concurrentlinkedhashmap-lru</artifactId>
      <version>1.4.2</version>
    </dependency>

because these are transitive dependencies of graph and core modules of orient. You can check that nothing changes with a 'mvn dependency:tree' command before and after commenting these deps.