public virtual void TestRetryCacheRebuild() { DFSTestUtil.RunOperations(cluster, filesystem, conf, BlockSize, 0); FSNamesystem namesystem = cluster.GetNamesystem(); LightWeightCache <RetryCache.CacheEntry, RetryCache.CacheEntry> cacheSet = (LightWeightCache <RetryCache.CacheEntry, RetryCache.CacheEntry>)namesystem.GetRetryCache().GetCacheSet (); NUnit.Framework.Assert.AreEqual(25, cacheSet.Size()); IDictionary <RetryCache.CacheEntry, RetryCache.CacheEntry> oldEntries = new Dictionary <RetryCache.CacheEntry, RetryCache.CacheEntry>(); IEnumerator <RetryCache.CacheEntry> iter = cacheSet.GetEnumerator(); while (iter.HasNext()) { RetryCache.CacheEntry entry = iter.Next(); oldEntries[entry] = entry; } // restart NameNode cluster.RestartNameNode(); cluster.WaitActive(); namesystem = cluster.GetNamesystem(); // check retry cache NUnit.Framework.Assert.IsTrue(namesystem.HasRetryCache()); cacheSet = (LightWeightCache <RetryCache.CacheEntry, RetryCache.CacheEntry>)namesystem .GetRetryCache().GetCacheSet(); NUnit.Framework.Assert.AreEqual(25, cacheSet.Size()); iter = cacheSet.GetEnumerator(); while (iter.HasNext()) { RetryCache.CacheEntry entry = iter.Next(); NUnit.Framework.Assert.IsTrue(oldEntries.Contains(entry)); } }
/// <summary>Constructor.</summary> /// <param name="cacheSize">The size of the access privilege cache.</param> /// <param name="expirationPeriodNano">The period</param> /// <param name="matchingHosts">A string specifying one or multiple matchers.</param> internal NfsExports(int cacheSize, long expirationPeriodNano, string matchHosts) { this.cacheExpirationPeriod = expirationPeriodNano; accessCache = new LightWeightCache <NfsExports.AccessCacheEntry, NfsExports.AccessCacheEntry >(cacheSize, cacheSize, expirationPeriodNano, 0); string[] matchStrings = matchHosts.Split(CommonConfigurationKeys.NfsExportsAllowedHostsSeparator ); mMatches = new AList <NfsExports.Match>(matchStrings.Length); foreach (string mStr in matchStrings) { if (Log.IsDebugEnabled()) { Log.Debug("Processing match string '" + mStr + "'"); } mStr = mStr.Trim(); if (!mStr.IsEmpty()) { mMatches.AddItem(GetMatch(mStr)); } } }