After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 623936 - 75 second delay when creating new DAV entries in Zimbra
75 second delay when creating new DAV entries in Zimbra
Status: RESOLVED FIXED
Product: evolution-data-server
Classification: Platform
Component: Calendar
2.28.x (obsolete)
Other Linux
: Normal normal
: ---
Assigned To: evolution-calendar-maintainers
Evolution QA team
: 618413 (view as bug list)
Depends on:
Blocks:
 
 
Reported: 2010-07-09 11:20 UTC by jsullivan
Modified: 2014-07-09 13:38 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
eds patch (3.68 KB, patch)
2010-07-12 14:13 UTC, Milan Crha
committed Details | Review

Description jsullivan 2010-07-09 11:20:03 UTC
Current testing for this bug is using Evolution 2.28 installed from Debian Squeeze on Debian Lenny and running against Zimbra 6.0.7.

Every time a new resource is created using DAV (Calendar, Contact), the new item is created immediately but Evolution hands for exactly 75 seconds rather than returning immediately.  We have done significant packet tracing and analysis mostly recorded under https://bugzilla.gnome.org/show_bug.cgi?id=604650

The problem is that Zimbra does not close the connection and Evolution does not do its verifying GET of the PUT DAV it just made until after the connection is closed.  Zimbra defaults the NGINX connection timeout to 75 seconds.  If we set that down to 0, there is no delay.

However, Zimbra is behaving as expected.  The real problem is with the HTTP header sent by Evolution.  Here is the analysis we received from the Zimbra developers:

###
This header needs to be set in HTTP request by WebDAV client.

> > Connection: close

This header tells the server to close connection after handling the current HTTP request.  Absent of this header means the server can use keep-alive, which is part of HTTP/1.1 spec.  

The way they disabled keep-alive was to edit the server configuration.  That will work in that configuration, but won't work against other ZCS install, or other servers that support keep-alive.  keep-alive is ubiquitous on HTTP servers, so I'm somewhat puzzled as for why they are running into open connection issue with ZCS install only.  Perhaps Apple Calendar server does not support keep-alive.  But if keep-alive was the issue, they will surely run into this issue again with other servers.
###

So it would seem Evolution DAV works better with other solutions more by accident than design and it would behove us to set this Connection disposition in the header properly.  Is this as trivial as it sounds? - John
Comment 1 Milan Crha 2010-07-12 13:35:54 UTC
Thanks for a bug report. I'm confirming it with 2.31.5 CalDAV too. Sounds trivial, yup, I'll give it a try.
Comment 2 Milan Crha 2010-07-12 14:13:50 UTC
Created attachment 165738 [details] [review]
eds patch

for evolution-data-server;

As trivial as this :) With this patch the item creation in calendar (and most likely webdav too, but I'm not using it) on a Zimbra server is significantly quicker.

Thanks for all the investigation.
Comment 3 Milan Crha 2010-07-12 14:18:49 UTC
Created commit 17941a9 in eds master (2.31.6+)
Created commit 42caa8c in eds gnome-2-30 (2.30.3+)
Comment 4 jsullivan 2010-08-12 16:34:41 UTC
I can confirm this patch is working very nicely against Zimbra 6.0.7.  However, when applying against the Debian source for 2.30.2.1, I found I had to remove the hunk at line 757.  It seems that function no longer exists.
Comment 5 Milan Crha 2010-08-23 14:56:32 UTC
Right, it's smaller for 2.30.x version, see
http://git.gnome.org/browse/evolution-data-server/commit/?h=gnome-2-30&id=42caa8c
Comment 6 Milan Crha 2014-07-09 13:38:39 UTC
*** Bug 618413 has been marked as a duplicate of this bug. ***