Error getting node URL, "Altiris.NS.Exceptions.AeXException: Unable to load the specified item"

Article:TECH39973  |  Created: 2005-09-28  |  Updated: 2005-11-29  |  Article URL http://www.symantec.com/docs/TECH39973
Article Type
Technical Solution


Issue



When clicking on a Task, the following error is shown:



Error when node clicked: Unable to load the specified item (GUID:{Guid of problem task})
The GUID will vary to what the GUID of the Task is.

The error in the a.log files shows as:
Date: Sep 28 14:29:37:001
Source: Altiris.NS.UI.CoreWebService
Description: Error getting node url: Altiris.NS.Exceptions.AeXException: Unable to load the specified item (GUID:{b68fe4bf-d423-4f40-9b3f-c945681ceede}) ---> System.OverflowException: Value was either too large or too small for an Int16.   at System.Int16.Parse(String s, NumberStyles style, IFormatProvider provider)   at Altiris.NS.StandardItems.SoftwareDelivery.AdvertisementItem.OnFromXml(XmlNode itemNode)   at Altiris.NS.SoftwareDelivery.AdvertisementItemEx.OnFromXml(XmlNode itemNode)   at Altiris.NS.ItemManagement.Item.Load(Guid itemGuid)   --- End of inner exception stack trace ---   at Altiris.NS.ItemManagement.Item.Load(Guid itemGuid)   at Altiris.NS.ItemManagement.Item.GetItem(Guid itemGuid)   at Altiris.NS.UI.ItemTreeBuilder.GetNodeUrl(String strNode, Hashtable args)   at Altiris.NS.UI.AeXConsole.GetNodeUrl(String strNode, Hashtable args)   at Altiris.NS.UI.CoreWebService.GetNodeUrl(Guid treeGuid, String nodeXPath, String url)

Environment



Notification Server 6.0
Software Delivery Solution 6.0, 6.1

Cause



When configuring a Software Delivery Task, note the field Warn User before running task - user can defer task for x minutes.
If the value placed into this field exceeds the allowed Integer limit of 16, this error will be produced. As a general rule, five or more characters will trigger this error.

Solution



The following steps will correct the problem.  The eventual fix will be to disallow users to enter invalid or out-of-range values into this field in a future version of Software Delivery Solution for Windows.
  1. Try to click on the corrupted task.  It will throw an error, referencing the GUID of the Task.
  2. Write down the GUID.  It also appears in the a.log files so you can copy it from there.
  3. Open up SQL Query Analyzer.
  4. Make sure the database context is the Altiris database.
  5. Select the Tools menu and click on Options.
  6. Click on the Results tab.
  7. Change the Maximum characters per column: to 2000 (Note: This value assumes this will cover all characters for the State column.  This may have to be adjusted based on what data populates this field).
  8. Click Apply and then OK.
  9. Hit <Ctrl + t> to change the result set to Text mode.
  10. Run the following query:
    SELECT State FROM Item WHERE Guid = '<Guid of the corrupted task>'
  11. From the results window, copy out the resulting text from below the ----- line and before the (1 row(s) affected).  For Example:
    <item>
      <packageGuid>{00000000-0000-0000-0000-000000000000}</packageGuid>
      <programGuid>{c72920c8-5ee6-436c-87ac-6bff3fed31b7}</programGuid>
      <displayName />
      <displayDescription />
      <priority>2</priority>
      <sourceSite>Unnamed</sourceSite>
      <validPeriod validDatesAreUTC="false" after="2005-09-28 00:00:00" />
      <clientSchedule allowIndependentExecution="true" allowScheduleRetry="false">
        <Schedule IndependentExecution="true">
          <Trigger Type="-1" Description="" />
        </Schedule>
      </clientSchedule>
      <statusEvents enabled="true" />
      <originalNS>jsserver</originalNS>
      <originatorType>NS</originatorType>
      <download useClientDefaults="true" option="always" multicast="Default" minDownloadSpeed="-1" minExecuteSpeed="-1" requiresUserActivation="false" notifyWhenAvailable="false" removeAfterRun="false" immediately="true" notifyBeforeExecution="true" maxExecutionDeferral="99999" />
      <RecurringSchedule>False</RecurringSchedule>
      <wakeOnLAN>False</wakeOnLAN>
      <tickle>False</tickle>
      <recovery snapshot="False" />
    </item>
  12. Search for the attribute "maxExecutionDeferral" in the above XML, it will show the large value which you have entered. Change it manually to some appropriate and acceptable value.  For Example:
    <item>
      <packageGuid>{00000000-0000-0000-0000-000000000000}</packageGuid>
      <programGuid>{c72920c8-5ee6-436c-87ac-6bff3fed31b7}</programGuid>
      <displayName />
      <displayDescription />
      <priority>2</priority>
      <sourceSite>Unnamed</sourceSite>
      <validPeriod validDatesAreUTC="false" after="2005-09-28 00:00:00" />
      <clientSchedule allowIndependentExecution="true" allowScheduleRetry="false">
        <Schedule IndependentExecution="true">
          <Trigger Type="-1" Description="" />
        </Schedule>
      </clientSchedule>
      <statusEvents enabled="true" />
      <originalNS>jsserver</originalNS>
      <originatorType>NS</originatorType>
      <download useClientDefaults="true" option="always" multicast="Default" minDownloadSpeed="-1" minExecuteSpeed="-1" requiresUserActivation="false" notifyWhenAvailable="false" removeAfterRun="false" immediately="true" notifyBeforeExecution="true" maxExecutionDeferral="60" />
      <RecurringSchedule>False</RecurringSchedule>
      <wakeOnLAN>False</wakeOnLAN>
      <tickle>False</tickle>
      <recovery snapshot="False" />
    </item>
  13. Execute the following Query in SQL Query Analyzer:
    UPDATE Item SET State = '<The XML which you have modified in stpe #3 above>' WHERE Guid = '<Corrupted task Guid>'
    For Example:
    UPDATE Item SET State = '<item>
      <packageGuid>{00000000-0000-0000-0000-000000000000}</packageGuid>
      <programGuid>{c72920c8-5ee6-436c-87ac-6bff3fed31b7}</programGuid>
      <displayName />
      <displayDescription />
      <priority>2</priority>
      <sourceSite>Unnamed</sourceSite>
      <validPeriod validDatesAreUTC="false" after="2005-09-28 00:00:00" />
      <clientSchedule allowIndependentExecution="true" allowScheduleRetry="false">
        <Schedule IndependentExecution="true">
          <Trigger Type="-1" Description="" />
        </Schedule>
      </clientSchedule>
      <statusEvents enabled="true" />
      <originalNS>jsserver</originalNS>
      <originatorType>NS</originatorType>
      <download useClientDefaults="true" option="always" multicast="Default" minDownloadSpeed="-1" minExecuteSpeed="-1" requiresUserActivation="false" notifyWhenAvailable="false" removeAfterRun="false" immediately="true" notifyBeforeExecution="true" maxExecutionDeferral="60" />
      <RecurringSchedule>False</RecurringSchedule>
      <wakeOnLAN>False</wakeOnLAN>
      <tickle>False</tickle>
      <recovery snapshot="False" />
    </item>'
    WHERE Guid = '<Guid from corrupted Task>'
  14. This will clear the corruption and allow this node/task to be selected and edited.

Legacy ID



4170


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


Terms of use for this information are found in Legal Notices