Skip to content

Commit a6967a9

Browse files
committed
Fix runtime exception in job scheduler initilization.
1 parent d3fc02a commit a6967a9

File tree

2 files changed

+12
-11
lines changed

2 files changed

+12
-11
lines changed

apps/spark/src/main/java/com/linkedin/openhouse/jobs/scheduler/JobsScheduler.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import com.linkedin.openhouse.jobs.client.TablesClient;
1010
import com.linkedin.openhouse.jobs.client.TablesClientFactory;
1111
import com.linkedin.openhouse.jobs.client.model.JobConf;
12+
import com.linkedin.openhouse.jobs.scheduler.tasks.DatabaseOperationTask;
1213
import com.linkedin.openhouse.jobs.scheduler.tasks.JobInfo;
1314
import com.linkedin.openhouse.jobs.scheduler.tasks.JobInfoManager;
1415
import com.linkedin.openhouse.jobs.scheduler.tasks.OperationMode;
@@ -100,7 +101,8 @@ public class JobsScheduler {
100101
.forEach(
101102
subclass -> {
102103
if (!subclass.equals(TableOperationTask.class)
103-
&& !subclass.equals(TableDirectoryOperationTask.class)) {
104+
&& !subclass.equals(TableDirectoryOperationTask.class)
105+
&& !subclass.equals(DatabaseOperationTask.class)) {
104106
try {
105107
Field nameField = subclass.getDeclaredField("OPERATION_TYPE");
106108
OPERATIONS_REGISTRY.put(

apps/spark/src/test/java/com/linkedin/openhouse/jobs/scheduler/JobsSchedulerTest.java

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -32,16 +32,13 @@
3232
import java.util.concurrent.TimeUnit;
3333
import org.junit.jupiter.api.Assertions;
3434
import org.junit.jupiter.api.BeforeAll;
35-
import org.junit.jupiter.api.Disabled;
3635
import org.junit.jupiter.api.Test;
3736
import org.junit.jupiter.api.TestInstance;
3837
import org.mockito.Mock;
3938
import org.mockito.Mockito;
4039
import org.mockito.MockitoAnnotations;
4140

4241
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
43-
@Disabled(
44-
"The jobs scheduler test class is disabled as it takes time to run. Enable it to test jobs scheduler locally")
4542
public class JobsSchedulerTest {
4643
@Mock private TablesClient tablesClient;
4744
@Mock private JobsClient jobsClient;
@@ -293,12 +290,14 @@ public void testRunSequentialFetchSingleMode() {
293290

294291
@Test
295292
void testRegistryIsInitialized() {
296-
JobsScheduler.main(
297-
new String[] {
298-
"--type", TableRetentionTask.OPERATION_TYPE.getValue(),
299-
"--tablesURL", "http://test.openhouse.com",
300-
"--jobsURL", "http://test.openhouse.com",
301-
"--cluster", "unused",
302-
});
293+
// This test is designed to fail if the JobsScheduler class cannot be initialized.
294+
// The static initializer block in JobsScheduler performs a reflective scan of OperationTask
295+
// subclasses. If any of these subclasses are abstract and not properly excluded, the
296+
// class initialization will fail with an ExceptionInInitializerError.
297+
Assertions.assertDoesNotThrow(
298+
() -> {
299+
Class.forName(JobsScheduler.class.getName());
300+
},
301+
"JobsScheduler class should be initialized without throwing an exception");
303302
}
304303
}

0 commit comments

Comments
 (0)