diff --git a/apps/spark/src/main/java/com/linkedin/openhouse/jobs/scheduler/JobsScheduler.java b/apps/spark/src/main/java/com/linkedin/openhouse/jobs/scheduler/JobsScheduler.java index b3ed24536..dffe48cb3 100644 --- a/apps/spark/src/main/java/com/linkedin/openhouse/jobs/scheduler/JobsScheduler.java +++ b/apps/spark/src/main/java/com/linkedin/openhouse/jobs/scheduler/JobsScheduler.java @@ -9,6 +9,7 @@ import com.linkedin.openhouse.jobs.client.TablesClient; import com.linkedin.openhouse.jobs.client.TablesClientFactory; import com.linkedin.openhouse.jobs.client.model.JobConf; +import com.linkedin.openhouse.jobs.scheduler.tasks.DatabaseOperationTask; import com.linkedin.openhouse.jobs.scheduler.tasks.JobInfo; import com.linkedin.openhouse.jobs.scheduler.tasks.JobInfoManager; import com.linkedin.openhouse.jobs.scheduler.tasks.OperationMode; @@ -100,7 +101,8 @@ public class JobsScheduler { .forEach( subclass -> { if (!subclass.equals(TableOperationTask.class) - && !subclass.equals(TableDirectoryOperationTask.class)) { + && !subclass.equals(TableDirectoryOperationTask.class) + && !subclass.equals(DatabaseOperationTask.class)) { try { Field nameField = subclass.getDeclaredField("OPERATION_TYPE"); OPERATIONS_REGISTRY.put( diff --git a/apps/spark/src/test/java/com/linkedin/openhouse/jobs/scheduler/JobsSchedulerTest.java b/apps/spark/src/test/java/com/linkedin/openhouse/jobs/scheduler/JobsSchedulerTest.java index d5bb08976..9e6794fa4 100644 --- a/apps/spark/src/test/java/com/linkedin/openhouse/jobs/scheduler/JobsSchedulerTest.java +++ b/apps/spark/src/test/java/com/linkedin/openhouse/jobs/scheduler/JobsSchedulerTest.java @@ -32,7 +32,6 @@ import java.util.concurrent.TimeUnit; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.TestInstance; import org.mockito.Mock; @@ -40,8 +39,6 @@ import org.mockito.MockitoAnnotations; @TestInstance(TestInstance.Lifecycle.PER_CLASS) -@Disabled( - "The jobs scheduler test class is disabled as it takes time to run. Enable it to test jobs scheduler locally") public class JobsSchedulerTest { @Mock private TablesClient tablesClient; @Mock private JobsClient jobsClient; @@ -293,12 +290,14 @@ public void testRunSequentialFetchSingleMode() { @Test void testRegistryIsInitialized() { - JobsScheduler.main( - new String[] { - "--type", TableRetentionTask.OPERATION_TYPE.getValue(), - "--tablesURL", "http://test.openhouse.com", - "--jobsURL", "http://test.openhouse.com", - "--cluster", "unused", - }); + // This test is designed to fail if the JobsScheduler class cannot be initialized. + // The static initializer block in JobsScheduler performs a reflective scan of OperationTask + // subclasses. If any of these subclasses are abstract and not properly excluded, the + // class initialization will fail with an ExceptionInInitializerError. + Assertions.assertDoesNotThrow( + () -> { + Class.forName(JobsScheduler.class.getName()); + }, + "JobsScheduler class should be initialized without throwing an exception"); } }