This is an automated email from the ASF dual-hosted git repository.

amashenkov pushed a commit to branch ignite-22270
in repository https://gitbox.apache.org/repos/asf/ignite-3.git

commit 3d50ac046c3c6aa7c511f9bda81b97fbe569b37d
Author: amashenkov <[email protected]>
AuthorDate: Tue Jun 18 18:21:16 2024 +0300

    Introduce CatalogMarshallerException for catalog serialization issues.
---
 .../internal/catalog/storage/UpdateLogImpl.java    |  8 ++---
 .../serialization/CatalogMarshallerException.java  | 34 ++++++++++++++++++++++
 .../serialization/UpdateLogMarshallerImpl.java     |  5 ++--
 3 files changed, 40 insertions(+), 7 deletions(-)

diff --git 
a/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/storage/UpdateLogImpl.java
 
b/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/storage/UpdateLogImpl.java
index cf80b4549c..e14460781b 100644
--- 
a/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/storage/UpdateLogImpl.java
+++ 
b/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/storage/UpdateLogImpl.java
@@ -37,6 +37,7 @@ import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.stream.IntStream;
 import java.util.stream.Stream;
+import 
org.apache.ignite.internal.catalog.storage.serialization.CatalogMarshallerException;
 import 
org.apache.ignite.internal.catalog.storage.serialization.UpdateLogMarshaller;
 import 
org.apache.ignite.internal.catalog.storage.serialization.UpdateLogMarshallerImpl;
 import org.apache.ignite.internal.lang.ByteArray;
@@ -59,7 +60,6 @@ import org.apache.ignite.internal.metastorage.dsl.Update;
 import org.apache.ignite.internal.util.IgniteSpinBusyLock;
 import org.apache.ignite.lang.ErrorGroups.Common;
 import org.apache.ignite.lang.IgniteException;
-import org.apache.ignite.lang.MarshallerException;
 import org.jetbrains.annotations.Nullable;
 import org.jetbrains.annotations.TestOnly;
 
@@ -175,7 +175,7 @@ public class UpdateLogImpl implements UpdateLog {
             Iif iif = iif(versionAsExpected, appendUpdateEntryAndBumpVersion, 
ops().yield(false));
 
             return 
metastore.invoke(iif).thenApply(StatementResult::getAsBoolean);
-        } catch (MarshallerException ex) {
+        } catch (CatalogMarshallerException ex) {
             LOG.warn("Failed to append update log.", ex);
 
             // TODO: IGNITE-14611 Pass exception to an error handler because 
catalog got into inconsistent state.
@@ -221,7 +221,7 @@ public class UpdateLogImpl implements UpdateLog {
             Iif iif = iif(versionIsRecent, saveSnapshotAndDropOutdatedUpdates, 
ops().yield(false));
 
             return 
metastore.invoke(iif).thenApply(StatementResult::getAsBoolean);
-        } catch (MarshallerException ex) {
+        } catch (CatalogMarshallerException ex) {
             LOG.warn("Failed to append update log.", ex);
 
             // TODO: IGNITE-14611 Pass exception to an error handler because 
catalog got into inconsistent state.
@@ -313,7 +313,7 @@ public class UpdateLogImpl implements UpdateLog {
                     UpdateLogEvent update = marshaller.unmarshall(payload);
 
                     handleFutures.add(onUpdateHandler.handle(update, 
event.timestamp(), event.revision()));
-                } catch (MarshallerException ex) {
+                } catch (CatalogMarshallerException ex) {
                     LOG.warn("Failed to deserialize update.", ex);
 
                     // TODO: IGNITE-14611 Pass exception to an error handler 
because catalog got into inconsistent state.
diff --git 
a/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/storage/serialization/CatalogMarshallerException.java
 
b/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/storage/serialization/CatalogMarshallerException.java
new file mode 100644
index 0000000000..37e73431a6
--- /dev/null
+++ 
b/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/storage/serialization/CatalogMarshallerException.java
@@ -0,0 +1,34 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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 org.apache.ignite.internal.catalog.storage.serialization;
+
+import org.apache.ignite.internal.lang.IgniteInternalException;
+import org.apache.ignite.lang.ErrorGroups.Common;
+import org.jetbrains.annotations.Nullable;
+
+/**
+ * This exception is caused by a failure to marshall or unmarshall catalog 
event.
+ *  The failure can be due to compatibility reason or any other unrecoverable 
error.
+ */
+public class CatalogMarshallerException extends IgniteInternalException {
+    private static final long serialVersionUID = 3401185592041257347L;
+
+    CatalogMarshallerException(@Nullable Throwable cause) {
+        super(Common.INTERNAL_ERR, cause);
+    }
+}
diff --git 
a/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/storage/serialization/UpdateLogMarshallerImpl.java
 
b/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/storage/serialization/UpdateLogMarshallerImpl.java
index 47f4b5f49f..0666423c7d 100644
--- 
a/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/storage/serialization/UpdateLogMarshallerImpl.java
+++ 
b/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/storage/serialization/UpdateLogMarshallerImpl.java
@@ -24,7 +24,6 @@ import 
org.apache.ignite.internal.catalog.storage.UpdateLogEvent;
 import org.apache.ignite.internal.catalog.storage.VersionedUpdate;
 import org.apache.ignite.internal.util.io.IgniteUnsafeDataInput;
 import org.apache.ignite.internal.util.io.IgniteUnsafeDataOutput;
-import org.apache.ignite.lang.MarshallerException;
 import org.jetbrains.annotations.TestOnly;
 
 /**
@@ -95,7 +94,7 @@ public class UpdateLogMarshallerImpl implements 
UpdateLogMarshaller {
 
             return output.array();
         } catch (Throwable t) {
-            throw new MarshallerException(t);
+            throw new CatalogMarshallerException(t);
         }
     }
 
@@ -113,7 +112,7 @@ public class UpdateLogMarshallerImpl implements 
UpdateLogMarshaller {
 
             return (UpdateLogEvent) serializers.get(typeId).readFrom(input);
         } catch (Throwable t) {
-            throw new MarshallerException(t);
+            throw new CatalogMarshallerException(t);
         }
     }
 }

Reply via email to