MozillaFoundation / mofo-lightsaber

Giving every mofo a lightsaber in 2015
1 stars 0 forks source link

Resolve issue with etherpad that seems to not save contents #18

Closed jdotpz closed 9 years ago

jdotpz commented 9 years ago

I'm betting when this is on mysql and production quality infra it will be fixed, but its worth noting here. It does a bunch of reconnecting, and does not seem to save a lot of data. cc @JohnMcLear @OpenMatt

yeshedoes-eth

JohnMcLear commented 9 years ago

hrm, is that caused by having 2 of the same browsers hit a pad? That's expected behaviour if that's the case.

We restrict pad connectivity to one per browser.

davidascher commented 9 years ago

That seems like a weird choice. Aren't users likely to be confused more than anything else?

jdotpz commented 9 years ago

I had an incognito Chrome window up with only that page, and it started misbehaving.

markdownifyfail-eth

Any hints?

jdotpz commented 9 years ago

screen shot 2015-01-28 at 3 27 29 pm

JohnMcLear commented 9 years ago

Check your server side logs, it will tell you what's happening..

The disconnects look weird.. That's unexpected behaviour for sure..

jdotpz commented 9 years ago

Here's what I see in error.log: http://pastebin.mozilla.org/8406526

Nothing really in error.log.

JohnMcLear commented 9 years ago

Jump on here: http://pad.webmaker.org/p/2FzaW203iz I'm not getting any disconnects..

JohnMcLear commented 9 years ago

Okay now I'm getting disconnects.. heh wtf

JohnMcLear commented 9 years ago
"Failed to load 'ep_markdownify/static/js/index' for 'ep_markdownify/main/client_hooks/aceEditorCSS': Error: The module at "ep_etherpad-lite/static/js/security.js" does not exist." ace2_common.js:12950

"Failed to load 'ep_markdownify/static/js/index:aceGetFilterStack' for 'ep_markdownify/main/client_hooks/aceGetFilterStack': Error: The module at "ep_etherpad-lite/static/js/security.js" does not exist." ace2_common.js:12950

"Failed to load 'ep_markdownify/static/js/index:aceCreateDomLine' for 'ep_markdownify/main/client_hooks/aceCreateDomLine': Error: The module at "ep_etherpad-lite/static/js/security.js" does not exist." ace2_common.js:12950

"Failed to load 'ep_linkify/static/js/index:aceGetFilterStack' for 'ep_linkify/main/client_hooks/aceGetFilterStack': Error: The module at "ep_etherpad-lite/static/js/security.js" does not exist." ace2_common.js:12950

"Failed to load 'ep_linkify/static/js/index:aceCreateDomLine' for 'ep_linkify/main/client_hooks/aceCreateDomLine': Error: The module at "ep_etherpad-lite/static/js/security.js" does not exist." ace2_common.js:12950

Error: Couldn't find translations for en-GB
Stack trace:
window.html10n</Loader.prototype.parse@http://pad.webmaker.org/static/js/html10n.js:193:31
window.html10n</Loader.prototype.fetch/xhr.onreadystatechange@http://pad.webmaker.org/static/js/html10n.js:167:11
 html10n.js:139
Firefox can't establish a connection to the server at ws://pad.webmaker.org/socket.io/?EIO=3&transport=websocket&sid=2eZXUNxZe-KT_PccAAAF. socket.io.js:5258
Object { type: "CLIENT_VARS", data: Object } pad.js:302
Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help http://xhr.spec.whatwg.org/ 2FzaW203iz:295
Use of getPreventDefault() is deprecated.  Use defaultPrevented instead.
JohnMcLear commented 9 years ago

markdownify and linkify look like they both have errors..

Also Firefox can't establish a connection to the server at ws://pad.webmaker.org/socket.io/?EIO=3&transport=websocket&sid=2eZXUNxZe-KT_PccAAAF. socket.io.js:5258

Check your console log bro!

jdotpz commented 9 years ago

Hmm, this is using sockets? If that is the case, I think the ELB needs to change protocol.

jdotpz commented 9 years ago

Hi @JohnMcLear, many thanks for the help again!

We're still seeing a lot of stability issues, and I wondered if I might be able to please pick your brain as to what the problem might be. I've removed linkify and markdownify as well.

I see this in the log a couple times: http://pastebin.mozilla.org/8444787

I'm not seeing any crazy utilization that would lead me to believe it is sizing of the instance: screen shot 2015-01-30 at 11 54 41 am

JohnMcLear commented 9 years ago

Hrm nothing obvious from that log.. Do this

cd node_modules grep -rni pad.collabClient

And see if any are in plugins

Stability in general should not be an issue put possibly caused by plugin!

----- Reply message ----- From: "JP Schneider" notifications@github.com To: "MozillaFoundation/mofo-lightsaber" mofo-lightsaber@noreply.github.com Cc: "John McLear" John@mclear.co Subject: [mofo-lightsaber] Resolve issue with etherpad that seems to not save contents (#18) Date: Fri, Jan 30, 2015 17:55

Hi @JohnMcLearhttps://github.com/JohnMcLear, many thanks for the help again!

We're still seeing a lot of stability issues, and I wondered if I might be able to please pick your brain as to what the problem might be. I've removed linkify and markdownify as well.

I see this in the log a couple times: http://pastebin.mozilla.org/8444787

I'm not seeing any crazy utilization that would lead me to believe it is sizing of the instance: [screen shot 2015-01-30 at 11 54 41 am]https://cloud.githubusercontent.com/assets/1373628/5980528/d6d37a44-a876-11e4-8aed-c6715d3e488e.JPG

— Reply to this email directly or view it on GitHubhttps://github.com/MozillaFoundation/mofo-lightsaber/issues/18#issuecomment-72241817.

jdotpz commented 9 years ago

here's a file list:

./node_modules/ep_etherpad-lite/static/js/pad.js:var getCollabClient = require('./collab_client').getCollabClient; ./node_modules/ep_etherpad-lite/static/js/pad.js: msg.client_rev=pad.collabClient.getCurrentRevisionNumber(); ./node_modules/ep_etherpad-lite/static/js/pad.js: pad.collabClient.setChannelState("CONNECTED"); ./node_modules/ep_etherpad-lite/static/js/pad.js: pad.collabClient.setChannelState("DISCONNECTED"); ./node_modules/ep_etherpad-lite/static/js/pad.js: pad.collabClient.setChannelState("DISCONNECTED", "reconnect_timeout"); ./node_modules/ep_etherpad-lite/static/js/pad.js: pad.collabClient.setChannelState("RECONNECTING"); ./node_modules/ep_etherpad-lite/static/js/pad.js: // Add a 'globalUserColor' property to myUserInfo, so collabClient knows we have a query parameter. ./node_modules/ep_etherpad-lite/static/js/pad.js: pad.collabClient.handleMessageFromServer(obj); ./node_modules/ep_etherpad-lite/static/js/pad.js: collabClient: null, ./node_modules/ep_etherpad-lite/static/js/pad.js: pad.collabClient.sendClientMessage(msg); ./node_modules/ep_etherpad-lite/static/js/pad.js: pad.collabClient = getCollabClient(padeditor.ace, clientVars.collab_client_vars, pad.myUserInfo, { ./node_modules/ep_etherpad-lite/static/js/pad.js: pad.collabClient.setOnUserJoin(pad.handleUserJoin); ./node_modules/ep_etherpad-lite/static/js/pad.js: pad.collabClient.setOnUpdateUserInfo(pad.handleUserUpdate); ./node_modules/ep_etherpad-lite/static/js/pad.js: pad.collabClient.setOnUserLeave(pad.handleUserLeave); ./node_modules/ep_etherpad-lite/static/js/pad.js: pad.collabClient.setOnClientMessage(pad.handleClientMessage); ./node_modules/ep_etherpad-lite/static/js/pad.js: pad.collabClient.setOnServerMessage(pad.handleServerMessage); ./node_modules/ep_etherpad-lite/static/js/pad.js: pad.collabClient.setOnChannelStateChange(pad.handleChannelStateChange); ./node_modules/ep_etherpad-lite/static/js/pad.js: pad.collabClient.setOnInternalAction(pad.handleCollabAction); ./node_modules/ep_etherpad-lite/static/js/pad.js: pad.collabClient.sendMessage({"type": "GET_CHAT_MESSAGES", "start": start, "end": chatHead}); ./node_modules/ep_etherpad-lite/static/js/pad.js: pad.collabClient.updateUserInfo(pad.myUserInfo); ./node_modules/ep_etherpad-lite/static/js/pad.js: pad.collabClient.updateUserInfo(pad.myUserInfo); ./node_modules/ep_etherpad-lite/static/js/pad.js: pad.collabClient.sendClientMessage( ./node_modules/ep_etherpad-lite/static/js/pad.js: pad.collabClient.sendClientMessage( ./node_modules/ep_etherpad-lite/static/js/pad.js: pad.diagnosticInfo.collabDiagnosticInfo = pad.collabClient.getDiagnosticInfo(); ./node_modules/ep_etherpad-lite/static/js/pad.js: $('form#reconnectform input.missedChanges').val(JSON.stringify(pad.collabClient.getMissedChanges())); ./node_modules/ep_etherpad-lite/static/js/pad.js: pad.collabClient.callWhenNotCommitting(f); ./node_modules/ep_etherpad-lite/static/js/pad.js: return pad.collabClient.getCurrentRevisionNumber(); ./node_modules/ep_etherpad-lite/static/js/pad.js: if (!pad.collabClient) ./node_modules/ep_etherpad-lite/static/js/pad.js: pad.collabClient.addHistoricalAuthors(data); ./node_modules/ep_etherpad-lite/static/js/collabclient.js: "serverVars" are from calling doc.getCollabClientVars() on the server. / ./node_modules/ep_etherpad-lite/static/js/collab_client.js:function getCollabClient(ace2editor, serverVars, initialUserInfo, options, _pad) ./node_modules/ep_etherpad-lite/static/js/collab_client.js:exports.getCollabClient = getCollabClient; ./node_modules/ep_etherpad-lite/static/js/pad_savedrevs.js: pad.collabClient.sendMessage({"type": "SAVE_REVISION"}); ./node_modules/ep_etherpad-lite/static/js/ace2_inner.js: parent.parent.pad.collabClient.sendMessage({"type":"SAVEREVISION"}); / The parent.parent part of this is BAD and I feel bad.. It may break something */ ./node_modules/ep_etherpad-lite/static/js/chat.js: this._pad.collabClient.sendMessage({"type": "CHAT_MESSAGE", "text": text}); ./node_modules/ep_etherpad-lite/static/js/chat.js: pad.collabClient.sendMessage({"type": "GET_CHAT_MESSAGES", "start": start, "end": end}); ./src/static/js/pad.js:var getCollabClient = require('./collab_client').getCollabClient; ./src/static/js/pad.js: msg.client_rev=pad.collabClient.getCurrentRevisionNumber(); ./src/static/js/pad.js: pad.collabClient.setChannelState("CONNECTED"); ./src/static/js/pad.js: pad.collabClient.setChannelState("DISCONNECTED"); ./src/static/js/pad.js: pad.collabClient.setChannelState("DISCONNECTED", "reconnect_timeout"); ./src/static/js/pad.js: pad.collabClient.setChannelState("RECONNECTING"); ./src/static/js/pad.js: // Add a 'globalUserColor' property to myUserInfo, so collabClient knows we have a query parameter. ./src/static/js/pad.js: pad.collabClient.handleMessageFromServer(obj); ./src/static/js/pad.js: collabClient: null, ./src/static/js/pad.js: pad.collabClient.sendClientMessage(msg); ./src/static/js/pad.js: pad.collabClient = getCollabClient(padeditor.ace, clientVars.collab_client_vars, pad.myUserInfo, { ./src/static/js/pad.js: pad.collabClient.setOnUserJoin(pad.handleUserJoin); ./src/static/js/pad.js: pad.collabClient.setOnUpdateUserInfo(pad.handleUserUpdate);

JohnMcLear commented 9 years ago

No plugins there.. Very weird..

jdotpz commented 9 years ago

Interesting indeed.

I'm seeing this quite a bit as well:

An error occured The error was reported with the following id: 'niFl3a2pnIcLyokCTzGD'

Please press and hold Ctrl and press F5 to reload this page, if the problem persists please send this error message to your webmaster: 'ErrorId: niFl3a2pnIcLyokCTzGD URL: https://pad.webmaker.org/p/noshizzle UserAgent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.94 Safari/537.36 Uncaught TypeError: Cannot read property 'setChannelState' of null in https://pad.webmaker.org/javascripts/lib/ep_etherpad-lite/static/js/pad.js?callback=require.define at line 254' Chat 0

JohnMcLear commented 9 years ago

Are you rewriting or reverse proxying or something? It sounds like an issue with your configs...

jdotpz commented 9 years ago

Actually, at the moment I am not reverse proxying at all! Because I had /plugins broken in my vhost/conf, I turned it off until we got our plugins in a stable place.

JohnMcLear commented 9 years ago

hrm, do you get the same if you don't use https?

JohnMcLear commented 9 years ago

hrm this could be the issue: Firefox can't establish a connection to the server at wss://pad.webmaker.org/socket.io/?EIO=3&transport=websocket&sid=oBLts_3-MopE7lCeAADL.

JohnMcLear commented 9 years ago

Just for what it's worth, I can support this project with general software etc. stuff but specific implementation into environments it's tricky for me to find the resources to support things for free. Not to sound like I'm not willing to help or anything just want you to understand if I'm less forthcoming in resolving these issues for you.

jdotpz commented 9 years ago

Understood, and I appreciate the help you are able to give!

I've updated the load balancer to use tcp instead of http so it should now support ws protocol.

jdotpz commented 9 years ago

FWIW, the socket.io error we see now is actually likely in the code.

I see it on beta as well:

screen shot 2015-02-02 at 11 37 41 am

JohnMcLear commented 9 years ago

beta.etherpad.org is stable tho right?

jdotpz commented 9 years ago

Yup, so far as I know. Just observing that the socket.io error we see there is not an indicator of whether that funky error pops.

JohnMcLear commented 9 years ago

Fixed socketIO initial upgrade error on beta.etherpad.org - updated nginx rewrite docs. Very easy to do

OpenMatt commented 9 years ago
jdotpz commented 9 years ago

I believe we're all set here, and we can reopen if we see the issue recur while in use.