
com.couchbase.client.scala.transactions.internal.ErrorUtil.scala Maven / Gradle / Ivy
/*
* Copyright 2023 Couchbase, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.couchbase.client.scala.transactions.internal
import com.couchbase.client.core.error.UnambiguousTimeoutException
import com.couchbase.client.core.error.transaction.internal.{
CoreTransactionCommitAmbiguousException,
CoreTransactionExpiredException,
CoreTransactionFailedException
}
import com.couchbase.client.scala.transactions.error.{
TransactionCommitAmbiguousException,
TransactionExpiredException,
TransactionFailedException
}
import reactor.core.scala.publisher.SMono;
private[scala] object ErrorUtil {
def convertTransactionFailedInternal[T](err: Throwable): SMono[Nothing] = {
SMono.error(err match {
case e: CoreTransactionCommitAmbiguousException =>
new TransactionCommitAmbiguousException(e)
case e: CoreTransactionExpiredException =>
new TransactionExpiredException(e)
case e: CoreTransactionFailedException =>
new TransactionFailedException(e)
})
}
def convertTransactionFailedSingleQueryMono[T](err: Throwable): SMono[T] = {
convertTransactionFailedInternal(err)
.onErrorResume {
// From a cluster.query() transaction the user will be expecting the traditional SDK errors
case ex @ (_: TransactionExpiredException) =>
SMono.error(new UnambiguousTimeoutException(ex.getMessage, null));
case ex => SMono.error(ex)
};
}
def convertTransactionFailedSingleQuery[T](err: RuntimeException): RuntimeException = {
convertTransactionFailedSingleQueryMono(err).block()
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy