Custom Dataclass with a Hyphen ("-") causes "Hidden Purging Maintenance" to hung
search cancel

Custom Dataclass with a Hyphen ("-") causes "Hidden Purging Maintenance" to hung

book

Article ID: 381502

calendar_today

Updated On:

Products

IT Management Suite

Issue/Introduction

The "Hidden Purging Maintenance" scheduled task is hanging every day.

It seems that the "Hidden Purging maintenance" scheduled task on the SMP Server has been running for days. It never finishes. You have tried to stop it and restart it and it still just runs forever without end and you eventually kill it.

Oddly when it has been stopped and then started the scheduled task from the task scheduler, it ran successfully.

While looking at the NS logs, it shows lots of logging for deleting history etc and then completed successfully in under 20 minutes. The logs show entries like the follow:

Failed to purge: 'My Off-Network Software' (c81b65f9-d72f-429f-8483-f98d7f8321b3) (236384)

 

Incorrect syntax near '-'.

   [SqlException @ System.Data.dll]

   at System.Data.SqlClient.SqlConnection.OnError(SqlException, bool, Action<Action>)

   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject, bool, bool)

   at System.Data.SqlClient.TdsParser.TryRun(RunBehavior, SqlCommand, SqlDataReader, BulkCopySimpleResultSet, TdsParserStateObject, out bool)

   at System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()

   at System.Data.SqlClient.SqlDataReader.get_MetaData()

   at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader, RunBehavior, string, bool, bool, bool)

   at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior, RunBehavior, bool, bool, int, out Task, bool, bool, SqlDataReader, bool)

   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior, RunBehavior, bool, string, TaskCompletionSource<object>, int, out Task, out bool, bool, bool)

   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior, RunBehavior, bool, string)

   at System.Data.SqlClient.SqlCommand.ExecuteScalar()

   at Altiris.NS.DataAccessLayer.DatabaseAbilities.ExecuteScalarInt(string, int, object[])

   at Altiris.NS.ContextManagement.Altiris.NS.ContextManagement.AdminDatabaseContext+<>c_DisplayClass28_0<>.<PerformTransactedDeadlockRetry>b_0(IDatabaseContext)

   at Altiris.Database.RetryActionRequest<>.Perform(bool)

   at Altiris.Database.DatabaseContext<>.PerformWithDeadlockRetryHelper(int, int, bool, Getter<IDatabaseContext>, Action<IDatabaseContext>, Action<DeadlockRetryArgs>, bool, string, string)

   at Altiris.NS.StandardItems.Purge.Constructs.PurgeProcessor<,>.TryPurgeCandidate(EPurgeProcessorMode, TRow, TEntity, string, int, string)

   at Altiris.NS.StandardItems.Purge.Constructs.Altiris.NS.StandardItems.Purge.Constructs.PurgeProcessor<,>+<>c_DisplayClass15_0<,>.<PurgeCandidate>b_0(int)

   at Altiris.NS.StandardItems.Purge.Constructs.PurgeProcessor<,>.PurgeRows(EPurgeProcessorMode, TRow, TEntity, string, Func<int,int>, int, int)

   at Altiris.NS.StandardItems.Purge.Constructs.PurgeProcessor<,>.PurgeCandidate(EPurgeProcessorMode, TRow, TEntity)

  at Altiris.NS.StandardItems.Purge.Constructs.PurgeProcessor<,>.PurgeCandidate(TRow, TEntity)

   at Altiris.NS.StandardItems.Purge.Constructs.InventoryDataClassHistoryPurgeProcessor.PurgeCandidate(RusDataClassRefreshRow, DataClass)

   at Altiris.NS.StandardItems.Purge.Constructs.PurgeProcessor<,>.PurgeCandidate(TRow)

SQL Exception details: code=102, class=15, hr=0x80131904, line=1

Exception logged from:

   at Altiris.Diagnostics.Logging.EventLog.ReportException(int, string, string, Exception, string)

   at Altiris.NS.StandardItems.Purge.Constructs.PurgeProcessor<,>.PurgeCandidate(TRow)

   at Altiris.NS.Logging.EventLogMeasureExtensions.Perform<T>(IMeasureOperation, ICollection<T>, Func<T,int>, string, string, string, string, int)

   at Altiris.NS.StandardItems.Purge.Constructs.PurgeProcessor<,>.Purge(IMeasureOperation)

   at Altiris.NS.StandardItems.Purge.Constructs.DataClassPurgeProcessor.Purge(IMeasureOperation)

   at Altiris.NS.StandardItems.Purge.Constructs.PurgeProcessor<,>.Purge(int, string, string)

   at Altiris.NS.StandardItems.Purge.HiddenPurgingMaintenanceItem.PerformPurge()

   at Altiris.NS.StandardItems.Purge.PurgeItem.OnSchedule(string)

   at Altiris.NS.Scheduling.ScheduleService.ProcessScheduleImpl(string, CodeProfiler, SecurityContext, Guid)

   at Altiris.NS.Scheduling.ScheduleService+<>c_DisplayClass0_0.<ProcessSchedule>b_0(SecurityContext)

   at Altiris.NS.Security.SecurityContext+<>c_DisplayClass46_0.<ExecuteAsOwner>b_1(SecurityContext)

   at Altiris.NS.Security.SecurityContext.ExecuteAs<T,TK>(EExecuteAs, TK, Func<TK,SecurityContext>, Func<SecurityContext,T>)

   at Altiris.NS.Scheduling.ScheduleService.ProcessSchedule(string)

   at Altiris.NS.Scheduling.ScheduleService.ProcessScheduleWithCleanup(string, bool)

   at Altiris.Diagnostics.RemoteControl.ScheduleServiceProxy.ProcessScheduleImpl(string, bool)

   at Altiris.Diagnostics.RemoteControl.ScheduleServiceProxy.ProcessScheduleThreadProc(object)

   at System.Threading.ExecutionContext.RunInternal(ExecutionContext, ContextCallback, object, bool)

   at System.Threading.ExecutionContext.Run(ExecutionContext, ContextCallback, object, bool)

   at System.Threading.ExecutionContext.Run(ExecutionContext, ContextCallback, object)

   at Altiris.Diagnostics.RemoteControl.ScheduleServiceProxy.ProcessSchedule(string, bool)

   at System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr, object[], object, out object[])

   at System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage)

   at System.Runtime.Remoting.Messaging.ServerObjectTerminatorSink.SyncProcessMessage(IMessage)

   at System.Runtime.Remoting.Messaging.ServerContextTerminatorSink.SyncProcessMessage(IMessage)

   at System.Runtime.Remoting.Channels.CrossContextChannel.SyncProcessMessageCallback(object[])

   at System.Runtime.Remoting.Channels.ChannelServices.DispatchMessage(IServerChannelSinkStack, IMessage, out IMessage)

   at System.Runtime.Remoting.Channels.BinaryServerFormatterSink.ProcessMessage(IServerChannelSinkStack, IMessage, ITransportHeaders, Stream, out IMessage, out ITransportHeaders, out Stream)

   at System.Runtime.Remoting.Channels.SoapServerFormatterSink.ProcessMessage(IServerChannelSinkStack, IMessage, ITransportHeaders, Stream, out IMessage, out ITransportHeaders, out Stream)

   at System.Runtime.Remoting.MetadataServices.SdlChannelSink.ProcessMessage(IServerChannelSinkStack, IMessage, ITransportHeaders, Stream, out IMessage, out ITransportHeaders, out Stream)

   at System.Runtime.Remoting.Channels.Tcp.TcpServerTransportSink.ServiceRequest(object)

   at System.Runtime.Remoting.Channels.SocketHandler.ProcessRequestNow()

   at System.Runtime.Remoting.Channels.SocketHandler.BeginReadMessageCallback(IAsyncResult)

   at System.Net.LazyAsyncResult.Complete(IntPtr)

   at System.Threading.ExecutionContext.RunInternal(ExecutionContext, ContextCallback, object, bool)

   at System.Threading.ExecutionContext.Run(ExecutionContext, ContextCallback, object, bool)

   at System.Threading.ExecutionContext.Run(ExecutionContext, ContextCallback, object)

   at System.Net.ContextAwareResult.Complete(IntPtr)

   at System.Net.LazyAsyncResult.ProtectedInvokeCallback(object, IntPtr)

   at System.Net.Sockets.BaseOverlappedAsyncResult.CompletionPortCallback(uint, uint, NativeOverlapped*)

   at System.Threading._IOCompletionCallback.PerformIOCompletionCallback(uint, uint, NativeOverlapped*)

-----------------------------------------------------------------------------------------------------

Date: 10/24/2024 3:57:25 PM, Tick Count: 437810140 (5.01:36:50.1400000), Size: 6.86 KB

Process: AeXSvc (23416), Thread ID: 38, Module: System.Data.dll

Priority: 1, Source: SqlConnection.OnError

Environment

ITMS 8.7.2

Cause

Known Issue

Resolution

This issue has been fixed in our ITMS 8.7.3 release and is documented in the Fixed Issues section of Release Notes:

Special symbols in custom dataclass name cause hidden purging maintenance task to fail.

A workaround is to remove the "-" hyphen or special characters for the custom dataclass(es).