You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ag...@apache.org on 2021/05/20 17:46:39 UTC

[ignite-3] 01/01: IGNITE-14754 Improved assertion message in meta storage server operation.

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

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

commit b7d5128cde7094b7f4fa93d820a82d44bb8af2f9
Author: Andrey Gura <ag...@apache.org>
AuthorDate: Thu May 20 20:46:17 2021 +0300

    IGNITE-14754 Improved assertion message in meta storage server operation.
---
 .../apache/ignite/internal/util/IgniteUtils.java   | 48 +++++++++++++++++++++-
 .../internal/metastorage/server/Operation.java     |  7 ++--
 2 files changed, 50 insertions(+), 5 deletions(-)

diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java b/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java
index 60d637b..61fd09d 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java
@@ -24,11 +24,14 @@ import java.util.LinkedHashMap;
  * Collection of utility methods used throughout the system.
  */
 public class IgniteUtils {
+    /** Byte bit-mask. */
+    private static final int MASK = 0xf;
+
     /** Version of the JDK. */
     private static String jdkVer;
 
-    /**
-     * Initializes enterprise check.
+    /*
+      Initializes enterprise check.
      */
     static {
         IgniteUtils.jdkVer = System.getProperty("java.specification.version");
@@ -167,4 +170,45 @@ public class IgniteUtils {
 
         return hash(val);
     }
+
+    /**
+     * Converts byte array to hex string.
+     *
+     * @param arr Array of bytes.
+     * @return Hex string.
+     */
+    public static String toHexString(byte[] arr) {
+        return toHexString(arr, Integer.MAX_VALUE);
+    }
+
+    /**
+     * Converts byte array to hex string.
+     *
+     * @param arr Array of bytes.
+     * @param maxLen Maximum length of result string. Rounds down to a power of two.
+     * @return Hex string.
+     */
+    public static String toHexString(byte[] arr, int maxLen) {
+        assert maxLen >=0 : "maxLem must be not negative.";
+
+        int capacity = Math.min(arr.length << 1, maxLen);
+
+        int lim = capacity >> 1;
+
+        StringBuilder sb = new StringBuilder(capacity);
+
+        for (int i = 0; i < lim; i++)
+            addByteAsHex(sb, arr[i]);
+
+        return sb.toString().toUpperCase();
+    }
+
+
+    /**
+     * @param sb String builder.
+     * @param b Byte to add in hexadecimal format.
+     */
+    private static void addByteAsHex(StringBuilder sb, byte b) {
+        sb.append(Integer.toHexString(MASK & b >>> 4)).append(Integer.toHexString(MASK & b));
+    }
 }
diff --git a/modules/metastorage-server/src/main/java/org/apache/ignite/internal/metastorage/server/Operation.java b/modules/metastorage-server/src/main/java/org/apache/ignite/internal/metastorage/server/Operation.java
index 4c69d7d..458e78a 100644
--- a/modules/metastorage-server/src/main/java/org/apache/ignite/internal/metastorage/server/Operation.java
+++ b/modules/metastorage-server/src/main/java/org/apache/ignite/internal/metastorage/server/Operation.java
@@ -17,8 +17,8 @@
 
 package org.apache.ignite.internal.metastorage.server;
 
-import java.util.Objects;
 import org.apache.ignite.internal.metastorage.common.OperationType;
+import org.apache.ignite.internal.util.IgniteUtils;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
 
@@ -63,8 +63,9 @@ public final class Operation {
         assert (type == OperationType.NO_OP && key == null && val == null)
                 || (type == OperationType.PUT && key != null && val != null)
                 || (type == OperationType.REMOVE && key != null && val == null)
-                : "Invalid operation parameters: [type=" + type + ", key=" + Objects.toString(key,"null") +
-                ", val=" + Objects.toString(key,"null") + ']';
+                : "Invalid operation parameters: [type=" + type +
+                        ", key=" + (key == null ? "null" : IgniteUtils.toHexString(key, 256)) +
+                        ", val=" + (val == null ? "null" : IgniteUtils.toHexString(val, 256)) + ']';
 
         this.key = key;
         this.val = val;