You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by je...@apache.org on 2021/11/13 22:55:46 UTC

[geode] branch wip/corrupt-client updated: Parameterize fn with the file name

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

jensdeppe pushed a commit to branch wip/corrupt-client
in repository https://gitbox.apache.org/repos/asf/geode.git


The following commit(s) were added to refs/heads/wip/corrupt-client by this push:
     new 6e6ae32  Parameterize fn with the file name
6e6ae32 is described below

commit 6e6ae3222bb70352584c86594611d4faf82faebd
Author: Jens Deppe <jd...@vmware.com>
AuthorDate: Sat Nov 13 14:53:24 2021 -0800

    Parameterize fn with the file name
---
 .../org/apache/geode/ExportLocalDataFunction.java  | 80 +++-------------------
 .../geode/pdx/CorruptPdxClientServerDUnitTest.java |  4 +-
 2 files changed, 12 insertions(+), 72 deletions(-)

diff --git a/geode-core/src/distributedTest/java/org/apache/geode/ExportLocalDataFunction.java b/geode-core/src/distributedTest/java/org/apache/geode/ExportLocalDataFunction.java
index 9a22ccc..3aac1c2 100644
--- a/geode-core/src/distributedTest/java/org/apache/geode/ExportLocalDataFunction.java
+++ b/geode-core/src/distributedTest/java/org/apache/geode/ExportLocalDataFunction.java
@@ -44,20 +44,22 @@ import org.apache.geode.logging.internal.log4j.api.LogService;
 
 public class ExportLocalDataFunction implements Function<String>, Declarable {
 
+  private static final long serialVersionUID = 4380042210718815441L;
   private static final Logger logger = LogService.getLogger();
-  private static final byte DSCODE_DATA_SERIALIZABLE = 45;
-  private static final byte DSCODE_SERIALIZABLE = 44;
-  private static final byte DSCODE_PDX = 93;
 
   public ExportLocalDataFunction() {
   }
 
   public void execute(final FunctionContext<String> context) {
-    // Get directory name
-
     logger.info("DEBUG: Executing ExportLocalDataFunction on {}", context.getMemberName());
 
-    final String directoryName = context.getArguments();
+    // Get file name parameter
+    final String fileName = context.getArguments();
+
+    if (fileName == null) {
+      throw new IllegalArgumentException(getId() + " requires an export filename as parameter");
+    }
+
     final Cache cache = context.getCache();
     final String memberName = cache.getName();
     final LogWriter logger = cache.getLogger();
@@ -67,9 +69,7 @@ public class ExportLocalDataFunction implements Function<String>, Declarable {
     final Region<Object, Object> localData = PartitionRegionHelper.getLocalDataForContext(rfc);
 
     // Create the file
-    final String fileName =
-        "server_" + memberName + "_region_" + localData.getName() + "_snapshot.gfd";
-    final File file = new File(directoryName, fileName);
+    final File file = new File(fileName);
 
     // Export local data set
     final RegionSnapshotService<Object, Object> service = localData.getSnapshotService();
@@ -79,7 +79,6 @@ public class ExportLocalDataFunction implements Function<String>, Declarable {
               + localData.getName() + " to file " + file.getAbsolutePath() + " started");
       final SnapshotOptions<Object, Object> options = service.createOptions();
       options.setFilter(getRejectingFilter(localData, logger));
-      //      options.setFilter(getReserializingFilter(localData, logger));
       service.save(file, SnapshotFormat.GEMFIRE, options);
       logger.warning(
           currentThread().getName() + ": Exporting " + localData.size() + " entries in region "
@@ -110,67 +109,6 @@ public class ExportLocalDataFunction implements Function<String>, Declarable {
     };
   }
 
-  private <K, V> SnapshotFilter<K, V> getReserializingFilter(final Region<K, V> localData,
-                                                             final LogWriter logger) {
-    return new SnapshotFilter<K, V>() {
-      public boolean accept(Map.Entry<K, V> entry) {
-        boolean accept = true;
-        try {
-          //noinspection ResultOfMethodCallIgnored
-          entry.getValue();
-        } catch (Exception e) {
-          final byte[] valueBytes = getValueBytes(entry);
-          logger.warning("Caught the following exception attempting to deserialize value region="
-              + localData.getName() + "; key=" + entry.getKey() + "; valueLength="
-              + valueBytes.length
-              + "; value=" + Arrays.toString(valueBytes) + ":", e);
-          logger.warning(
-              "Attempting to deserialize as DataSerializable value region=" + localData.getName()
-                  + "; key=" + entry.getKey());
-          accept =
-              attemptToDeserialize(entry, valueBytes, logger, "DataSerializable",
-                  DSCODE_DATA_SERIALIZABLE);
-          if (!accept) {
-            logger.warning(
-                "Attempting to deserialize as Serializable value region=" + localData.getName()
-                    + "; key="
-                    + entry.getKey());
-            accept =
-                attemptToDeserialize(entry, valueBytes, logger, "Serializable",
-                    DSCODE_SERIALIZABLE);
-            if (!accept) {
-              logger.warning(
-                  "Attempting to deserialize as PDX value region=" + localData.getName()
-                      + "; key="
-                      + entry.getKey());
-              accept = attemptToDeserialize(entry, valueBytes, logger, "PDX", DSCODE_PDX);
-            }
-          }
-        }
-        return accept;
-      }
-
-      private boolean attemptToDeserialize(final Map.Entry<K, V> entry, final byte[] valueBytes,
-                                           final LogWriter logger,
-                                           final String type, final byte b) {
-        boolean accept = true;
-        valueBytes[0] = b;
-        try {
-          Object value = entry.getValue();
-          logger.warning("Accepting entry since the value was successfully deserialized as " + type
-              + " region=" + localData.getName() + "; key=" + entry.getKey() + "; value="
-              + value);
-        } catch (Throwable e2) {
-          logger.warning(
-              "Rejecting entry since the value failed to deserialize as " + type + " region="
-                  + localData.getName() + "; key=" + entry.getKey());
-          accept = false;
-        }
-        return accept;
-      }
-    };
-  }
-
   private static <K, V> byte[] getValueBytes(final Map.Entry<K, V> entry) {
     byte[] valueBytes = null;
     if (entry instanceof EntrySnapshot) {
diff --git a/geode-core/src/distributedTest/java/org/apache/geode/pdx/CorruptPdxClientServerDUnitTest.java b/geode-core/src/distributedTest/java/org/apache/geode/pdx/CorruptPdxClientServerDUnitTest.java
index 0c90eb1..7b9f45a 100644
--- a/geode-core/src/distributedTest/java/org/apache/geode/pdx/CorruptPdxClientServerDUnitTest.java
+++ b/geode-core/src/distributedTest/java/org/apache/geode/pdx/CorruptPdxClientServerDUnitTest.java
@@ -104,7 +104,9 @@ public class CorruptPdxClientServerDUnitTest {
 
     client.invoke(() -> {
       final Region<Object, Object> region = getClientCache().getRegion(REGION_NAME);
-      ResultCollector resultCollector = FunctionService.onRegion(region).execute(new ExportLocalDataFunction());
+      ResultCollector resultCollector = FunctionService.onRegion(region)
+          .setArguments("/dev/null")
+          .execute(new ExportLocalDataFunction());
       resultCollector.getResult();
 
 //      region.remove(3);