Saving or selecting a task may cause a 503 error in the console and cause the Classic App Pool to stop/crash on the NS

Article:TECH172231  |  Created: 2011-10-19  |  Updated: 2011-11-09  |  Article URL http://www.symantec.com/docs/TECH172231
Article Type
Technical Solution


Issue



 When you save, or select a task, you may have a long delay, then a 503 error saying the page is not available.  Nothing in the console works after this.  Further checking will reveal that the Classic App Pool has crashed/stopped in IIS.  Restarting the App Pool allows you back into the console, until you select this specific task.


Environment



 SMP 7.0, 7.1, 7.1 SP1 (Slated to be corrected in 7.1 SP2)


Cause



 This is caused by a circular reference in a Task Job.  You can quickly re-create this by creating a new Client job, and then adding an existing "task" and selecting the job you just created to be the first task.  This is allowed at this time, and you will see if on the screen as running itself.  As soon as you select Save though, the console crashes and you can no longer select that task.


Solution



 The net effect is you have to remove the circular reference.  There are several manual ways to do this, but all in SQL.  One is to simply modify the state column for that version of the task to use a different task.  Another way is to remove the reference and the versions.

The latter method has been somewhat automated by using the SQL below (cut/paste directly into SQL against the CMDB DB for this instance of SMP):

/* Begin SQL

 

     1) run the query.  

        You should get 2 results, the second indicating a lack of a circular reference.

     2) select the GUID (Parent or Child) from the appropriate matching result

        of your error job and copy to the clipboard. 

     3) Paste the GUID over the "bad" guid of all 9999's below.

     4) Re-run the query.  That should do it.  Check the task to ensure it's OK.

       4a) To check your work, simply re-run the query again.  You should get an

           indication that the GUID no longer matches a circular reference.

*/

Go

 

select i.name, ir.* 

from ItemReference ir

  Join vItem i on i.Guid = ir.ChildItemGuid

where ChildItemGuid = ParentItemGuid

 

DECLARE @CircRefJob varchar(36)

Select @CircRefJob = '99999999-9999-9999-9999-999999999999'

 

If (@CircRefJob in (

select ChildItemGuid from ItemReference where ChildItemGuid = ParentItemGuid

))

Begin

 

Delete from ItemReference where ChildItemGuid = @CircRefJob

 

Delete from ItemVersionData where VersionGuid in

(

Select iv.VersionGuid from

ItemVersions iv join

(

select ItemGuid, max(Version) Highest

from ItemVersions

group by ItemGuid

) iv2 on iv.ItemGuid = iv2.ItemGuid

and iv.Version = iv2.Highest

Where iv.ItemGuid = @CircRefJob

)

Delete from ItemVersions where VersionGuid in

(

Select iv.VersionGuid from

ItemVersions iv join

(

select ItemGuid, max(Version) Highest

from ItemVersions

group by ItemGuid

) iv2 on iv.ItemGuid = iv2.ItemGuid

and iv.Version = iv2.Highest

Where iv.ItemGuid = @CircRefJob

)

End

Else

Begin

Select 'Guid does not match a circular reference'

End

/* end SQL */




Article URL http://www.symantec.com/docs/TECH172231


Terms of use for this information are found in Legal Notices