1. Problema
Ao atualizar o domínio (pelo E3Studio ou E3Admin) em um projeto com objetos XObjects, o E3Server registra no log (ServerLinkManager) mensagens como:
CreateRemoteLinkBatch failed - error(80004002) E_NOINTERFACE
ou, de forma mais detalhada:
object not marshalable (QueryInterface), link='Caminho.Do.Objeto' (item N of M) - error(80004002) E_NOINTERFACE
O sintoma é a falha das associações (links) e a perda de referências a objetos no runtime logo após a atualização do domínio. A causa está relacionada a links indiretos (propriedades de XObjects) que são indexados por outros links indiretos: durante a atualização do domínio, esses links podem não ser reconectados corretamente, resultando na falha de interface reportada.
Versões afetadas: o problema ocorre a partir do E3 6.8, em que a reconexão de links durante a atualização do domínio foi otimizada, e se estende ao E3 6.9 até a build 312. Enquanto não for possível atualizar, reiniciar o E3Server (ou os objetos afetados) após a atualização do domínio restabelece as associações.
2. Solução
O problema de reconexão de links indiretos indexados por outros links indiretos foi corrigido pela Elipse Software. A correção está disponível a partir do E3 versão 6.9 build 313, com a build 314 recomendada para atualização:
Após atualizar o E3Server e o E3Studio para a build 314 (ou superior), os links indiretos indexados por outros links indiretos são reconectados corretamente ao atualizar o domínio, eliminando a falha de CreateRemoteLinkBatch.
Workaround: caso não seja possível atualizar o E3 de imediato, reinicie o E3Server (ou os objetos afetados) após cada atualização do domínio. Isso restabelece as associações, mas não elimina o problema.
3. Observações técnicas
Em domínios com grande volume de itens OPC UA, a atualização do domínio pode levar um tempo considerável, pois o driver relê atributos de todos os itens durante a reconexão. Nesses cenários, habilitar a propriedade AlwaysInAdvise do driver OPC UA evita que tags já inscritos em uma assinatura sejam reinicializados a cada edição/atualização de domínio, reduzindo o tempo de bloqueio do runtime durante esse processo. Mais detalhes em Driver OPC UA E3 — Performance e Solução de Problemas.
