scala - Couchbase 计数器给出 NOT_EXISTS 错误
问题描述
以下是更新计数器的代码。
kvList contains List[(key, value to add)]
def counter(kvList: List[(String, Long)]) = {
try {`enter code here`
if (kvList!=null && kvList.nonEmpty) {
Observable.from(kvList).flatMap(kv => {
val bucketObservableAsync =
rx.lang.scala.JavaConversions.toScalaObservable(
bucket.async().counter(kv._1, kv._2, kv._2, ttl)
)
def errorOccurred(t: Throwable): Unit = {
log.error("ReportingService observable error occurred", t)
}
bucketObservableAsync.doOnError(errorOccurred)
bucketObservableAsync
}).last.toBlocking.single
} else {
log.info("ReportingService no keys to update")
}
} catch {
case e: Throwable =>
log.error("ReportingService error occurred ", e)
}
}
我正在使用 couchbase java-client-2.1.3,我可以在这里看到 2 个问题:
The errorOccurred is not getting called
而不是(1)我有时会遇到以下异常:
ReportingService error occurred
com.couchbase.client.core.CouchbaseException: NOT_EXISTS
at com.couchbase.client.java.CouchbaseAsyncBucket$26.call(CouchbaseAsyncBucket.java:950)
at com.couchbase.client.java.CouchbaseAsyncBucket$26.call(CouchbaseAsyncBucket.java:932)
at rx.internal.operators.OnSubscribeMap$MapSubscriber.onNext(OnSubscribeMap.java:69)
at rx.internal.producers.SingleProducer.request(SingleProducer.java:65)
at rx.Subscriber.setProducer(Subscriber.java:211)
at rx.internal.operators.OnSubscribeMap$MapSubscriber.setProducer(OnSubscribeMap.java:102)
at rx.subjects.AsyncSubject.onCompleted(AsyncSubject.java:105)
at com.couchbase.client.core.endpoint.AbstractGenericHandler$1.call(AbstractGenericHandler.java:199)
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)
解决方案
推荐阅读
- video-capture - 媒体基础 - 使用带有音频/视频捕获的聚合媒体源的问题
- jenkins - 如何从自定义 Jenkins 管道调用存储库的 Jenkinsfile 阶段?
- asp.net-core - 如何从 IdentityServer4 中自动选择默认的 AzureAD 身份验证提供程序?
- javascript - 更改 javascript 地图中元素的链接颜色
- pagespeed - 避免过大的 DOM 大小 - jQuery.mmenu
- javascript - 创建文件并直接上传到 S3 存储桶目录
- excel - 按数量复制行
- c# - 使图像可通过 HTTP 访问
- python - TypeError:execute() 正好需要 2 个参数(给定 3 个) - 执行方法 sqlite3 Jython
- javascript - 悬停并单击->更改颜色,再次单击切换到原始ccolor