You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by nc...@apache.org on 2017/02/13 22:13:31 UTC
[23/50] [abbrv] ambari git commit: AMBARI-19904. Upgrade: Package
Install stuck in Installing state forever. (stoader)
AMBARI-19904. Upgrade: Package Install stuck in Installing state forever. (stoader)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/33caec24
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/33caec24
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/33caec24
Branch: refs/heads/branch-feature-AMBARI-12556
Commit: 33caec24a8742666a7190f38f5ebd71c54b2a405
Parents: a0ba7fb
Author: Toader, Sebastian <st...@hortonworks.com>
Authored: Fri Feb 10 18:38:37 2017 +0100
Committer: Toader, Sebastian <st...@hortonworks.com>
Committed: Fri Feb 10 18:38:37 2017 +0100
----------------------------------------------------------------------
.../server/actionmanager/ActionDBAccessor.java | 5 +-
.../actionmanager/ActionDBAccessorImpl.java | 6 +-
.../server/actionmanager/ActionScheduler.java | 15 ++---
.../actionmanager/TestActionScheduler.java | 65 +++++++++++++++-----
4 files changed, 66 insertions(+), 25 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/33caec24/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ActionDBAccessor.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ActionDBAccessor.java b/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ActionDBAccessor.java
index 8aef70d..217fe0a 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ActionDBAccessor.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ActionDBAccessor.java
@@ -24,6 +24,7 @@ import java.util.Map;
import org.apache.ambari.server.AmbariException;
import org.apache.ambari.server.agent.CommandReport;
import org.apache.ambari.server.agent.ExecutionCommand;
+import org.apache.ambari.server.orm.entities.HostRoleCommandEntity;
import org.apache.ambari.server.orm.entities.RequestEntity;
public interface ActionDBAccessor {
@@ -58,8 +59,10 @@ public interface ActionDBAccessor {
* Abort all outstanding operations associated with the given request. This
* method uses the {@link HostRoleStatus#SCHEDULED_STATES} to determine which
* {@link HostRoleCommand} instances to abort.
+ *
+ * Returns the list of the aborted operations.
*/
- public void abortOperation(long requestId);
+ public Collection<HostRoleCommandEntity> abortOperation(long requestId);
/**
* Mark the task as to have timed out
http://git-wip-us.apache.org/repos/asf/ambari/blob/33caec24/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ActionDBAccessorImpl.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ActionDBAccessorImpl.java b/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ActionDBAccessorImpl.java
index 7837a7b..7881a4b 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ActionDBAccessorImpl.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ActionDBAccessorImpl.java
@@ -202,7 +202,7 @@ public class ActionDBAccessorImpl implements ActionDBAccessor {
* {@inheritDoc}
*/
@Override
- public void abortOperation(long requestId) {
+ public Collection<HostRoleCommandEntity> abortOperation(long requestId) {
long now = System.currentTimeMillis();
endRequest(requestId);
@@ -226,8 +226,10 @@ public class ActionDBAccessorImpl implements ActionDBAccessor {
// no need to merge if there's nothing to merge
if (!commands.isEmpty()) {
- hostRoleCommandDAO.mergeAll(commands);
+ return hostRoleCommandDAO.mergeAll(commands);
}
+
+ return Collections.emptyList();
}
/* (non-Javadoc)
http://git-wip-us.apache.org/repos/asf/ambari/blob/33caec24/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ActionScheduler.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ActionScheduler.java b/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ActionScheduler.java
index fa2ad4f..680c0a6 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ActionScheduler.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/ActionScheduler.java
@@ -929,15 +929,16 @@ class ActionScheduler implements Runnable {
ExecutionCommand c = wrapper.getExecutionCommand();
transitionToFailedState(stage.getClusterName(), c.getServiceName(),
c.getRole(), hostName, now, true);
- if (c.getRoleCommand().equals(RoleCommand.ACTIONEXECUTE)) {
- String clusterName = c.getClusterName();
- processActionDeath(clusterName,
- c.getHostname(),
- c.getRole());
- }
}
}
- db.abortOperation(stage.getRequestId());
+ Collection<HostRoleCommandEntity> abortedOperations = db.abortOperation(stage.getRequestId());
+
+ for (HostRoleCommandEntity command: abortedOperations) {
+ if (command.getRoleCommand().equals(RoleCommand.ACTIONEXECUTE)) {
+ String clusterName = stage.getClusterName();
+ processActionDeath(clusterName, command.getHostName(), command.getRole().name());
+ }
+ }
}
/**
http://git-wip-us.apache.org/repos/asf/ambari/blob/33caec24/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionScheduler.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionScheduler.java b/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionScheduler.java
index 653ad2c..6519126 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionScheduler.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionScheduler.java
@@ -109,6 +109,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.common.collect.ArrayListMultimap;
+import com.google.common.collect.Lists;
import com.google.common.collect.Multimap;
import com.google.common.reflect.TypeToken;
import com.google.inject.AbstractModule;
@@ -508,10 +509,11 @@ public class TestActionScheduler {
when(db.getCommandsInProgressCount()).thenReturn(stages.size());
when(db.getStagesInProgress()).thenReturn(stages);
- doAnswer(new Answer<Void>() {
+ doAnswer(new Answer<Collection<HostRoleCommandEntity>>() {
@Override
- public Void answer(InvocationOnMock invocation) throws Throwable {
+ public Collection<HostRoleCommandEntity> answer(InvocationOnMock invocation) throws Throwable {
Long requestId = (Long) invocation.getArguments()[1];
+ List<HostRoleCommandEntity> abortedCommands = Lists.newArrayList();
for (Stage stage : stages) {
if (requestId.equals(stage.getRequestId())) {
for (HostRoleCommand command : stage.getOrderedHostRoleCommands()) {
@@ -519,12 +521,17 @@ public class TestActionScheduler {
command.getStatus() == HostRoleStatus.IN_PROGRESS ||
command.getStatus() == HostRoleStatus.PENDING) {
command.setStatus(HostRoleStatus.ABORTED);
+
+ HostRoleCommandEntity hostRoleCommandEntity = command.constructNewPersistenceEntity();
+ hostRoleCommandEntity.setStage(stage.constructNewPersistenceEntity());
+
+ abortedCommands.add(hostRoleCommandEntity);
}
}
}
}
- return null;
+ return abortedCommands;
}
}).when(db).abortHostRole(anyString(), anyLong(), anyLong(), anyString(), anyString());
@@ -1390,10 +1397,12 @@ public class TestActionScheduler {
return null;
}
});
- doAnswer(new Answer<Void>() {
+ doAnswer(new Answer<Collection<HostRoleCommandEntity>>() {
@Override
- public Void answer(InvocationOnMock invocation) throws Throwable {
+ public Collection<HostRoleCommandEntity> answer(InvocationOnMock invocation) throws Throwable {
Long requestId = (Long) invocation.getArguments()[0];
+ List<HostRoleCommandEntity> abortedCommands = Lists.newArrayList();
+
for (Stage stage : stages) {
if (requestId.equals(stage.getRequestId())) {
for (HostRoleCommand command : stage.getOrderedHostRoleCommands()) {
@@ -1401,12 +1410,17 @@ public class TestActionScheduler {
command.getStatus() == HostRoleStatus.IN_PROGRESS ||
command.getStatus() == HostRoleStatus.PENDING) {
command.setStatus(HostRoleStatus.ABORTED);
+
+ HostRoleCommandEntity hostRoleCommandEntity = command.constructNewPersistenceEntity();
+ hostRoleCommandEntity.setStage(stage.constructNewPersistenceEntity());
+
+ abortedCommands.add(hostRoleCommandEntity);
}
}
}
}
- return null;
+ return abortedCommands;
}
}).when(db).abortOperation(anyLong());
@@ -1570,10 +1584,12 @@ public class TestActionScheduler {
return null;
}
});
- doAnswer(new Answer<Void>() {
+ doAnswer(new Answer<Collection<HostRoleCommandEntity>>() {
@Override
- public Void answer(InvocationOnMock invocation) throws Throwable {
+ public Collection<HostRoleCommandEntity> answer(InvocationOnMock invocation) throws Throwable {
Long requestId = (Long) invocation.getArguments()[0];
+ List<HostRoleCommandEntity> abortedCommands = Lists.newArrayList();
+
for (Stage stage : stages) {
if (requestId.equals(stage.getRequestId())) {
for (HostRoleCommand command : stage.getOrderedHostRoleCommands()) {
@@ -1581,12 +1597,17 @@ public class TestActionScheduler {
command.getStatus() == HostRoleStatus.IN_PROGRESS ||
command.getStatus() == HostRoleStatus.PENDING) {
command.setStatus(HostRoleStatus.ABORTED);
+
+ HostRoleCommandEntity hostRoleCommandEntity = command.constructNewPersistenceEntity();
+ hostRoleCommandEntity.setStage(stage.constructNewPersistenceEntity());
+
+ abortedCommands.add(hostRoleCommandEntity);
}
}
}
}
- return null;
+ return abortedCommands;
}
}).when(db).abortOperation(anyLong());
@@ -1755,10 +1776,12 @@ public class TestActionScheduler {
return null;
}
});
- doAnswer(new Answer<Void>() {
+ doAnswer(new Answer<Collection<HostRoleCommandEntity>>() {
@Override
- public Void answer(InvocationOnMock invocation) throws Throwable {
+ public Collection<HostRoleCommandEntity> answer(InvocationOnMock invocation) throws Throwable {
Long requestId = (Long) invocation.getArguments()[0];
+ List<HostRoleCommandEntity> abortedCommands = Lists.newArrayList();
+
for (Stage stage : stages) {
if (requestId.equals(stage.getRequestId())) {
for (HostRoleCommand command : stage.getOrderedHostRoleCommands()) {
@@ -1766,12 +1789,17 @@ public class TestActionScheduler {
command.getStatus() == HostRoleStatus.IN_PROGRESS ||
command.getStatus() == HostRoleStatus.PENDING) {
command.setStatus(HostRoleStatus.ABORTED);
+
+ HostRoleCommandEntity hostRoleCommandEntity = command.constructNewPersistenceEntity();
+ hostRoleCommandEntity.setStage(stage.constructNewPersistenceEntity());
+
+ abortedCommands.add(hostRoleCommandEntity);
}
}
}
}
- return null;
+ return abortedCommands;
}
}).when(db).abortOperation(anyLong());
@@ -2316,10 +2344,12 @@ public class TestActionScheduler {
}
});
- doAnswer(new Answer<Void>() {
+ doAnswer(new Answer<Collection<HostRoleCommandEntity>>() {
@Override
- public Void answer(InvocationOnMock invocation) throws Throwable {
+ public Collection<HostRoleCommandEntity> answer(InvocationOnMock invocation) throws Throwable {
Long requestId = (Long) invocation.getArguments()[0];
+ List<HostRoleCommandEntity> abortedCommands = Lists.newArrayList();
+
for (Stage stage : stagesInProgress) {
if (requestId.equals(stage.getRequestId())) {
for (HostRoleCommand command : stage.getOrderedHostRoleCommands()) {
@@ -2327,12 +2357,17 @@ public class TestActionScheduler {
command.getStatus() == HostRoleStatus.IN_PROGRESS ||
command.getStatus() == HostRoleStatus.PENDING) {
command.setStatus(HostRoleStatus.ABORTED);
+
+ HostRoleCommandEntity hostRoleCommandEntity = command.constructNewPersistenceEntity();
+ hostRoleCommandEntity.setStage(stage.constructNewPersistenceEntity());
+
+ abortedCommands.add(hostRoleCommandEntity);
}
}
}
}
- return null;
+ return abortedCommands;
}
}).when(db).abortOperation(anyLong());