Jackie-Jiang commented on code in PR #9382:
URL: https://github.com/apache/pinot/pull/9382#discussion_r968736701


##########
pinot-spi/src/main/java/org/apache/pinot/spi/data/Schema.java:
##########
@@ -703,7 +705,23 @@ public boolean isBackwardCompatibleWith(Schema oldSchema) {
       }
       FieldSpec oldSchemaFieldSpec = entry.getValue();
       FieldSpec fieldSpec = getFieldSpecFor(oldSchemaColumnName);
-      if (!fieldSpec.equals(oldSchemaFieldSpec)) {
+
+      if (EqualityUtils.isSameReference(fieldSpec, oldSchemaFieldSpec)) {
+        continue;
+      }
+
+      if ((fieldSpec == null && oldSchemaFieldSpec != null) || (fieldSpec != 
null && oldSchemaFieldSpec == null)) {

Review Comment:
   This check is redundant. We already checked in the previous part and both of 
them are not `null`



##########
pinot-controller/src/main/java/org/apache/pinot/controller/helix/core/PinotHelixResourceManager.java:
##########
@@ -1303,14 +1303,20 @@ public void updateSchema(Schema schema, boolean reload)
    * Helper method to update the schema, or throw 
SchemaBackwardIncompatibleException when the new schema is not
    * backward-compatible with the existing schema.
    */
-  private void updateSchema(Schema schema, Schema oldSchema)
+  private void updateSchema(Schema schema, Schema oldSchema, boolean force)
       throws SchemaBackwardIncompatibleException {
     String schemaName = schema.getSchemaName();
     schema.updateBooleanFieldsIfNeeded(oldSchema);
     if (schema.equals(oldSchema)) {
       LOGGER.info("New schema: {} is the same as the existing schema, not 
updating it", schemaName);
       return;
     }
+    if (force) {

Review Comment:
   Move this check into the backward compatible check and log a warning when 
the schema is not backward compatible and force flag is on.
   Don't log warning as info because it can be confusing. We may log a warning 
such as `Force updated schema: {} which is backward incompatible with the 
existing schema`



##########
pinot-spi/src/main/java/org/apache/pinot/spi/data/Schema.java:
##########
@@ -703,7 +705,23 @@ public boolean isBackwardCompatibleWith(Schema oldSchema) {
       }
       FieldSpec oldSchemaFieldSpec = entry.getValue();
       FieldSpec fieldSpec = getFieldSpecFor(oldSchemaColumnName);
-      if (!fieldSpec.equals(oldSchemaFieldSpec)) {
+
+      if (EqualityUtils.isSameReference(fieldSpec, oldSchemaFieldSpec)) {
+        continue;
+      }
+
+      if ((fieldSpec == null && oldSchemaFieldSpec != null) || (fieldSpec != 
null && oldSchemaFieldSpec == null)) {
+        return false;
+      }
+
+      boolean isBackward = EqualityUtils.isEqual(fieldSpec.getName(), 
oldSchemaFieldSpec.getName())

Review Comment:
   Let's add a method in `FieldSpec`: `boolean 
isBackwardCompatibleWith(FieldSpec oldFieldSpec)` so that other sub-classes can 
override it if necessary



##########
pinot-spi/src/main/java/org/apache/pinot/spi/data/Schema.java:
##########
@@ -703,7 +705,23 @@ public boolean isBackwardCompatibleWith(Schema oldSchema) {
       }
       FieldSpec oldSchemaFieldSpec = entry.getValue();
       FieldSpec fieldSpec = getFieldSpecFor(oldSchemaColumnName);
-      if (!fieldSpec.equals(oldSchemaFieldSpec)) {
+
+      if (EqualityUtils.isSameReference(fieldSpec, oldSchemaFieldSpec)) {

Review Comment:
   This check is redundant. They will never share the same reference



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscr...@pinot.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@pinot.apache.org
For additional commands, e-mail: commits-h...@pinot.apache.org

Reply via email to