From 4f8eb43732382ba3bbd9b2ed28082964dae4b79e Mon Sep 17 00:00:00 2001 From: Cheolsoo Park Date: Wed, 9 Jan 2013 12:21:25 -0800 Subject: [PATCH] SQOOP-807: Verify whether job object can be safely removed prior removing (Jarek Jarcec Cecho via Cheolsoo Park) --- .../sqoop/repository/derby/DerbyRepositoryHandler.java | 9 +++++++-- .../sqoop/repository/derby/TestConnectionHandling.java | 10 ++++++++++ .../apache/sqoop/repository/derby/TestJobHandling.java | 10 ++++++++++ 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/repository/repository-derby/src/main/java/org/apache/sqoop/repository/derby/DerbyRepositoryHandler.java b/repository/repository-derby/src/main/java/org/apache/sqoop/repository/derby/DerbyRepositoryHandler.java index c62730cc..9793898d 100644 --- a/repository/repository-derby/src/main/java/org/apache/sqoop/repository/derby/DerbyRepositoryHandler.java +++ b/repository/repository-derby/src/main/java/org/apache/sqoop/repository/derby/DerbyRepositoryHandler.java @@ -717,8 +717,13 @@ public boolean existsJob(long id, Connection conn) { @Override public boolean inUseJob(long jobId, Connection conn) { - // TODO(jarcec): This method will need to be upgraded once submission - // engine will be in place as we can't remove "running" job. + MSubmission submission = findSubmissionLastForJob(jobId, conn); + + // We can't remove running job + if(submission.getStatus().isRunning()) { + return true; + } + return false; } diff --git a/repository/repository-derby/src/test/java/org/apache/sqoop/repository/derby/TestConnectionHandling.java b/repository/repository-derby/src/test/java/org/apache/sqoop/repository/derby/TestConnectionHandling.java index 4121be74..8266b467 100644 --- a/repository/repository-derby/src/test/java/org/apache/sqoop/repository/derby/TestConnectionHandling.java +++ b/repository/repository-derby/src/test/java/org/apache/sqoop/repository/derby/TestConnectionHandling.java @@ -147,6 +147,16 @@ public void testCreateConnection() throws Exception { assertCountForTable("SQOOP.SQ_CONNECTION_INPUT", 8); } + public void testInUseConnection() throws Exception { + loadConnections(); + + assertFalse(handler.inUseConnection(1, getDerbyConnection())); + + loadJobs(); + + assertTrue(handler.inUseConnection(1, getDerbyConnection())); + } + public void testUpdateConnection() throws Exception { loadConnections(); diff --git a/repository/repository-derby/src/test/java/org/apache/sqoop/repository/derby/TestJobHandling.java b/repository/repository-derby/src/test/java/org/apache/sqoop/repository/derby/TestJobHandling.java index c0e7a313..4c97e1e9 100644 --- a/repository/repository-derby/src/test/java/org/apache/sqoop/repository/derby/TestJobHandling.java +++ b/repository/repository-derby/src/test/java/org/apache/sqoop/repository/derby/TestJobHandling.java @@ -125,6 +125,16 @@ public void testExistsJob() throws Exception { assertFalse(handler.existsJob(5, getDerbyConnection())); } + public void testInUseJob() throws Exception { + loadJobs(); + loadSubmissions(); + + assertTrue(handler.inUseJob(1, getDerbyConnection())); + assertFalse(handler.inUseJob(2, getDerbyConnection())); + assertFalse(handler.inUseJob(3, getDerbyConnection())); + assertFalse(handler.inUseJob(4, getDerbyConnection())); + } + public void testCreateJob() throws Exception { MJob job = getJob();