I have found a very bizarre bug that is rendering our website useless. We currenlty host our website on Galaxy, running Meteor 1.5.2, using Compose.io as a DB host.
The issue concerns DDP connections and the Meteor Method Life Cycle. The following is a run down of our finding. We have contacted Galaxy Support and are awaiting a reply but maybe someone here has experienced this before.
We have discovered that on our hosted app, we can call
Meteor.loginWithPassword(’<your_email>’, ‘<your_pw>’, console.log)
but the callback will never invoke.
It can be validated independently by investigating the DDP messages that calling the function results in…
- The “method” message being sent to the server
- The “result” message being sent to the client from the server and
- The “updated” message is missing, gone, never happened, literally doesn’t exist.
Meteor.connection._methodsBlockingQuiessencehas an entry in it for the Method ID that was just generated
According to https://guide.meteor.com/methods.html#call-lifecycle this means the callback will not execute, which is what we find to be the case. This results in the user not logging in, and the spinner continuing to spin.
It is also important to note that this problem can be found in some other methods, with no apparent connecting comminalities. For example, I can change my service radius or travel time over and over again but not their calendar or credit card, which result in the issue above, every time.
Adding on to the seeming randomness, the same bug can attach itself to certain users, but not to others.
Eventually we did implement a band-aid, which operates like so: If you recreate the issue, where you call loginWithPassword, and then you call
Meteor.disconnect() and then
Meteor.reconnect() meteor will “forgive” the lack of the “update” message and accept the result
We cannot replicate any of these issue on our local machine even when we connect to the production database.
Any help or direction would be greatly appreciated.