You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flink.apache.org by tz...@apache.org on 2020/09/01 07:38:34 UTC

[flink-statefun] 02/04: [FLINK-19096] [sdk] Add toString() for state classes for better error messages

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

tzulitai pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/flink-statefun.git

commit dd095c8236f7e0a0b8548ea3dc6b40b5728210d8
Author: Tzu-Li (Gordon) Tai <tz...@apache.org>
AuthorDate: Mon Aug 31 15:59:46 2020 +0800

    [FLINK-19096] [sdk] Add toString() for state classes for better error messages
    
    This closes #136.
---
 .../main/java/org/apache/flink/statefun/sdk/state/Expiration.java  | 5 +++++
 .../apache/flink/statefun/sdk/state/PersistedAppendingBuffer.java  | 7 +++++++
 .../apache/flink/statefun/sdk/state/PersistedStateRegistry.java    | 4 +---
 .../java/org/apache/flink/statefun/sdk/state/PersistedTable.java   | 7 +++++++
 .../java/org/apache/flink/statefun/sdk/state/PersistedValue.java   | 6 ++++++
 5 files changed, 26 insertions(+), 3 deletions(-)

diff --git a/statefun-sdk/src/main/java/org/apache/flink/statefun/sdk/state/Expiration.java b/statefun-sdk/src/main/java/org/apache/flink/statefun/sdk/state/Expiration.java
index d3396f3..8841cc9 100644
--- a/statefun-sdk/src/main/java/org/apache/flink/statefun/sdk/state/Expiration.java
+++ b/statefun-sdk/src/main/java/org/apache/flink/statefun/sdk/state/Expiration.java
@@ -86,4 +86,9 @@ public final class Expiration implements Serializable {
   public Duration duration() {
     return duration;
   }
+
+  @Override
+  public String toString() {
+    return String.format("Expiration{mode=%s, duration=%s}", mode, duration);
+  }
 }
diff --git a/statefun-sdk/src/main/java/org/apache/flink/statefun/sdk/state/PersistedAppendingBuffer.java b/statefun-sdk/src/main/java/org/apache/flink/statefun/sdk/state/PersistedAppendingBuffer.java
index 42032c5..60541ff 100644
--- a/statefun-sdk/src/main/java/org/apache/flink/statefun/sdk/state/PersistedAppendingBuffer.java
+++ b/statefun-sdk/src/main/java/org/apache/flink/statefun/sdk/state/PersistedAppendingBuffer.java
@@ -160,6 +160,13 @@ public final class PersistedAppendingBuffer<E> {
     accessor.clear();
   }
 
+  @Override
+  public String toString() {
+    return String.format(
+        "PersistedAppendingBuffer{name=%s, elementType=%s, expiration=%s}",
+        name, elementType.getName(), expiration);
+  }
+
   @ForRuntime
   void setAccessor(AppendingBufferAccessor<E> newAccessor) {
     this.accessor = Objects.requireNonNull(newAccessor);
diff --git a/statefun-sdk/src/main/java/org/apache/flink/statefun/sdk/state/PersistedStateRegistry.java b/statefun-sdk/src/main/java/org/apache/flink/statefun/sdk/state/PersistedStateRegistry.java
index f606675..b806df1 100644
--- a/statefun-sdk/src/main/java/org/apache/flink/statefun/sdk/state/PersistedStateRegistry.java
+++ b/statefun-sdk/src/main/java/org/apache/flink/statefun/sdk/state/PersistedStateRegistry.java
@@ -121,9 +121,7 @@ public final class PersistedStateRegistry {
       throw new IllegalStateException(
           String.format(
               "State name '%s' was registered twice; previous registered state object with the same name was a %s, attempting to register a new %s under the same name.",
-              stateName,
-              previousRegistration.getClass().getName(),
-              newStateObject.getClass().getName()));
+              stateName, previousRegistration, newStateObject));
     }
 
     registeredStates.put(stateName, newStateObject);
diff --git a/statefun-sdk/src/main/java/org/apache/flink/statefun/sdk/state/PersistedTable.java b/statefun-sdk/src/main/java/org/apache/flink/statefun/sdk/state/PersistedTable.java
index a04c126..4826606 100644
--- a/statefun-sdk/src/main/java/org/apache/flink/statefun/sdk/state/PersistedTable.java
+++ b/statefun-sdk/src/main/java/org/apache/flink/statefun/sdk/state/PersistedTable.java
@@ -182,6 +182,13 @@ public final class PersistedTable<K, V> {
     accessor.clear();
   }
 
+  @Override
+  public String toString() {
+    return String.format(
+        "PersistedTable{name=%s, keyType=%s, valueType=%s, expiration=%s}",
+        name, keyType.getName(), valueType.getName(), expiration);
+  }
+
   @ForRuntime
   void setAccessor(TableAccessor<K, V> newAccessor) {
     Objects.requireNonNull(newAccessor);
diff --git a/statefun-sdk/src/main/java/org/apache/flink/statefun/sdk/state/PersistedValue.java b/statefun-sdk/src/main/java/org/apache/flink/statefun/sdk/state/PersistedValue.java
index 3d78b75..7c29493 100644
--- a/statefun-sdk/src/main/java/org/apache/flink/statefun/sdk/state/PersistedValue.java
+++ b/statefun-sdk/src/main/java/org/apache/flink/statefun/sdk/state/PersistedValue.java
@@ -165,6 +165,12 @@ public final class PersistedValue<T> {
     this.accessor = newAccessor;
   }
 
+  @Override
+  public String toString() {
+    return String.format(
+        "PersistedValue{name=%s, type=%s, expiration=%s}", name, type.getName(), expiration);
+  }
+
   private static final class NonFaultTolerantAccessor<E> implements Accessor<E> {
     private E element;