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 |
Problem
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









Thank you.