Observability
Custom property using a reserved SWIS name such as 'InstanceType' causes the Web Console to become inaccessible due to a SWIS schema load failure in SolarWinds Self-Hosted Platform
This article explains how to resolve a SolarWinds Information Service (SWIS) entity schema load failure caused by creating a node custom property with a reserved SWIS property name, such as InstanceType. The fault is introduced when the custom property is created, but it is most commonly discovered later, when the Configuration Wizard stalls at the Verifying that the SWIS service is available step.
First published date
Last published date
Overview
This article discusses an issue where a user-defined custom property causes the SolarWinds Information Service (SWIS) entity schema load to fail, which in turn makes the web console unavailable and causes the Configuration Wizard to stall.
It is important to note that SWIS itself starts and continues to run. It listens on its endpoint and accepts TCP connections normally, and certificate validation succeeds. It simply cannot answer any query, because it has no schema to answer from.
From SWISv3 log:
ERROR SolarWinds.InformationService.Core.SchemaLoader - Unknown error resolving schemas
System.ArgumentException: Property InstanceType is duplicated in entity Local.NCM.Nodes.
at SolarWinds.Data.Entity.SchemaModel.SchemaResolver.GetPropertiesForDynamicEntity(...)
at SolarWinds.Data.Entity.SchemaModel.SchemaResolver.HandleDynamicEntities(...)
INFO SolarWinds.InformationService.Core.SchemaLoader - Loaded schema files with 1 errors
From SWISv3 schema load error log:
["Unknown error resolving schemas: Property InstanceType is duplicated in entity Local.NCM.Nodes."]
Re-running of the Configuration Wizard leads it to hang at:
Product section
Cause
Every entity in SWIS inherits four properties from System.Entity: InstanceType, DisplayName, Description, and Uri. These names are reserved and cannot be reused by user-defined properties.
A custom property that reuses one of these names is invalid. When a node custom property named InstanceType exists, the SWIS schema resolver injects it into the dynamic node entity alongside the inherited property of the same name. The resolver rejects the entity as invalid, throws an ArgumentException, and abandons the entire schema load.
Resolution
To fix this issue, Remove the invalid InstanceType custom property, then re-run the Configuration Wizard.
- Take a full backup of the SolarWinds Platform database. The steps below permanently remove a custom property and all of its stored values.
- Use Microsoft SQL Server Management Studio (SSMS) on the SQL Server or from a machine with it installed.
- Run the query below:
-- Scripts are not supported under any SolarWinds support program or service.
-- Scripts are provided AS IS without warranty of any kind. SolarWinds further
-- disclaims all warranties including, without limitation, any implied warranties
-- of merchantability or of fitness for a particular purpose. The risk arising
-- out of the use or performance of the scripts and documentation stays with you.
-- In no event shall SolarWinds or anyone else involved in the creation,
-- production, or delivery of the scripts be liable for any damages whatsoever
-- (including, without limitation, damages for loss of business profits, business
-- interruption, loss of business information, or other pecuniary loss) arising
-- out of the use of or inability to use the scripts or documentation.
EXEC dbo.swsp_DropColumn @parSourceTable='NodesCustomProperties', @parColumnToBeDropped='InstanceType'
This drops the auto-created IX_NodesCustomProperties_InstanceType index along with the column.
- Run the query next:
-- Scripts are not supported under any SolarWinds support program or service.
-- Scripts are provided AS IS without warranty of any kind. SolarWinds further
-- disclaims all warranties including, without limitation, any implied warranties
-- of merchantability or of fitness for a particular purpose. The risk arising
-- out of the use or performance of the scripts and documentation stays with you.
-- In no event shall SolarWinds or anyone else involved in the creation,
-- production, or delivery of the scripts be liable for any damages whatsoever
-- (including, without limitation, damages for loss of business profits, business
-- interruption, loss of business information, or other pecuniary loss) arising
-- out of the use of or inability to use the scripts or documentation.
EXEC dbo.swsp_RecreateViewNodes
The Nodes view is generated from the physical custom property columns and still references the dropped column until it is rebuilt.
- Delete the leftover rows from CustomPropertyValues, CustomPropertyUsage, CustomPropertyMetadata
-- Scripts are not supported under any SolarWinds support program or service.
-- Scripts are provided AS IS without warranty of any kind. SolarWinds further
-- disclaims all warranties including, without limitation, any implied warranties
-- of merchantability or of fitness for a particular purpose. The risk arising
-- out of the use or performance of the scripts and documentation stays with you.
-- In no event shall SolarWinds or anyone else involved in the creation,
-- production, or delivery of the scripts be liable for any damages whatsoever
-- (including, without limitation, damages for loss of business profits, business
-- interruption, loss of business information, or other pecuniary loss) arising
-- out of the use of or inability to use the scripts or documentation.
DELETE FROM CustomPropertyValues WHERE name = 'instancetype'
DELETE FROM CustomPropertyUsage WHERE name = 'instancetype'
DELETE FROM CustomPropertyMetaData WHERE name = 'instancetype'
- Please re-run the following querries to verify:
-- Scripts are not supported under any SolarWinds support program or service.
-- Scripts are provided AS IS without warranty of any kind. SolarWinds further
-- disclaims all warranties including, without limitation, any implied warranties
-- of merchantability or of fitness for a particular purpose. The risk arising
-- out of the use or performance of the scripts and documentation stays with you.
-- In no event shall SolarWinds or anyone else involved in the creation,
-- production, or delivery of the scripts be liable for any damages whatsoever
-- (including, without limitation, damages for loss of business profits, business
-- interruption, loss of business information, or other pecuniary loss) arising
-- out of the use of or inability to use the scripts or documentation.
SELECT * FROM CustomPropertyValues WHERE Name='InstanceType'.
SELECT * FROM CustomPropertyUsage WHERE Name='InstanceType'.
SELECT * FROM CustomPropertyMetadata WHERE Name='InstanceType'.
- Using Solarwinds Platform Service Manager, start the Solarwinds Information Service only.