120
120
import io .airbyte .data .services .shared .ConnectionAutoUpdatedReason ;
121
121
import io .airbyte .data .services .shared .ConnectionEvent ;
122
122
import io .airbyte .featureflag .CheckWithCatalog ;
123
+ import io .airbyte .featureflag .Connection ;
124
+ import io .airbyte .featureflag .EnableMappers ;
123
125
import io .airbyte .featureflag .FeatureFlagClient ;
124
126
import io .airbyte .featureflag .ResetStreamsStateWhenDisabled ;
125
127
import io .airbyte .featureflag .Workspace ;
128
+ import io .airbyte .mappers .helpers .MapperHelperKt ;
126
129
import io .airbyte .metrics .lib .ApmTraceUtils ;
127
130
import io .airbyte .metrics .lib .MetricAttribute ;
128
131
import io .airbyte .metrics .lib .MetricClientFactory ;
@@ -263,7 +266,11 @@ private void applyPatchToStandardSync(final StandardSync sync, final ConnectionU
263
266
validateCatalogDoesntContainDuplicateStreamNames (patch .getSyncCatalog ());
264
267
validateCatalogSize (patch .getSyncCatalog (), workspaceId , "update" );
265
268
266
- sync .setCatalog (CatalogConverter .toConfiguredInternal (patch .getSyncCatalog ()));
269
+ final boolean shouldEnableMappers = featureFlagClient .boolVariation (EnableMappers .INSTANCE , new Connection (sync .getConnectionId ()));
270
+ final ConfiguredAirbyteCatalog configuredCatalog = CatalogConverter .toConfiguredInternal (patch .getSyncCatalog (), shouldEnableMappers );
271
+ MapperHelperKt .validateConfiguredMappers (configuredCatalog );
272
+
273
+ sync .setCatalog (configuredCatalog );
267
274
sync .withFieldSelectionData (CatalogConverter .getFieldSelectionData (patch .getSyncCatalog ()));
268
275
}
269
276
@@ -552,7 +559,11 @@ public ConnectionRead createConnection(final ConnectionCreate connectionCreate)
552
559
validateCatalogDoesntContainDuplicateStreamNames (connectionCreate .getSyncCatalog ());
553
560
validateCatalogSize (connectionCreate .getSyncCatalog (), workspaceId , "create" );
554
561
555
- standardSync .withCatalog (CatalogConverter .toConfiguredInternal (connectionCreate .getSyncCatalog ()));
562
+ final boolean shouldEnableMappers = featureFlagClient .boolVariation (EnableMappers .INSTANCE , new Connection (connectionId ));
563
+ final ConfiguredAirbyteCatalog configuredCatalog =
564
+ CatalogConverter .toConfiguredInternal (connectionCreate .getSyncCatalog (), shouldEnableMappers );
565
+ MapperHelperKt .validateConfiguredMappers (configuredCatalog );
566
+ standardSync .withCatalog (configuredCatalog );
556
567
standardSync .withFieldSelectionData (CatalogConverter .getFieldSelectionData (connectionCreate .getSyncCatalog ()));
557
568
} else {
558
569
standardSync .withCatalog (new ConfiguredAirbyteCatalog ().withStreams (Collections .emptyList ()));
@@ -687,7 +698,7 @@ private Builder<String, Object> generateMetadata(final StandardSync standardSync
687
698
return metadata ;
688
699
}
689
700
690
- public ConnectionRead updateConnection (final ConnectionUpdate connectionPatch , String updateReason , Boolean autoUpdate )
701
+ public ConnectionRead updateConnection (final ConnectionUpdate connectionPatch , final String updateReason , final Boolean autoUpdate )
691
702
throws ConfigNotFoundException , IOException , JsonValidationException {
692
703
693
704
final UUID connectionId = connectionPatch .getConnectionId ();
@@ -830,11 +841,16 @@ public ConnectionRead getConnectionForJob(final UUID connectionId, final Long jo
830
841
return buildConnectionRead (connectionId , jobId );
831
842
}
832
843
833
- public CatalogDiff getDiff (final AirbyteCatalog oldCatalog , final AirbyteCatalog newCatalog , final ConfiguredAirbyteCatalog configuredCatalog )
844
+ public CatalogDiff getDiff (final AirbyteCatalog oldCatalog ,
845
+ final AirbyteCatalog newCatalog ,
846
+ final ConfiguredAirbyteCatalog configuredCatalog ,
847
+ final UUID connectionId )
834
848
throws JsonValidationException {
849
+ final boolean shouldEnableMappers = featureFlagClient .boolVariation (EnableMappers .INSTANCE , new Connection (connectionId ));
850
+
835
851
return new CatalogDiff ().transforms (CatalogDiffHelpers .getCatalogDiff (
836
- CatalogHelpers .configuredCatalogToCatalog (CatalogConverter .toProtocolKeepAllStreams (oldCatalog )),
837
- CatalogHelpers .configuredCatalogToCatalog (CatalogConverter .toProtocolKeepAllStreams (newCatalog )), configuredCatalog )
852
+ CatalogHelpers .configuredCatalogToCatalog (CatalogConverter .toProtocolKeepAllStreams (oldCatalog , shouldEnableMappers )),
853
+ CatalogHelpers .configuredCatalogToCatalog (CatalogConverter .toProtocolKeepAllStreams (newCatalog , shouldEnableMappers )), configuredCatalog )
838
854
.stream ()
839
855
.map (CatalogDiffConverters ::streamTransformToApi )
840
856
.toList ());
@@ -843,12 +859,12 @@ public CatalogDiff getDiff(final AirbyteCatalog oldCatalog, final AirbyteCatalog
843
859
public CatalogDiff getDiff (final ConnectionRead connectionRead , final AirbyteCatalog discoveredCatalog )
844
860
throws JsonValidationException , ConfigNotFoundException , IOException {
845
861
862
+ final boolean shouldEnableMappers = featureFlagClient .boolVariation (EnableMappers .INSTANCE , new Connection (connectionRead .getConnectionId ()));
846
863
final var catalogWithSelectedFieldsAnnotated = connectionRead .getSyncCatalog ();
847
- final var configuredCatalog = CatalogConverter .toConfiguredInternal (catalogWithSelectedFieldsAnnotated );
848
-
864
+ final var configuredCatalog = CatalogConverter .toConfiguredInternal (catalogWithSelectedFieldsAnnotated , shouldEnableMappers );
849
865
final var rawCatalog = getConnectionAirbyteCatalog (connectionRead .getConnectionId ());
850
866
851
- return getDiff (rawCatalog .orElse (catalogWithSelectedFieldsAnnotated ), discoveredCatalog , configuredCatalog );
867
+ return getDiff (rawCatalog .orElse (catalogWithSelectedFieldsAnnotated ), discoveredCatalog , configuredCatalog , connectionRead . getConnectionId () );
852
868
}
853
869
854
870
/**
@@ -1279,10 +1295,12 @@ public ConnectionAutoPropagateResult applySchemaChange(
1279
1295
final Optional <io .airbyte .api .model .generated .AirbyteCatalog > catalogUsedToMakeConfiguredCatalog =
1280
1296
getConnectionAirbyteCatalog (connectionId );
1281
1297
final io .airbyte .api .model .generated .AirbyteCatalog currentCatalog = connection .getSyncCatalog ();
1298
+ final boolean shouldEnableMappers = featureFlagClient .boolVariation (EnableMappers .INSTANCE , new Connection (connectionId ));
1282
1299
final CatalogDiff diffToApply = getDiff (
1283
1300
catalogUsedToMakeConfiguredCatalog .orElse (currentCatalog ),
1284
1301
catalog ,
1285
- CatalogConverter .toConfiguredInternal (currentCatalog ));
1302
+ CatalogConverter .toConfiguredInternal (currentCatalog , shouldEnableMappers ),
1303
+ connectionId );
1286
1304
final ConnectionUpdate updateObject =
1287
1305
new ConnectionUpdate ().connectionId (connection .getConnectionId ());
1288
1306
final UUID destinationDefinitionId =
0 commit comments