unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* Re: [gmane.emacs.devel] Tramp with global-auto-revert-mode.
       [not found] <nqekp9n8td.fsf@alcatel.de>
@ 2004-05-25  8:04 ` Kim F. Storm
  2004-05-25 10:50   ` Kai Grossjohann
  0 siblings, 1 reply; 14+ messages in thread
From: Kim F. Storm @ 2004-05-25  8:04 UTC (permalink / raw)
  Cc: emacs-devel


> From: Michael Albinus <michael.albinus@gmx.de>
> Date: Sun, 23 May 2004 19:21:09 +0200
> 
> storm@cua.dk (Kim F. Storm) writes:
> 
> > I have experienced various problems with tramp itself while debugging
> > the GC problems -- they certainly need to be fixed before release.
> 
> Could you, please, be a little bit more verbose? I guess you mean
> something else but the autorevert problem.

My observations were somehow related to autorevert, specifically I
found tramp looping around calls to accept-process-output (I suppose
tramp was waiting for output that didn't arrive).

You may say that such problems are caused by auto-revert, but I think
that tramp should never wait indefinitely for output that obviously
will never come.  Since tramp calls accept-process-output in a loop,
relying on the timeout on accept-process-output alone is not enough.

++kfs

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [gmane.emacs.devel] Tramp with global-auto-revert-mode.
  2004-05-25  8:04 ` [gmane.emacs.devel] Tramp with global-auto-revert-mode Kim F. Storm
@ 2004-05-25 10:50   ` Kai Grossjohann
  2004-05-26 20:21     ` Michael Albinus
  2004-05-27  2:53     ` Luc Teirlinck
  0 siblings, 2 replies; 14+ messages in thread
From: Kai Grossjohann @ 2004-05-25 10:50 UTC (permalink / raw)


storm@cua.dk (Kim F. Storm) writes:

> You may say that such problems are caused by auto-revert, but I think
> that tramp should never wait indefinitely for output that obviously
> will never come.  Since tramp calls accept-process-output in a loop,
> relying on the timeout on accept-process-output alone is not enough.

Tramp can't know whether the output will come or not.  Tramp enters
the infloop only in cases where it expects output from the remote
system.

This is to say, if the output from the remote system doesn't arrive,
then something is wrong anyway, and Tramp will be unable to operate
properly.

The auto-revert problems are, of course, caused by my failure to
anticipate that Tramp might be called in a reentrant fashion.  This
surely needs to be fixed.  But just removing the infloop is not going
to help.  Instead, Tramp needs to be made aware of reentrant calls in
one fashion or another.

Kai

PS: Is "reentrant" the right term here?

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [gmane.emacs.devel] Tramp with global-auto-revert-mode.
  2004-05-25 10:50   ` Kai Grossjohann
@ 2004-05-26 20:21     ` Michael Albinus
  2004-05-27  2:53     ` Luc Teirlinck
  1 sibling, 0 replies; 14+ messages in thread
From: Michael Albinus @ 2004-05-26 20:21 UTC (permalink / raw)
  Cc: Kai Grossjohann, emacs-devel

Kai Grossjohann <kai@emptydomain.de> writes:

> storm@cua.dk (Kim F. Storm) writes:
>
>> You may say that such problems are caused by auto-revert, but I think
>> that tramp should never wait indefinitely for output that obviously
>> will never come.  Since tramp calls accept-process-output in a loop,
>> relying on the timeout on accept-process-output alone is not enough.
>
> Tramp can't know whether the output will come or not.  Tramp enters
> the infloop only in cases where it expects output from the remote
> system.
>
> This is to say, if the output from the remote system doesn't arrive,
> then something is wrong anyway, and Tramp will be unable to operate
> properly.

I agree with Kai.

Some days ago, Tramp got a patch checking for a dead process during
accept-process-output in order to react faster (in Tramp CVS, not
synced yet with Emacs CVS).

Despite of this and the outstanding solution for the auto-revert
problem: what else should be done? Tramp must wait for the output,
otherwise it cannot decide how to continue. And it doesn't know that
the output "obviously will never come".

Best regards, Michael.

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [gmane.emacs.devel] Tramp with global-auto-revert-mode.
  2004-05-25 10:50   ` Kai Grossjohann
  2004-05-26 20:21     ` Michael Albinus
@ 2004-05-27  2:53     ` Luc Teirlinck
  2004-05-27  8:37       ` Kim F. Storm
  2004-05-27 23:53       ` Richard Stallman
  1 sibling, 2 replies; 14+ messages in thread
From: Luc Teirlinck @ 2004-05-27  2:53 UTC (permalink / raw)
  Cc: emacs-devel

What if we, for the time being, completely disable auto-reverting of
remote files?  Currently it apparently _even_ gives problems for
people with fast connections.  Once Tramp can better deal with
reentrant (or recursive, whatever one wants to call it) calls, we can
introduce a user option to dis/en-able auto-reverting of remote files.

Sincerely,

Luc.

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [gmane.emacs.devel] Tramp with global-auto-revert-mode.
  2004-05-27  2:53     ` Luc Teirlinck
@ 2004-05-27  8:37       ` Kim F. Storm
  2004-05-28 15:01         ` Stefan Monnier
  2004-05-27 23:53       ` Richard Stallman
  1 sibling, 1 reply; 14+ messages in thread
From: Kim F. Storm @ 2004-05-27  8:37 UTC (permalink / raw)
  Cc: kai, emacs-devel

Luc Teirlinck <teirllm@dms.auburn.edu> writes:

> What if we, for the time being, completely disable auto-reverting of
> remote files?  Currently it apparently _even_ gives problems for
> people with fast connections.  Once Tramp can better deal with
> reentrant (or recursive, whatever one wants to call it) calls, we can
> introduce a user option to dis/en-able auto-reverting of remote files.

Yes, that's the "trivial fix" we should use for 21.4.

-- 
Kim F. Storm <storm@cua.dk> http://www.cua.dk

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [gmane.emacs.devel] Tramp with global-auto-revert-mode.
  2004-05-27  2:53     ` Luc Teirlinck
  2004-05-27  8:37       ` Kim F. Storm
@ 2004-05-27 23:53       ` Richard Stallman
  1 sibling, 0 replies; 14+ messages in thread
From: Richard Stallman @ 2004-05-27 23:53 UTC (permalink / raw)
  Cc: kai, emacs-devel

    What if we, for the time being, completely disable auto-reverting of
    remote files?

Would someone please do this without further delay?

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [gmane.emacs.devel] Tramp with global-auto-revert-mode.
  2004-05-27  8:37       ` Kim F. Storm
@ 2004-05-28 15:01         ` Stefan Monnier
  2004-05-28 15:07           ` Kim F. Storm
  0 siblings, 1 reply; 14+ messages in thread
From: Stefan Monnier @ 2004-05-28 15:01 UTC (permalink / raw)
  Cc: kai, Luc Teirlinck, emacs-devel

>> What if we, for the time being, completely disable auto-reverting of
>> remote files?  Currently it apparently _even_ gives problems for
>> people with fast connections.  Once Tramp can better deal with
>> reentrant (or recursive, whatever one wants to call it) calls, we can
>> introduce a user option to dis/en-able auto-reverting of remote files.

> Yes, that's the "trivial fix" we should use for 21.4.

Indeed, it's probably a good thing to do independently from
any other problem.  But I find it important that we fix the bugs
revealed by such a setup before we change the default.


        Stefan

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [gmane.emacs.devel] Tramp with global-auto-revert-mode.
  2004-05-28 15:01         ` Stefan Monnier
@ 2004-05-28 15:07           ` Kim F. Storm
  2004-05-28 15:44             ` Kai Grossjohann
  0 siblings, 1 reply; 14+ messages in thread
From: Kim F. Storm @ 2004-05-28 15:07 UTC (permalink / raw)
  Cc: kai, Luc Teirlinck, emacs-devel

Stefan Monnier <monnier@iro.umontreal.ca> writes:

> >> What if we, for the time being, completely disable auto-reverting of
> >> remote files?  Currently it apparently _even_ gives problems for
> >> people with fast connections.  Once Tramp can better deal with
> >> reentrant (or recursive, whatever one wants to call it) calls, we can
> >> introduce a user option to dis/en-able auto-reverting of remote files.
> 
> > Yes, that's the "trivial fix" we should use for 21.4.
> 
> Indeed, it's probably a good thing to do independently from
> any other problem.  But I find it important that we fix the bugs
> revealed by such a setup before we change the default.

I think we have a pretty good understanding of what the problems are
in this case: GC problems have been fixed, so it remains to fix that
tramp is not reentrant.

So it is "safe" to change the default (and it has already been done).

-- 
Kim F. Storm <storm@cua.dk> http://www.cua.dk

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [gmane.emacs.devel] Tramp with global-auto-revert-mode.
  2004-05-28 15:07           ` Kim F. Storm
@ 2004-05-28 15:44             ` Kai Grossjohann
  2004-05-28 23:44               ` Kim F. Storm
  2004-05-30 14:31               ` Richard Stallman
  0 siblings, 2 replies; 14+ messages in thread
From: Kai Grossjohann @ 2004-05-28 15:44 UTC (permalink / raw)
  Cc: kai, Luc Teirlinck, Stefan Monnier, emacs-devel

storm@cua.dk (Kim F. Storm) writes:

> I think we have a pretty good understanding of what the problems are
> in this case: GC problems have been fixed, so it remains to fix that
> tramp is not reentrant.

I would like to discuss the solution with Michael, but I can think of
the following solutions:

(a) Make Tramp barf on reentrant calls.

(b) Make Tramp wait on reentrant calls (by implementing a queue or
    somesuch).

(c) Implement concurrency for reentrant calls (by opening more than
    one connection to the remote end).

Are you okay with all of these, or is one of them a no-no?

Kai

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [gmane.emacs.devel] Tramp with global-auto-revert-mode.
  2004-05-28 15:44             ` Kai Grossjohann
@ 2004-05-28 23:44               ` Kim F. Storm
  2004-05-28 23:52                 ` Stefan Monnier
  2004-05-29 10:17                 ` Kai Grossjohann
  2004-05-30 14:31               ` Richard Stallman
  1 sibling, 2 replies; 14+ messages in thread
From: Kim F. Storm @ 2004-05-28 23:44 UTC (permalink / raw)
  Cc: Luc Teirlinck, Stefan Monnier, emacs-devel

Kai Grossjohann <kai@emptydomain.de> writes:

> storm@cua.dk (Kim F. Storm) writes:
> 
> > I think we have a pretty good understanding of what the problems are
> > in this case: GC problems have been fixed, so it remains to fix that
> > tramp is not reentrant.
> 
> I would like to discuss the solution with Michael, but I can think of
> the following solutions:
> 
> (a) Make Tramp barf on reentrant calls.

That would probably break some code which does eg. file-exists-p
in a timer hook or some such.  So it is not an option.

> 
> (b) Make Tramp wait on reentrant calls (by implementing a queue or
>     somesuch).

I prefer this (because there are problems with the alternatives).

> 
> (c) Implement concurrency for reentrant calls (by opening more than
>     one connection to the remote end).

How do you solve the problem with having to enter passwords or other
stuff when invoked from a hook ...  and would you start a new thread
for every reentant call, that sounds like a lot of processes?

Also, tramp is slow at opening a connection (but maybe it can skip
some initial checks when it already has another connection to the
same host?).


-- 
Kim F. Storm <storm@cua.dk> http://www.cua.dk

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [gmane.emacs.devel] Tramp with global-auto-revert-mode.
  2004-05-28 23:44               ` Kim F. Storm
@ 2004-05-28 23:52                 ` Stefan Monnier
  2004-05-29 10:17                 ` Kai Grossjohann
  1 sibling, 0 replies; 14+ messages in thread
From: Stefan Monnier @ 2004-05-28 23:52 UTC (permalink / raw)
  Cc: Kai Grossjohann, Luc Teirlinck, emacs-devel

>> (a) Make Tramp barf on reentrant calls.

> That would probably break some code which does eg. file-exists-p
> in a timer hook or some such.  So it is not an option.

Such code currently breaks anyway, so it's still an improvement since it
makes things break more cleanly.


        Stefan

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [gmane.emacs.devel] Tramp with global-auto-revert-mode.
  2004-05-28 23:44               ` Kim F. Storm
  2004-05-28 23:52                 ` Stefan Monnier
@ 2004-05-29 10:17                 ` Kai Grossjohann
  2004-05-29 22:49                   ` Kim F. Storm
  1 sibling, 1 reply; 14+ messages in thread
From: Kai Grossjohann @ 2004-05-29 10:17 UTC (permalink / raw)
  Cc: Kai Grossjohann, Luc Teirlinck, Stefan Monnier, emacs-devel

storm@cua.dk (Kim F. Storm) writes:

> Kai Grossjohann <kai@emptydomain.de> writes:
>
>> storm@cua.dk (Kim F. Storm) writes:
>> 
>> > I think we have a pretty good understanding of what the problems are
>> > in this case: GC problems have been fixed, so it remains to fix that
>> > tramp is not reentrant.
>> 
>> I would like to discuss the solution with Michael, but I can think of
>> the following solutions:
>> 
>> (a) Make Tramp barf on reentrant calls.
>
> That would probably break some code which does eg. file-exists-p
> in a timer hook or some such.  So it is not an option.

I agree with Stefan: that code breaks now anyway.

>> (b) Make Tramp wait on reentrant calls (by implementing a queue or
>>     somesuch).
>
> I prefer this (because there are problems with the alternatives).

Michael wants to work on this, I think.  I'm not sure whether there
would be problems with this idea: it would tend to cause timers to
take longer to process (because they have to wait on the "main" Emacs
thread), and the "main" Emacs thread might have to wait longer on the
timers.  This effect could be benign or bad, I don't know.

>> (c) Implement concurrency for reentrant calls (by opening more than
>>     one connection to the remote end).
>
> How do you solve the problem with having to enter passwords or other
> stuff when invoked from a hook ... 

The idea is to cache them.  Multiple connections to the same host are
useful anyway, e.g. for async shell commands.  Also, Tramp could then
reopen the connection without pestering the user.

> and would you start a new thread for every reentant call, that
> sounds like a lot of processes?

The idea is to keep the connections open (at least for a while), and
to reuse them.

> Also, tramp is slow at opening a connection (but maybe it can skip
> some initial checks when it already has another connection to the
> same host?).

Remembering the results of the initial checks is also on the todo
list.

Kai

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [gmane.emacs.devel] Tramp with global-auto-revert-mode.
  2004-05-29 10:17                 ` Kai Grossjohann
@ 2004-05-29 22:49                   ` Kim F. Storm
  0 siblings, 0 replies; 14+ messages in thread
From: Kim F. Storm @ 2004-05-29 22:49 UTC (permalink / raw)
  Cc: Luc Teirlinck, Stefan Monnier, emacs-devel

Kai Grossjohann <kai@emptydomain.de> writes:

> > and would you start a new thread for every reentant call, that
> > sounds like a lot of processes?
> 
> The idea is to keep the connections open (at least for a while), and
> to reuse them.
> 
> > Also, tramp is slow at opening a connection (but maybe it can skip
> > some initial checks when it already has another connection to the
> > same host?).
> 
> Remembering the results of the initial checks is also on the todo
> list.

Both of these would be really good enhancements; if they are done, the
third option would be preferable...

-- 
Kim F. Storm <storm@cua.dk> http://www.cua.dk

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [gmane.emacs.devel] Tramp with global-auto-revert-mode.
  2004-05-28 15:44             ` Kai Grossjohann
  2004-05-28 23:44               ` Kim F. Storm
@ 2004-05-30 14:31               ` Richard Stallman
  1 sibling, 0 replies; 14+ messages in thread
From: Richard Stallman @ 2004-05-30 14:31 UTC (permalink / raw)
  Cc: emacs-devel, kai, teirllm, monnier, storm

    (a) Make Tramp barf on reentrant calls.

    (b) Make Tramp wait on reentrant calls (by implementing a queue or
	somesuch).

    (c) Implement concurrency for reentrant calls (by opening more than
	one connection to the remote end).

    Are you okay with all of these, or is one of them a no-no?

I have no objection to any of them, but I don't see how (b)
could make sense.  Since Emacs is not multithreaded, a reentrant
invocation is a recursive invocation.  To wait would mean waiting
forever.

^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2004-05-30 14:31 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <nqekp9n8td.fsf@alcatel.de>
2004-05-25  8:04 ` [gmane.emacs.devel] Tramp with global-auto-revert-mode Kim F. Storm
2004-05-25 10:50   ` Kai Grossjohann
2004-05-26 20:21     ` Michael Albinus
2004-05-27  2:53     ` Luc Teirlinck
2004-05-27  8:37       ` Kim F. Storm
2004-05-28 15:01         ` Stefan Monnier
2004-05-28 15:07           ` Kim F. Storm
2004-05-28 15:44             ` Kai Grossjohann
2004-05-28 23:44               ` Kim F. Storm
2004-05-28 23:52                 ` Stefan Monnier
2004-05-29 10:17                 ` Kai Grossjohann
2004-05-29 22:49                   ` Kim F. Storm
2004-05-30 14:31               ` Richard Stallman
2004-05-27 23:53       ` Richard Stallman

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).