IslandzVW / halcyon

InWorldz Halcyon 3d virtual reality world simulator
BSD 3-Clause "New" or "Revised" License
21 stars 26 forks source link

No Message Transfer Module Found #429

Closed emperorstarfinder closed 6 years ago

emperorstarfinder commented 6 years ago

When launching the region console (Halcyon.exe) the following shows up:

2018-03-13 18:04:00,514 [ConsoleThread] ERROR OpenSim.Region.CoreModules.Avatar.Inventory.Transfer.InventoryTransferModule - [INVENTORY TRANSFER]: No Message transfer module found, transfers will be local only

Interestingly the MessageTransferModule does appear to be loading.

This appears to affect Inventory transfers between users in different regions, Friend requests when users are in different regions or offline, and group invites when users are in different regions or offline. However, when initializing the inventory transfer service this appears to be the only place the error pops up.

Configuration files are correct here.

kf6kjg commented 6 years ago

@emperorstarfinder were you able to resolve this? I see no convo here, but I also there's other channels these things get discussed upon. :D

appurist commented 6 years ago

This error message isn't actually a problem, it comes out as the result of a race condition or just the timing/ordering of module loads. It does not check for a message transfer module (MTM) when it needs one, it checks during startup, which typically (always?) happens before the MTM is loaded and has defined its interface. So this does not cause any problems and is in fact more or less a false report. You can safely ignore it.

I'm not sure if there's a fix here except perhaps to remove the check and the error message.

emperorstarfinder commented 6 years ago

Well the interesting thing is it appears to correspond to something as its related to the Inventory Transfers not being able to transfer between two users both of whom are in separate regions along with the users getting the user is offline message when sending IMs to them. Also appears to affect friend requests when users are in different regions.

I have not yet had a chance to chase this one down more in depth as I am just getting back on my feet due to medical issues.

appurist commented 6 years ago

Sorry to hear about your medical status; hope you're back on your feet very soon!

But no, the code producing the message has no effect on logical operations, it just means the messaging module is not configured at the time that the inventory module was started.

Later, if the messaging module is actually needed and has not yet been initialized, it looks for it again.

So other than producing an error message at startup that is not needed, it doesn't really do anything at all. If there was still a problem then, you'd get a second error message of the form [INVENTORY_OFFER]: Could not relay IM {0} remotely to {1}, where {0} is a number representing the message type and {1} is the key of the destination user. Are you seeing this message in your logs? That's one that actually indicates a problem.

emperorstarfinder commented 6 years ago

Strangely enough, I am not seeing any [INVENTORY_OFFER]: Could not relay IM {0} remotely to {1} and yet it is doing it.

For sanity sake, I have checked all the configuration files to be sure something was not incorrect and or missed. Configuration files appear correct so I am confident it is not a configuration issue.

Where group invites, friend requests and instant messages between two users both in different regions appears to be involved I would venture to guess that even though the Message Transfer Module is getting initialized, for some reason the region servers aren't seeing that it is initialized and present after its all startup complete.

appurist commented 6 years ago

This error message is not a problem. It is not affecting anything, however if you're saying that IMs (which also include inventory offers, friend operations, etc) are not making it to other regions, verify that your central/common Messaging grid services has loaded without error and is running fine.

Loading the Message Transfer Module is really just local to a region and means the DLL is present and valid, and if you aren't seeing the second (real) error, we know that to be true.

emperorstarfinder commented 6 years ago

The grid messaging services are actually fully loaded. This was one of the first checks I thought of myself. I should have mentioned that before.

emperorstarfinder commented 6 years ago

Update:

I have double checked this on our test grid. There is no second error that appears and the central messaging server is loading properly with no errors. However, the problem is still persistent.

emperorstarfinder commented 6 years ago

@appurist I did some more testing on this and checked all the connectivity, message server, etc and found nothing there that could be causing it. I even increased the CPUs and such just to see if there was something causing hiccups in connectivity. I also tested this locally just to see what would happen with everything (grid services and region services) on the same machine and still got the same problem.

I think what is going on is it is, in fact, doing exactly what this message is implying:

[INVENTORY TRANSFER]: No Message transfer module found, transfers will be local only

My theory is this:

If the MTM is, in fact, is set to local even though it knows the MTM is there and can interact with the MessageServer then it will not be able to transfer the messages i.e. instant messages, group invites, and inventory offers to users who are in other regions. This would be because the region server would need to know the MTM should be set to gridwide for instant messages, group invites, group chat, inventory offers, etc between two users in different regions to properly work. This can affect the online/ offline status of people on one's friends list as well although I am not too sure that it really should as that should be obtained via the friends module from the DB.

If my theory is correct, and I have a feeling it is, then it is possible your suggestion of the order of it loading the MTM module may be correct. Perhaps changing it in the order of modules that load might fix this if that is the case.

I am tempted to add a piece of logic that would tell me if it sees the MessageServer and returns its URL during startup just to see if in fact, it is seeing it.

kf6kjg commented 6 years ago

@emperorstarfinder If this is still an issue could you re-open on the new location for Halcyon? https://github.com/HalcyonGrid/halcyon/issues

Thank you.