Replication jobs reached 100% complete but reported failures due to broken data classes.
search cancel

Replication jobs reached 100% complete but reported failures due to broken data classes.

book

Article ID: 170181

calendar_today

Updated On:

Products

IT Management Suite

Issue/Introduction

Replication jobs were reaching 100% but failures were reported. The replication reports were unable to identify the names of the items that failed.

The only clue to the failure were two warnings in the SMP logs of the Child server replicating up to the parent SMP server:

Source: SourceReplicationDataClassProvider.ProcessOperation
Description: Replication failed for data class {11e09cec-6308-47f6-9187-e59a59e95706}. Replication Rule {98cf6225-5c57-db1d-04fb-da04e3624a60}. Exception: Altiris.NS.Exceptions.ReplicationException: Table name could not be resolved for DataClass '{11e09cec-6308-47f6-9187-e59a59e95706}'
   at Altiris.NS.Replication.Providers.DataClass.SourceReplicationDataClassProvider.<GetResourceDataContainers>d__1a.MoveNext()
   at Altiris.NS.Replication.Providers.DataClass.SourceReplicationDataClassProvider.ReplicateData(ReplicationJob jobItem, String jobId, String operationId, Guid dataClass, DataClassReplicationRule dataClassRule, ReplicationServersInfo serverInfo)
   at Altiris.NS.Replication.Providers.DataClass.SourceReplicationDataClassProvider.ProcessOperation(ReplicationJob jobItem, String jobId, ReplicationServersInfo serverInfo, DataClassReplicationRule dataClassRule, Guid dataClass, String operationId)

Source: SourceReplicationDataClassProvider.ProcessOperation
Description: Replication failed for data class {3d25f384-6f8b-4edf-ab26-2004377f161e}. Replication Rule {98cf6225-5c57-db1d-04fb-da04e3624a60}. Exception: Altiris.NS.Exceptions.ReplicationException: Table name could not be resolved for DataClass '{3d25f384-6f8b-4edf-ab26-2004377f161e}'
   at Altiris.NS.Replication.Providers.DataClass.SourceReplicationDataClassProvider.<GetResourceDataContainers>d__1a.MoveNext()
   at Altiris.NS.Replication.Providers.DataClass.SourceReplicationDataClassProvider.ReplicateData(ReplicationJob jobItem, String jobId, String operationId, Guid dataClass, DataClassReplicationRule dataClassRule, ReplicationServersInfo serverInfo)
   at Altiris.NS.Replication.Providers.DataClass.SourceReplicationDataClassProvider.ProcessOperation(ReplicationJob jobItem, String jobId, ReplicationServersInfo serverInfo, DataClassReplicationRule dataClassRule, Guid dataClass, String operationId)

Environment

Symantec Management Platform 7.6, 8.x

Cause

The log entries identified two data classes (in this case custom data classes) that were replicable at one time but could not be replicated because their table name could not be resolved.

For an unknown reason the data classes had gotten renamed to a blank name, and the data class name is what is used to determine the table name to query for rows to replicate up.  Since the name was blank this could not be done.

To test to see if the condition exists run the following SQL against the database as it will identify the GUID of a data class that cannot be replicated:

SELECT i.Guid, i.Name,  lr._eventTime as LastReplication, lr.StatusCode, lr.StatusText
FROM vItem i
JOIN Evt_NS_Object_Replication_Status lr on lr.LocalGuid = i.Guid

WHERE ((ClassGuid = '31ECB8A5-78DD-48E5-87D1-599140332734' -- Altiris.Inventory.ManageCustomDataClasses
  and (i.Attributes & 4) = 0
  and lr.StatusCode <> 0))
OR (lr.StatusCode = -2147212796 and lr.StatusText = 'Table name could not be resolved.')

order by lr._eventTime desc

Resolution

In this case, one of the data classes was broken and could not be found in the SMP console, but were still present in the database enough to cause the replication engine to try and send them up to the parent.

Do the following:

  1.  Plug the GUID of the data class into the following query and run it against the database of the Child SMP attempting to replicate it as this will set the data class to non replicable:

    Update Item SET Attributes = (Attributes + 4)
    WHERE Guid = '<data class GUID>' -- data class GUID

  2.  Delete the data class from the database and, if necessary, recreate it.