Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Lawo Sapphire/SapphireCompact - The provider failed to send the children #52

Open
sronline opened this issue Mar 28, 2018 · 5 comments
Open

Comments

@sronline
Copy link

we observed an issue with the ember+ C# Library (https://github.com/Lawo/ember-plus-sharp) and the SapphireCompact (OS Version: 5.0.141 (952/60)).

It is not possible to get the ember tree. We get the following error message:
“The provider failed to send the children for the element with the path /SapphireCompact/Sources”

With “ProppFrexx Ember Viewer” it is also not possible to retrieve the ember Tree. If we simulate the tree with Tiny Ember it works. With Lawo Sapphire only parts of the tree can be browsed (Sources shows nothing).

According to DSA-Volgmann the cause of the issue is that the Sapphire Compact does not support multi request queries. There should be a switch for the C# library to disable this.

Can you help us?

@michaelhofer-slg
Copy link

I'm not sure if this helps, but we were able to browse the tree of a compact engine when using ChildrenRetrievalPolicy.DirectOnly. This workaround is explained here: #39

@sronline
Copy link
Author

@michaelhofer-slg: do you have a code sample for the workaround you explained?

I tried with this code, but can only get the root of the tree (SapphireCompact):

using (var consumer = await Consumer<SapphireRoot>.CreateAsync(client, 10000, ChildrenRetrievalPolicy.DirectOnly))          
  {
  INode root = consumer.Root;

  foreach (var child in root.Children)
  {
     if (child is INode)
     {
        ((INode)child).ChildrenRetrievalPolicy = ChildrenRetrievalPolicy.DirectOnly;
        log("Child " + child.Identifier);

         await consumer.SendAsync();
      }
   }
}

output is: Child SapphireCompact

@KimonHoffmann
Copy link
Contributor

Could it be that the Saphire Compact uses one more level of indirection and the SaphireCompact node really is the only child at this level?

Have you tried traversing the children of the child node after the SendAsync() call returns?

@sronline
Copy link
Author

I'm now able to get the ember tree of the SapphireCompact with the workaround posted in #39 (comment)

@michaelhofer
Copy link

@sronline I'm sorry about the delayed reply. The mentioned comment is correct, you need to traverse the children of the child node again after the call returns. We do that with a recursive method and traverse the children of a given element as soon as we have received the reply to the first GetDirectory request.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants