Symptoms
Agents no longer check-in successfully after adding a patch task to the agent policy in which a service pack group is used.
Within the ST.ServiceHost.managed log file you will see logging similar to this:
2014-11-16T15:23:17.4617804Z 0073 E AgentStateService.cs:298|Failed to synchronize agent '7744157F9C758D8C31B9802ED9C66B726E34A0C3@41898420-8f7c-40f6-965a-b534f24cbcc3': System.ArgumentException: Exception of type 'System.ArgumentException' was thrown.
Parameter name: approvedServicePackName
at ST.Engines.Policy.Capabilities.Patch.ProductServicePack..ctor(Int32 productId, Int32 approvedOrdinal, String approvedServicePackName, Boolean useLatest)
at ST.Agent.Client.Policy.PatchCapabilityAdapter.CreateServicePackDeploymentOptions(PatchTask task)
at ST.Agent.Client.Policy.PatchCapabilityAdapter.CreatePatchScanOperation(PatchTask task)
at ST.Agent.Client.Policy.PatchCapabilityAdapter.CreateScheduledPatchOperations(Policy policyData)
at ST.Agent.Client.Policy.PatchCapabilityAdapter.Create(Policy policyData)
at ST.Agent.Client.Policy.PolicyAdapter.CreateCapabilities(Policy policyData, SummaryDetailCache cache)
at ST.Agent.Client.Policy.PolicyAdapter.Create(Policy policyData)
at ST.Services.Agent.Protect.UpdateAgentStateBase.GetSerializedPolicy(Policy requestedPolicy, Boolean includeLegacySignature)
at ST.Services.Agent.Protect.UpdateAgentState.<GetAgentStateAsync>d__0.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult()
at ST.Services.Agent.Protect.AgentServiceStore.<RetrievePolicyPerAgentAsync>d__4.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult()
at ST.Services.Agent.V81.AgentStateService.<SynchronizeInternalAsync>d__18.MoveNext()
Cause
Some possible corruption of data for service pack groups has caused fields within the selected service pack group to be left blank. When these fields are left blank it makes the agent policy invalid.
Example of what you might see when you open the service pack group being used:
Generally these fields are filled in by default.
Resolution
Shavlik has created a defect for this issue so that this behavior can be prevented in a future release of Protect.
Workaround:
Within the service pack group being used - ensure that there is a selection chosen for any fields coming up empty. Make sure to check all tabs of the service pack group.
Additional Information
From Shavlik Protect Help Documentation:
Affected Product(s)
Shavlik Protect 9.1.x
Shavlik Protect 9.0.x