Uploaded image for project: 'Couchbase Java Client'
  1. Couchbase Java Client
  2. JCBC-1725

mapRemove on non-existent doc throws ClassCastException

    XMLWordPrintable

Details

    • Bug
    • Resolution: Won't Do
    • Major
    • None
    • 2.7.16
    • Core
    • None
    • 1

    Description

      When calling bucket.mapRemove(String docId, String key) on a docId that does not exist, customer is expecting DocumentDoesNotExistException to be thrown.  Internally it is indeed getting thrown, but prior to it bubbling up to the caller, a ClassCastException occurs as the callstack attempts to cast it to a MultiMutationException.

       

      Sample code:

      try { 
      Cluster cluster = CouchbaseCluster.create(env, "c10"); cluster.authenticate("admin", "password"); 
      Bucket bucket = cluster.openBucket("test"); bucket.insert(JsonDocument.create("map_id", JsonObject.empty())); bucket.mapAdd("map_id", "name", "Mark Nunberg"); 
      bucket.mapRemove("fake", "name"); 
      } 
      catch(Exception e) { 
      e.printStackTrace(); 
      }
      

       

      Stack trace:

      java.lang.ClassCastException: class com.couchbase.client.java.error.DocumentDoesNotExistException cannot be cast to class com.couchbase.client.java.error.subdoc.MultiMutationException (com.couchbase.client.java.error.DocumentDoesNotExistException and com.couchbase.client.java.error.subdoc.MultiMutationException are in unnamed module of loader java.net.URLClassLoader @33425811) at com.couchbase.client.java.CouchbaseAsyncBucket$15.call(CouchbaseAsyncBucket.java:1407) at com.couchbase.client.java.CouchbaseAsyncBucket$15.call(CouchbaseAsyncBucket.java:1404) at rx.internal.operators.OperatorOnErrorResumeNextViaFunction$4.onError(OperatorOnErrorResumeNextViaFunction.java:140) at rx.internal.operators.OnSubscribeMap$MapSubscriber.onError(OnSubscribeMap.java:88) at rx.observers.Subscribers$5.onError(Subscribers.java:230) at rx.internal.operators.OnSubscribeMap$MapSubscriber.onError(OnSubscribeMap.java:88) at rx.internal.operators.OnSubscribeMap$MapSubscriber.onNext(OnSubscribeMap.java:73) at rx.observers.Subscribers$5.onNext(Subscribers.java:235) at rx.internal.operators.OnSubscribeDoOnEach$DoOnEachSubscriber.onNext(OnSubscribeDoOnEach.java:101) at rx.internal.producers.SingleProducer.request(SingleProducer.java:65) at rx.internal.producers.ProducerArbiter.setProducer(ProducerArbiter.java:126) at rx.internal.operators.OperatorOnErrorResumeNextViaFunction$4.setProducer(OperatorOnErrorResumeNextViaFunction.java:159) at rx.internal.operators.OnSubscribeMap$MapSubscriber.setProducer(OnSubscribeMap.java:102) at rx.Subscriber.setProducer(Subscriber.java:205) at rx.internal.operators.OnSubscribeMap$MapSubscriber.setProducer(OnSubscribeMap.java:102) at rx.Subscriber.setProducer(Subscriber.java:205) at rx.Subscriber.setProducer(Subscriber.java:205) at rx.subjects.AsyncSubject.onCompleted(AsyncSubject.java:103) at com.couchbase.client.core.endpoint.AbstractGenericHandler.completeResponse(AbstractGenericHandler.java:508) at com.couchbase.client.core.endpoint.AbstractGenericHandler.access$000(AbstractGenericHandler.java:86) at com.couchbase.client.core.endpoint.AbstractGenericHandler$1.call(AbstractGenericHandler.java:526) at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:55) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:834)
      

      Attachments

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

        Activity

          People

            daschl Michael Nitschinger
            hitesh.walia Hitesh Walia
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes

                PagerDuty