Exemplo n.º 1
0
 public RMStateStoreAMRMTokenEvent(AMRMTokenSecretManagerState amrmTokenSecretManagerState
                                   , bool isUpdate, RMStateStoreEventType type)
     : this(type)
 {
     this.amrmTokenSecretManagerState = amrmTokenSecretManagerState;
     this.isUpdate = isUpdate;
 }
Exemplo n.º 2
0
        protected internal override void StoreOrUpdateAMRMTokenSecretManagerState(AMRMTokenSecretManagerState
                                                                                  state, bool isUpdate)
        {
            AMRMTokenSecretManagerState data = AMRMTokenSecretManagerState.NewInstance(state);

            byte[] stateData = data.GetProto().ToByteArray();
            db.Put(JniDBFactory.Bytes(AmrmtokenSecretManagerRoot), stateData);
        }
Exemplo n.º 3
0
        /// <exception cref="System.Exception"/>
        public virtual void TestAMRMTokenSecretManagerStateStore(RMStateStoreTestBase.RMStateStoreHelper
                                                                 stateStoreHelper)
        {
            System.Console.Out.WriteLine("Start testing");
            RMStateStore store = stateStoreHelper.GetRMStateStore();

            RMStateStoreTestBase.TestDispatcher dispatcher = new RMStateStoreTestBase.TestDispatcher
                                                                 ();
            store.SetRMDispatcher(dispatcher);
            RMContext rmContext = Org.Mockito.Mockito.Mock <RMContext>();

            Org.Mockito.Mockito.When(rmContext.GetStateStore()).ThenReturn(store);
            Configuration          conf        = new YarnConfiguration();
            AMRMTokenSecretManager appTokenMgr = new AMRMTokenSecretManager(conf, rmContext);
            //create and save the first masterkey
            MasterKeyData firstMasterKeyData   = appTokenMgr.CreateNewMasterKey();
            AMRMTokenSecretManagerState state1 = AMRMTokenSecretManagerState.NewInstance(firstMasterKeyData
                                                                                         .GetMasterKey(), null);

            rmContext.GetStateStore().StoreOrUpdateAMRMTokenSecretManager(state1, false);
            // load state
            store = stateStoreHelper.GetRMStateStore();
            Org.Mockito.Mockito.When(rmContext.GetStateStore()).ThenReturn(store);
            store.SetRMDispatcher(dispatcher);
            RMStateStore.RMState state = store.LoadState();
            NUnit.Framework.Assert.IsNotNull(state.GetAMRMTokenSecretManagerState());
            NUnit.Framework.Assert.AreEqual(firstMasterKeyData.GetMasterKey(), state.GetAMRMTokenSecretManagerState
                                                ().GetCurrentMasterKey());
            NUnit.Framework.Assert.IsNull(state.GetAMRMTokenSecretManagerState().GetNextMasterKey
                                              ());
            //create and save the second masterkey
            MasterKeyData secondMasterKeyData  = appTokenMgr.CreateNewMasterKey();
            AMRMTokenSecretManagerState state2 = AMRMTokenSecretManagerState.NewInstance(firstMasterKeyData
                                                                                         .GetMasterKey(), secondMasterKeyData.GetMasterKey());

            rmContext.GetStateStore().StoreOrUpdateAMRMTokenSecretManager(state2, true);
            // load state
            store = stateStoreHelper.GetRMStateStore();
            Org.Mockito.Mockito.When(rmContext.GetStateStore()).ThenReturn(store);
            store.SetRMDispatcher(dispatcher);
            RMStateStore.RMState state_2 = store.LoadState();
            NUnit.Framework.Assert.IsNotNull(state_2.GetAMRMTokenSecretManagerState());
            NUnit.Framework.Assert.AreEqual(firstMasterKeyData.GetMasterKey(), state_2.GetAMRMTokenSecretManagerState
                                                ().GetCurrentMasterKey());
            NUnit.Framework.Assert.AreEqual(secondMasterKeyData.GetMasterKey(), state_2.GetAMRMTokenSecretManagerState
                                                ().GetNextMasterKey());
            // re-create the masterKeyData based on the recovered masterkey
            // should have the same secretKey
            appTokenMgr.Recover(state_2);
            NUnit.Framework.Assert.AreEqual(appTokenMgr.GetCurrnetMasterKeyData().GetSecretKey
                                                (), firstMasterKeyData.GetSecretKey());
            NUnit.Framework.Assert.AreEqual(appTokenMgr.GetNextMasterKeyData().GetSecretKey()
                                            , secondMasterKeyData.GetSecretKey());
            store.Close();
        }
Exemplo n.º 4
0
 protected internal override void StoreOrUpdateAMRMTokenSecretManagerState(AMRMTokenSecretManagerState
                                                                           amrmTokenSecretManagerState, bool isUpdate)
 {
     lock (this)
     {
         if (amrmTokenSecretManagerState != null)
         {
             state.amrmTokenSecretManagerState = AMRMTokenSecretManagerState.NewInstance(amrmTokenSecretManagerState
                                                                                         );
         }
     }
 }
Exemplo n.º 5
0
 public virtual void Start()
 {
     if (this.currentMasterKey == null)
     {
         this.currentMasterKey = CreateNewMasterKey();
         AMRMTokenSecretManagerState state = AMRMTokenSecretManagerState.NewInstance(this.
                                                                                     currentMasterKey.GetMasterKey(), null);
         rmContext.GetStateStore().StoreOrUpdateAMRMTokenSecretManager(state, false);
     }
     this.timer.ScheduleAtFixedRate(new AMRMTokenSecretManager.MasterKeyRoller(this),
                                    rollingInterval, rollingInterval);
 }
Exemplo n.º 6
0
 /// <exception cref="System.Exception"/>
 public override RMStateStore.RMState LoadState()
 {
     lock (this)
     {
         // return a copy of the state to allow for modification of the real state
         RMStateStore.RMState returnState = new RMStateStore.RMState();
         returnState.appState.PutAll(state.appState);
         Sharpen.Collections.AddAll(returnState.rmSecretManagerState.GetMasterKeyState(),
                                    state.rmSecretManagerState.GetMasterKeyState());
         returnState.rmSecretManagerState.GetTokenState().PutAll(state.rmSecretManagerState
                                                                 .GetTokenState());
         returnState.rmSecretManagerState.dtSequenceNumber = state.rmSecretManagerState.dtSequenceNumber;
         returnState.amrmTokenSecretManagerState           = state.amrmTokenSecretManagerState == null
                                  ? null : AMRMTokenSecretManagerState.NewInstance(state.amrmTokenSecretManagerState
                                                                                   );
         return(returnState);
     }
 }
Exemplo n.º 7
0
 public virtual void ActivateNextMasterKey()
 {
     this.writeLock.Lock();
     try
     {
         Log.Info("Activating next master key with id: " + this.nextMasterKey.GetMasterKey
                      ().GetKeyId());
         this.currentMasterKey = this.nextMasterKey;
         this.nextMasterKey    = null;
         AMRMTokenSecretManagerState state = AMRMTokenSecretManagerState.NewInstance(this.
                                                                                     currentMasterKey.GetMasterKey(), null);
         rmContext.GetStateStore().StoreOrUpdateAMRMTokenSecretManager(state, true);
     }
     finally
     {
         this.writeLock.Unlock();
     }
 }
Exemplo n.º 8
0
 internal virtual void RollMasterKey()
 {
     this.writeLock.Lock();
     try
     {
         Log.Info("Rolling master-key for amrm-tokens");
         this.nextMasterKey = CreateNewMasterKey();
         AMRMTokenSecretManagerState state = AMRMTokenSecretManagerState.NewInstance(this.
                                                                                     currentMasterKey.GetMasterKey(), this.nextMasterKey.GetMasterKey());
         rmContext.GetStateStore().StoreOrUpdateAMRMTokenSecretManager(state, true);
         this.timer.Schedule(new AMRMTokenSecretManager.NextKeyActivator(this), this.activationDelay
                             );
     }
     finally
     {
         this.writeLock.Unlock();
     }
 }
Exemplo n.º 9
0
 /// <exception cref="System.IO.IOException"/>
 private void LoadAMRMTokenSecretManagerState(RMStateStore.RMState rmState)
 {
     try
     {
         byte[] data = db.Get(JniDBFactory.Bytes(AmrmtokenSecretManagerRoot));
         if (data != null)
         {
             AMRMTokenSecretManagerStatePBImpl stateData = new AMRMTokenSecretManagerStatePBImpl
                                                               (YarnServerResourceManagerRecoveryProtos.AMRMTokenSecretManagerStateProto.ParseFrom
                                                                   (data));
             rmState.amrmTokenSecretManagerState = AMRMTokenSecretManagerState.NewInstance(stateData
                                                                                           .GetCurrentMasterKey(), stateData.GetNextMasterKey());
         }
     }
     catch (DBException e)
     {
         throw new IOException(e);
     }
 }
Exemplo n.º 10
0
 /// <exception cref="System.Exception"/>
 protected internal override void StoreOrUpdateAMRMTokenSecretManagerState(AMRMTokenSecretManagerState
                                                                           amrmTokenSecretManagerState, bool isUpdate)
 {
     lock (this)
     {
         Path nodeCreatePath = GetNodePath(amrmTokenSecretManagerRoot, AmrmtokenSecretManagerNode
                                           );
         AMRMTokenSecretManagerState data = AMRMTokenSecretManagerState.NewInstance(amrmTokenSecretManagerState
                                                                                    );
         byte[] stateData = data.GetProto().ToByteArray();
         if (isUpdate)
         {
             UpdateFile(nodeCreatePath, stateData, true);
         }
         else
         {
             WriteFileWithRetries(nodeCreatePath, stateData, true);
         }
     }
 }
Exemplo n.º 11
0
        /// <exception cref="System.Exception"/>
        private void LoadAMRMTokenSecretManagerState(RMStateStore.RMState rmState)
        {
            CheckAndResumeUpdateOperation(amrmTokenSecretManagerRoot);
            Path amrmTokenSecretManagerStateDataDir = new Path(amrmTokenSecretManagerRoot, AmrmtokenSecretManagerNode
                                                               );
            FileStatus status = GetFileStatusWithRetries(amrmTokenSecretManagerStateDataDir);

            if (status == null)
            {
                return;
            }
            System.Diagnostics.Debug.Assert(status.IsFile());
            byte[] data = ReadFileWithRetries(amrmTokenSecretManagerStateDataDir, status.GetLen
                                                  ());
            AMRMTokenSecretManagerStatePBImpl stateData = new AMRMTokenSecretManagerStatePBImpl
                                                              (YarnServerResourceManagerRecoveryProtos.AMRMTokenSecretManagerStateProto.ParseFrom
                                                                  (data));

            rmState.amrmTokenSecretManagerState = AMRMTokenSecretManagerState.NewInstance(stateData
                                                                                          .GetCurrentMasterKey(), stateData.GetNextMasterKey());
        }
Exemplo n.º 12
0
 protected internal override void StoreOrUpdateAMRMTokenSecretManagerState(AMRMTokenSecretManagerState
                                                                           state, bool isUpdate)
 {
 }