Red Hat Bugzilla – Bug 461642
revelation lets itself be run multiple times by a given user
Last modified: 2009-12-18 01:22:40 EST
Description of problem:
Revelation allows multiple instances to be run simultaneously by a given user. This creates the risk of data loss if one adds entries in instance1, other entries in instance2, then closes instance1, then instance2. Upon closing instance2, there is a dialog box warning that the data file has been changed, but there is no way to save both sets of changes. The only sensible way to handle this is to not allow multiple instances by a single user in the first place.
Version-Release number of selected component (if applicable):
Steps to Reproduce:
1. Open 2 simultaneous instances of revelation.
2. Create new entry site1/user1/password1 in instance1, and site2/user2/password2 in instance2.
3. Close instance1, saving changes.
4. Close instance2.
Warning about data file having been changed. There's no way to merge the two sets of changes.
Don't allow 2 instances to be run simultaneously by a given user in the first place.
MyPasswordSafe and keepassx have the same bug, but fpm2 does not (it uses a lock file to prevent it).
This is an issue you should really take up with upstream. I'm not prepared to patch in this feature in Fedora's version of revelation. To do what you are requesting would probably require a significant restructuring of the revelation codebase to disable the editing features for concurrently running versions of revelation. This is not something which should be done at the distribution level. It needs to be discussed as part of upstream development.
And simply preventing two instances from opening the same file isn't going to cut it. The revelation panel applet is technically another instance of revelation. it opens the file just as the normal revelation application does using the same underlying python code, except that it does not expose the ability to edit or save data to a file.
All revelation actually does when it opens a file is read the information into a datastore in memory and the closes the file via the gnomevfs.read_entire_file function. It then sets up a gnomevfs based monitor of the original file looking for a change of state. Pretty much how text editors work. Think of revelation as just a special purposed text-editor.. not unlike gedit really. You pull in the entire file buffer into memory... you make some edits... you save the file buffer back.
If I were going to champion this feature myself, I would need to understand exactly how revelation and revelation-applet are expected to work concurrently while still being able to keep multiple instances of revelation from exposing edit functions.
Gedit appears not to allow multiple instances by a given user - if I run "gedit &" from a terminal window twice, the second instances exits immediately. I'm not really familiar with any revelation-specific features - I installed MyPasswordSafe, revelation, fpm2, and keepassx recently but only use MyPasswordSafe on a regular basis. I reported this issue as bug #459940 against MyPasswordSafe but haven't gotten a reply yet as to whether it's a bug - it certainly seems like one, though. My father, who is not good with GUIs, tends to get confused when there are multiple windows up and ends up running multiple instances of MyPasswordSafe simultaneously. I haven't gotten around to reporting this against Fedora's keepassx and at this point don't know if I should.
This isnt a Fedora specific issue... this is a revelation design issue. Is this a failure of revelation's underlying design or was this deliberately chosen by the upstream developers? I'm not in a position to evaluate that. I've looked at the code I don't see an obvious fixme or other bug. Revelation works as designed.
If you want to work on a patch that adds this feature to revelation. I can certainly help make sure that patch finds its way into the hands of the upstream developers for evaluation. But I am wary of introducing a significant feature enhancement to revelation that is a Fedora specific enhancement.
A Fedora specific fix isn't appropriate in this situation.
Even without talking about the applet....just preventing revelation from starting..isn't good enough. Revelation can be pointed to different key files...so having multiple revelations running with different key files open may be a design goal. Since revelation doesn't have the concept of multiple buffers...where gedit does..a new instance of revelation must be started to have 2 key files open side by side.
My best guess at how to handle this would be to have each version of revelation open and hold open the key file in a writable state, then overwrite the open file on save. Subsequent revelation instances could then open the file in the read-only state preventing editing. But this would require a major overhaul of the code which controls the UI so that the editing functions would be disabled (greyed out) when I file is opened read-only to prevent you from making any edits. That's non-trivial and a significant change to the revelation design as it stands. Something which must be discussed with upstream.
If I were to be convinced this were worthwhile I probably could implement the changes given enough time, but I wouldn't put such an aggressive patch into Fedora's package until upstream adopted it.
I reported this upstream at
This message is a reminder that Fedora 10 is nearing its end of life.
Approximately 30 (thirty) days from now Fedora will stop maintaining
and issuing updates for Fedora 10. It is Fedora's policy to close all
bug reports from releases that are no longer maintained. At that time
this bug will be closed as WONTFIX if it remains open with a Fedora
'version' of '10'.
Package Maintainer: If you wish for this bug to remain open because you
plan to fix it in a currently maintained version, simply change the 'version'
to a later Fedora version prior to Fedora 10's end of life.
Bug Reporter: Thank you for reporting this issue and we are sorry that
we may not be able to fix it before Fedora 10 is end of life. If you
would still like to see this bug fixed and are able to reproduce it
against a later version of Fedora please change the 'version' of this
bug to the applicable version. If you are unable to change the version,
please add a comment here and someone will do it for you.
Although we aim to fix as many bugs as possible during every release's
lifetime, sometimes those efforts are overtaken by events. Often a
more recent Fedora release includes newer upstream software that fixes
bugs or makes them obsolete.
The process we are following is described here:
Fedora 10 changed to end-of-life (EOL) status on 2009-12-17. Fedora 10 is
no longer maintained, which means that it will not receive any further
security or bug fix updates. As a result we are closing this bug.
If you can reproduce this bug against a currently maintained version of
Fedora please feel free to reopen this bug against that version.
Thank you for reporting this bug and we are sorry it could not be fixed.