Hello,

I am running the oak benchmarks against PostgreSQL database. So far,
things look good, however some tests fail with a database exception.

Any advice on how to make it work?


I'm using PostgreSQL 9.6 from Debian Stretch with the following:


    Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access
privileges  
------------+----------+----------+-------------+-------------+-----------------------
 oak_test   | prd      | UTF8     | en_US.UTF-8 | en_US.UTF-8 |


Regards,

````

java -jar oak-benchmarks-1.8-SNAPSHOT.jar benchmark
--rdbjdbcuri="jdbc:postgresql://localhost:5432/oak_test?readOnly=true"
--rdbjdbcuser=test --rdbjdbcpasswd=test --rdbjdbctableprefix=jcr Oak-RDB
ConcurrentReadTest

Apache Jackrabbit Oak 1.8-SNAPSHOT
# ConcurrentReadTest               C     min     10%     50%     90%    
max       N
06:43:13.248 [main] INFO  o.a.j.o.p.d.LastRevRecoveryAgent - Recovering
candidates modified after: [2017-06-06 06:17:55.898] for clusterId [1]
[sweepRev: r15c7b68aa3a-0-1]
06:43:13.251 [main] INFO  o.a.j.o.p.d.LastRevRecoveryAgent - Performing
Last Revision Recovery for clusterNodeId 1
06:43:14.945 [main] ERROR o.a.j.o.p.d.rdb.RDBDocumentStore - SQL
exception on query
org.apache.jackrabbit.oak.plugins.document.DocumentStoreException:
unexpected query result:
'11:/oak:index/nodetype/:index/nt%3Afolder/rb82ee8d2/folder-0/folder-1/folder-5/folder-10/folder-18/folder-8'
<
'11:/oak:index/nodetype/:index/nt%3Afolder/rb82ee8d2/folder-0/folder-1/folder-5/folder-10/folder-1/folder-0'
< 'null' - broken DB collation?
    at
org.apache.jackrabbit.oak.plugins.document.rdb.RDBDocumentStoreJDBC.query(RDBDocumentStoreJDBC.java:478)
~[oak-benchmarks-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
    at
org.apache.jackrabbit.oak.plugins.document.rdb.RDBDocumentStore.internalQuery(RDBDocumentStore.java:1514)
[oak-benchmarks-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
    at
org.apache.jackrabbit.oak.plugins.document.rdb.RDBDocumentStore.query(RDBDocumentStore.java:271)
[oak-benchmarks-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
    at
org.apache.jackrabbit.oak.plugins.document.util.Utils$2$1.nextBatch(Utils.java:675)
[oak-benchmarks-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
    at
org.apache.jackrabbit.oak.plugins.document.util.Utils$2$1.computeNext(Utils.java:659)
[oak-benchmarks-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
    at
org.apache.jackrabbit.oak.plugins.document.util.Utils$2$1.computeNext(Utils.java:649)
[oak-benchmarks-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
    at
com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:143)
[oak-benchmarks-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
    at
com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:138)
[oak-benchmarks-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
    at
com.google.common.collect.Iterators$7.computeNext(Iterators.java:645)
[oak-benchmarks-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
    at
com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:143)
[oak-benchmarks-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
    at
com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:138)
[oak-benchmarks-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
    at
com.google.common.collect.TransformedIterator.hasNext(TransformedIterator.java:43)
[oak-benchmarks-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
    at
com.google.common.collect.Iterators$7.computeNext(Iterators.java:645)
[oak-benchmarks-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
    at
com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:143)
[oak-benchmarks-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
    at
com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:138)
[oak-benchmarks-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
    at com.google.common.collect.Iterators$6.hasNext(Iterators.java:612)
[oak-benchmarks-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
    at
org.apache.jackrabbit.oak.plugins.document.NodeDocumentSweeper.performSweep(NodeDocumentSweeper.java:142)
[oak-benchmarks-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
    at
org.apache.jackrabbit.oak.plugins.document.NodeDocumentSweeper.sweep(NodeDocumentSweeper.java:116)
[oak-benchmarks-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
    at
org.apache.jackrabbit.oak.plugins.document.LastRevRecoveryAgent.recover(LastRevRecoveryAgent.java:205)
[oak-benchmarks-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
    at
org.apache.jackrabbit.oak.plugins.document.LastRevRecoveryAgent.recover(LastRevRecoveryAgent.java:176)
[oak-benchmarks-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
    at
org.apache.jackrabbit.oak.plugins.document.LastRevRecoveryAgent.recoverCandidates(LastRevRecoveryAgent.java:444)
[oak-benchmarks-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
    at
org.apache.jackrabbit.oak.plugins.document.LastRevRecoveryAgent.recover(LastRevRecoveryAgent.java:148)
[oak-benchmarks-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
    at
org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore.checkLastRevRecovery(DocumentNodeStore.java:730)
[oak-benchmarks-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
    at
org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore.<init>(DocumentNodeStore.java:631)
[oak-benchmarks-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
    at
org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.getNodeStore(DocumentMK.java:867)
[oak-benchmarks-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
    at
org.apache.jackrabbit.oak.plugins.document.DocumentMK.<init>(DocumentMK.java:154)
[oak-benchmarks-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
    at
org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.open(DocumentMK.java:1196)
[oak-benchmarks-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
    at
org.apache.jackrabbit.oak.fixture.OakFixture$2.setUpCluster(OakFixture.java:219)
[oak-benchmarks-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
    at
org.apache.jackrabbit.oak.fixture.OakRepositoryFixture.setUpCluster(OakRepositoryFixture.java:140)
[oak-benchmarks-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
    at
org.apache.jackrabbit.oak.fixture.OakRepositoryFixture.setUpCluster(OakRepositoryFixture.java:136)
[oak-benchmarks-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
    at
org.apache.jackrabbit.oak.benchmark.AbstractTest.createRepository(AbstractTest.java:655)
[oak-benchmarks-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
    at
org.apache.jackrabbit.oak.benchmark.AbstractTest.run(AbstractTest.java:202)
[oak-benchmarks-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
    at
org.apache.jackrabbit.oak.benchmark.BenchmarkRunner.main(BenchmarkRunner.java:478)
[oak-benchmarks-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
    at
org.apache.jackrabbit.oak.run.BenchmarkCommand.execute(BenchmarkCommand.java:27)
[oak-benchmarks-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
    at org.apache.jackrabbit.oak.run.Main.main(Main.java:54)
[oak-benchmarks-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
06:43:14.952 [main] ERROR o.a.j.o.p.d.MissingLastRevSeeker - Failed to
release the recovery lock for clusterNodeId 1
org.apache.jackrabbit.oak.plugins.document.DocumentStoreException:
org.postgresql.util.PSQLException: Cannot change transaction read-only
property in the middle of a transaction.
    at
org.apache.jackrabbit.oak.plugins.document.rdb.RDBDocumentStore.readDocumentUncached(RDBDocumentStore.java:1699)
~[oak-benchmarks-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
    at
org.apache.jackrabbit.oak.plugins.document.rdb.RDBDocumentStore.readDocumentCached(RDBDocumentStore.java:1193)
~[oak-benchmarks-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
    at
org.apache.jackrabbit.oak.plugins.document.rdb.RDBDocumentStore.internalCreateOrUpdate(RDBDocumentStore.java:1299)
~[oak-benchmarks-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
    at
org.apache.jackrabbit.oak.plugins.document.rdb.RDBDocumentStore.findAndUpdate(RDBDocumentStore.java:535)
~[oak-benchmarks-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
    at
org.apache.jackrabbit.oak.plugins.document.MissingLastRevSeeker.releaseRecoveryLock(MissingLastRevSeeker.java:162)
~[oak-benchmarks-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
    at
org.apache.jackrabbit.oak.plugins.document.LastRevRecoveryAgent.recoverCandidates(LastRevRecoveryAgent.java:451)
[oak-benchmarks-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
    at
org.apache.jackrabbit.oak.plugins.document.LastRevRecoveryAgent.recover(LastRevRecoveryAgent.java:148)
[oak-benchmarks-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
    at
org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore.checkLastRevRecovery(DocumentNodeStore.java:730)
[oak-benchmarks-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
    at
org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore.<init>(DocumentNodeStore.java:631)
[oak-benchmarks-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
    at
org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.getNodeStore(DocumentMK.java:867)
[oak-benchmarks-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
    at
org.apache.jackrabbit.oak.plugins.document.DocumentMK.<init>(DocumentMK.java:154)
[oak-benchmarks-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
    at
org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.open(DocumentMK.java:1196)
[oak-benchmarks-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
    at
org.apache.jackrabbit.oak.fixture.OakFixture$2.setUpCluster(OakFixture.java:219)
[oak-benchmarks-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
    at
org.apache.jackrabbit.oak.fixture.OakRepositoryFixture.setUpCluster(OakRepositoryFixture.java:140)
[oak-benchmarks-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
    at
org.apache.jackrabbit.oak.fixture.OakRepositoryFixture.setUpCluster(OakRepositoryFixture.java:136)
[oak-benchmarks-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
    at
org.apache.jackrabbit.oak.benchmark.AbstractTest.createRepository(AbstractTest.java:655)
[oak-benchmarks-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
    at
org.apache.jackrabbit.oak.benchmark.AbstractTest.run(AbstractTest.java:202)
[oak-benchmarks-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
    at
org.apache.jackrabbit.oak.benchmark.BenchmarkRunner.main(BenchmarkRunner.java:478)
[oak-benchmarks-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
    at
org.apache.jackrabbit.oak.run.BenchmarkCommand.execute(BenchmarkCommand.java:27)
[oak-benchmarks-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
    at org.apache.jackrabbit.oak.run.Main.main(Main.java:54)
[oak-benchmarks-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
Caused by: org.postgresql.util.PSQLException: Cannot change transaction
read-only property in the middle of a transaction.
    at
org.postgresql.jdbc.PgConnection.setReadOnly(PgConnection.java:692)
~[oak-benchmarks-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
    at sun.reflect.GeneratedMethodAccessor13.invoke(Unknown Source) ~[na:na]
    at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
~[na:1.8.0_131]
    at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_131]
    at
org.apache.tomcat.jdbc.pool.ProxyConnection.invoke(ProxyConnection.java:126)
~[oak-benchmarks-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
    at
org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke(JdbcInterceptor.java:108)
~[oak-benchmarks-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
    at
org.apache.tomcat.jdbc.pool.interceptor.AbstractCreateStatementInterceptor.invoke(AbstractCreateStatementInterceptor.java:79)
~[oak-benchmarks-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
    at
org.apache.tomcat.jdbc.pool.interceptor.StatementCache.invoke(StatementCache.java:184)
~[oak-benchmarks-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
    at
org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke(JdbcInterceptor.java:108)
~[oak-benchmarks-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
    at
org.apache.tomcat.jdbc.pool.interceptor.ConnectionState.invoke(ConnectionState.java:152)
~[oak-benchmarks-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
    at
org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke(JdbcInterceptor.java:108)
~[oak-benchmarks-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
    at
org.apache.tomcat.jdbc.pool.interceptor.AbstractCreateStatementInterceptor.invoke(AbstractCreateStatementInterceptor.java:79)
~[oak-benchmarks-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
    at
org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke(JdbcInterceptor.java:108)
~[oak-benchmarks-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
    at
org.apache.tomcat.jdbc.pool.TrapException.invoke(TrapException.java:40)
~[oak-benchmarks-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
    at
org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke(JdbcInterceptor.java:108)
~[oak-benchmarks-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
    at
org.apache.tomcat.jdbc.pool.interceptor.AbstractCreateStatementInterceptor.invoke(AbstractCreateStatementInterceptor.java:79)
~[oak-benchmarks-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
    at
org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke(JdbcInterceptor.java:108)
~[oak-benchmarks-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
    at
org.apache.tomcat.jdbc.pool.DisposableConnectionFacade.invoke(DisposableConnectionFacade.java:81)
~[oak-benchmarks-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
    at com.sun.proxy.$Proxy3.setReadOnly(Unknown Source) ~[na:na]
    at
org.apache.jackrabbit.oak.plugins.document.rdb.RDBConnectionHandler.setReadOnly(RDBConnectionHandler.java:177)
~[oak-benchmarks-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
    at
org.apache.jackrabbit.oak.plugins.document.rdb.RDBConnectionHandler.getROConnection(RDBConnectionHandler.java:62)
~[oak-benchmarks-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
    at
org.apache.jackrabbit.oak.plugins.document.rdb.RDBDocumentStore.readDocumentUncached(RDBDocumentStore.java:1683)
~[oak-benchmarks-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
    ... 19 common frames omitted
org.apache.jackrabbit.oak.plugins.document.DocumentStoreException:
org.postgresql.util.PSQLException: Cannot change transaction read-only
property in the middle of a transaction.
    at
org.apache.jackrabbit.oak.plugins.document.rdb.RDBDocumentStore.readDocumentUncached(RDBDocumentStore.java:1699)
    at
org.apache.jackrabbit.oak.plugins.document.rdb.RDBDocumentStore.readDocumentCached(RDBDocumentStore.java:1193)
    at
org.apache.jackrabbit.oak.plugins.document.rdb.RDBDocumentStore.internalCreateOrUpdate(RDBDocumentStore.java:1299)
    at
org.apache.jackrabbit.oak.plugins.document.rdb.RDBDocumentStore.findAndUpdate(RDBDocumentStore.java:535)
    at
org.apache.jackrabbit.oak.plugins.document.MissingLastRevSeeker.releaseRecoveryLock(MissingLastRevSeeker.java:162)
    at
org.apache.jackrabbit.oak.plugins.document.LastRevRecoveryAgent.recoverCandidates(LastRevRecoveryAgent.java:451)
    at
org.apache.jackrabbit.oak.plugins.document.LastRevRecoveryAgent.recover(LastRevRecoveryAgent.java:148)
    at
org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore.checkLastRevRecovery(DocumentNodeStore.java:730)
    at
org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore.<init>(DocumentNodeStore.java:631)
    at
org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.getNodeStore(DocumentMK.java:867)
    at
org.apache.jackrabbit.oak.plugins.document.DocumentMK.<init>(DocumentMK.java:154)
    at
org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.open(DocumentMK.java:1196)
    at
org.apache.jackrabbit.oak.fixture.OakFixture$2.setUpCluster(OakFixture.java:219)
    at
org.apache.jackrabbit.oak.fixture.OakRepositoryFixture.setUpCluster(OakRepositoryFixture.java:140)
    at
org.apache.jackrabbit.oak.fixture.OakRepositoryFixture.setUpCluster(OakRepositoryFixture.java:136)
    at
org.apache.jackrabbit.oak.benchmark.AbstractTest.createRepository(AbstractTest.java:655)
    at
org.apache.jackrabbit.oak.benchmark.AbstractTest.run(AbstractTest.java:202)
    at
org.apache.jackrabbit.oak.benchmark.BenchmarkRunner.main(BenchmarkRunner.java:478)
    at
org.apache.jackrabbit.oak.run.BenchmarkCommand.execute(BenchmarkCommand.java:27)
    at org.apache.jackrabbit.oak.run.Main.main(Main.java:54)
Caused by: org.postgresql.util.PSQLException: Cannot change transaction
read-only property in the middle of a transaction.
    at org.postgresql.jdbc.PgConnection.setReadOnly(PgConnection.java:692)
    at sun.reflect.GeneratedMethodAccessor13.invoke(Unknown Source)
    at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at
org.apache.tomcat.jdbc.pool.ProxyConnection.invoke(ProxyConnection.java:126)
    at
org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke(JdbcInterceptor.java:108)
    at
org.apache.tomcat.jdbc.pool.interceptor.AbstractCreateStatementInterceptor.invoke(AbstractCreateStatementInterceptor.java:79)
    at
org.apache.tomcat.jdbc.pool.interceptor.StatementCache.invoke(StatementCache.java:184)
    at
org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke(JdbcInterceptor.java:108)
    at
org.apache.tomcat.jdbc.pool.interceptor.ConnectionState.invoke(ConnectionState.java:152)
    at
org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke(JdbcInterceptor.java:108)
    at
org.apache.tomcat.jdbc.pool.interceptor.AbstractCreateStatementInterceptor.invoke(AbstractCreateStatementInterceptor.java:79)
    at
org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke(JdbcInterceptor.java:108)
    at
org.apache.tomcat.jdbc.pool.TrapException.invoke(TrapException.java:40)
    at
org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke(JdbcInterceptor.java:108)
    at
org.apache.tomcat.jdbc.pool.interceptor.AbstractCreateStatementInterceptor.invoke(AbstractCreateStatementInterceptor.java:79)
    at
org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke(JdbcInterceptor.java:108)
    at
org.apache.tomcat.jdbc.pool.DisposableConnectionFacade.invoke(DisposableConnectionFacade.java:81)
    at com.sun.proxy.$Proxy3.setReadOnly(Unknown Source)
    at
org.apache.jackrabbit.oak.plugins.document.rdb.RDBConnectionHandler.setReadOnly(RDBConnectionHandler.java:177)
    at
org.apache.jackrabbit.oak.plugins.document.rdb.RDBConnectionHandler.getROConnection(RDBConnectionHandler.java:62)
    at
org.apache.jackrabbit.oak.plugins.document.rdb.RDBDocumentStore.readDocumentUncached(RDBDocumentStore.java:1683)
    ... 19 more

````


Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to