1

I am getting an error in the notification panel saying Unable to load the list of capabilites when I click on the Live Environment Id in the Topology Management.

When I checked all the functioanlity is working fine. The publishing works perfectly in Live. Also the Discovery registration tool is fetching all the roles in the command window. enter image description here

Error Message:

at Tridion.Web.UI.Models.CME.TopologyManagerImpl.GetListCapabilities(String cdEnvironmentId) at Tridion.Web.UI.Models.CME.TopologyManager.GetListCapabilities(String cdEnvironmentId) at SyncInvokeGetListCapabilities(Object , Object[] , Object[] ) at System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs) at Tridion.Web.UI.Core.Extensibility.DataExtenderOperationInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs) at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc) at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc) at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage11(MessageRpc& rpc) at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)

Also, the Staging Environment Id is not throwing such error.

The only change between staging and Live environment is that Live discovery service has been mapped with two deployers using Mirror Strategy.

I am not able to find any log related to this neither in Event Viewer nor in content delivery Logs. Also, I checked the SDL Logs (..\SDL Web\log) for topology but nothing logged over there. Please help.

1
  • 1
    Can you include the output of the Discovery Service registration tool (java -jar discovery-registration.jar read) for the Live environment? Oct 9, 2017 at 18:26

3 Answers 3

1

This seems to be a problem with the Discovery Service client used by the CME. Please report this to SDL Customer Support.

0

This isn't an answer but more information on this problem.

When inspecting the requests, we can see the full error message

   {
   "ExceptionDetail":{
      "HelpLink":null,
      "InnerException":{
         "HelpLink":null,
         "InnerException":{
            "HelpLink":null,
            "InnerException":{
               "HelpLink":null,
               "InnerException":{
                  "HelpLink":null,
                  "InnerException":null,
                  "Message":"A type named 'Tridion.WebDelivery.Platform.DestinationURL' could not be resolved by the model. When a model is available, each type name must resolve to a valid type.",
                  "StackTrace":"   at Microsoft.OData.Core.ReaderValidationUtils.VerifyPayloadTypeDefined(String payloadTypeName, IEdmType payloadType)\u000d\u000a   at Microsoft.OData.Core.ReaderValidationUtils.ResolveAndValidateNonPrimitiveTargetType(EdmTypeKind expectedTypeKind, IEdmTypeReference expectedTypeReference, EdmTypeKind payloadTypeKind, IEdmType payloadType, String payloadTypeName, IEdmModel model, ODataMessageReaderSettings messageReaderSettings)\u000d\u000a   at Microsoft.OData.Core.ReaderValidationUtils.ResolvePayloadTypeNameAndComputeTargetType(EdmTypeKind expectedTypeKind, IEdmType defaultPrimitivePayloadType, IEdmTypeReference expectedTypeReference, String payloadTypeName, IEdmModel model, ODataMessageReaderSettings messageReaderSettings, Func`1 typeKindFromPayloadFunc, EdmTypeKind& targetTypeKind, SerializationTypeNameAnnotation& serializationTypeNameAnnotation)\u000d\u000a   at Microsoft.OData.Core.JsonLight.ODataJsonLightPropertyAndValueDeserializer.ReadNonEntityValueImplementation(String payloadTypeName, IEdmTypeReference expectedTypeReference, DuplicatePropertyNamesChecker duplicatePropertyNamesChecker, CollectionWithoutExpectedTypeValidator collectionValidator, Boolean validateNullValue, Boolean isTopLevelPropertyValue, Boolean insideComplexValue, String propertyName, Nullable`1 isDynamicProperty)\u000d\u000a   at Microsoft.OData.Core.JsonLight.ODataJsonLightPropertyAndValueDeserializer.ReadCollectionValue(IEdmCollectionTypeReference collectionValueTypeReference, String payloadTypeName, SerializationTypeNameAnnotation serializationTypeNameAnnotation)\u000d\u000a   at Microsoft.OData.Core.JsonLight.ODataJsonLightPropertyAndValueDeserializer.ReadNonEntityValueImplementation(String payloadTypeName, IEdmTypeReference expectedTypeReference, DuplicatePropertyNamesChecker duplicatePropertyNamesChecker, CollectionWithoutExpectedTypeValidator collectionValidator, Boolean validateNullValue, Boolean isTopLevelPropertyValue, Boolean insideComplexValue, String propertyName, Nullable`1 isDynamicProperty)\u000d\u000a   at Microsoft.OData.Core.JsonLight.ODataJsonLightEntryAndFeedDeserializer.ReadOpenProperty(IODataJsonLightReaderEntryState entryState, String propertyName, Boolean propertyWithValue)\u000d\u000a   at Microsoft.OData.Core.JsonLight.ODataJsonLightEntryAndFeedDeserializer.ReadUndeclaredProperty(IODataJsonLightReaderEntryState entryState, String propertyName, Boolean propertyWithValue)\u000d\u000a   at Microsoft.OData.Core.JsonLight.ODataJsonLightEntryAndFeedDeserializer.ReadEntryPropertyWithValue(IODataJsonLightReaderEntryState entryState, String propertyName)\u000d\u000a   at Microsoft.OData.Core.JsonLight.ODataJsonLightEntryAndFeedDeserializer.<>c__DisplayClass2.<ReadEntryContent>b__0(PropertyParsingResult propertyParsingResult, String propertyName)\u000d\u000a   at Microsoft.OData.Core.JsonLight.ODataJsonLightDeserializer.ProcessProperty(DuplicatePropertyNamesChecker duplicatePropertyNamesChecker, Func`2 readPropertyAnnotationValue, Action`2 handleProperty)\u000d\u000a   at Microsoft.OData.Core.JsonLight.ODataJsonLightEntryAndFeedDeserializer.ReadEntryContent(IODataJsonLightReaderEntryState entryState)\u000d\u000a   at Microsoft.OData.Core.JsonLight.ODataJsonLightReader.ReadEntryStart(DuplicatePropertyNamesChecker duplicatePropertyNamesChecker, SelectedPropertiesNode selectedProperties)\u000d\u000a   at Microsoft.OData.Core.JsonLight.ODataJsonLightReader.ReadAtFeedStartImplementationSynchronously()\u000d\u000a   at Microsoft.OData.Core.ODataReaderCore.ReadImplementation()\u000d\u000a   at Microsoft.OData.Core.ODataReaderCore.InterceptException[T](Func`1 action)\u000d\u000a   at Microsoft.OData.Client.Materialization.ODataReaderWrapper.Read()\u000d\u000a   at Microsoft.OData.Client.Materialization.FeedAndEntryMaterializerAdapter.TryRead()",
                  "Type":"Microsoft.OData.Core.ODataException"
               },
               "Message":"A type named 'Tridion.WebDelivery.Platform.DestinationURL' could not be resolved by the model. When a model is available, each type name must resolve to a valid type.",
               "StackTrace":"   at Microsoft.OData.Client.Materialization.FeedAndEntryMaterializerAdapter.TryRead()\u000d\u000a   at Microsoft.OData.Client.Materialization.FeedAndEntryMaterializerAdapter.TryStartReadFeedOrEntry()\u000d\u000a   at Microsoft.OData.Client.Materialization.FeedAndEntryMaterializerAdapter.TryReadEntry(MaterializerEntry& entry)\u000d\u000a   at Microsoft.OData.Client.Materialization.FeedAndEntryMaterializerAdapter.<LazyReadEntries>d__0.MoveNext()\u000d\u000a   at Microsoft.OData.Client.Materialization.FeedAndEntryMaterializerAdapter.Read()\u000d\u000a   at Microsoft.OData.Client.Materialization.ODataEntityMaterializer.ReadImplementation()\u000d\u000a   at Microsoft.OData.Client.MaterializeAtom.MoveNextInternal()\u000d\u000a   at Microsoft.OData.Client.MaterializeAtom.MoveNext()\u000d\u000a   at System.Linq.Enumerable.<CastIterator>d__94`1.MoveNext()\u000d\u000a   at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source)\u000d\u000a   at Microsoft.OData.Client.DataServiceQueryProvider.ReturnSingleton[TElement](Expression expression)\u000d\u000a   at Tridion.Web.UI.Models.CME.TopologyManagerImpl.GetListCapabilities(String cdEnvironmentId)",
               "Type":"System.InvalidOperationException"
            },
            "Message":"A type named 'Tridion.WebDelivery.Platform.DestinationURL' could not be resolved by the model. When a model is available, each type name must resolve to a valid type.",
            "StackTrace":null,
            "Type":"Tridion.TopologyManager.Client.TopologyManagerClient+DataServiceException"
         },
         "Message":"Unable to connect to the Discovery Service",
         "StackTrace":null,
         "Type":"System.Exception"
      },
      "Message":"Unable to load the list of capabilites",
      "StackTrace":"   at Tridion.Web.UI.Models.CME.TopologyManagerImpl.GetListCapabilities(String cdEnvironmentId)\u000d\u000a   at Tridion.Web.UI.Models.CME.TopologyManager.GetListCapabilities(String cdEnvironmentId)\u000d\u000a   at SyncInvokeGetListCapabilities(Object , Object[] , Object[] )\u000d\u000a   at System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs)\u000d\u000a   at Tridion.Web.UI.Core.Extensibility.DataExtenderOperationInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs)\u000d\u000a   at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc)\u000d\u000a   at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc)\u000d\u000a   at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage11(MessageRpc& rpc)\u000d\u000a   at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)",
      "Type":"System.Exception"
   },
   "ExceptionType":"System.Exception",
   "Message":"Unable to load the list of capabilites",
   "StackTrace":"   at Tridion.Web.UI.Models.CME.TopologyManagerImpl.GetListCapabilities(String cdEnvironmentId)\u000d\u000a   at Tridion.Web.UI.Models.CME.TopologyManager.GetListCapabilities(String cdEnvironmentId)\u000d\u000a   at SyncInvokeGetListCapabilities(Object , Object[] , Object[] )\u000d\u000a   at System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs)\u000d\u000a   at Tridion.Web.UI.Core.Extensibility.DataExtenderOperationInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs)\u000d\u000a   at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc)\u000d\u000a   at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc)\u000d\u000a   at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage11(MessageRpc& rpc)\u000d\u000a   at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)"
}

The discovery service url can be opened from the server that hosts the CM (so it doesn't seem to be a problem with closed ports or wrong ip addresses/hostnames.

The output of the registration tool is this :

2017-10-10 12:14:45,914 INFO  Main - Result of tool execution is:
[ {
  "Capability" : "com.sdl.web.discovery.datalayer.model.ContentServiceCapability",
  "id" : "DefaultContentService",
  "lastUpdateTime" : 1507560195277,
  "uri" : "http://*********:9181/content.svc"
}, {
  "Capability" : "com.sdl.web.discovery.datalayer.model.DeployerCapability",
  "id" : "DefaultDeployer",
  "lastUpdateTime" : 1507553520202,
  "strategy" : "MIRROR",
  "uri" : "http://*********:9184/httpupload",
  "uris" : [ "java.util.ArrayList", [ {
    "uri" : "http://*********:9184/httpupload",
    "destinationName" : "ProdDep1"
  }, {
    "uri" : "http://*********:9184/httpupload",
    "destinationName" : "ProdDep2"
  } ] ],
  "extensionProperties" : [ "java.util.ArrayList", [ {
    "key" : "encoding",
    "value" : "UTF-8"
  }, {
    "key" : "undo.enabled",
    "value" : "false"
  } ] ]
}, {
  "Capability" : "com.sdl.web.discovery.datalayer.model.WebCapability",
  "id" : "DefaultWeb",
  "lastUpdateTime" : 1507629031691
}, {
  "Capability" : "com.sdl.web.discovery.datalayer.model.ContextServiceCapability",
  "id" : "DefaultContextService",
  "lastUpdateTime" : 1507560195385,
  "uri" : "http://*********:9187/context.svc"
}, {
  "Capability" : "com.sdl.web.discovery.datalayer.model.ContextualImageDeliveryCapability",
  "id" : "DefaultContextualImageDelivery",
  "lastUpdateTime" : 1507560686209,
  "uri" : "http://********:9188/cid"
}, {
  "Capability" : "com.sdl.web.discovery.datalayer.model.TokenServiceCapability",
  "id" : "DefaultTokenService",
  "lastUpdateTime" : 1507562957588,
  "uri" : "http://*******:9182/token.svc"
} ]

UPDATE It does seem to have something to do with the deployer that's set as "MIRRORED". We removed all capabilities (except for token capability) and than the list did display correctly. We added some more capabilities one by one, and from the moment we added the deployer capability, the error reappeared.

Could this be a bug in the topology manager client ? Or is there something wrong with the way we configured the mirroring deployers ?

0

Encountered the same error behavior in the Topology Managent UI in 8.5.

This error seems to have no impact on functionality other than not displaying the available capabilities for the selected CD Environment in the UI. Transporting publish packages to the configured deployers works as expected and deployment is handled correctly by each of them. The publish transaction reports correctly the publishing process details for each deployer.

The UI error occurs when the DeployerCapability role's Strategy attribute is set to MIRROR. The client simply cannot deserialize the message because the type Tridion.WebDelivery.Platform.DestinationURL does not exist in the generated OData client proxy.

Partial message structure with DEFAULT strategy (single deployer)

<metadata:properties>
  <data:id>DefaultDeployer</data:id>
  <data:LastUpdateTime metadata:type="Int64">1534518154795</data:LastUpdateTime>
  <data:strategy>DEFAULT</data:strategy>
  <data:URI>http://localhost:8083/httpupload</data:URI>
  <data:URIs metadata:type="#Collection(Tridion.WebDelivery.Platform.DestinationURL)"></data:URIs>
  <data:ExtensionProperties metadata:type="#Collection(Tridion.WebDelivery.Platform.DeployerKeyValuePair)">
    <metadata:element>
      <data:Key>encoding</data:Key>
      <data:Value>UTF-8</data:Value>
    </metadata:element>
  </data:ExtensionProperties>
</metadata:properties>

Partial message structure with MIRROR strategy (three deployers)

<metadata:properties>
    <data:id>DefaultDeployer</data:id>
    <data:LastUpdateTime metadata:type="Int64">1534449114822</data:LastUpdateTime>
    <data:strategy>MIRROR</data:strategy>
    <data:URI>http://localhost:8083/httpupload</data:URI>
    <data:URIs metadata:type="#Collection(Tridion.WebDelivery.Platform.DestinationURL)">
        <metadata:element>
            <data:Uri>http://localhost:8083/httpupload</data:Uri>
            <data:DestinationName>Deployer00</data:DestinationName>
        </metadata:element>
        <metadata:element>
            <data:Uri>http://localhost:8283/httpupload</data:Uri>
            <data:DestinationName>Deployer02</data:DestinationName>
        </metadata:element>
        <metadata:element>
            <data:Uri>http://localhost:8183/httpupload</data:Uri>
            <data:DestinationName>Deployer01</data:DestinationName>
        </metadata:element>
    </data:URIs>
    <data:ExtensionProperties metadata:type="#Collection(Tridion.WebDelivery.Platform.DeployerKeyValuePair)">
        <metadata:element>
            <data:Key>encoding</data:Key>
            <data:Value>UTF-8</data:Value>
        </metadata:element>
    </data:ExtensionProperties>
</metadata:properties>

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.