Hi guys, I am trying to use YCSB to evaluate Couchbase Enterprise (5.11). In YCSB, you can set couchbase.kv = false to let it run N1QL queries instead of normal get/set. I have encountered problem running workload a using couchbase.kv=false. I have no problem running benchmarks using normal couchbase.kv=true. Following is my stack trace:
com.couchbase.client.core.CouchbaseException: Error while preparing plan
at com.couchbase.client.java.query.core.N1qlQueryExecutor$10$2.call(N1qlQueryExecutor.java:469)
at com.couchbase.client.java.query.core.N1qlQueryExecutor$10$2.call(N1qlQueryExecutor.java:464)
at rx.internal.operators.OperatorMap$MapSubscriber.onNext(OperatorMap.java:66)
at rx.internal.operators.OperatorTakeLastOne$ParentSubscriber.emit(OperatorTakeLastOne.java:168)
at rx.internal.operators.OperatorTakeLastOne$ParentSubscriber.onCompleted(OperatorTakeLastOne.java:141)
at rx.internal.operators.OperatorScan$InitialProducer.checkTerminated(OperatorScan.java:216)
at rx.internal.operators.OperatorScan$InitialProducer.emitLoop(OperatorScan.java:309)
at rx.internal.operators.OperatorScan$InitialProducer.emit(OperatorScan.java:295)
at rx.internal.operators.OperatorScan$InitialProducer.onCompleted(OperatorScan.java:233)
at rx.internal.operators.OperatorScan$3.onCompleted(OperatorScan.java:154)
at rx.internal.operators.OperatorMap$MapSubscriber.onCompleted(OperatorMap.java:94)
at rx.internal.operators.OperatorObserveOn$ObserveOnSubscriber.checkTerminated(OperatorObserveOn.java:272)
at rx.internal.operators.OperatorObserveOn$ObserveOnSubscriber.call(OperatorObserveOn.java:207)
at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:55)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:748)
Caused by: com.couchbase.client.core.CouchbaseException: N1qlQuery Error - {"msg":"syntax error - at field17","code":3000}
at com.couchbase.client.java.query.core.N1qlQueryExecutor$10$4.call(N1qlQueryExecutor.java:447)
at com.couchbase.client.java.query.core.N1qlQueryExecutor$10$4.call(N1qlQueryExecutor.java:442)
at rx.internal.operators.OperatorMap$MapSubscriber.onNext(OperatorMap.java:66)
at rx.internal.operators.OperatorObserveOn$ObserveOnSubscriber.call(OperatorObserveOn.java:215)
... 8 more
Sometimes I get errors like this:
com.couchbase.client.core.CouchbaseException: java.lang.IllegalStateException: Error parsing query response (in TRANSITION) at "\u0026K%!$(MISSING)\\}\u002606:", enable trace to see response content
at com.couchbase.client.core.endpoint.AbstractGenericHandler.decode(AbstractGenericHandler.java:239)
at com.couchbase.client.deps.io.netty.handler.codec.MessageToMessageCodec$2.decode(MessageToMessageCodec.java:81)
at com.couchbase.client.deps.io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:89)
at com.couchbase.client.deps.io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111)
at com.couchbase.client.deps.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:292)
at com.couchbase.client.deps.io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:278)
at com.couchbase.client.deps.io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:428)
at com.couchbase.client.deps.io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:277)
at com.couchbase.client.deps.io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:264)
at com.couchbase.client.deps.io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:243)
at com.couchbase.client.deps.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:292)
at com.couchbase.client.deps.io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:278)
at com.couchbase.client.deps.io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:266)
at com.couchbase.client.deps.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:292)
at com.couchbase.client.deps.io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:278)
at com.couchbase.client.deps.io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:962)
at com.couchbase.client.deps.io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:879)
at com.couchbase.client.deps.io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:360)
at com.couchbase.client.deps.io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:276)
at com.couchbase.client.deps.io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:112)
at com.couchbase.client.deps.io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:137)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.IllegalStateException: Error parsing query response (in TRANSITION) at "\u0026K%!$(MISSING)\\}\u002606:", enable trace to see response content
at com.couchbase.client.core.endpoint.query.QueryHandler.transitionToNextToken(QueryHandler.java:443)
at com.couchbase.client.core.endpoint.query.QueryHandler.parseQueryError(QueryHandler.java:601)
at com.couchbase.client.core.endpoint.query.QueryHandler.parseQueryResponse(QueryHandler.java:380)
at com.couchbase.client.core.endpoint.query.QueryHandler.decodeResponse(QueryHandler.java:227)
at com.couchbase.client.core.endpoint.query.QueryHandler.decodeResponse(QueryHandler.java:70)
at com.couchbase.client.core.endpoint.AbstractGenericHandler.decode(AbstractGenericHandler.java:229)
... 21 more`
Or this:
com.couchbase.client.core.CouchbaseException: Error while preparing plan
at com.couchbase.client.java.query.core.N1qlQueryExecutor$10$2.call(N1qlQueryExecutor.java:469)
at com.couchbase.client.java.query.core.N1qlQueryExecutor$10$2.call(N1qlQueryExecutor.java:464)
at rx.internal.operators.OperatorMap$MapSubscriber.onNext(OperatorMap.java:66)
at rx.internal.operators.OperatorTakeLastOne$ParentSubscriber.emit(OperatorTakeLastOne.java:168)
at rx.internal.operators.OperatorTakeLastOne$ParentSubscriber.onCompleted(OperatorTakeLastOne.java:141)
at rx.internal.operators.OperatorScan$InitialProducer.checkTerminated(OperatorScan.java:216)
at rx.internal.operators.OperatorScan$InitialProducer.emitLoop(OperatorScan.java:309)
at rx.internal.operators.OperatorScan$InitialProducer.emit(OperatorScan.java:295)
at rx.internal.operators.OperatorScan$InitialProducer.onCompleted(OperatorScan.java:233)
at rx.internal.operators.OperatorScan$3.onCompleted(OperatorScan.java:154)
at rx.internal.operators.OperatorMap$MapSubscriber.onCompleted(OperatorMap.java:94)
at rx.internal.operators.OperatorObserveOn$ObserveOnSubscriber.checkTerminated(OperatorObserveOn.java:272)
at rx.internal.operators.OperatorObserveOn$ObserveOnSubscriber.call(OperatorObserveOn.java:207)
at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:55)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:748)
Caused by: com.couchbase.client.core.CouchbaseException: N1qlQuery Error - {"msg":"syntax error: invalid quoted string - at \"#0d\\\"D-%!\\(MISSING)-%!@(MISSING)9*Yy*;b\\\"2r/ *%!\"(MISSING)","code":3000}
at com.couchbase.client.java.query.core.N1qlQueryExecutor$10$4.call(N1qlQueryExecutor.java:447)
at com.couchbase.client.java.query.core.N1qlQueryExecutor$10$4.call(N1qlQueryExecutor.java:442)
at rx.internal.operators.OperatorMap$MapSubscriber.onNext(OperatorMap.java:66)
at rx.internal.operators.OperatorObserveOn$ObserveOnSubscriber.call(OperatorObserveOn.java:215)
... 8 more
I have tried the original YCSB as well Couchbase’s fork. The following are my settings for running YCSB:
YCSB properties:
COUCHBASE_EPOLL=“true”
COUCHBASE_BOOST=“8”
COUCHBASE_KV=“false”
Scale properties: (450 million records)
recordcount=450000000
insertstart=0
insertcount=5625000
operationcount=25000000
threadcount=50
target=12500
Workload properties (workload a):
workload=com.yahoo.ycsb.workloads.CoreWorkload
readallfields=true
writeallfields=true
readproportion=0.5
updateproportion=0.5
scanproportion=0
insertproportion=0
requestdistribution=zipfian
fieldcount=50
fieldlength=25
System architecture:
27 data nodes
3 index nodes
full primary index on test bucket
Funny thing about the exceptions are that sometimes my fields don’t have what YCSB claim to encounter. For example, N1qlQuery Error - {“msg”:"syntax error: invalid quoted string - at "#0d\“D-%!\(MISSING)-%!@(MISSING)9Yy;b\“2r/ *%!”(MISSING)”,“code”:3000}, I have tried only having 5 records and I could not find this field anywhere. Also YCSB works if I change it to kv mode, so I don’t have any connection issue whatsoever.
Couchbase labs has used YCSB for their own benchmarking purposes, so I think it should work. Any help or suggestions is much appreciated.