]> Pileus Git - ~andy/fetchmail/commitdiff
More on the concurrency problem.
authorEric S. Raymond <esr@thyrsus.com>
Thu, 26 Mar 1998 21:51:29 +0000 (21:51 -0000)
committerEric S. Raymond <esr@thyrsus.com>
Thu, 26 Mar 1998 21:51:29 +0000 (21:51 -0000)
svn path=/trunk/; revision=1731

design-notes.html

index b6ddec2de3c91d27841019649ba11cd196fb0574..3b3f1e88634c533d800197dcf393b1df096e11fb 100644 (file)
@@ -10,7 +10,7 @@
 <table width="100%" cellpadding=0><tr>
 <td width="30%">Back to <a href="index.html">Fetchmail Home Page</a>
 <td width="30%" align=center>To <a href="/~esr/sitemap.html">Site Map</a>
-<td width="30%" align=right>$Date: 1998/03/06 04:17:44 $
+<td width="30%" align=right>$Date: 1998/03/26 21:51:29 $
 </table>
 <HR>
 <H1 ALIGN=CENTER>Design Notes On Fetchmail</H1>
@@ -190,8 +190,20 @@ worth the hideous complexity increase it would require in the code.<P>
 
 <H2>Multiple concurrent instances of fetchmail</H1>
 
-What would be required for this is a per-host semaphore asserted
-during each poll.<P>
+Fetchmail locking is on a per-invoking-user because finer-grained
+locks would be really hard to implement in a portable way.  The
+problem is that you don't want two fetchmails querying the same site
+for the same remote user at the same time.<P>
+
+To handle this optimally, multiple fetchmails would have to associate
+a system-wide semaphore with each active pair of a remote user and
+host canonical address.  A fetchmail would have to block until getting
+this semaphore at the start of a query, and release it at the end of a
+query.<P>
+
+This would be way too complicated to do just for an "it might be nice"
+feature.  Instead, you can run a single root fetchmail polling for
+multiple users in either single-drop or multidrop mode.<P>
 
 The fundamental problem here is how an instance of fetchmail polling
 host foo can assert that it's doing so in a way visible to all other
@@ -203,7 +215,7 @@ complicated and fragile, with a bunch of the standard problems (what
 happens if a fetchmail aborts before clearing its semaphore, and how
 do we recover reliably?)<P>.
 
-I'm not satisfied that there's enough functional gain here to pay
+I'm just not satisfied that there's enough functional gain here to pay
 for the large increase in complexity that adding these semaphores
 would entail.<P>
 
@@ -463,7 +475,7 @@ all shaped the design in one way or another.<P>
 <table width="100%" cellpadding=0><tr>
 <td width="30%">Back to <a href="index.html">Fetchmail Home Page</a>
 <td width="30%" align=center>To <a href="/~esr/sitemap.html">Site Map</a>
-<td width="30%" align=right>$Date: 1998/03/06 04:17:44 $
+<td width="30%" align=right>$Date: 1998/03/26 21:51:29 $
 </table>
 
 <P><ADDRESS>Eric S. Raymond <A HREF="mailto:esr@thyrsus.com">&lt;esr@snark.thyrsus.com&gt;</A></ADDRESS>