Exemplo n.º 1
0
        public NodeGroupStatus GetNodeGroupStatus(TypeSettingCollection typeSettingCollection)
        {
            NodeGroupStatus nodeGroupStatus = new NodeGroupStatus();

            nodeGroupStatus.GroupName = this.GroupName;

            if (typeSettingCollection != null)
            {
                foreach (TypeSetting ts in typeSettingCollection)
                {
                    if (ts.GroupName != null && ts.GroupName.ToUpperInvariant() == GroupName.ToUpperInvariant())
                    {
                        TypeSettingStatus tss = TypeSpecificStatisticsManager.Instance.GetStatus(ts.TypeId);
                        if (tss == null)                       //should not be null
                        {
                            _log.WarnFormat("NodeGroup:GetNodeGroupStatus " +
                                            "TypeSettingStatus is null for typeId:{0}",
                                            ts.TypeId);
                            tss = new TypeSettingStatus();                            //add empty one to hold place and show error
                        }
                        nodeGroupStatus.TypeSettingStatuses.Add(tss);
                    }
                }
            }

            foreach (NodeCluster cluster in Clusters)
            {
                nodeGroupStatus.NodeClusterStatuses.Add(cluster.GetNodeClusterStatus());
            }

            return(nodeGroupStatus);
        }
Exemplo n.º 2
0
        internal void GetHtmlStatus(StringBuilder statusBuilder, TypeSettingCollection typeSettingCollection)
        {
            statusBuilder.Append("<table class=\"nodeGroupBox\">" + Environment.NewLine);
            AddHeaderLine(statusBuilder, "Group " + GroupName, 1);

            // display the the type setting information of the group
            if (typeSettingCollection != null)
            {
                statusBuilder.Append(@"<tr><td>" + Environment.NewLine);
                statusBuilder.Append("<table class=\"nodeGroupTypeIDBox\">" + Environment.NewLine);
                statusBuilder.Append("<tr><th align=\"left\">Type Infomation</th></tr>");

                foreach (TypeSetting ts in typeSettingCollection)
                {
                    if (ts.GroupName != null && ts.GroupName.ToUpperInvariant() == GroupName.ToUpperInvariant())
                    {
                        statusBuilder.Append(@"<tr>");
                        statusBuilder.Append(string.Format("<td align=\"left\"> {0} </td>", ts));
                        statusBuilder.Append(@"</tr>");
                    }
                }

                statusBuilder.Append(@"</table>" + Environment.NewLine);
                statusBuilder.Append(@"</td></tr>" + Environment.NewLine);
            }

            foreach (NodeCluster cluster in Clusters)
            {
                statusBuilder.Append(@"<tr><td>" + Environment.NewLine);
                cluster.GetHtmlStatus(statusBuilder);
                statusBuilder.Append(@"</td></tr>" + Environment.NewLine);
            }
            statusBuilder.Append(@"</table>" + Environment.NewLine);
        }
Exemplo n.º 3
0
		/// <summary>
		/// Initializes the current instance.
		/// </summary>
		/// <param name="deletesEnabled">A value indicating if the expiration deletes are enabled.</param>
		/// <param name="typeSettings">The type settings to use.</param>
		public LifetimeTtl(bool deletesEnabled, TypeSettingCollection typeSettings)
		{
			this.deletesEnabled = deletesEnabled;
			this.typeSettings = typeSettings;

			if (typeSettings == null)
			{
                if (RelayNode.log.IsWarnEnabled)
                    RelayNode.log.Warn("TypeSettingCollection is Null. TTL object expiration and deletion disabled!");
			}
		}
Exemplo n.º 4
0
 /// <summary>
 /// Initializes the <see cref="TypeSpecificStatisticsManager"/>.
 /// </summary>
 /// <param name="typeSettingCollection">The <see cref="TypeSettingCollection"/> used to initialize.</param>
 internal static void Initialize(TypeSettingCollection typeSettingCollection)
 {
     lock (_instanceLock)
     {
         if (!_initialized)
         {
             Instance.InitializeInstance(typeSettingCollection);
             _initialized = true;
         }
     }
 }
        /// <summary>
        /// Initializes the current instance.
        /// </summary>
        /// <param name="deletesEnabled">A value indicating if the expiration deletes are enabled.</param>
        /// <param name="typeSettings">The type settings to use.</param>
        public LifetimeTtl(bool deletesEnabled, TypeSettingCollection typeSettings)
        {
            this.deletesEnabled = deletesEnabled;
            this.typeSettings   = typeSettings;

            if (typeSettings == null)
            {
                if (RelayNode.log.IsWarnEnabled)
                {
                    RelayNode.log.Warn("TypeSettingCollection is Null. TTL object expiration and deletion disabled!");
                }
            }
        }
Exemplo n.º 6
0
 /// <summary>
 /// this (or <see cref="ReloadConfig"/>) gets called (depending) when the TypeSettings.Config file
 /// are changed.
 /// </summary>
 /// <remarks>
 /// Added: craigbro
 /// cachedTypeSettings now held with the forwarder for reference of
 /// exceptions on Synchronous "in" messages.
 /// To reload, we just null out the cached TypeSettingsCollection object and the
 /// accessor will reload it on next call
 /// While ConfigurationManager.GetSection is quite performant after the 1st hit,
 /// keeping them cached is about twice as fast.
 /// </remarks>
 /// <param name="config"></param>
 /// <param name="runState"></param>
 private void LoadConfig(RelayNodeConfig config, ComponentRunState runState)
 {
     if (config != null)
     {
         if (config.RelayComponents != null)
         {
             object           configObject     = config.RelayComponents.GetConfigFor(GetComponentName());
             ForwardingConfig forwardingConfig = configObject as ForwardingConfig;
             if (forwardingConfig == null)
             {
                 if (log.IsInfoEnabled)
                 {
                     log.Info("No forwarding configuration supplied. Using defaults.");
                 }
                 forwardingConfig = new ForwardingConfig();
             }
             NodeManager.Initialize(config, forwardingConfig, GetErrorQueues(runState));
             TypeSettingCollection typeSettingCollection = null;
             if (NodeManager.Instance.Config != null)
             {
                 if (NodeManager.Instance.Config.TypeSettings != null)
                 {
                     typeSettingCollection = NodeManager.Instance.Config.TypeSettings.TypeSettingCollection;
                 }
             }
             TypeSpecificStatisticsManager.Initialize(typeSettingCollection);
             _enableAsyncBulkGets = forwardingConfig.EnableAsyncBulkGets;
             _myNodeDefinition    = NodeManager.Instance.GetMyNodeDefinition();
             _myZone = Node.DetermineZone(_myNodeDefinition);
             short maxTypeId = 0;
             if (config.TypeSettings != null)
             {
                 maxTypeId = config.TypeSettings.MaxTypeId;
             }
             DebugWriter.SetTraceSettings(maxTypeId, forwardingConfig.TraceSettings);
             DebugWriter.WriteCallingMethod = forwardingConfig.WriteCallingMethod;
             DebugWriter.WriteMessageTrace  = forwardingConfig.WriteMessageTrace;
         }
         else
         {
             NodeManager.Initialize(null, null, null);
             TypeSpecificStatisticsManager.Initialize(null);
         }
     }
     else
     {
         NodeManager.Initialize(null, null, null);
         TypeSpecificStatisticsManager.Initialize(null);
     }
 }
Exemplo n.º 7
0
        public NodeGroupStatus GetNodeGroupStatus(TypeSettingCollection typeSettingCollection)
        {
            NodeGroupStatus nodeGroupStatus = new NodeGroupStatus();

            nodeGroupStatus.GroupName = this.GroupName;

            if (typeSettingCollection != null)
            {
                foreach (TypeSetting ts in typeSettingCollection)
                {
                    if (ts.GroupName.ToUpperInvariant() == GroupName.ToUpperInvariant())
                    {
                        TypeSettingStatus typeSettingStatus = new TypeSettingStatus();
                        typeSettingStatus.TypeName           = ts.TypeName;
                        typeSettingStatus.GroupName          = ts.GroupName;
                        typeSettingStatus.TypeId             = ts.TypeId;
                        typeSettingStatus.Disabled           = ts.Disabled;
                        typeSettingStatus.Compress           = ts.Compress;
                        typeSettingStatus.CheckRaceCondition = ts.CheckRaceCondition;
                        typeSettingStatus.TTLSetting         = ts.TTLSetting;
                        typeSettingStatus.RelatedIndexTypeId = ts.RelatedIndexTypeId;
                        if (ts.HydrationPolicy != null)
                        {
                            typeSettingStatus.HydrationPolicyStatus               = new HydrationPolicyStatus();
                            typeSettingStatus.HydrationPolicyStatus.KeyType       = ts.HydrationPolicy.KeyType.ToString();
                            typeSettingStatus.HydrationPolicyStatus.HydrateMisses = (ts.HydrationPolicy.Options &
                                                                                     RelayHydrationOptions.HydrateOnMiss) ==
                                                                                    RelayHydrationOptions.HydrateOnMiss;
                            typeSettingStatus.HydrationPolicyStatus.HydrateBulkMisses = (ts.HydrationPolicy.Options &
                                                                                         RelayHydrationOptions.HydrateOnBulkMiss) == RelayHydrationOptions.HydrateOnBulkMiss;
                        }
                        nodeGroupStatus.TypeSettingStatuses.Add(typeSettingStatus);
                    }
                }
            }

            foreach (NodeCluster cluster in Clusters)
            {
                nodeGroupStatus.NodeClusterStatuses.Add(cluster.GetNodeClusterStatus());
            }

            return(nodeGroupStatus);
        }
Exemplo n.º 8
0
        private TypeSettingStatus[] UpdateTypeSettingStatusCollection(TypeSettingCollection typeSettingCollection)
        {
            //create fresh list
            TypeSettingStatus[] newTypeSettingStatusCollection = null;

            newTypeSettingStatusCollection = new TypeSettingStatus[typeSettingCollection.MaxTypeId + 1];
            //Go through type settings
            foreach (var setting in typeSettingCollection)
            {
                //Add old TypeSettingStatus to the appropriate TypeId slot if key items are the same
                if (_typeSettingStatusCollection != null &&
                    setting.TypeId < _typeSettingStatusCollection.Length &&
                    _typeSettingStatusCollection[setting.TypeId] != null &&
                    _typeSettingStatusCollection[setting.TypeId].TypeName == setting.TypeName &&
                    setting.GatherStatistics == true)
                {
                    newTypeSettingStatusCollection[setting.TypeId] = _typeSettingStatusCollection[setting.TypeId].Clone();
                }
                else
                //If there is a new item or one of the key items changed create a new empty TypeSettingStatus for the TypeId slot
                {
                    newTypeSettingStatusCollection[setting.TypeId] = new TypeSettingStatus();
                }
                newTypeSettingStatusCollection[setting.TypeId].Update(setting);
            }
            //Add status for typeId Zero (DeleteAllTypes) which is not specific to a group
            //or specified in RelayTypeSettings configuration
            if (_typeSettingStatusCollection != null &&
                _typeSettingStatusCollection[0] != null)
            {
                newTypeSettingStatusCollection[0] = _typeSettingStatusCollection[0].Clone();
            }
            else
            //If there is a new item or one of the key items changed create a new empty TypeSettingStatus for the TypeId slot
            {
                newTypeSettingStatusCollection[0] = new TypeSettingStatus();
            }
            TypeSetting zeroTypeSetting = CreateZeroTypeSetting();

            newTypeSettingStatusCollection[0].Update(zeroTypeSetting);

            return(newTypeSettingStatusCollection);
        }
Exemplo n.º 9
0
        /// <summary>
        /// Reloads the <see cref="TypeSpecificStatisticsManager"/> with new <see cref="TypeSetting"/> data.
        /// </summary>
        /// <param name="typeSettingCollection">The <see cref="TypeSettingCollection"/> used to initialize.</param>
        internal void ReloadMapping(TypeSettingCollection typeSettingCollection)
        {
            if (_initialized)
            {
                if (typeSettingCollection == null)
                {
                    _log.Warn("TypeSpecificStatisticsManager:ReloadMapping " +
                              "typeSettingCollection is null.");
                    return;
                }

                lock (_instanceLock)
                {
                    _typeSettingStatusCollection = UpdateTypeSettingStatusCollection(typeSettingCollection);
                }
            }
            else
            {
                _log.Warn("TypeSpecificStatisticsManager:ReloadMapping " +
                          "ReloadMapping was called without initializing TypeSpecificStatisticsManager.");
            }
        }
Exemplo n.º 10
0
        private void InitializeInstance(TypeSettingCollection typeSettingCollection)
        {
            if (typeSettingCollection == null)
            {
                _log.Warn("TypeSpecificStatisticsManager:InitializeInstance " +
                          "typeSettingCollection is null.");
                return;
            }

            //set up status collection with max size and whether each element should collect stats
            _typeSettingStatusCollection = new TypeSettingStatus[typeSettingCollection.MaxTypeId + 1];
            foreach (var setting in typeSettingCollection)
            {
                _typeSettingStatusCollection[setting.TypeId] = new TypeSettingStatus();
                _typeSettingStatusCollection[setting.TypeId].Update(setting);
            }

            //Add status for typeId Zero (DeleteAllTypes) which is not specific to a group
            //or specified in RelayTypeSettings configuration
            TypeSetting zeroTypeSetting = CreateZeroTypeSetting();

            _typeSettingStatusCollection[0] = new TypeSettingStatus();
            _typeSettingStatusCollection[0].Update(zeroTypeSetting);
        }
Exemplo n.º 11
0
		public NodeGroupStatus GetNodeGroupStatus(TypeSettingCollection typeSettingCollection)
		{
		 	NodeGroupStatus nodeGroupStatus = new NodeGroupStatus();

			nodeGroupStatus.GroupName = this.GroupName;

			if (typeSettingCollection != null)
			{
				foreach (TypeSetting ts in typeSettingCollection)
				{
					if (ts.GroupName.ToUpperInvariant() == GroupName.ToUpperInvariant())
					{
						TypeSettingStatus typeSettingStatus = new TypeSettingStatus();
						typeSettingStatus.TypeName = ts.TypeName;
						typeSettingStatus.GroupName = ts.GroupName;
						typeSettingStatus.TypeId = ts.TypeId;
						typeSettingStatus.Disabled = ts.Disabled;
						typeSettingStatus.Compress = ts.Compress;
						typeSettingStatus.CheckRaceCondition = ts.CheckRaceCondition;
						typeSettingStatus.TTLSetting = ts.TTLSetting;
						typeSettingStatus.RelatedIndexTypeId = ts.RelatedIndexTypeId;
						if (ts.HydrationPolicy != null)
						{
							typeSettingStatus.HydrationPolicyStatus = new HydrationPolicyStatus();
							typeSettingStatus.HydrationPolicyStatus.KeyType = ts.HydrationPolicy.KeyType.ToString();
							typeSettingStatus.HydrationPolicyStatus.HydrateMisses = (ts.HydrationPolicy.Options &
							                                                         RelayHydrationOptions.HydrateOnMiss) ==
							                                                        RelayHydrationOptions.HydrateOnMiss;
							typeSettingStatus.HydrationPolicyStatus.HydrateBulkMisses = (ts.HydrationPolicy.Options & 
								RelayHydrationOptions.HydrateOnBulkMiss) == RelayHydrationOptions.HydrateOnBulkMiss;
						}
						nodeGroupStatus.TypeSettingStatuses.Add(typeSettingStatus);				
					}
				}
			}

			foreach (NodeCluster cluster in Clusters)
			{
				nodeGroupStatus.NodeClusterStatuses.Add(cluster.GetNodeClusterStatus());
			}

			return nodeGroupStatus;
		}
Exemplo n.º 12
0
	  internal void GetHtmlStatus(StringBuilder statusBuilder, TypeSettingCollection typeSettingCollection)
		{
			statusBuilder.Append("<table class=\"nodeGroupBox\">" + Environment.NewLine);
			AddHeaderLine(statusBuilder, "Group " + GroupName,1);

		 // display the the type setting information of the group
		 if (typeSettingCollection != null)
		 {
			 statusBuilder.Append(@"<tr><td>" + Environment.NewLine);
			 statusBuilder.Append("<table class=\"nodeGroupTypeIDBox\">" + Environment.NewLine);
			 statusBuilder.Append("<tr><th align=\"left\">Type Infomation</th></tr>");

			 foreach (TypeSetting ts in typeSettingCollection)
			 {
				 if (ts.GroupName.ToUpperInvariant() == GroupName.ToUpperInvariant())
				 {
					 statusBuilder.Append(@"<tr>");
					 statusBuilder.Append(string.Format("<td align=\"left\"> {0} </td>", ts));
					 statusBuilder.Append(@"</tr>");
				 }
			 }

			 statusBuilder.Append(@"</table>" + Environment.NewLine);
			 statusBuilder.Append(@"</td></tr>" + Environment.NewLine);
		 }

			foreach (NodeCluster cluster in Clusters)
			{
				statusBuilder.Append(@"<tr><td>" + Environment.NewLine);
				cluster.GetHtmlStatus(statusBuilder);
				statusBuilder.Append(@"</td></tr>" + Environment.NewLine);
			}
			statusBuilder.Append(@"</table>" + Environment.NewLine);
		}