Skip to content

Commit 463803e

Browse files
feat(restore-indices): createDefaultAspects argument (#12859)
1 parent 2989175 commit 463803e

File tree

28 files changed

+859
-56
lines changed

28 files changed

+859
-56
lines changed

datahub-upgrade/build.gradle

+4-1
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,9 @@ dependencies {
8888
testImplementation 'uk.org.webcompere:system-stubs-testng:2.1.7'
8989
testRuntimeOnly externalDependency.logbackClassic
9090

91+
testImplementation externalDependency.h2
92+
testImplementation testFixtures(project(':metadata-io'))
93+
9194
constraints {
9295
implementation(implementation externalDependency.parquetHadoop) {
9396
because("CVE-2022-42003")
@@ -137,7 +140,7 @@ task runRestoreIndices(type: Exec) {
137140
"-jar",
138141
"-Dkafka.schemaRegistry.url=http://localhost:8080/schema-registry/api",
139142
"-Dserver.port=8083",
140-
bootJar.getArchiveFile().get(), "-u", "RestoreIndices", "-a", "batchSize=100"
143+
bootJar.getArchiveFile().get(), "-u", "RestoreIndices", "-a", "batchSize=100", "-a", "createDefaultAspects=true"
141144
}
142145

143146
task runRestoreIndicesUrn(type: Exec) {

datahub-upgrade/src/main/java/com/linkedin/datahub/upgrade/restoreindices/RestoreIndices.java

+1
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ public class RestoreIndices implements Upgrade {
2626
public static final String URN_ARG_NAME = "urn";
2727
public static final String URN_LIKE_ARG_NAME = "urnLike";
2828
public static final String URN_BASED_PAGINATION_ARG_NAME = "urnBasedPagination";
29+
public static final String CREATE_DEFAULT_ASPECTS_ARG_NAME = "createDefaultAspects";
2930

3031
public static final String STARTING_OFFSET_ARG_NAME = "startingOffset";
3132
public static final String LAST_URN_ARG_NAME = "lastUrn";

datahub-upgrade/src/main/java/com/linkedin/datahub/upgrade/restoreindices/SendMAEStep.java

+21-2
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import static com.linkedin.metadata.Constants.ASPECT_LATEST_VERSION;
44

5+
import com.google.common.annotations.VisibleForTesting;
56
import com.linkedin.datahub.upgrade.UpgradeContext;
67
import com.linkedin.datahub.upgrade.UpgradeStep;
78
import com.linkedin.datahub.upgrade.UpgradeStepResult;
@@ -80,9 +81,11 @@ private List<RestoreIndicesResult> iterateFutures(List<Future<RestoreIndicesResu
8081
if (future.isDone()) {
8182
try {
8283
result.add(future.get());
83-
futures.remove(future);
8484
} catch (InterruptedException | ExecutionException e) {
8585
log.error("Error iterating futures", e);
86+
result.add(null); // add null to indicate failure
87+
} finally {
88+
futures.remove(future);
8689
}
8790
}
8891
}
@@ -101,6 +104,7 @@ private RestoreIndicesArgs getArgs(UpgradeContext context) {
101104
result.batchDelayMs = getBatchDelayMs(context.parsedArgs());
102105
result.start = getStartingOffset(context.parsedArgs());
103106
result.urnBasedPagination = getUrnBasedPagination(context.parsedArgs());
107+
result.createDefaultAspects = getCreateDefaultAspects(context.parsedArgs());
104108
if (containsKey(context.parsedArgs(), RestoreIndices.ASPECT_NAME_ARG_NAME)) {
105109
result.aspectName = context.parsedArgs().get(RestoreIndices.ASPECT_NAME_ARG_NAME).get();
106110
context.report().addLine(String.format("aspect is %s", result.aspectName));
@@ -151,7 +155,8 @@ private RestoreIndicesArgs getArgs(UpgradeContext context) {
151155
return result;
152156
}
153157

154-
private int getRowCount(RestoreIndicesArgs args) {
158+
@VisibleForTesting
159+
int getRowCount(RestoreIndicesArgs args) {
155160
ExpressionList<EbeanAspectV2> countExp =
156161
_server
157162
.find(EbeanAspectV2.class)
@@ -233,6 +238,10 @@ public Function<UpgradeContext, UpgradeStepResult> executable() {
233238
while (futures.size() > 0) {
234239
List<RestoreIndicesResult> tmpResults = iterateFutures(futures);
235240
for (RestoreIndicesResult tmpResult : tmpResults) {
241+
if (tmpResult == null) {
242+
// return error if there was an error processing a future
243+
return new DefaultUpgradeStepResult(id(), DataHubUpgradeState.FAILED);
244+
}
236245
reportStats(context, finalJobResult, tmpResult, rowCount, startTime);
237246
}
238247
}
@@ -315,6 +324,16 @@ private long getBatchDelayMs(final Map<String, Optional<String>> parsedArgs) {
315324
return resolvedBatchDelayMs;
316325
}
317326

327+
private boolean getCreateDefaultAspects(final Map<String, Optional<String>> parsedArgs) {
328+
Boolean createDefaultAspects = null;
329+
if (containsKey(parsedArgs, RestoreIndices.CREATE_DEFAULT_ASPECTS_ARG_NAME)) {
330+
createDefaultAspects =
331+
Boolean.parseBoolean(
332+
parsedArgs.get(RestoreIndices.CREATE_DEFAULT_ASPECTS_ARG_NAME).get());
333+
}
334+
return createDefaultAspects != null ? createDefaultAspects : false;
335+
}
336+
318337
private int getThreadCount(final Map<String, Optional<String>> parsedArgs) {
319338
return getInt(parsedArgs, DEFAULT_THREADS, RestoreIndices.NUM_THREADS_ARG_NAME);
320339
}

datahub-upgrade/src/main/java/com/linkedin/datahub/upgrade/system/AbstractMCLStep.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,9 @@ public Function<UpgradeContext, UpgradeStepResult> executable() {
113113
List<Pair<Future<?>, SystemAspect>> futures;
114114
futures =
115115
EntityUtils.toSystemAspectFromEbeanAspects(
116-
opContext.getRetrieverContext(), batch.collect(Collectors.toList()))
116+
opContext.getRetrieverContext(),
117+
batch.collect(Collectors.toList()),
118+
false)
117119
.stream()
118120
.map(
119121
systemAspect -> {

datahub-upgrade/src/main/java/com/linkedin/datahub/upgrade/system/schemafield/GenerateSchemaFieldsFromSchemaMetadataStep.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,8 @@ public Function<UpgradeContext, UpgradeStepResult> executable() {
175175
ebeanAspectV2 ->
176176
EntityUtils.toSystemAspectFromEbeanAspects(
177177
opContext.getRetrieverContext(),
178-
Set.of(ebeanAspectV2))
178+
Set.of(ebeanAspectV2),
179+
true)
179180
.stream())
180181
.map(
181182
systemAspect ->

0 commit comments

Comments
 (0)