The ETags for items are randomly changing, making clients think that they are out of sync and causing problems with modifying and deleting items. See log below.
The client requests a REPORT (line 318) which returns an ETag for an event of -4049659368375310251 (line 367). Next, the client tries to PUT a modification to the item (line 434) with an HTTP_IF_MATCH value of -4049659368375310251 (line 426) matching the ETag. Radicale rejects the PUT with a 412 Precondition Failed error (line 506). The client then requests another REPORT (line 530) and is told the ETag is now 2187202860821113076 (line 579), despite the fact that no actions were performed by any client between the first REPORT and the PUT.
2013-10-25 03:34:38,110 - DEBUG: Authentication type is None
2013-10-25 03:34:38,110 - DEBUG: Rights type is None
2013-10-25 03:34:38,116 - INFO: PUT request at /q/cal/3bcc614b-38f6-40f2-978f-b4c437c76180.ics received
2013-10-25 03:34:38,119 - DEBUG: Request headers:
{'CONTENT_LENGTH': '739',
'CONTENT_TYPE': 'text/calendar; charset=utf-8',
'DOCUMENT_ROOT': '/srv/http',
'GATEWAY_INTERFACE': 'CGI/1.1',
'HTTP_ACCEPT': 'text/xml',
'HTTP_ACCEPT_CHARSET': 'utf-8,*;q=0.1',
'HTTP_ACCEPT_ENCODING': 'gzip, deflate',
'HTTP_ACCEPT_LANGUAGE': 'en-US,en;q=0.5',
'HTTP_CACHE_CONTROL': 'no-cache',
'HTTP_CONNECTION': 'keep-alive',
'HTTP_HOST': '122.293.432.756',
'HTTP_IF_NONE_MATCH': '*',
'HTTP_PRAGMA': 'no-cache',
'HTTP_USER_AGENT': 'Mozilla/5.0 (X11; Linux i686; rv:24.0) Gecko/20100101 Thunderbird/24.0 Lightning/2.6b3',
'PATH_INFO': '/q/cal/3bcc614b-38f6-40f2-978f-b4c437c76180.ics',
'PATH_TRANSLATED': '/srv/http/calendar/radicale.wsgi/q/cal/3bcc614b-38f6-40f2-978f-b4c437c76180.ics',
'QUERY_STRING': '',
'REMOTE_ADDR': '623.173.347.734',
'REMOTE_PORT': '45011',
'REQUEST_METHOD': 'PUT',
'REQUEST_URI': '/q/cal/3bcc614b-38f6-40f2-978f-b4c437c76180.ics',
'SCRIPT_FILENAME': '/srv/http/calendar/radicale.wsgi',
'SCRIPT_NAME': '',
'SERVER_ADDR': '122.293.432.756',
'SERVER_ADMIN': '[email protected]',
'SERVER_NAME': '122.293.432.756',
'SERVER_PORT': '80',
'SERVER_PROTOCOL': 'HTTP/1.1',
'SERVER_SIGNATURE': '<address>Apache/2.2.25 (Unix) mod_ssl/2.2.25 OpenSSL/1.0.1e DAV/2 mod_wsgi/3.4 Python/3.3.2 Server at 122.293.432.756 Port 80</address>\n',
'SERVER_SOFTWARE': 'Apache/2.2.25 (Unix) mod_ssl/2.2.25 OpenSSL/1.0.1e DAV/2 mod_wsgi/3.4 Python/3.3.2',
'UNIQUE_ID': 'UmnmzcDt9ewAAD3SFJkAAAAB',
'mod_wsgi.application_group': '',
'mod_wsgi.callable_object': 'application',
'mod_wsgi.enable_sendfile': '0',
'mod_wsgi.handler_script': '',
'mod_wsgi.input_chunked': '0',
'mod_wsgi.listener_host': '',
'mod_wsgi.listener_port': '80',
'mod_wsgi.process_group': '',
'mod_wsgi.queue_start': '1382672077952522',
'mod_wsgi.request_handler': 'wsgi-script',
'mod_wsgi.script_reloading': '1',
'mod_wsgi.version': (3, 4),
'wsgi.errors': <_io.TextIOWrapper encoding='utf-8'>,
'wsgi.file_wrapper': <built-in method file_wrapper of mod_wsgi.Adapter object at 0x7f9dcec90288>,
'wsgi.input': <mod_wsgi.Input object at 0x7f9dcec8c3b0>,
'wsgi.multiprocess': True,
'wsgi.multithread': False,
'wsgi.run_once': False,
'wsgi.url_scheme': 'http',
'wsgi.version': (1, 0)}
2013-10-25 03:34:38,120 - DEBUG: Sanitized path: /q/cal/3bcc614b-38f6-40f2-978f-b4c437c76180.ics
2013-10-25 03:34:38,120 - DEBUG: Request content:
BEGIN:VCALENDAR
PRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:America/New_York
X-LIC-LOCATION:America/New_York
BEGIN:DAYLIGHT
TZOFFSETFROM:-0500
TZOFFSETTO:-0400
TZNAME:EDT
DTSTART:19700308T020000
RRULE:FREQ=YEARLY;BYDAY=2SU;BYMONTH=3
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:-0400
TZOFFSETTO:-0500
TZNAME:EST
DTSTART:19701101T020000
RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=11
END:STANDARD
END:VTIMEZONE
BEGIN:VEVENT
CREATED:20131025T073438Z
LAST-MODIFIED:20131025T073442Z
DTSTAMP:20131025T073442Z
UID:3bcc614b-38f6-40f2-978f-b4c437c76180
SUMMARY:Event1
DTSTART;TZID=America/New_York:20131007T040000
DTEND;TZID=America/New_York:20131007T050000
END:VEVENT
END:VCALENDAR
2013-10-25 03:34:38,120 - DEBUG: Anonymous has read access to collection q/cal/
2013-10-25 03:34:38,120 - DEBUG: Anonymous has write access to collection q/cal/
2013-10-25 03:34:38,123 - DEBUG: Answer status: 201 Created
2013-10-25 03:34:38,407 - INFO: REPORT request at /q/cal/ received
2013-10-25 03:34:38,411 - DEBUG: Request headers:
{'CONTENT_LENGTH': '248',
'CONTENT_TYPE': 'text/xml; charset=utf-8',
'DOCUMENT_ROOT': '/srv/http',
'GATEWAY_INTERFACE': 'CGI/1.1',
'HTTP_ACCEPT': 'text/xml',
'HTTP_ACCEPT_CHARSET': 'utf-8,*;q=0.1',
'HTTP_ACCEPT_ENCODING': 'gzip, deflate',
'HTTP_ACCEPT_LANGUAGE': 'en-US,en;q=0.5',
'HTTP_CACHE_CONTROL': 'no-cache',
'HTTP_CONNECTION': 'keep-alive',
'HTTP_DEPTH': '1',
'HTTP_HOST': '122.293.432.756',
'HTTP_PRAGMA': 'no-cache',
'HTTP_USER_AGENT': 'Mozilla/5.0 (X11; Linux i686; rv:24.0) Gecko/20100101 Thunderbird/24.0 Lightning/2.6b3',
'PATH_INFO': '/q/cal/',
'PATH_TRANSLATED': '/srv/http/calendar/radicale.wsgi/q/cal/',
'QUERY_STRING': '',
'REMOTE_ADDR': '623.173.347.734',
'REMOTE_PORT': '45011',
'REQUEST_METHOD': 'REPORT',
'REQUEST_URI': '/q/cal/',
'SCRIPT_FILENAME': '/srv/http/calendar/radicale.wsgi',
'SCRIPT_NAME': '',
'SERVER_ADDR': '122.293.432.756',
'SERVER_ADMIN': '[email protected]',
'SERVER_NAME': '122.293.432.756',
'SERVER_PORT': '80',
'SERVER_PROTOCOL': 'HTTP/1.1',
'SERVER_SIGNATURE': '<address>Apache/2.2.25 (Unix) mod_ssl/2.2.25 OpenSSL/1.0.1e DAV/2 mod_wsgi/3.4 Python/3.3.2 Server at 122.293.432.756 Port 80</address>\n',
'SERVER_SOFTWARE': 'Apache/2.2.25 (Unix) mod_ssl/2.2.25 OpenSSL/1.0.1e DAV/2 mod_wsgi/3.4 Python/3.3.2',
'UNIQUE_ID': 'UmnmzsDt9ewAAD3SFJoAAAAB',
'mod_wsgi.application_group': '',
'mod_wsgi.callable_object': 'application',
'mod_wsgi.enable_sendfile': '0',
'mod_wsgi.handler_script': '',
'mod_wsgi.input_chunked': '0',
'mod_wsgi.listener_host': '',
'mod_wsgi.listener_port': '80',
'mod_wsgi.process_group': '',
'mod_wsgi.queue_start': '1382672078407395',
'mod_wsgi.request_handler': 'wsgi-script',
'mod_wsgi.script_reloading': '1',
'mod_wsgi.version': (3, 4),
'wsgi.errors': <_io.TextIOWrapper encoding='utf-8'>,
'wsgi.file_wrapper': <built-in method file_wrapper of mod_wsgi.Adapter object at 0x7f9dcec3abe8>,
'wsgi.input': <mod_wsgi.Input object at 0x7f9dcec93d70>,
'wsgi.multiprocess': True,
'wsgi.multithread': False,
'wsgi.run_once': False,
'wsgi.url_scheme': 'http',
'wsgi.version': (1, 0)}
2013-10-25 03:34:38,411 - DEBUG: Sanitized path: /q/cal/
2013-10-25 03:34:38,411 - DEBUG: Request content:
<?xml version="1.0" encoding="UTF-8"?>
<C:calendar-multiget xmlns:D="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav"><D:prop><D:getetag/><C:calendar-data/></D:prop><D:href>/q/cal/3bcc614b-38f6-40f2-978f-b4c437c76180.ics</D:href></C:calendar-multiget>
2013-10-25 03:34:38,412 - DEBUG: Anonymous has read access to collection q/cal/
2013-10-25 03:34:38,412 - DEBUG: Anonymous has write access to collection q/cal/
2013-10-25 03:34:38,412 - DEBUG: Anonymous has read access to item 3bcc614b-38f6-40f2-978f-b4c437c76180.ics
2013-10-25 03:34:38,412 - DEBUG: Anonymous has write access to item 3bcc614b-38f6-40f2-978f-b4c437c76180.ics
2013-10-25 03:34:38,414 - DEBUG: Response content:
<?xml version="1.0"?>
<multistatus xmlns="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav">
<response>
<href>/q/cal/3bcc614b-38f6-40f2-978f-b4c437c76180.ics</href>
<propstat>
<prop>
<getetag>"-3793751641795467561"</getetag>
<C:calendar-data>BEGIN:VCALENDAR
PRODID:-//Radicale//NONSGML Radicale Server//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:America/New_York
X-LIC-LOCATION:America/New_York
BEGIN:DAYLIGHT
TZOFFSETFROM:-0500
TZOFFSETTO:-0400
TZNAME:EDT
DTSTART:19700308T020000
RRULE:FREQ=YEARLY;BYDAY=2SU;BYMONTH=3
X-RADICALE-NAME:America/New_York
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:-0400
TZOFFSETTO:-0500
TZNAME:EST
DTSTART:19701101T020000
RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=11
X-RADICALE-NAME:America/New_York
END:STANDARD
X-RADICALE-NAME:America/New_York
END:VTIMEZONE
BEGIN:VEVENT
CREATED:20131025T073438Z
LAST-MODIFIED:20131025T073442Z
DTSTAMP:20131025T073442Z
UID:3bcc614b-38f6-40f2-978f-b4c437c76180
SUMMARY:Event1
DTSTART;TZID=America/New_York:20131007T040000
DTEND;TZID=America/New_York:20131007T050000
X-RADICALE-NAME:3bcc614b-38f6-40f2-978f-b4c437c76180.ics
END:VEVENT
END:VCALENDAR
</C:calendar-data>
</prop>
<status>HTTP/1.1 200 OK</status>
</propstat>
</response>
</multistatus>
2013-10-25 03:34:38,414 - DEBUG: Answer status: 207 Unknown
2013-10-25 03:34:44,291 - DEBUG: Authentication type is None
2013-10-25 03:34:44,291 - DEBUG: Rights type is None
2013-10-25 03:34:44,297 - INFO: PUT request at /q/cal/280fc62c-14c7-421f-b3e0-209908a2da72.ics received
2013-10-25 03:34:44,301 - DEBUG: Request headers:
{'CONTENT_LENGTH': '739',
'CONTENT_TYPE': 'text/calendar; charset=utf-8',
'DOCUMENT_ROOT': '/srv/http',
'GATEWAY_INTERFACE': 'CGI/1.1',
'HTTP_ACCEPT': 'text/xml',
'HTTP_ACCEPT_CHARSET': 'utf-8,*;q=0.1',
'HTTP_ACCEPT_ENCODING': 'gzip, deflate',
'HTTP_ACCEPT_LANGUAGE': 'en-US,en;q=0.5',
'HTTP_CACHE_CONTROL': 'no-cache',
'HTTP_CONNECTION': 'keep-alive',
'HTTP_HOST': '122.293.432.756',
'HTTP_IF_NONE_MATCH': '*',
'HTTP_PRAGMA': 'no-cache',
'HTTP_USER_AGENT': 'Mozilla/5.0 (X11; Linux i686; rv:24.0) Gecko/20100101 Thunderbird/24.0 Lightning/2.6b3',
'PATH_INFO': '/q/cal/280fc62c-14c7-421f-b3e0-209908a2da72.ics',
'PATH_TRANSLATED': '/srv/http/calendar/radicale.wsgi/q/cal/280fc62c-14c7-421f-b3e0-209908a2da72.ics',
'QUERY_STRING': '',
'REMOTE_ADDR': '623.173.347.734',
'REMOTE_PORT': '45012',
'REQUEST_METHOD': 'PUT',
'REQUEST_URI': '/q/cal/280fc62c-14c7-421f-b3e0-209908a2da72.ics',
'SCRIPT_FILENAME': '/srv/http/calendar/radicale.wsgi',
'SCRIPT_NAME': '',
'SERVER_ADDR': '122.293.432.756',
'SERVER_ADMIN': '[email protected]',
'SERVER_NAME': '122.293.432.756',
'SERVER_PORT': '80',
'SERVER_PROTOCOL': 'HTTP/1.1',
'SERVER_SIGNATURE': '<address>Apache/2.2.25 (Unix) mod_ssl/2.2.25 OpenSSL/1.0.1e DAV/2 mod_wsgi/3.4 Python/3.3.2 Server at 122.293.432.756 Port 80</address>\n',
'SERVER_SOFTWARE': 'Apache/2.2.25 (Unix) mod_ssl/2.2.25 OpenSSL/1.0.1e DAV/2 mod_wsgi/3.4 Python/3.3.2',
'UNIQUE_ID': 'Umnm1MDt9ewAAD3TEwIAAAAC',
'mod_wsgi.application_group': '',
'mod_wsgi.callable_object': 'application',
'mod_wsgi.enable_sendfile': '0',
'mod_wsgi.handler_script': '',
'mod_wsgi.input_chunked': '0',
'mod_wsgi.listener_host': '',
'mod_wsgi.listener_port': '80',
'mod_wsgi.process_group': '',
'mod_wsgi.queue_start': '1382672084131318',
'mod_wsgi.request_handler': 'wsgi-script',
'mod_wsgi.script_reloading': '1',
'mod_wsgi.version': (3, 4),
'wsgi.errors': <_io.TextIOWrapper encoding='utf-8'>,
'wsgi.file_wrapper': <built-in method file_wrapper of mod_wsgi.Adapter object at 0x7f9dcec90288>,
'wsgi.input': <mod_wsgi.Input object at 0x7f9dcec8c3b0>,
'wsgi.multiprocess': True,
'wsgi.multithread': False,
'wsgi.run_once': False,
'wsgi.url_scheme': 'http',
'wsgi.version': (1, 0)}
2013-10-25 03:34:44,301 - DEBUG: Sanitized path: /q/cal/280fc62c-14c7-421f-b3e0-209908a2da72.ics
2013-10-25 03:34:44,301 - DEBUG: Request content:
BEGIN:VCALENDAR
PRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:America/New_York
X-LIC-LOCATION:America/New_York
BEGIN:DAYLIGHT
TZOFFSETFROM:-0500
TZOFFSETTO:-0400
TZNAME:EDT
DTSTART:19700308T020000
RRULE:FREQ=YEARLY;BYDAY=2SU;BYMONTH=3
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:-0400
TZOFFSETTO:-0500
TZNAME:EST
DTSTART:19701101T020000
RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=11
END:STANDARD
END:VTIMEZONE
BEGIN:VEVENT
CREATED:20131025T073444Z
LAST-MODIFIED:20131025T073448Z
DTSTAMP:20131025T073448Z
UID:280fc62c-14c7-421f-b3e0-209908a2da72
SUMMARY:Event2
DTSTART;TZID=America/New_York:20131008T040000
DTEND;TZID=America/New_York:20131008T050000
END:VEVENT
END:VCALENDAR
2013-10-25 03:34:44,301 - DEBUG: Anonymous has read access to collection q/cal/
2013-10-25 03:34:44,301 - DEBUG: Anonymous has write access to collection q/cal/
2013-10-25 03:34:44,304 - DEBUG: Answer status: 201 Created
2013-10-25 03:34:44,559 - INFO: REPORT request at /q/cal/ received
2013-10-25 03:34:44,562 - DEBUG: Request headers:
{'CONTENT_LENGTH': '248',
'CONTENT_TYPE': 'text/xml; charset=utf-8',
'DOCUMENT_ROOT': '/srv/http',
'GATEWAY_INTERFACE': 'CGI/1.1',
'HTTP_ACCEPT': 'text/xml',
'HTTP_ACCEPT_CHARSET': 'utf-8,*;q=0.1',
'HTTP_ACCEPT_ENCODING': 'gzip, deflate',
'HTTP_ACCEPT_LANGUAGE': 'en-US,en;q=0.5',
'HTTP_CACHE_CONTROL': 'no-cache',
'HTTP_CONNECTION': 'keep-alive',
'HTTP_DEPTH': '1',
'HTTP_HOST': '122.293.432.756',
'HTTP_PRAGMA': 'no-cache',
'HTTP_USER_AGENT': 'Mozilla/5.0 (X11; Linux i686; rv:24.0) Gecko/20100101 Thunderbird/24.0 Lightning/2.6b3',
'PATH_INFO': '/q/cal/',
'PATH_TRANSLATED': '/srv/http/calendar/radicale.wsgi/q/cal/',
'QUERY_STRING': '',
'REMOTE_ADDR': '623.173.347.734',
'REMOTE_PORT': '45012',
'REQUEST_METHOD': 'REPORT',
'REQUEST_URI': '/q/cal/',
'SCRIPT_FILENAME': '/srv/http/calendar/radicale.wsgi',
'SCRIPT_NAME': '',
'SERVER_ADDR': '122.293.432.756',
'SERVER_ADMIN': '[email protected]',
'SERVER_NAME': '122.293.432.756',
'SERVER_PORT': '80',
'SERVER_PROTOCOL': 'HTTP/1.1',
'SERVER_SIGNATURE': '<address>Apache/2.2.25 (Unix) mod_ssl/2.2.25 OpenSSL/1.0.1e DAV/2 mod_wsgi/3.4 Python/3.3.2 Server at 122.293.432.756 Port 80</address>\n',
'SERVER_SOFTWARE': 'Apache/2.2.25 (Unix) mod_ssl/2.2.25 OpenSSL/1.0.1e DAV/2 mod_wsgi/3.4 Python/3.3.2',
'UNIQUE_ID': 'Umnm1MDt9ewAAD3TEwMAAAAC',
'mod_wsgi.application_group': '',
'mod_wsgi.callable_object': 'application',
'mod_wsgi.enable_sendfile': '0',
'mod_wsgi.handler_script': '',
'mod_wsgi.input_chunked': '0',
'mod_wsgi.listener_host': '',
'mod_wsgi.listener_port': '80',
'mod_wsgi.process_group': '',
'mod_wsgi.queue_start': '1382672084558892',
'mod_wsgi.request_handler': 'wsgi-script',
'mod_wsgi.script_reloading': '1',
'mod_wsgi.version': (3, 4),
'wsgi.errors': <_io.TextIOWrapper encoding='utf-8'>,
'wsgi.file_wrapper': <built-in method file_wrapper of mod_wsgi.Adapter object at 0x7f9dcec3acd8>,
'wsgi.input': <mod_wsgi.Input object at 0x7f9dcec8c5b0>,
'wsgi.multiprocess': True,
'wsgi.multithread': False,
'wsgi.run_once': False,
'wsgi.url_scheme': 'http',
'wsgi.version': (1, 0)}
2013-10-25 03:34:44,563 - DEBUG: Sanitized path: /q/cal/
2013-10-25 03:34:44,563 - DEBUG: Request content:
<?xml version="1.0" encoding="UTF-8"?>
<C:calendar-multiget xmlns:D="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav"><D:prop><D:getetag/><C:calendar-data/></D:prop><D:href>/q/cal/280fc62c-14c7-421f-b3e0-209908a2da72.ics</D:href></C:calendar-multiget>
2013-10-25 03:34:44,563 - DEBUG: Anonymous has read access to collection q/cal/
2013-10-25 03:34:44,563 - DEBUG: Anonymous has write access to collection q/cal/
2013-10-25 03:34:44,564 - DEBUG: Anonymous has read access to item 280fc62c-14c7-421f-b3e0-209908a2da72.ics
2013-10-25 03:34:44,564 - DEBUG: Anonymous has write access to item 280fc62c-14c7-421f-b3e0-209908a2da72.ics
2013-10-25 03:34:44,564 - DEBUG: Anonymous has read access to item 3bcc614b-38f6-40f2-978f-b4c437c76180.ics
2013-10-25 03:34:44,564 - DEBUG: Anonymous has write access to item 3bcc614b-38f6-40f2-978f-b4c437c76180.ics
2013-10-25 03:34:44,566 - DEBUG: Response content:
<?xml version="1.0"?>
<multistatus xmlns="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav">
<response>
<href>/q/cal/280fc62c-14c7-421f-b3e0-209908a2da72.ics</href>
<propstat>
<prop>
<getetag>"-4049659368375310251"</getetag>
<C:calendar-data>BEGIN:VCALENDAR
PRODID:-//Radicale//NONSGML Radicale Server//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:America/New_York
X-LIC-LOCATION:America/New_York
BEGIN:DAYLIGHT
TZOFFSETFROM:-0500
TZOFFSETTO:-0400
TZNAME:EDT
DTSTART:19700308T020000
RRULE:FREQ=YEARLY;BYDAY=2SU;BYMONTH=3
X-RADICALE-NAME:America/New_York
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:-0400
TZOFFSETTO:-0500
TZNAME:EST
DTSTART:19701101T020000
RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=11
X-RADICALE-NAME:America/New_York
END:STANDARD
X-RADICALE-NAME:America/New_York
END:VTIMEZONE
BEGIN:VEVENT
CREATED:20131025T073444Z
LAST-MODIFIED:20131025T073448Z
DTSTAMP:20131025T073448Z
UID:280fc62c-14c7-421f-b3e0-209908a2da72
SUMMARY:Event2
DTSTART;TZID=America/New_York:20131008T040000
DTEND;TZID=America/New_York:20131008T050000
X-RADICALE-NAME:280fc62c-14c7-421f-b3e0-209908a2da72.ics
END:VEVENT
END:VCALENDAR
</C:calendar-data>
</prop>
<status>HTTP/1.1 200 OK</status>
</propstat>
</response>
</multistatus>
2013-10-25 03:34:44,566 - DEBUG: Answer status: 207 Unknown
2013-10-25 03:34:51,878 - DEBUG: Authentication type is None
2013-10-25 03:34:51,879 - DEBUG: Rights type is None
2013-10-25 03:34:51,884 - INFO: PUT request at /q/cal/280fc62c-14c7-421f-b3e0-209908a2da72.ics received
2013-10-25 03:34:51,888 - DEBUG: Request headers:
{'CONTENT_LENGTH': '844',
'CONTENT_TYPE': 'text/calendar; charset=utf-8',
'DOCUMENT_ROOT': '/srv/http',
'GATEWAY_INTERFACE': 'CGI/1.1',
'HTTP_ACCEPT': 'text/xml',
'HTTP_ACCEPT_CHARSET': 'utf-8,*;q=0.1',
'HTTP_ACCEPT_ENCODING': 'gzip, deflate',
'HTTP_ACCEPT_LANGUAGE': 'en-US,en;q=0.5',
'HTTP_CACHE_CONTROL': 'no-cache',
'HTTP_CONNECTION': 'keep-alive',
'HTTP_HOST': '122.293.432.756',
'HTTP_IF_MATCH': '"-4049659368375310251"',
'HTTP_PRAGMA': 'no-cache',
'HTTP_USER_AGENT': 'Mozilla/5.0 (X11; Linux i686; rv:24.0) Gecko/20100101 Thunderbird/24.0 Lightning/2.6b3',
'PATH_INFO': '/q/cal/280fc62c-14c7-421f-b3e0-209908a2da72.ics',
'PATH_TRANSLATED': '/srv/http/calendar/radicale.wsgi/q/cal/280fc62c-14c7-421f-b3e0-209908a2da72.ics',
'QUERY_STRING': '',
'REMOTE_ADDR': '623.173.347.734',
'REMOTE_PORT': '45013',
'REQUEST_METHOD': 'PUT',
'REQUEST_URI': '/q/cal/280fc62c-14c7-421f-b3e0-209908a2da72.ics',
'SCRIPT_FILENAME': '/srv/http/calendar/radicale.wsgi',
'SCRIPT_NAME': '',
'SERVER_ADDR': '122.293.432.756',
'SERVER_ADMIN': '[email protected]',
'SERVER_NAME': '122.293.432.756',
'SERVER_PORT': '80',
'SERVER_PROTOCOL': 'HTTP/1.1',
'SERVER_SIGNATURE': '<address>Apache/2.2.25 (Unix) mod_ssl/2.2.25 OpenSSL/1.0.1e DAV/2 mod_wsgi/3.4 Python/3.3.2 Server at 122.293.432.756 Port 80</address>\n',
'SERVER_SOFTWARE': 'Apache/2.2.25 (Unix) mod_ssl/2.2.25 OpenSSL/1.0.1e DAV/2 mod_wsgi/3.4 Python/3.3.2',
'UNIQUE_ID': 'Umnm28Dt9ewAAD3UGCgAAAAD',
'mod_wsgi.application_group': '',
'mod_wsgi.callable_object': 'application',
'mod_wsgi.enable_sendfile': '0',
'mod_wsgi.handler_script': '',
'mod_wsgi.input_chunked': '0',
'mod_wsgi.listener_host': '',
'mod_wsgi.listener_port': '80',
'mod_wsgi.process_group': '',
'mod_wsgi.queue_start': '1382672091718221',
'mod_wsgi.request_handler': 'wsgi-script',
'mod_wsgi.script_reloading': '1',
'mod_wsgi.version': (3, 4),
'wsgi.errors': <_io.TextIOWrapper encoding='utf-8'>,
'wsgi.file_wrapper': <built-in method file_wrapper of mod_wsgi.Adapter object at 0x7f9dcec90288>,
'wsgi.input': <mod_wsgi.Input object at 0x7f9dcec8c3b0>,
'wsgi.multiprocess': True,
'wsgi.multithread': False,
'wsgi.run_once': False,
'wsgi.url_scheme': 'http',
'wsgi.version': (1, 0)}
2013-10-25 03:34:51,888 - DEBUG: Sanitized path: /q/cal/280fc62c-14c7-421f-b3e0-209908a2da72.ics
2013-10-25 03:34:51,888 - DEBUG: Request content:
BEGIN:VCALENDAR
PRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:America/New_York
X-LIC-LOCATION:America/New_York
BEGIN:DAYLIGHT
TZOFFSETFROM:-0500
TZOFFSETTO:-0400
TZNAME:EDT
DTSTART:19700308T020000
RRULE:FREQ=YEARLY;BYDAY=2SU;BYMONTH=3
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:-0400
TZOFFSETTO:-0500
TZNAME:EST
DTSTART:19701101T020000
RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=11
END:STANDARD
END:VTIMEZONE
BEGIN:VEVENT
CREATED:20131025T073444Z
LAST-MODIFIED:20131025T073456Z
DTSTAMP:20131025T073456Z
UID:280fc62c-14c7-421f-b3e0-209908a2da72
SUMMARY:Event2
DTSTART;TZID=America/New_York:20131008T040000
DTEND;TZID=America/New_York:20131008T050000
X-RADICALE-NAME:280fc62c-14c7-421f-b3e0-209908a2da72.ics
LOCATION:here
SEQUENCE:1
X-MOZ-GENERATION:1
END:VEVENT
END:VCALENDAR
2013-10-25 03:34:51,889 - DEBUG: Anonymous has read access to collection q/cal/
2013-10-25 03:34:51,889 - DEBUG: Anonymous has write access to collection q/cal/
2013-10-25 03:34:51,890 - DEBUG: Answer status: 412 Precondition Failed
2013-10-25 03:34:59,975 - DEBUG: Authentication type is None
2013-10-25 03:34:59,975 - DEBUG: Rights type is None
2013-10-25 03:34:59,980 - INFO: REPORT request at /q/cal/ received
2013-10-25 03:34:59,984 - DEBUG: Request headers:
{'CONTENT_LENGTH': '248',
'CONTENT_TYPE': 'text/xml; charset=utf-8',
'DOCUMENT_ROOT': '/srv/http',
'GATEWAY_INTERFACE': 'CGI/1.1',
'HTTP_ACCEPT': 'text/xml',
'HTTP_ACCEPT_CHARSET': 'utf-8,*;q=0.1',
'HTTP_ACCEPT_ENCODING': 'gzip, deflate',
'HTTP_ACCEPT_LANGUAGE': 'en-US,en;q=0.5',
'HTTP_CACHE_CONTROL': 'no-cache',
'HTTP_CONNECTION': 'keep-alive',
'HTTP_DEPTH': '1',
'HTTP_HOST': '122.293.432.756',
'HTTP_PRAGMA': 'no-cache',
'HTTP_USER_AGENT': 'Mozilla/5.0 (X11; Linux i686; rv:24.0) Gecko/20100101 Thunderbird/24.0 Lightning/2.6b3',
'PATH_INFO': '/q/cal/',
'PATH_TRANSLATED': '/srv/http/calendar/radicale.wsgi/q/cal/',
'QUERY_STRING': '',
'REMOTE_ADDR': '623.173.347.734',
'REMOTE_PORT': '45014',
'REQUEST_METHOD': 'REPORT',
'REQUEST_URI': '/q/cal/',
'SCRIPT_FILENAME': '/srv/http/calendar/radicale.wsgi',
'SCRIPT_NAME': '',
'SERVER_ADDR': '122.293.432.756',
'SERVER_ADMIN': '[email protected]',
'SERVER_NAME': '122.293.432.756',
'SERVER_PORT': '80',
'SERVER_PROTOCOL': 'HTTP/1.1',
'SERVER_SIGNATURE': '<address>Apache/2.2.25 (Unix) mod_ssl/2.2.25 OpenSSL/1.0.1e DAV/2 mod_wsgi/3.4 Python/3.3.2 Server at 122.293.432.756 Port 80</address>\n',
'SERVER_SOFTWARE': 'Apache/2.2.25 (Unix) mod_ssl/2.2.25 OpenSSL/1.0.1e DAV/2 mod_wsgi/3.4 Python/3.3.2',
'UNIQUE_ID': 'Umnm48Dt9ewAAD3VIE8AAAAE',
'mod_wsgi.application_group': '',
'mod_wsgi.callable_object': 'application',
'mod_wsgi.enable_sendfile': '0',
'mod_wsgi.handler_script': '',
'mod_wsgi.input_chunked': '0',
'mod_wsgi.listener_host': '',
'mod_wsgi.listener_port': '80',
'mod_wsgi.process_group': '',
'mod_wsgi.queue_start': '1382672099818140',
'mod_wsgi.request_handler': 'wsgi-script',
'mod_wsgi.script_reloading': '1',
'mod_wsgi.version': (3, 4),
'wsgi.errors': <_io.TextIOWrapper encoding='utf-8'>,
'wsgi.file_wrapper': <built-in method file_wrapper of mod_wsgi.Adapter object at 0x7f9dcec90288>,
'wsgi.input': <mod_wsgi.Input object at 0x7f9dcec8c3b0>,
'wsgi.multiprocess': True,
'wsgi.multithread': False,
'wsgi.run_once': False,
'wsgi.url_scheme': 'http',
'wsgi.version': (1, 0)}
2013-10-25 03:34:59,984 - DEBUG: Sanitized path: /q/cal/
2013-10-25 03:34:59,984 - DEBUG: Request content:
<?xml version="1.0" encoding="UTF-8"?>
<C:calendar-multiget xmlns:D="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav"><D:prop><D:getetag/><C:calendar-data/></D:prop><D:href>/q/cal/280fc62c-14c7-421f-b3e0-209908a2da72.ics</D:href></C:calendar-multiget>
2013-10-25 03:34:59,985 - DEBUG: Anonymous has read access to collection q/cal/
2013-10-25 03:34:59,985 - DEBUG: Anonymous has write access to collection q/cal/
2013-10-25 03:34:59,985 - DEBUG: Anonymous has read access to item 3bcc614b-38f6-40f2-978f-b4c437c76180.ics
2013-10-25 03:34:59,985 - DEBUG: Anonymous has write access to item 3bcc614b-38f6-40f2-978f-b4c437c76180.ics
2013-10-25 03:34:59,985 - DEBUG: Anonymous has read access to item 280fc62c-14c7-421f-b3e0-209908a2da72.ics
2013-10-25 03:34:59,985 - DEBUG: Anonymous has write access to item 280fc62c-14c7-421f-b3e0-209908a2da72.ics
2013-10-25 03:34:59,988 - DEBUG: Response content:
<?xml version="1.0"?>
<multistatus xmlns="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav">
<response>
<href>/q/cal/280fc62c-14c7-421f-b3e0-209908a2da72.ics</href>
<propstat>
<prop>
<getetag>"2187202860821113076"</getetag>
<C:calendar-data>BEGIN:VCALENDAR
PRODID:-//Radicale//NONSGML Radicale Server//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:America/New_York
X-LIC-LOCATION:America/New_York
BEGIN:DAYLIGHT
TZOFFSETFROM:-0500
TZOFFSETTO:-0400
TZNAME:EDT
DTSTART:19700308T020000
RRULE:FREQ=YEARLY;BYDAY=2SU;BYMONTH=3
X-RADICALE-NAME:America/New_York
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:-0400
TZOFFSETTO:-0500
TZNAME:EST
DTSTART:19701101T020000
RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=11
X-RADICALE-NAME:America/New_York
END:STANDARD
X-RADICALE-NAME:America/New_York
END:VTIMEZONE
BEGIN:VEVENT
CREATED:20131025T073444Z
LAST-MODIFIED:20131025T073448Z
DTSTAMP:20131025T073448Z
UID:280fc62c-14c7-421f-b3e0-209908a2da72
SUMMARY:Event2
DTSTART;TZID=America/New_York:20131008T040000
DTEND;TZID=America/New_York:20131008T050000
X-RADICALE-NAME:280fc62c-14c7-421f-b3e0-209908a2da72.ics
END:VEVENT
END:VCALENDAR
</C:calendar-data>
</prop>
<status>HTTP/1.1 200 OK</status>
</propstat>
</response>
</multistatus>
2013-10-25 03:34:59,988 - DEBUG: Answer status: 207 Unknown
I hacked the code a little to send the ETag hash values directly to the logger and they matched their values in the XML markup. I also had it directly write the item text to the log, and as far as I could tell it was identical, though there may have been differences in non-printing characters that I didn't see.
I couldn't find a consistent method of reproducing the problem, but I think it only occurred when there was more than one item in the collection. It seemed to be correlated to situations when I think Radicale rearranged the order of items in the collection.