[ 
https://issues.apache.org/jira/browse/GOBBLIN-2211?focusedWorklogId=975612&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-975612
 ]

ASF GitHub Bot logged work on GOBBLIN-2211:
-------------------------------------------

                Author: ASF GitHub Bot
            Created on: 22/Jul/25 09:28
            Start Date: 22/Jul/25 09:28
    Worklog Time Spent: 10m 
      Work Description: NamsB7 commented on code in PR #4121:
URL: https://github.com/apache/gobblin/pull/4121#discussion_r2221887416


##########
gobblin-metastore/src/main/java/org/apache/gobblin/metastore/MysqlErrorPatternStore.java:
##########
@@ -0,0 +1,364 @@
+package org.apache.gobblin.metastore;
+
+import org.apache.gobblin.broker.SharedResourcesBrokerFactory;
+import org.apache.gobblin.configuration.ConfigurationKeys;
+import org.apache.gobblin.configuration.ErrorPatternProfile;
+import org.apache.gobblin.configuration.Category;
+
+import com.typesafe.config.Config;
+
+import org.apache.gobblin.util.ConfigUtils;
+
+import javax.sql.DataSource;
+
+import javax.inject.Inject;
+import lombok.extern.slf4j.Slf4j;
+
+import java.io.IOException;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.List;
+
+
+/**
+ * MySQL-backed implementation of IssueStore.
+ *
+ * Expected table schemas:
+ *
+ * 1. error_summary_regex_store
+ *    - description_regex: VARCHAR(255) NOT NULL UNIQUE
+ *    - error_category_name: VARCHAR(255) NOT NULL
+ *
+ * 2. error_categories
+ *    - error_category_name: VARCHAR(255) PRIMARY KEY
+ *    - priority: INT UNIQUE NOT NULL
+ *    - is_default: BOOLEAN (optional, not compulsory; used if present to 
indicate the default category)
+ *
+ * This class provides methods to primarily retrieve error regex patterns and 
error categories.
+ * There are also methods to add and delete, which should be used with 
caution, and retrieve error patterns and categories.
+ */
+@Slf4j
+public class MysqlErrorPatternStore implements ErrorPatternStore {
+  private final DataSource dataSource;
+  private final String errorRegexSummaryStoreTable;
+  private final String errorCategoriesTable;
+  public static final String CONFIG_PREFIX = "MysqlErrorPatternStore";
+
+  private static final int DEFAULT_MAX_CHARACTERS_IN_SQL_DESCRIPTION_REGEX = 
2000;
+  private static final int DEFAULT_MAX_CHARACTERS_IN_SQL_CATEGORY_NAME = 255;
+  private final int maxCharactersInSqlDescriptionRegex;
+  private final int maxCharactersInSqlCategoryName;
+
+  private static final String CREATE_ERROR_REGEX_SUMMARY_STORE_TABLE_STATEMENT 
=
+      "CREATE TABLE IF NOT EXISTS %s (" + "  description_regex VARCHAR(%d) NOT 
NULL UNIQUE, "
+          + "  error_category_name VARCHAR(%d) NOT NULL" + ")";
+
+  private static final String CREATE_ERROR_CATEGORIES_TABLE_NAME =
+      "CREATE TABLE IF NOT EXISTS %s (" + " error_category_name VARCHAR(%d) 
PRIMARY KEY, priority INT UNIQUE NOT NULL" + " )";
+
+  private static final String INSERT_ERROR_CATEGORY_STATEMENT = "INSERT INTO 
%s (error_category_name, priority) "
+      + "VALUES (?, ?) ON DUPLICATE KEY UPDATE priority=VALUES(priority)";
+
+  private static final String GET_ERROR_CATEGORY_STATEMENT =
+      "SELECT error_category_name, priority FROM %s WHERE error_category_name 
= ?";
+
+  private static final String GET_ALL_ERROR_CATEGORIES_STATEMENT =
+      "SELECT error_category_name, priority FROM %s ORDER BY priority ASC";
+
+  private static final String INSERT_ERROR_REGEX_SUMMARY_STATEMENT =
+      "INSERT INTO %s (description_regex, error_category_name) "
+          + "VALUES (?, ?) ON DUPLICATE KEY UPDATE 
error_category_name=VALUES(error_category_name)";
+
+  private static final String DELETE_ERROR_REGEX_SUMMARY_STATEMENT = "DELETE 
FROM %s WHERE description_regex = ?";
+
+  private static final String GET_ERROR_REGEX_SUMMARY_STATEMENT =
+      "SELECT description_regex, error_category_name FROM %s WHERE 
description_regex   = ?";
+
+  private static final String GET_ALL_ERROR_REGEX_SUMMARIES_STATEMENT =
+      "SELECT description_regex, error_category_name FROM %s";
+
+  private static final String GET_DEFAULT_CATEGORY_STATEMENT =
+      "SELECT error_category_name, priority FROM %s WHERE is_default = TRUE 
ORDER BY priority DESC";
+
+  private static final String GET_HIGHEST_ERROR_CATEGORY_STATEMENT =
+      "SELECT error_category_name, priority FROM %s ORDER BY priority ASC 
LIMIT 1";
+
+  private static final String 
GET_ALL_ERROR_ISSUES_ORDERED_BY_CATEGORY_PRIORITY_STATEMENT =
+      "SELECT e.description_regex, e.error_category_name FROM %s e "
+          + "JOIN %s c ON e.error_category_name = c.error_category_name "
+          + "ORDER BY c.priority ASC, e.description_regex ASC";

Review Comment:
   Ordering required as it provides the correct order to process and check 
against patterns.





Issue Time Tracking
-------------------

    Worklog Id:     (was: 975612)
    Time Spent: 2h  (was: 1h 50m)

> Implement Error Classification based on execution issues
> --------------------------------------------------------
>
>                 Key: GOBBLIN-2211
>                 URL: https://issues.apache.org/jira/browse/GOBBLIN-2211
>             Project: Apache Gobblin
>          Issue Type: Bug
>          Components: gobblin-service
>            Reporter: Abhishek Jain
>            Assignee: Abhishek Tiwari
>            Priority: Major
>          Time Spent: 2h
>  Remaining Estimate: 0h
>
> Implement Error Classification to categorize the failure reason based on 
> issues encountered.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to