search cancel

"Resource failed to load" appears when selecting a computer from the computer pane in 8.6

book

Article ID: 214703

calendar_today

Updated On:

Products

Inventory Solution Client Management Suite IT Management Suite

Issue/Introduction

When you try to view system information for a managed client that has a Terabyte hard drive  in the 'Computers' pane the right-side panel fails to load any data and instead states "computer resource failed to load".  

When looking at the logs we see this error:

MainController failure.

Arithmetic overflow error converting numeric to data type numeric.
   [System.Data.SqlClient.SqlException @ .Net SqlClient Data Provider]
   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
   at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
   at System.Data.SqlClient.SqlDataReader.TryHasMoreRows(Boolean& moreRows)
   at System.Data.SqlClient.SqlDataReader.TryReadInternal(Boolean setTimeout, Boolean& more)
   at System.Data.SqlClient.SqlDataReader.Read()
   at System.Data.Common.DataAdapter.FillLoadDataRow(SchemaMapping mapping)
   at System.Data.Common.DataAdapter.FillFromReader(DataSet dataset, DataTable datatable, String srcTable, DataReaderContainer dataReader, Int32 startRecord, Int32 maxRecords, DataColumn parentChapterColumn, Object parentChapterValue)
   at System.Data.Common.DataAdapter.Fill(DataTable[] dataTables, IDataReader dataReader, Int32 startRecord, Int32 maxRecords)
   at System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
   at System.Data.Common.DbDataAdapter.Fill(DataTable[] dataTables, Int32 startRecord, Int32 maxRecords, IDbCommand command, CommandBehavior behavior)
   at System.Data.Common.DbDataAdapter.Fill(DataTable dataTable)
   at Altiris.NS.DataAccessLayer.Implementation.Altiris_Inventory_DALInvDataAccess.GetDriveDetails(Guid ResourceGuid)
   at Symantec.ActivityCenter.Api.Models.Computer.ComputerHardwareProperties.GetInventoryDrivesSection(Guid resourceId)
   at Symantec.ActivityCenter.Api.Models.Computer.ComputerHardwareProperties.GetComputerResourceHardwareProperties(Guid resourceId)
   at Symantec.ActivityCenter.Api.Models.Computer.ComputerResource.GetComputerResource(Guid resourceId)
   at Symantec.ActivityCenter.Api.Helpers.ComputerHelper.GetComputerResource(Guid id)
   at Symantec.ActivityCenter.Api.Controllers.MainController.GetComputerResource(Guid id)
   at lambda_method(Closure , Object , Object[] )
   at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>c__DisplayClass6_2.<GetExecutor>b__2(Object instance, Object[] methodParameters)
   at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpControllerContext controllerContext, IDictionary`2 arguments, CancellationToken cancellationToken)
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Web.Http.Controllers.ApiControllerActionInvoker.<InvokeActionAsyncCore>d__1.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Web.Http.Controllers.ActionFilterResult.<ExecuteAsync>d__5.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Web.Http.Controllers.ExceptionFilterResult.<ExecuteAsync>d__6.MoveNext()

SQL Exception details: code=8115, line=5, procedure=sp_Inv_HW_GetDriveDetails

Exception logged from: 
   at Symantec.ActivityCenter.Api.Controllers.ApiControllerExceptionHandlerAttribute.OnException(System.Web.Http.Filters.HttpActionExecutedContext)
   at System.Web.Http.Filters.ExceptionFilterAttribute.OnExceptionAsync(System.Web.Http.Filters.HttpActionExecutedContext, System.Threading.CancellationToken)
   at System.Web.Http.Filters.ExceptionFilterAttribute+<ExecuteExceptionFilterAsyncCore>d__3.MoveNext()
   at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start<TStateMachine>(TStateMachine&)
   at System.Web.Http.Filters.ExceptionFilterAttribute.ExecuteExceptionFilterAsyncCore(System.Web.Http.Filters.HttpActionExecutedContext, System.Threading.CancellationToken)
   at System.Web.Http.Filters.ExceptionFilterAttribute.System.Web.Http.Filters.IExceptionFilter.ExecuteExceptionFilterAsync(System.Web.Http.Filters.HttpActionExecutedContext, System.Threading.CancellationToken)
   at System.Web.Http.Controllers.ExceptionFilterResult+<ExecuteAsync>d__6.MoveNext()
   at System.Runtime.CompilerServices.AsyncTaskMethodBuilder<TResult>.Start<TStateMachine>(TStateMachine&)
   at System.Web.Http.Controllers.ExceptionFilterResult.ExecuteAsync(System.Threading.CancellationToken)
   at System.Web.Http.ApiController.ExecuteAsync(System.Web.Http.Controllers.HttpControllerContext, System.Threading.CancellationToken)
   at System.Web.Http.Dispatcher.HttpControllerDispatcher+<SendAsync>d__15.MoveNext()
   at System.Runtime.CompilerServices.AsyncTaskMethodBuilder<TResult>.Start<TStateMachine>(TStateMachine&)
   at System.Web.Http.Dispatcher.HttpControllerDispatcher.SendAsync(System.Net.Http.HttpRequestMessage, System.Threading.CancellationToken)
   at System.Net.Http.HttpMessageInvoker.SendAsync(System.Net.Http.HttpRequestMessage, System.Threading.CancellationToken)
   at System.Web.Http.Dispatcher.HttpRoutingDispatcher.SendAsync(System.Net.Http.HttpRequestMessage, System.Threading.CancellationToken)
   at System.Net.Http.DelegatingHandler.SendAsync(System.Net.Http.HttpRequestMessage, System.Threading.CancellationToken)
   at Symantec.ActivityCenter.Api.Controllers.ApiControllerAntiForgeryHandler.SendAsync(System.Net.Http.HttpRequestMessage, System.Threading.CancellationToken)
   at System.Net.Http.DelegatingHandler.SendAsync(System.Net.Http.HttpRequestMessage, System.Threading.CancellationToken)
   at System.Web.Http.HttpServer+<SendAsync>d__24.MoveNext()
   at System.Runtime.CompilerServices.AsyncTaskMethodBuilder<TResult>.Start<TStateMachine>(TStateMachine&)
   at System.Web.Http.HttpServer.SendAsync(System.Net.Http.HttpRequestMessage, System.Threading.CancellationToken)
   at System.Net.Http.HttpMessageInvoker.SendAsync(System.Net.Http.HttpRequestMessage, System.Threading.CancellationToken)
   at System.Web.Http.WebHost.HttpControllerHandler+<ProcessRequestAsyncCore>d__12.MoveNext()
   at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start<TStateMachine>(TStateMachine&)
   at System.Web.Http.WebHost.HttpControllerHandler.ProcessRequestAsyncCore(System.Web.HttpContextBase)
   at System.Web.TaskAsyncHelper.BeginTask(System.Func<System.Threading.Tasks.Task>, AsyncCallback, Object)
   at System.Web.HttpApplication+CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   at System.Web.HttpApplication.ExecuteStepImpl(System.Web.HttpApplication+IExecutionStep)
   at System.Web.HttpApplication.ExecuteStep(System.Web.HttpApplication+IExecutionStep, Boolean&)
   at System.Web.HttpApplication+PipelineStepManager.ResumeSteps(Exception)
   at System.Web.HttpApplication.BeginProcessRequestNotification(System.Web.HttpContext, AsyncCallback)
   at System.Web.HttpRuntime.ProcessRequestNotificationPrivate(System.Web.Hosting.IIS7WorkerRequest, System.Web.HttpContext)
   at System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper(IntPtr, IntPtr, IntPtr, Int32)
   at System.Web.Hosting.PipelineRuntime.ProcessRequestNotification(IntPtr, IntPtr, IntPtr, Int32)
   at System.Web.Hosting.UnsafeIISMethods.MgdIndicateCompletion(IntPtr, System.Web.RequestNotificationStatus&)
   at System.Web.Hosting.UnsafeIISMethods.MgdIndicateCompletion(IntPtr, System.Web.RequestNotificationStatus&)
   at System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper(IntPtr, IntPtr, IntPtr, Int32)
   at System.Web.Hosting.PipelineRuntime.ProcessRequestNotification(IntPtr, IntPtr, IntPtr, Int32)

User [xxxxxxx]

HTTP [GET]: http://localhost/altiris/activitycenter/api/computerresources/c7d45a3e-177e-4480-a6d6-e88cda4d5a36
 ip: [::1]; languages: [en-US];
 timings: [[R] 00:00:00.8441660(W: 00:00:00.0039966)];
 response: [200 OK]; x-smp-nsversion: [8.6.1119.0];

-----------------------------------------------------------------------------------------------------
Date: 4/26/2021 2:42:33 PM, Tick Count: 219430796 (2.12:57:10.7960000), Host Name: xxxxxxxxx, Size: 8.80 KB
Process: w3wp (20088), Thread ID: 109, Module: Symantec.ActivityCenter.Api.dll
Priority: 1, Source: Symantec.ActivityCenter.Api.Controllers.ApiControllerExceptionHandlerAttribute.OnException

Cause

There are not enough characters specified for a decimal cast in RMV_HW_Drives, which is used in sp_Inv_HW_GetDriveDetails.

 

 

Resolution

Fix will be included with the next release update, 8.6 RU1

The workaround is to update RMV_HW_Drives by changing the two casts to decimal to 12,2 from 10,2 like this:

***Backup your database prior to implementing this workaround***

  1. In SQL Management Studio, navigate to Databases > Views > RMV_HW_Drives.
  2. Right click RMV_HW_Drives and select Script View as > ALTER To > New Query Editor Window
  3. Locate the two lines that include "AS DECIMAL (10, 2)"
  4. Change both lines to say "AS DECIMAL (12, 2)"
  5. Click Execute in the menu bar to write the changes

 

Alterantively, run this query in SQL Management Studio but ensure the correct database for your environment name is used in the first line:

USE [Symantec_CMDB]  --Change this if not using the default database name
GO

/****** Object:  View [dbo].[RMV_HW_Drives]    Script Date: 5/10/2021 3:58:17 PM ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

ALTER VIEW [dbo].[RMV_HW_Drives]
            AS
            SELECT _ResourceGuid,
            [Name],
            [Description],
            ISNULL (CAST (CAST ([Size (Bytes)] / (1024.0 * 1024.0) AS DECIMAL (12,2)) AS NVARCHAR (MAX)),'--') [Size (MB)],
            ISNULL (CAST (CAST ([Free Space (Bytes)] / (1024.0 * 1024.0) AS DECIMAL (12,2)) AS NVARCHAR (MAX)),'--') [Free Space (MB)],
            CASE WHEN [Logical Disk Type] = 1 THEN 'No Root Directory'
              WHEN [Logical Disk Type] = 2 THEN 'Removable Disk'
              WHEN [Logical Disk Type] = 3 THEN 'Local Disk'
              WHEN [Logical Disk Type] = 4 THEN 'Network Drive'
              WHEN [Logical Disk Type] = 5 THEN 'Compact Disk'
              WHEN [Logical Disk Type] = 6 THEN 'RAM Disk'
              ELSE 'Unknown' END [Drive Type],
            ISNULL ([File System],'--') [File System]
            FROM dbo.vHWLogicalDisk
GO