Jump to content

2.19.1 Incorrect node ID on slaves


photo

Recommended Posts

Posted

Hello,

I have a continuous error flow on the slaves:

16:42:50 ERROR:    Syncker::Slave::read_node(): bad node type ObjectMeshStatic (slave id: 312817034 node type: 36, expected: 0)
16:42:50 ERROR:    Syncker::Slave::read_node(): bad node type ObjectMeshStatic (slave id: 312817034 node type: 36, expected: 0)

The ID on the slaves does not match the ID on the master:

Slave:

image.png.6b97a3f2a9b27b72bbdc3ed5e2fcd879.png

Which refers to this node on the master (so, not the correct one)

image.png.0a26f630387da9e04cecf6b406c98d78.png

While the correct node on the master have a different ID

image.png.1d10baefda216f448c402ccd6132800f.png

The node H160_ref3 is placed manually in the world (there are multiple instances of the same node in this world).

What is going on??? (Added detail: both master and slaves are running on the same PC for this test, with exactly the same app, of course)

Posted

Hi Stephane,

That's unexpected behavior for sure.

Please try to add following logic to slave and master code:

int AppSystemLogic::init()
{
	Plugins::Syncker::Manager::get()->getSyncker()->setDynamicIDMode(true);
<..>

If this doesn't help we would need to find another options here.

Thank you!

How to submit a good bug report
---
FTP server for test scenes and user uploads:

Posted

Same result. (note that setDynamicMode is undocumented). I don't remember having this issue in the previous versions.

  • Thanks 1
Posted

Out of curiosity, could you please try disabling asynchronous node loading on both the master and slave?

Just add World::setAsyncLoadNodeReferences(false); to AppSystemLogic::init() and check if the behavior is different in that case.

Thanks! 

How to submit a good bug report
---
FTP server for test scenes and user uploads:

Posted

So... I tested again and I must have incorrectly tested last time. Updated results:

  • if (auto s = Plugins::Syncker::Manager::get()->getSyncker()) s->setDynamicIDMode(true); 
    • This apparently removes the incorrect IDs
  • World::setAsyncLoadNodeReferences(false);
    • This alone doesn't fix it

Not sure if this is an actual fix or not, of course, because I don't know if I made something wrong elsewhere in the code that requires this fix, or if it's a genuine bug in 2.19.1.2. Did you reproduce it in any way?
 

Posted

Hi Stephane,

There is nothing wrong with your code that requires fixing. Rather, it is the nodeID generation that is currently being refactored. We plan to finalize this in future updates, most likely in version 2.20, to ensure that such issues do not occur again.

You should definitely use setDynamicIDMode(true) to fix the initial issue. You also don't need to use setAsyncLoadNodeReferences, since it's not the root cause.

We will also add missing description for setDynamicIDMode method as soon as possible. Currently it's deterministically generating IDs on application start, therefore IDs should always match between PCs. More likely after refactoring there will be no need in such methods anymore.

Thanks!

 

  • Thanks 1

How to submit a good bug report
---
FTP server for test scenes and user uploads:

×
×
  • Create New...