Defect #7939

Simultaneous Wiki Updates Cause Internal Error

Added by Tom Skerry over 6 years ago. Updated about 4 years ago.

Status:ClosedStart date:2011-03-21
Priority:HighDue date:
Assignee:-% Done:

0%

Category:Wiki
Target version:1.1.3
Resolution:Fixed Affected version:1.1.0

Description

Redmine version details:
Redmine version 1.1.1
Ruby version 1.8.7 (i386-mingw32)
RubyGems version 1.5.2
Rack version 1.0
Rails version 2.3.5
Active Record version 2.3.5
Active Resource version 2.3.5
Action Mailer version 2.3.5
Active Support version 2.3.5
Application root D:/Program Files (x86)/Redmine_Webserver/Redmine
Environment development
Database adapter mysql
Database schema version 0

Current Problem:
If two managers (or users with the "Edit wiki pages" permission) edit a wiki in the following way this results in a catastrophic error:
Manager 1 - Opens wiki in edit mode
Manager 2 - Opens wiki in edit mode
Manager 2 - Makes changes to wiki
Manager 2 - Saves wiki
Manager 1 - Makes changes to wiki
Manager 1 - Saves wiki

Manager 1 now gets a "500 internal error" page and loses all updates made to the wiki page. This can be rather frustrating if a large amount of changes have been made. The lock system (achieved with the "Protect wiki pages" permission) seems to be a step in the right direction, however this does not prevent another user with the same permission from editing the wiki and quite often we find they neglect to notice the "locked" icon in the top right-hand corner of the wiki before clicking "edit".

Possible Fixes:
1) Display a message box to all users that try to edit a wiki that is currently being edited.
OR
2) Make the "Lock" system work so that a user would have to "break the lock" in order to edit the wiki. (Thus alerting a user that they might not want to edit the wiki at this present moment, but at the same time allowing a lock to be broken if a user has forgotten to remove it after their edit has been saved).
OR
3) If the sequence of events above occurs display a more explanatory error page and retain the users edited text so that when they click "back" on their browser their changes are not lost. It is then up to the user to backup their changes and merge them into the recently updated wiki.


Related issues

Duplicated by Redmine - Defect #8207: Wiki concurrent editing - loosing my edit Closed 2011-04-21

Associated revisions

Revision 5185
Added by Jean-Philippe Lang over 6 years ago

Fixed: Simultaneous wiki updates cause internal error (#7939).

History

#1 Updated by Jean-Philippe Lang over 6 years ago

  • Priority changed from Normal to High
  • Target version set to 1.1.3

#2 Updated by Jean-Philippe Lang over 6 years ago

  • Status changed from New to Resolved
  • Affected version (unused) set to 1.1.0
  • Resolution set to Fixed
  • Affected version set to 1.1.0

Solution 3 used to work but was broken in r4272.
Fix and test added in r5185.

#3 Updated by Jean-Philippe Lang over 6 years ago

  • Status changed from Resolved to Closed

#4 Updated by ada sun over 4 years ago

I think the solution to the bug is not perfect. I update a wiki page with a lot of new content while others edit the page simultaneusly. However, when I save it, the page tells me I can't do this. What I can do is to leave the page and edit it again. I think this will cost editors much time especially when the new content scatterd in the page and there may be many editors update the same page at the same time.

I suggest to fix the problem with solution 2:
2) Make the "Lock" system work so that a user would have to "break the lock" in order to edit the wiki. (Thus alerting a user that they might not want to edit the wiki at this present moment, but at the same time allowing a lock to be broken if a user has forgotten to remove it after their edit has been saved).

Redmine version details:
Redmine version 2.2.3
Ruby version 1.9.3p194 (2012-04-20 revision 35410)[i686-linux]
RubyGems version 1.5.2
Rails version 3.2.12
Operating system: centos 5.5 (2.6.18-194.el5PAE)
Database: mysql-devel-5.0.95-5.el5_9
Database adapter mysql2
Ruby-aware server used: Mongrel

Current Problem:
If two managers (or users with the "Edit wiki pages" permission) edit a wiki in the following way this results in a catastrophic error:
Manager 1 - Opens wiki in edit mode
Manager 2 - Opens wiki in edit mode
Manager 2 - Makes changes to wiki
Manager 2 - Saves wiki
Manager 1 - Makes changes to wiki
Manager 1 - Saves wiki

Manager 1 now gets an explanatory error page and retain the users edited text. The lock system (achieved with the "Protect wiki pages" permission) seems to be a step in the right direction, however this does not prevent another user with the same permission from editing the wiki and quite often we find they neglect to notice the "locked" icon in the top right-hand corner of the wiki before clicking "edit".

#5 Updated by Arthur Zalevsky about 4 years ago

ada sun's suggestion looks reasonable. We use Redmine Wiki for preparing grant applications so the situation when multiple people try to edit the same page at the same time is not rare.

Also available in: Atom PDF