|
@@ -18,18 +18,14 @@
|
|
|
|
|
|
package org.apache.hadoop.yarn.server.resourcemanager.recovery;
|
|
package org.apache.hadoop.yarn.server.resourcemanager.recovery;
|
|
|
|
|
|
-import org.apache.hadoop.yarn.api.records.ReservationDefinition;
|
|
|
|
-import org.apache.hadoop.yarn.api.records.ReservationId;
|
|
|
|
-import org.apache.hadoop.yarn.api.records.Resource;
|
|
|
|
-import org.apache.hadoop.yarn.event.Event;
|
|
|
|
import static org.junit.Assert.assertArrayEquals;
|
|
import static org.junit.Assert.assertArrayEquals;
|
|
import static org.junit.Assert.assertEquals;
|
|
import static org.junit.Assert.assertEquals;
|
|
import static org.junit.Assert.assertNotNull;
|
|
import static org.junit.Assert.assertNotNull;
|
|
import static org.junit.Assert.assertTrue;
|
|
import static org.junit.Assert.assertTrue;
|
|
import static org.junit.Assert.fail;
|
|
import static org.junit.Assert.fail;
|
|
import static org.mockito.Mockito.mock;
|
|
import static org.mockito.Mockito.mock;
|
|
-import static org.mockito.Mockito.when;
|
|
|
|
import static org.mockito.Mockito.spy;
|
|
import static org.mockito.Mockito.spy;
|
|
|
|
+import static org.mockito.Mockito.when;
|
|
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.ArrayList;
|
|
import java.util.Arrays;
|
|
import java.util.Arrays;
|
|
@@ -39,16 +35,11 @@ import java.util.Map;
|
|
|
|
|
|
import javax.crypto.SecretKey;
|
|
import javax.crypto.SecretKey;
|
|
|
|
|
|
-import org.apache.hadoop.yarn.proto.YarnServerResourceManagerRecoveryProtos.ReservationAllocationStateProto;
|
|
|
|
-import org.apache.hadoop.yarn.server.resourcemanager.reservation.ReservationSystemTestUtil;
|
|
|
|
-import org.apache.hadoop.yarn.server.resourcemanager.reservation.ReservationSystemUtil;
|
|
|
|
-import org.apache.hadoop.yarn.util.resource.DefaultResourceCalculator;
|
|
|
|
-import org.apache.hadoop.yarn.util.resource.ResourceCalculator;
|
|
|
|
-import org.junit.Assert;
|
|
|
|
import org.apache.commons.logging.Log;
|
|
import org.apache.commons.logging.Log;
|
|
import org.apache.commons.logging.LogFactory;
|
|
import org.apache.commons.logging.LogFactory;
|
|
import org.apache.hadoop.conf.Configuration;
|
|
import org.apache.hadoop.conf.Configuration;
|
|
import org.apache.hadoop.io.Text;
|
|
import org.apache.hadoop.io.Text;
|
|
|
|
+import org.apache.hadoop.ipc.CallerContext;
|
|
import org.apache.hadoop.security.token.Token;
|
|
import org.apache.hadoop.security.token.Token;
|
|
import org.apache.hadoop.security.token.delegation.DelegationKey;
|
|
import org.apache.hadoop.security.token.delegation.DelegationKey;
|
|
import org.apache.hadoop.yarn.api.records.ApplicationAttemptId;
|
|
import org.apache.hadoop.yarn.api.records.ApplicationAttemptId;
|
|
@@ -57,33 +48,43 @@ import org.apache.hadoop.yarn.api.records.ApplicationSubmissionContext;
|
|
import org.apache.hadoop.yarn.api.records.Container;
|
|
import org.apache.hadoop.yarn.api.records.Container;
|
|
import org.apache.hadoop.yarn.api.records.ContainerId;
|
|
import org.apache.hadoop.yarn.api.records.ContainerId;
|
|
import org.apache.hadoop.yarn.api.records.FinalApplicationStatus;
|
|
import org.apache.hadoop.yarn.api.records.FinalApplicationStatus;
|
|
|
|
+import org.apache.hadoop.yarn.api.records.ReservationDefinition;
|
|
|
|
+import org.apache.hadoop.yarn.api.records.ReservationId;
|
|
|
|
+import org.apache.hadoop.yarn.api.records.Resource;
|
|
import org.apache.hadoop.yarn.api.records.impl.pb.ApplicationSubmissionContextPBImpl;
|
|
import org.apache.hadoop.yarn.api.records.impl.pb.ApplicationSubmissionContextPBImpl;
|
|
import org.apache.hadoop.yarn.api.records.impl.pb.ContainerPBImpl;
|
|
import org.apache.hadoop.yarn.api.records.impl.pb.ContainerPBImpl;
|
|
import org.apache.hadoop.yarn.conf.YarnConfiguration;
|
|
import org.apache.hadoop.yarn.conf.YarnConfiguration;
|
|
import org.apache.hadoop.yarn.event.Dispatcher;
|
|
import org.apache.hadoop.yarn.event.Dispatcher;
|
|
|
|
+import org.apache.hadoop.yarn.event.Event;
|
|
import org.apache.hadoop.yarn.event.EventHandler;
|
|
import org.apache.hadoop.yarn.event.EventHandler;
|
|
|
|
+import org.apache.hadoop.yarn.proto.YarnServerResourceManagerRecoveryProtos.ReservationAllocationStateProto;
|
|
import org.apache.hadoop.yarn.security.AMRMTokenIdentifier;
|
|
import org.apache.hadoop.yarn.security.AMRMTokenIdentifier;
|
|
import org.apache.hadoop.yarn.security.client.RMDelegationTokenIdentifier;
|
|
import org.apache.hadoop.yarn.security.client.RMDelegationTokenIdentifier;
|
|
import org.apache.hadoop.yarn.server.records.Version;
|
|
import org.apache.hadoop.yarn.server.records.Version;
|
|
import org.apache.hadoop.yarn.server.resourcemanager.RMContext;
|
|
import org.apache.hadoop.yarn.server.resourcemanager.RMContext;
|
|
-import org.apache.hadoop.yarn.server.resourcemanager.recovery.records.ApplicationStateData;
|
|
|
|
-import org.apache.hadoop.yarn.server.resourcemanager.recovery.records.ApplicationAttemptStateData;
|
|
|
|
import org.apache.hadoop.yarn.server.resourcemanager.recovery.RMStateStore.RMDTSecretManagerState;
|
|
import org.apache.hadoop.yarn.server.resourcemanager.recovery.RMStateStore.RMDTSecretManagerState;
|
|
import org.apache.hadoop.yarn.server.resourcemanager.recovery.RMStateStore.RMState;
|
|
import org.apache.hadoop.yarn.server.resourcemanager.recovery.RMStateStore.RMState;
|
|
import org.apache.hadoop.yarn.server.resourcemanager.recovery.records.AMRMTokenSecretManagerState;
|
|
import org.apache.hadoop.yarn.server.resourcemanager.recovery.records.AMRMTokenSecretManagerState;
|
|
|
|
+import org.apache.hadoop.yarn.server.resourcemanager.recovery.records.ApplicationAttemptStateData;
|
|
|
|
+import org.apache.hadoop.yarn.server.resourcemanager.recovery.records.ApplicationStateData;
|
|
import org.apache.hadoop.yarn.server.resourcemanager.reservation.InMemoryReservationAllocation;
|
|
import org.apache.hadoop.yarn.server.resourcemanager.reservation.InMemoryReservationAllocation;
|
|
import org.apache.hadoop.yarn.server.resourcemanager.reservation.ReservationAllocation;
|
|
import org.apache.hadoop.yarn.server.resourcemanager.reservation.ReservationAllocation;
|
|
|
|
+import org.apache.hadoop.yarn.server.resourcemanager.reservation.ReservationSystemTestUtil;
|
|
|
|
+import org.apache.hadoop.yarn.server.resourcemanager.reservation.ReservationSystemUtil;
|
|
import org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMApp;
|
|
import org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMApp;
|
|
import org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMAppState;
|
|
import org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMAppState;
|
|
import org.apache.hadoop.yarn.server.resourcemanager.rmapp.attempt.AggregateAppResourceUsage;
|
|
import org.apache.hadoop.yarn.server.resourcemanager.rmapp.attempt.AggregateAppResourceUsage;
|
|
import org.apache.hadoop.yarn.server.resourcemanager.rmapp.attempt.RMAppAttempt;
|
|
import org.apache.hadoop.yarn.server.resourcemanager.rmapp.attempt.RMAppAttempt;
|
|
-import org.apache.hadoop.yarn.server.resourcemanager.rmapp.attempt.RMAppAttemptMetrics;
|
|
|
|
import org.apache.hadoop.yarn.server.resourcemanager.rmapp.attempt.RMAppAttemptEvent;
|
|
import org.apache.hadoop.yarn.server.resourcemanager.rmapp.attempt.RMAppAttemptEvent;
|
|
|
|
+import org.apache.hadoop.yarn.server.resourcemanager.rmapp.attempt.RMAppAttemptMetrics;
|
|
import org.apache.hadoop.yarn.server.resourcemanager.rmapp.attempt.RMAppAttemptState;
|
|
import org.apache.hadoop.yarn.server.resourcemanager.rmapp.attempt.RMAppAttemptState;
|
|
import org.apache.hadoop.yarn.server.resourcemanager.security.AMRMTokenSecretManager;
|
|
import org.apache.hadoop.yarn.server.resourcemanager.security.AMRMTokenSecretManager;
|
|
import org.apache.hadoop.yarn.server.resourcemanager.security.ClientToAMTokenSecretManagerInRM;
|
|
import org.apache.hadoop.yarn.server.resourcemanager.security.ClientToAMTokenSecretManagerInRM;
|
|
import org.apache.hadoop.yarn.server.security.MasterKeyData;
|
|
import org.apache.hadoop.yarn.server.security.MasterKeyData;
|
|
import org.apache.hadoop.yarn.util.ConverterUtils;
|
|
import org.apache.hadoop.yarn.util.ConverterUtils;
|
|
|
|
+import org.apache.hadoop.yarn.util.resource.DefaultResourceCalculator;
|
|
|
|
+import org.apache.hadoop.yarn.util.resource.ResourceCalculator;
|
|
|
|
+import org.junit.Assert;
|
|
|
|
|
|
public class RMStateStoreTestBase {
|
|
public class RMStateStoreTestBase {
|
|
|
|
|
|
@@ -165,6 +166,8 @@ public class RMStateStoreTestBase {
|
|
when(mockApp.getStartTime()).thenReturn(startTime);
|
|
when(mockApp.getStartTime()).thenReturn(startTime);
|
|
when(mockApp.getApplicationSubmissionContext()).thenReturn(context);
|
|
when(mockApp.getApplicationSubmissionContext()).thenReturn(context);
|
|
when(mockApp.getUser()).thenReturn("test");
|
|
when(mockApp.getUser()).thenReturn("test");
|
|
|
|
+ when(mockApp.getCallerContext())
|
|
|
|
+ .thenReturn(new CallerContext.Builder("context").build());
|
|
store.storeNewApplication(mockApp);
|
|
store.storeNewApplication(mockApp);
|
|
return mockApp;
|
|
return mockApp;
|
|
}
|
|
}
|
|
@@ -322,6 +325,7 @@ public class RMStateStoreTestBase {
|
|
clientTokenKey1.getEncoded(),
|
|
clientTokenKey1.getEncoded(),
|
|
attemptState.getAppAttemptTokens()
|
|
attemptState.getAppAttemptTokens()
|
|
.getSecretKey(RMStateStore.AM_CLIENT_TOKEN_MASTER_KEY_NAME));
|
|
.getSecretKey(RMStateStore.AM_CLIENT_TOKEN_MASTER_KEY_NAME));
|
|
|
|
+ assertEquals("context", appState.getCallerContext().getContext());
|
|
|
|
|
|
attemptState = appState.getAttempt(attemptId2);
|
|
attemptState = appState.getAttempt(attemptId2);
|
|
// attempt2 is loaded correctly
|
|
// attempt2 is loaded correctly
|
|
@@ -340,7 +344,7 @@ public class RMStateStoreTestBase {
|
|
ApplicationStateData.newInstance(appState.getSubmitTime(),
|
|
ApplicationStateData.newInstance(appState.getSubmitTime(),
|
|
appState.getStartTime(), appState.getUser(),
|
|
appState.getStartTime(), appState.getUser(),
|
|
appState.getApplicationSubmissionContext(), RMAppState.FINISHED,
|
|
appState.getApplicationSubmissionContext(), RMAppState.FINISHED,
|
|
- "appDiagnostics", 1234);
|
|
|
|
|
|
+ "appDiagnostics", 1234, appState.getCallerContext());
|
|
appState2.attempts.putAll(appState.attempts);
|
|
appState2.attempts.putAll(appState.attempts);
|
|
store.updateApplicationState(appState2);
|
|
store.updateApplicationState(appState2);
|
|
|
|
|
|
@@ -365,7 +369,7 @@ public class RMStateStoreTestBase {
|
|
ApplicationStateData dummyApp =
|
|
ApplicationStateData dummyApp =
|
|
ApplicationStateData.newInstance(appState.getSubmitTime(),
|
|
ApplicationStateData.newInstance(appState.getSubmitTime(),
|
|
appState.getStartTime(), appState.getUser(), dummyContext,
|
|
appState.getStartTime(), appState.getUser(), dummyContext,
|
|
- RMAppState.FINISHED, "appDiagnostics", 1234);
|
|
|
|
|
|
+ RMAppState.FINISHED, "appDiagnostics", 1234, null);
|
|
store.updateApplicationState(dummyApp);
|
|
store.updateApplicationState(dummyApp);
|
|
|
|
|
|
ApplicationAttemptId dummyAttemptId =
|
|
ApplicationAttemptId dummyAttemptId =
|