ether / etherpad-lite

Etherpad: A modern really-real-time collaborative document editor.
http://docs.etherpad.org/
Apache License 2.0
16.45k stars 2.84k forks source link

Timeslider broken: on certain pads, no changes are replayed when timeslider pin moves or is moved. Loss of socket.io connectivity? #1077

Closed Wikinaut closed 11 years ago

Wikinaut commented 11 years ago

I just noticed, that the Timeslider function is broken. It does not work, shows an empty content frame, or the current content (static) but flickering without displaying any changes.

JohnMcLear commented 11 years ago

http://beta.etherpad.org/p/mko3lhcx1J/timeslider is fine. Please provide steps to replicate.

Wikinaut commented 11 years ago
Wikinaut commented 11 years ago

no version number found in http://beta.etherpad.org/p/mko3lhcx1J/timeslider see issue #1078

Wikinaut commented 11 years ago

checked several older versions on my system. All have (now) broken timeslider function (content is empty, or it is static).

The only change I remember:

Wikinaut commented 11 years ago

Which node version is running on beta.etherpad.org ?

JohnMcLear commented 11 years ago

429651874f64f312d2a3dd09040aa2f8f44ed47b

Date: Mon, 22 Oct 2012 23:45:47 -0700 From: notifications@github.com To: etherpad-lite@noreply.github.com CC: john@mclear.co.uk Subject: Re: [etherpad-lite] Timeslider broken? (#1077)

checked several older versions on my system.

All have (now) broken timeslider function (content is empty, or it is static).

The only change I remember:

recent upgrade to node v0.8.12

          —

          Reply to this email directly or view it on GitHub.
Wikinaut commented 11 years ago

I tried many things on my several independent reference installation. I have no idea, why the timeslider function stops working as designed. It's certainly a case for you experts!

Wikinaut commented 11 years ago

I noticed: no "flickering" connection. (looks, as if there were no bytes sent from client to server). Perhaps a problem with socket.io ?

Shows an error

length is null or not an object
ace2_common.js Line: 36
Code: 0 Char: 216
URI:
``´
Webpage error details

User Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; .NET4.0E)
Timestamp: Tue, 23 Oct 2012 14:20:02 UTC

Message: 'length' is null or not an object
Line: 36
Char: 216
Code: 0
URI: https://server/javascripts/lib/ep_etherpad-lite/static/js/ace2_common.js?callback=require.define
Wikinaut commented 11 years ago

Timeslider debug

Moving the slider and suddenly the server silently stalls:

[2012-10-25 20:26:40.363] [DEBUG] ueberDB - GETSUB - pad:6WbzPn9GHtAm:revs:99["meta","timestamp"] - 1346740294159 [2012-10-25 20:26:40.369] [ERROR] console - TypeError: Cannot read property 'length' of undefined at nextText (/srv/etherpad/src/static/js/Changeset.js:1943:24) at Object.exports.inverse (/srv/etherpad/src/static/js/Changeset.js:1995:22) at async.series.callback.forwardsChangesets (/srv/etherpad/src/node/handler/PadMessageHandler.js:1265:35) at async.series.results (/srv/etherpad/src/node_modules/async/lib/async.js:486:21) at _asyncMap (/srv/etherpad/src/node_modules/async/lib/async.js:185:13) at async.forEachSeries.iterate (/srv/etherpad/src/node_modules/async/lib/async.js:108:13) at async.forEachSeries.iterate (/srv/etherpad/src/node_modules/async/lib/async.js:119:25) at _asyncMap (/srv/etherpad/src/node_modules/async/lib/async.js:187:17) at async.series.results (/srv/etherpad/src/node_modules/async/lib/async.js:491:34) at _asyncMap (/srv/etherpad/src/node_modules/async/lib/async.js:190:13) [2012-10-25 20:26:40.369] [INFO] console - graceful shutdown...

Effect on the client

you can move the slider, but nothing happens.

Wikinaut commented 11 years ago

In addition:

I also noticed that - when starting the timeslider - the time pin "needle" (the small slider image) is positioned o a position clearly outside the time bar (between the right end of the time bar and the big "play" button with the triangle.

Wikinaut commented 11 years ago

the function is also broken on

Wikinaut commented 11 years ago

still broken in

Yes, I deleted /src/nod_modules before upgrading.

Wikinaut commented 11 years ago

update

In addition part 2:

I also noticed that - when starting the timeslider - the time pin "needle" (the small slider image) is positioned o a position clearly outside the time bar (between the right end of the time bar and the big "play" button with the triangle.

Before starting "play", when I move the timeslider (which is on my systems always outside(!) the bar when starting the timeslider page) to a position on the bar, then it works !

Can anyone try to reproduce this bug?

marcelklehr commented 11 years ago

I'm trying. I use node v0.8.14, I run 05cc7b3. But when starting the server it just works... (see http://localhost:9001/p/DdX8IYxrhV/timeslider -- does this work for you at least?)

Can you set up a new environment, please?

  1. Create a new folder.
  2. git clone git@github.com:Pita/etherpad-lite.git 3 cd etherpad-lite
  3. git checkout develop
  4. bin/run.sh
  5. Open a pad in your browser, make some changes and view the timeslider. a. If it doesn't work, make a screenshot (better, a video/gif ) showing the broken timeslider.
Wikinaut commented 11 years ago

Same problem !

updated:

Timeslider "needle" is positioned offside the bar (between bar and play button).

Before starting "play", when I move the timeslider (which is on my systems always outside(!) the bar when starting the timeslider page) to a position on the bar, then it works !

Can anyone try to reproduce this bug?

Wikinaut commented 11 years ago

Where can I "pastebin" a screenshot ?

Wikinaut commented 11 years ago

screenshot of broken timeslider = http://imgur.com/xs9mx

[update 30.10.2012 : this CSS problem is fixed in d9298778650eb7be2181dc9aaf23e14faff61e99 ]

JohnMcLear commented 11 years ago

We have test cases in place for this bug and they aren't firing an error so I'm not sure what is going on. As far as the location of the slider image we don't have a test for that so I will write one.

FYI: https://github.com/Pita/etherpad-lite/blob/feature/frontend-tests/tests/frontend/specs/button_timeslider.js

JohnMcLear commented 11 years ago

@Wikinaut Timeslider "needle" is positioned offside the bar (between bar and play button).

Which browser?

I'm unable to replicate either bug. Can you replicate them on http://beta.etherpad.org ?

Wikinaut commented 11 years ago

"not working" means: needle moves, but changes are not shown

JohnMcLear commented 11 years ago

IE9 timeslider is fine FF 15 position is fine.

@wikinaut are you testing on http://beta.etherpad.org or some other instance and does this instance have some buggy plugin installed or something?

Wikinaut commented 11 years ago

I am using fresh installation on two fully different, distinct and separated virtual servers. One runs OpenSuse 11.3, the other runs SLES-11 (Suse-Linux-Enterprise Edition).

As you know, my installations ran for many months smoothly without problems. I am wondering why nobody else appears to have the Timeslider problems.

@ Johnyma22: FF15 is outdated, FF 16.0.2 is current version. Pls. can you upgrade and check ?

Wikinaut commented 11 years ago

[this comment is deleted; the problem here was a spooky second "etherpad" task, kill - u etherpad solved that]

Wikinaut commented 11 years ago

here's another version with a "starred" version

[updated 30.10.2012 fixed in d9298778650eb7be2181dc9aaf23e14faff61e99 ]

JohnMcLear commented 11 years ago

Whats the URL I can see this on? If you can't replicate on http://beta.etherpad.org I dunno what to suggest ;/

Wikinaut commented 11 years ago

Bingo! "luckily" you can see it here on your own pad! http://beta.etherpad.org/p/test/timeslider

Timeslider also not working on your pad.

JohnMcLear commented 11 years ago

Tested in Firefox 16 and it's fine.

Wikinaut commented 11 years ago

[removed]

JohnMcLear commented 11 years ago

Ah I can replicate the CSS bug better by creating long contents in a pad

JohnMcLear commented 11 years ago

setSliderPosition appears to be running before the pad content is available so this bug appears to be caused by a race condition where $("#ui-slider-bar").width() is modified once the vscroll bar is shown. Ideally $(window).resize(function() would fire when the vscroll bar is added by the browser but it isn't. See: http://api.jquery.com/resize/

Wikinaut commented 11 years ago

"don't do" .... waiting for a fix. Then I will immediately test all my systems and report to you.

JohnMcLear commented 11 years ago

There ya go. Donations welcome!

Wikinaut commented 11 years ago

hehe my donations are: mediawiki extension for Etherpad Lite, incl. support & extensive deep bug findings

JohnMcLear commented 11 years ago

Deep bug? ;) This was a pesky CSS/simple UI bug and could have been fixed by anyone w/ 15 mins if the bug report had been clear/well enough tested.

JohnMcLear commented 11 years ago

Sorry @Wikinaut, just had a long day, thanks for pointing out the bug :)

Wikinaut commented 11 years ago

this fixes the CSS issue, but not the "timeslider broken" issue.

JohnMcLear commented 11 years ago

I really can't see how your timeslider is broken though.. Can you please give me exact steps to replicate the failing?

Wikinaut commented 11 years ago

As I told you: look to http://beta.etherpad.org/p/test/timeslider , start "play" button: no changes are shown. Same on my version d9298778650eb7be2181dc9aaf23e14faff61e99

JohnMcLear commented 11 years ago

Yep that's broken :\

Wikinaut commented 11 years ago

Please also add the version info plugin to beta http://beta.etherpad.org/ so that we can refer to the version

Wikinaut commented 11 years ago

(But I can confirm, that the CSS issue is fixed)

JohnMcLear commented 11 years ago

It's actually fine in 4296518

JohnMcLear commented 11 years ago

I managed to get this to break once but now it's fine and I can't replicate. It is for sure fine cross browser on latest develop when creating a new pad. Could this be related to bad pad content or something?

Wikinaut commented 11 years ago

It's actually fine in 4296518

Wishful thinking. It is not working for me. I checked out that version, cleared caches and /src/node_modules. Timelider is broken.

JohnMcLear commented 11 years ago

Please provide exact steps including a video / screen capture of your steps to replicate this bug on a fresh install. I'm unable to do it.

Wikinaut commented 11 years ago

Steps to replicate:

  1. look to http://beta.etherpad.org/p/test/timeslider
  2. start "play" button
  3. no changes are shown.

Please fix this, and I will be quiet. Someone has horribly broken the working system.

Wikinaut commented 11 years ago

see also https://github.com/Pita/etherpad-lite/issues/1068 .

Steps to replicate version 2

  1. make a fresh checkout of develop d9298778650eb7be2181dc9aaf23e14faff61e99
  2. copy old settings.json
  3. visit one of existing pads
  4. goto timeslider
  5. start "play" button
  6. no changes are shown. As reported

Giving up now. Waiting until someone else reports this again. see also https://github.com/Pita/etherpad-lite/issues/1068 .

JohnMcLear commented 11 years ago

visit one of existing pads <-- This is a problem cause my pads aren't the same as your existing pads ergo making this test completely impossible to reproduce ;\ I think the problem is a bad changeset somewhere and that is pad specific.

Can you create this problem on a new pad? The point you appear to be missing is that you have to isolate a problem before you can fix it.

Wikinaut commented 11 years ago

hhehe- the problem is apparent on your http://beta.etherpad.org/p/test/timeslider .

Wikinaut commented 11 years ago

What I noticed is similar to the problems reported in https://github.com/Pita/etherpad-lite/issues/1068 : after a while, ro when you manually set the slider to a certain time, or move slowly, I can happen, that the content changes are shown.

I suppose it is a timing problem, which breaks the communication.