The thing where it says it's already open when it's not, now I understand 
it! Where is this global db file and why is it necessary?
thanks
Todd.


On Saturday, June 20, 2015 at 7:01:07 PM UTC-4, Edward K. Ream wrote:
>
> #199 <https://github.com/leo-editor/leo-editor/issues/199> is presently 
> the most serious bug in Leo.  Sometimes, but not always, cancelling the 
> load of an already-opened .leo file will hard crash Leo (Python).
>
> This post is an Engineering Notebook post.  It's most notes to myself and 
> Terry.  Feel free to ignore.
>
> I am studying a core dump on Ubuntu.  It's been fun learning about 
> apport-retrace 
> <http://manpages.ubuntu.com/manpages/vivid/en/man1/apport-retrace.1.html>, 
> but not *that *much fun.  Terry's analysis of the problem is good enough 
> for me.  It's time to solve the problem with design, not mere code.
>
>
>
> *The original problem*Leo should indeed warn users when they attempt to 
> open an already-open file, call it *f.leo*.  Saving either copy of f.leo 
> could destroy data previously saved in the *other* copy of f.leo.
>
> The problem is not actually very serious, because Leo *already *warns if 
> f.leo has been changed outside of the presently executing copy of Leo.  For 
> example, suppose two invocations of Leo exists.  Let's call them *A* and 
> *B*.  Suppose Leo A saves f.leo. Later, if B saves f.leo, Leo B will 
> issue a warning that f.leo has been changed outside of B.
>
> Still, I think it is best to warn the user if f.leo is already open.
>
> The mechanism for checking for already-open files is fine. Leo makes 
> entries in the global db file when opening a file and deletes entries in 
> the db when closing the file. This can lead to spurious "already open" 
> messages if Leo is killed rather than being closed normally.  The db will 
> contain an entry for a .leo file that is not, in fact, open. Happily, this 
> has never been a big deal. Furthermore, the following scheme handles this 
> case even more smoothly than before.
>
> *Proposal: always open files, even if already open*
>
> Leo will no longer issue *per-file* requests for guidance.  Instead, Leo 
> will open all possibly-already-open files, putting warnings about them in 
> the log. Finally, Leo will raise a *single *warning dialog.  This dialog 
> will list the files that might already be open, and suggest that the user 
> close duplicate files in whatever copy of Leo is more convenient.
>
> This scheme solves several problems:
>
> 1. Leo always loads files. This instantly eliminates the possibility of 
> hard crashes.
>
> 2. It's faster than the existing scheme.  The user only has to dismiss the 
> summary dialog.
>
> 3. The user will never have to choose *right now *what action to take. 
> Such choices are *always *odious and stressful.  Instead, the user can 
> choose to close the duplicate f.leo file in either A or B.  In most cases, 
> it's safe to leave *both* copies open, as long as both don't change.  To 
> repeat, Leo will issue a warning if that happens.
>
> 4. Closing a duplicate file, in either A or B, automatically clears the db 
> entry for that file.  There is no need to ask the user whether to reset the 
> db!
>
> The only complication will be knowing exactly when/where to issue the 
> warning dialog.  The details will be different depending on whether Leo is 
> loading multiple files at startup, or loading a single file later.  But 
> this is only a coding detail.
>
> *Summary*
>
> A single dialog that warns about possibly-already-open files is the 
> simplest thing that could possibly work:
>
> - It's easy to code.
> - It will stamp out hard crashes.
> - It's simpler, faster, more flexible and less stressful for the user.
>
> Unless there are strong objections to this scheme, I plan to put it into 
> effect immediately.
>
> Your comments, please, Amigos.
>
> Edward
> <http://manpages.ubuntu.com/apport-retrace>
>

-- 
You received this message because you are subscribed to the Google Groups 
"leo-editor" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to leo-editor+unsubscr...@googlegroups.com.
To post to this group, send email to leo-editor@googlegroups.com.
Visit this group at http://groups.google.com/group/leo-editor.
For more options, visit https://groups.google.com/d/optout.

Reply via email to