Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SabreDAV exception: More than one master object was found #4775

Closed
simonspa opened this issue May 9, 2017 · 2 comments
Closed

SabreDAV exception: More than one master object was found #4775

simonspa opened this issue May 9, 2017 · 2 comments

Comments

@simonspa
Copy link
Contributor

simonspa commented May 9, 2017

Dear all,

I am having an issue with the calendar backend. One of my users has a calendar which she accesses from her phone (DAVdroid) and from her desktop (GNOME Calendar) via CalDAV. Through the Nextcloud webinterface she created an event which repeats bi-weekly. Now she reported to me, that she tried to change "something" in the event but now gets errors from DAVdroid.

Looking at the logs, I see the following:

	Sabre\DAV\Exception\UnsupportedMediaType: HTTP/1.1 415 Validation error in iCalendar: More than one master object was found for the object with UID G0N0GFM8GUJNISNY3FR5I

    /var/www/nextcloud/3rdparty/sabre/dav/lib/CalDAV/Plugin.php - line 773: Sabre\CalDAV\Plugin->validateICalendar('BEGIN VCALENDAR...', 'calendars/karin...', false, Object(Sabre\HTTP\Request), Object(Sabre\HTTP\Response), false)
    [internal function] Sabre\CalDAV\Plugin->beforeWriteContent('calendars/karin...', Object(OCA\DAV\CalDAV\CalendarObject), 'BEGIN VCALENDAR...', false)
    /var/www/nextcloud/3rdparty/sabre/event/lib/EventEmitterTrait.php - line 105: call_user_func_array(Array, Array)
    /var/www/nextcloud/3rdparty/sabre/dav/lib/DAV/Server.php - line 1104: Sabre\Event\EventEmitter->emit('beforeWriteCont...', Array)
    /var/www/nextcloud/3rdparty/sabre/dav/lib/DAV/CorePlugin.php - line 513: Sabre\DAV\Server->updateFile('calendars/karin...', Resource id #33, NULL)
    [internal function] Sabre\DAV\CorePlugin->httpPut(Object(Sabre\HTTP\Request), Object(Sabre\HTTP\Response))
    /var/www/nextcloud/3rdparty/sabre/event/lib/EventEmitterTrait.php - line 105: call_user_func_array(Array, Array)
    /var/www/nextcloud/3rdparty/sabre/dav/lib/DAV/Server.php - line 479: Sabre\Event\EventEmitter->emit('method PUT', Array)
    /var/www/nextcloud/3rdparty/sabre/dav/lib/DAV/Server.php - line 254: Sabre\DAV\Server->invokeMethod(Object(Sabre\HTTP\Request), Object(Sabre\HTTP\Response))
    /var/www/nextcloud/apps/dav/lib/Server.php - line 227: Sabre\DAV\Server->exec()
    /var/www/nextcloud/apps/dav/appinfo/v2/remote.php - line 30: OCA\DAV\Server->exec()
    /var/www/nextcloud/remote.php - line 165: require_once('/var/www/nextcl...')
    {main}

I have logged in as the user and have tried to delete the offending event via the calendar app, but no success, I get the same SabreDAV exception and are unable to delete the event.

I would need some help to get rid of the offending event and would offer help to debug. :)

Steps to reproduce

(not entirely sure what created the problem, see description above)

Expected behaviour

It should be impossible to produce an invalid CalDAV entry in the first place.

Actual behaviour

Apparently malformed CalDAV item produced, now unable to delete it

Server configuration

Operating system: Raspbian

Web server: nginx

Database: MySQL

PHP version: 5.6.30

Nextcloud version: (see Nextcloud admin page) 11.0.2

Updated from an older Nextcloud/ownCloud or fresh install: Unrelated to update

Where did you install Nextcloud from: tarball

Signing status:

Signing status
No errors have been found.

List of activated apps:

App list
sudo -u www-data php occ app:list
Enabled:
  - activity: 2.4.1
  - admin_audit: 1.1.0
  - audioplayer: 1.5.1
  - bookmarks: 0.9.1
  - calendar: 1.5.2
  - comments: 1.1.0
  - contacts: 1.5.3
  - dav: 1.1.1
  - deck: 0.1.2
  - federatedfilesharing: 1.1.1
  - federation: 1.1.1
  - files: 1.6.1
  - files_external: 1.1.2
  - files_markdown: 1.0.1
  - files_pdfviewer: 1.0.1
  - files_sharing: 1.1.1
  - files_texteditor: 2.2
  - files_trashbin: 1.1.0
  - files_versions: 1.4.0
  - files_videoplayer: 1.0.0
  - firstrunwizard: 2.0
  - gallery: 16.0.0
  - logreader: 2.0.0
  - lookup_server_connector: 1.0.0
  - mail: 0.6.2
  - nextcloud_announcements: 1.0
  - notes: 2.2.0
  - notifications: 1.0.1
  - password_policy: 1.1.0
  - provisioning_api: 1.1.0
  - serverinfo: 1.1.1
  - sharebymail: 1.0.1
  - systemtags: 1.1.3
  - tasks: 0.9.5
  - templateeditor: 0.2
  - theming: 1.1.1
  - twofactor_backupcodes: 1.0.0
  - updatenotification: 1.1.1
  - workflowengine: 1.1.1
Disabled:
  - encryption
  - external
  - files_accesscontrol
  - files_automatedtagging
  - files_retention
  - spreed
  - survey_client
  - twofactor_totp
  - user_external
  - user_ldap
  - user_saml

Nextcloud configuration:

Config report
sudo -u www-data php occ config:list system
{
    "system": {
        "instanceid": "oc0e7rzi20xo",
        "passwordsalt": "***REMOVED SENSITIVE VALUE***",
        "secret": "***REMOVED SENSITIVE VALUE***",
        "trusted_domains": [
            "192.168.2.130",
            "***REMOVED***",
        ],
        "datadirectory": "\/media\/data\/ocdata",
        "overwrite.cli.url": "https:\/\/192.168.2.130\/owncloud",
        "dbtype": "mysql",
        "version": "11.0.2.7",
        "dbname": "owncloud",
        "dbhost": "localhost",
        "dbtableprefix": "oc_",
        "dbuser": "***REMOVED SENSITIVE VALUE***",
        "dbpassword": "***REMOVED SENSITIVE VALUE***",
        "logtimezone": "UTC",
        "installed": true,
        "maintenance": false,
        "memcache.local": "\\OC\\Memcache\\Redis",
        "filelocking.enabled": "true",
        "memcache.locking": "\\OC\\Memcache\\Redis",
        "redis": {
            "host": "127.0.0.1",
            "port": 6379,
            "timeout": 0
        },
        "log_rotate_size": "100MiB",
        "theme": "",
        "loglevel": 2,
        "mail_from_address": "notifications",
        "mail_smtpmode": "smtp",
        "mail_domain": "***REMOVED***",
        "mail_smtpauthtype": "LOGIN",
        "mail_smtpauth": 1,
        "mail_smtphost": "smtp.strato.de",
        "mail_smtpport": "465",
        "mail_smtpname": "***REMOVED SENSITIVE VALUE***",
        "mail_smtppassword": "***REMOVED SENSITIVE VALUE***",
        "mail_smtpsecure": "ssl",
        "htaccess.RewriteBase": "\/owncloud",
        "updater.release.channel": "stable"
    }
}

Are you using external storage, if yes which one: local

Are you using encryption: no

Are you using an external user-backend, if yes which one: no

Logs

Nextcloud log (data/nextcloud.log)

Nextcloud log
{"reqId":"pj1ViVboI2mdJ5hlcLY4","remoteAddr":"2.247.240.96","app":"webdav","message":"Exception: {\"Message\":\"HTTP\\\/1.1 415 Validation error in iCalendar: More than one master object was found for the object with UID G0N0GFM8GUJNISNY3FR5I\",\"Exception\":\"Sabre\\\\DAV\\\\Exception\\\\UnsupportedMediaType\",\"Code\":0,\"Trace\":\"#0 \\\/var\\\/www\\\/nextcloud\\\/3rdparty\\\/sabre\\\/dav\\\/lib\\\/CalDAV\\\/Plugin.php(773): Sabre\\\\CalDAV\\\\Plugin->validateICalendar('BEGIN:VCALENDAR...', 'calendars\\\/karin...', false, Object(Sabre\\\\HTTP\\\\Request), Object(Sabre\\\\HTTP\\\\Response), false)\\n#1 [internal function]: Sabre\\\\CalDAV\\\\Plugin->beforeWriteContent('calendars\\\/karin...', Object(OCA\\\\DAV\\\\CalDAV\\\\CalendarObject), 'BEGIN:VCALENDAR...', false)\\n#2 \\\/var\\\/www\\\/nextcloud\\\/3rdparty\\\/sabre\\\/event\\\/lib\\\/EventEmitterTrait.php(105): call_user_func_array(Array, Array)\\n#3 \\\/var\\\/www\\\/nextcloud\\\/3rdparty\\\/sabre\\\/dav\\\/lib\\\/DAV\\\/Server.php(1104): Sabre\\\\Event\\\\EventEmitter->emit('beforeWriteCont...', Array)\\n#4 \\\/var\\\/www\\\/nextcloud\\\/3rdparty\\\/sabre\\\/dav\\\/lib\\\/DAV\\\/CorePlugin.php(513): Sabre\\\\DAV\\\\Server->updateFile('calendars\\\/karin...', Resource id #33, NULL)\\n#5 [internal function]: Sabre\\\\DAV\\\\CorePlugin->httpPut(Object(Sabre\\\\HTTP\\\\Request), Object(Sabre\\\\HTTP\\\\Response))\\n#6 \\\/var\\\/www\\\/nextcloud\\\/3rdparty\\\/sabre\\\/event\\\/lib\\\/EventEmitterTrait.php(105): call_user_func_array(Array, Array)\\n#7 \\\/var\\\/www\\\/nextcloud\\\/3rdparty\\\/sabre\\\/dav\\\/lib\\\/DAV\\\/Server.php(479): Sabre\\\\Event\\\\EventEmitter->emit('method:PUT', Array)\\n#8 \\\/var\\\/www\\\/nextcloud\\\/3rdparty\\\/sabre\\\/dav\\\/lib\\\/DAV\\\/Server.php(254): Sabre\\\\DAV\\\\Server->invokeMethod(Object(Sabre\\\\HTTP\\\\Request), Object(Sabre\\\\HTTP\\\\Response))\\n#9 \\\/var\\\/www\\\/nextcloud\\\/apps\\\/dav\\\/lib\\\/Server.php(227): Sabre\\\\DAV\\\\Server->exec()\\n#10 \\\/var\\\/www\\\/nextcloud\\\/apps\\\/dav\\\/appinfo\\\/v2\\\/remote.php(30): OCA\\\\DAV\\\\Server->exec()\\n#11 \\\/var\\\/www\\\/nextcloud\\\/remote.php(165): require_once('\\\/var\\\/www\\\/nextcl...')\\n#12 {main}\",\"File\":\"\\\/var\\\/www\\\/nextcloud\\\/3rdparty\\\/sabre\\\/dav\\\/lib\\\/CalDAV\\\/Plugin.php\",\"Line\":917,\"User\":\"karin\"}","level":4,"time":"2017-05-09T06:04:57+00:00","method":"PUT","url":"\/remote.php\/dav\/calendars\/karin\/praxis\/Nextcloud-OAA9N9W5TRI43J8QD6ZCD.ics","user":"karin","version":"11.0.2.7"}
@simonspa
Copy link
Contributor Author

simonspa commented May 9, 2017

Hm, checking again the event has vanished, but I'd still like to know how this happened.

@k3a
Copy link

k3a commented Nov 10, 2018

This error ocurred for me in the latest 14.0.3 using DavDroid 2.0.5-ose from F-Droid.
The stored object in the database contained multiple BEGIN:VEVENT and END:VEVENT blocks with different RECURRENCE-ID specified for each one.

Each of them were from the past with this as the latest one:

BEGIN:VEVENT
DTSTAMP:20181011T082604Z
UID:532d39ac-ca11-4ab1-86d6-f46ba8e7603a
RECURRENCE-ID:20181008T100000Z
SEQUENCE:1
DTSTART:19700118T202952
DTEND:19700118T203000
END:VEVENT
END:VCALENDAR

Not sure if it is NextCloud or DavDroid-related. I had to manually delete the database row with this ical object.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants