-
Notifications
You must be signed in to change notification settings - Fork 1
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
Manifold silent crash #192
Comments
It is unclear what the purpose of the |
What raises the |
The event is raised by the Manifold SPA here, called by React as soon as this component has been rendered into the DOM tree. Ah, wait, I see the point of your question. The So, the problem is the rule fails during evaluation. Avoiding selecting that rule with We need to understand why this rule fails in line 73, and fix that. |
Another question is why did the failure begin to appear sometime after IIW (April 20-22) and before the certificate expired (May 16)? I don't see evidence of code changes anywhere. The latest commit to the Manifold repo was March 5, when I changed the Google profile keys. Looking at the rulesets of the instance... There are the changes Beto and I made to the Manifold app |
Shouldn't line 73 be using |
That's was my first reaction, but it is an event and not a query, that is being sent to one of the things. Also, the v0 pico engine doesn't have a primitive for calling a function in another ruleset without using HTTP. |
Manifold sends an event and then a query in quick succession, to get the things. The logging for the event is shown in the first issue comment, and has a two minute gap. The logging for the query fits into that two minute gap:
The query correctly puts together the information and returns it to the browser, but meanwhile |
OK, so that begs the question why is it using |
Because it is gathering all the directives that come in from all the rules (in all the rulesets installed in a thing pico) which select on the |
This is why As we discovered, having people using HTTP to query picos on the same engine often results in deadlock situations. That seems to be what's happening here, no? But, as you say, using scatter-gather is probably the right solution since someone with lots of things is going to have a long wait for synchronous interactions to finish. |
Recently, Manifold stopped working. It would log the owner in, but show none of her thing cards. Errors were thrown in the console log of the browser, but no other indication was given. The screen was indistinguishable from that of an owner who had not yet created any things.
It appears that an event (
manifold:update_app_list
) sent from Manifold was the culprit. The event stopped the pico engine for two minutes, as shown by this extract from the logs.The
updateManifoldAppList
rule is selected and after its firstklog
the pico-engine is busy for two minutes until a timeout wakes it up again. A couple of queries come in, but they are not processed until after the timeout (and that was too late, because thenginx
gateway had already timed out by then).A temporary patch was made by changing the
io.picolabs.notifications
ruleset to not select on that event. See the #manifold channel in our Pico Labs slack organization for details.This situation needs to be investigated, the root cause identified, and the problem fixed properly.
The text was updated successfully, but these errors were encountered: