nextcloud / calendar

📆 Calendar app for Nextcloud
https://apps.nextcloud.com/apps/calendar
GNU Affero General Public License v3.0
968 stars 236 forks source link

Bug: Synchronisation error, new appointment not pushed #789

Closed ygoe closed 6 years ago

ygoe commented 6 years ago

Steps to reproduce

  1. Setup CalDAV synchronisation from Android with DAVDroid
  2. Create a new appointment in Google Calendar
  3. Wait for synchronisation

Expected behaviour

The appointment should be pushed to the server and become visible in the web view.

Actual behaviour

Error, no synchronisation, see below.

Summary: Something could not be inserted into the server-side database and it has to do with the representation of data for a column of bytea type.

Server configuration detail

Operating system: Linux 4.4.0-116-generic #140-Ubuntu SMP Mon Feb 12 21:23:04 UTC 2018 x86_64

Webserver: Apache (cgi-fcgi)

Database: pgsql PostgreSQL 10.2 (Ubuntu 10.2-1.pgdg16.04+1) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609, 64-bit

PHP version: 7.0.28-0ubuntu0.16.04.1 Modules loaded: Core, date, libxml, openssl, pcre, zlib, filter, hash, pcntl, Reflection, SPL, session, standard, cgi-fcgi, mysqlnd, PDO, xml, apcu, bcmath, calendar, ctype, curl, dom, mbstring, fileinfo, ftp, gd, gettext, iconv, imagick, intl, json, exif, mcrypt, mysqli, pdo_mysql, pdo_pgsql, pdo_sqlite, pgsql, Phar, posix, readline, shmop, SimpleXML, sockets, sqlite3, sysvmsg, sysvsem, sysvshm, tokenizer, wddx, xmlreader, xmlwriter, xsl, zip, Zend OPcache

Nextcloud version: 13.0.0 - 13.0.0.14

Updated from an older Nextcloud/ownCloud or fresh install: fresh install

Where did you install Nextcloud from: your website

Signing status Array
List of activated apps ``` Enabled: - activity: 2.6.1 - bruteforcesettings: 1.0.3 - calendar: 1.6.1 - comments: 1.3.0 - contacts: 2.1.3 - dav: 1.4.6 - federatedfilesharing: 1.3.1 - federation: 1.3.0 - files: 1.8.0 - files_pdfviewer: 1.2.1 - files_retention: 1.2.0 - files_sharing: 1.5.0 - files_texteditor: 2.5.1 - files_trashbin: 1.3.0 - files_versions: 1.6.0 - files_videoplayer: 1.2.0 - firstrunwizard: 2.2.1 - issuetemplate: 0.3.0 - logreader: 2.0.0 - lookup_server_connector: 1.1.0 - mail: 0.7.10 - nextcloud_announcements: 1.2.0 - notes: 2.3.2 - notifications: 2.1.2 - oauth2: 1.1.0 - password_policy: 1.3.0 - provisioning_api: 1.3.0 - serverinfo: 1.3.0 - sharebymail: 1.3.0 - spreed: 3.1.0 - survey_client: 1.1.0 - systemtags: 1.3.0 - tasks: 0.9.6 - twofactor_backupcodes: 1.2.3 - updatenotification: 1.3.0 - workflowengine: 1.3.0 Disabled: - admin_audit - encryption - files_external - gallery - theming - user_external - user_ldap ```
Configuration (config/config.php) ``` { "passwordsalt": "***REMOVED SENSITIVE VALUE***", "secret": "***REMOVED SENSITIVE VALUE***", "trusted_domains": [ "cloud.****.de" ], "datadirectory": "***REMOVED SENSITIVE VALUE***", "overwrite.cli.url": "https:\/\/cloud.****.de\/", "htaccess.RewriteBase": "\/", "dbtype": "pgsql", "version": "13.0.0.14", "dbname": "***REMOVED SENSITIVE VALUE***", "dbhost": "***REMOVED SENSITIVE VALUE***", "dbport": "", "dbtableprefix": "oc_", "dbuser": "***REMOVED SENSITIVE VALUE***", "dbpassword": "***REMOVED SENSITIVE VALUE***", "installed": true, "instanceid": "***REMOVED SENSITIVE VALUE***", "mail_domain": "***REMOVED SENSITIVE VALUE***", "mail_smtpmode": "php", "mail_smtpauthtype": "LOGIN", "mail_from_address": "***REMOVED SENSITIVE VALUE***", "memcache.local": "\\OC\\Memcache\\APCu", "maintenance": false } ```

Are you using external storage, if yes which one: local/smb/sftp/...

Are you using encryption: no

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

Client configuration

Browser: none (DAVDroid)

Operating system: Android 8.0

Logs

From the DAVDroid error message:

--- BEGIN DEBUG INFO ---
SYNCHRONIZATION INFO
Synchronization phase: 4
Account name: ****@****.de
Authority: com.android.calendar

HTTP REQUEST:
PUT /remote.php/dav/calendars/****/****/7c1563db-ecb7-426e-b7d1-a5f65ca15668.ics
if-none-match: *
Content-Type: text/calendar;charset=utf-8
Content-Length: 2732

BEGIN:VCALENDAR↵
VERSION:2.0↵
PRODID:+//IDN bitfire.at//DAVdroid/1.10.1.1-ose ical4j/2.x↵
BEGIN:VEVENT↵
DTSTAMP:20180405T143644Z↵
UID:7c1563db-ecb7-426e-b7d1-a5f65ca15668↵
SUMMARY:****↵
DESCRIPTION:M[c3][b6]bel anschauen\, Vertrag unterschreiben↵
DTSTART;TZID=Europe/Berlin:20180406T093000↵
DTEND;TZID=Europe/Berlin:20180406T113000↵
ORGANIZER:mailto:****@****.de↵
ATTENDEE;CN=****;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;RSVP↵
 =TRUE:mailto:****@****.de↵
ATTENDEE;CN=****@****.de;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;RSVP=TRUE↵
 ;PARTSTAT=ACCEPTED:mailto:****@****.de↵
END:VEVENT↵
BEGIN:VTIMEZONE↵
TZID:Europe/Berlin↵
TZURL:http://tzurl.org/zoneinfo/Europe/Berlin↵
X-LIC-LOCATION:Europe/Berlin↵
BEGIN:DAYLIGHT↵
TZOFFSETFROM:+0100↵
TZOFFSETTO:+0200↵
TZNAME:CEST↵
DTSTART:19810329T020000↵
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU↵
END:DAYLIGHT↵
BEGIN:STANDARD↵
TZOFFSETFROM:+0200↵
TZOFFSETTO:+0100↵
TZNAME:CET↵
DTSTART:19961027T030000↵
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU↵
END:STANDARD↵
BEGIN:STANDARD↵
TZOFFSETFROM:+005328↵
TZOFFSETTO:+0100↵
TZNAME:CET↵
DTSTART:18930401T000000↵
RDATE:18930401T000000↵
END:STANDARD↵
BEGIN:DAYLIGHT↵
TZOFFSETFROM:+0100↵
TZOFFSETTO:+0200↵
TZNAME:CEST↵
DTSTART:19160430T230000↵
RDATE:19160430T230000↵
RDATE:19170416T020000↵
RDATE:19180415T020000↵
RDATE:19400401T020000↵
RDATE:19430329T020000↵
RDATE:19440403T020000↵
RDATE:19450402T020000↵
RDATE:19460414T020000↵
RDATE:19470406T030000↵
RDATE:19480418T020000↵
RDATE:19490410T020000↵
RDATE:19800406T020000↵
END:DAYLIGHT↵
BEGIN:STANDARD↵
TZOFFSETFROM:+0200↵
TZOFFSETTO:+0100↵
TZNAME:CET↵
DTSTART:19161001T010000↵
RDATE:19161001T010000↵
RDATE:19170917T030000↵
RDATE:19180916T030000↵
RDATE:19421102T030000↵
RDATE:19431004T030000↵
RDATE:19441002T030000↵
RDATE:19451118T030000↵
RDATE:19461007T030000↵
RDATE:19471005T030000↵
RDATE:19481003T030000↵
RDATE:19491002T030000↵
RDATE:19800928T030000↵
RDATE:19810927T030000↵
RDATE:19820926T030000↵
RDATE:19830925T030000↵
RDATE:19840930T030000↵
RDATE:19850929T030000↵
RDATE:19860928T030000↵
RDATE:19870927T030000↵
RDATE:19880925T030000↵
RDATE:19890924T030000↵
RDATE:19900930T030000↵
RDATE:19910929T030000↵
RDATE:19920927T030000↵
RDATE:19930926T030000↵
RDATE:19940925T030000↵
RDATE:19950924T030000↵
END:STANDARD↵
BEGIN:DAYLIGHT↵
TZOFFSETFROM:+0200↵
TZOFFSETTO:+0300↵
TZNAME:CEMT↵
DTSTART:19450524T010000↵
RDATE:19450524T010000↵
RDATE:19470511T020000↵
END:DAYLIGHT↵
BEGIN:DAYLIGHT↵
TZOFFSETFROM:+0300↵
TZOFFSETTO:+0200↵
TZNAME:CEST↵
DTSTART:19450924T030000↵
RDATE:19450924T030000↵
RDATE:19470629T030000↵
END:DAYLIGHT↵
BEGIN:STANDARD↵
TZOFFSETFROM:+0100↵
TZOFFSETTO:+0100↵
TZNAME:CET↵
DTSTART:19460101T000000↵
RDATE:19460101T000000↵
RDATE:19800101T000000↵
END:STANDARD↵
END:VTIMEZONE↵
END:VCALENDAR↵

HTTP RESPONSE:
http/1.1 500 Internal Server Error
cache-control: no-store, no-cache, must-revalidate
connection: close
content-security-policy: default-src 'none';
content-type: application/xml; charset=utf-8
date: Thu, 05 Apr 2018 14:36:40 GMT
expires: Thu, 19 Nov 1981 08:52:00 GMT
pragma: no-cache
server: Apache
set-cookie: nc_username=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0; secure; HttpOnly
set-cookie: nc_token=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0; secure; HttpOnly
set-cookie: nc_session_id=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0; secure; HttpOnly
set-cookie: nc_username=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0; path=/; secure; HttpOnly
set-cookie: nc_token=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0; path=/; secure; HttpOnly
set-cookie: nc_session_id=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0; path=/; secure; HttpOnly
set-cookie: oc5tosv6vox2=lbho37pirjr2bushujg9enb3n4; path=/; secure; HttpOnly
transfer-encoding: chunked
x-content-type-options: nosniff
x-download-options: noopen
x-frame-options: SAMEORIGIN
x-permitted-cross-domain-policies: none
x-robots-tag: none
x-xss-protection: 1; mode=block
[body length: -1 bytes]

<?xml version="1.0" encoding="utf-8"?>
<d:error xmlns:d="DAV:" xmlns:s="http://sabredav.org/ns">
  <s:exception>Doctrine\DBAL\Exception\DriverException</s:exception>
  <s:message>An exception occurred while executing 'INSERT INTO "oc_schedulingobjects" ("principaluri", "calendardata", "uri", "lastmodified", "etag", "size") VALUES(?, ?, ?, ?, ?, ?)' with params ["principals\/users\/****", "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-\/\/Sabre\/\/Sabre VObject 4.1.2\/\/EN\r\nCALSCALE:GREGORIAN\r\nMETHOD:REQUEST\r\nBEGIN:VTIMEZONE\r\nTZID:Europe\/Berlin\r\nTZURL:http:\/\/tzurl.org\/zoneinfo\/Europe\/Berlin\r\nX-LIC-LOCATION:Europe\/Berlin\r\nBEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0200\r\nTZNAME:CEST\r\nDTSTART:19810329T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0200\r\nTZNAME:CEST\r\nDTSTART:19160430T230000\r\nRDATE:19160430T230000\r\nRDATE:19170416T020000\r\nRDATE:19180415T020000\r\nRDATE:19400401T020000\r\nRDATE:19430329T020000\r\nRDATE:19440403T020000\r\nRDATE:19450402T020000\r\nRDATE:19460414T020000\r\nRDATE:19470406T030000\r\nRDATE:19480418T020000\r\nRDATE:19490410T020000\r\nRDATE:19800406T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0300\r\nTZNAME:CEMT\r\nDTSTART:19450524T010000\r\nRDATE:19450524T010000\r\nRDATE:19470511T020000\r\nEND:DAYLIGHT\r\nBEGIN:DAYLIGHT\r\nTZOFFSETFROM:+0300\r\nTZOFFSETTO:+0200\r\nTZNAME:CEST\r\nDTSTART:19450924T030000\r\nRDATE:19450924T030000\r\nRDATE:19470629T030000\r\nEND:DAYLIGHT\r\nBEGIN:STANDARD\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0100\r\nTZNAME:CET\r\nDTSTART:19961027T030000\r\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\r\nEND:STANDARD\r\nBEGIN:STANDARD\r\nTZOFFSETFROM:+005328\r\nTZOFFSETTO:+0100\r\nTZNAME:CET\r\nDTSTART:18930401T000000\r\nRDATE:18930401T000000\r\nEND:STANDARD\r\nBEGIN:STANDARD\r\nTZOFFSETFROM:+0200\r\nTZOFFSETTO:+0100\r\nTZNAME:CET\r\nDTSTART:19161001T010000\r\nRDATE:19161001T010000\r\nRDATE:19170917T030000\r\nRDATE:19180916T030000\r\nRDATE:19421102T030000\r\nRDATE:19431004T030000\r\nRDATE:19441002T030000\r\nRDATE:19451118T030000\r\nRDATE:19461007T030000\r\nRDATE:19471005T030000\r\nRDATE:19481003T030000\r\nRDATE:19491002T030000\r\nRDATE:19800928T030000\r\nRDATE:19810927T030000\r\nRDATE:19820926T030000\r\nRDATE:19830925T030000\r\nRDATE:19840930T030000\r\nRDATE:19850929T030000\r\nRDATE:19860928T030000\r\nRDATE:19870927T030000\r\nRDATE:19880925T030000\r\nRDATE:19890924T030000\r\nRDATE:19900930T030000\r\nRDATE:19910929T030000\r\nRDATE:19920927T030000\r\nRDATE:19930926T030000\r\nRDATE:19940925T030000\r\nRDATE:19950924T030000\r\nEND:STANDARD\r\nBEGIN:STANDARD\r\nTZOFFSETFROM:+0100\r\nTZOFFSETTO:+0100\r\nTZNAME:CET\r\nDTSTART:19460101T000000\r\nRDATE:19460101T000000\r\nRDATE:19800101T000000\r\nEND:STANDARD\r\nEND:VTIMEZONE\r\nBEGIN:VEVENT\r\nDTSTAMP:20180405T143644Z\r\nUID:7c1563db-ecb7-426e-b7d1-a5f65ca15668\r\nSUMMARY:****\r\nDESCRIPTION:M\u00f6bel anschauen\\, Vertrag unterschreiben\r\nDTSTART;TZID=Europe\/Berlin:20180406T093000\r\nDTEND;TZID=Europe\/Berlin:20180406T113000\r\nORGANIZER:mailto:****@****.de\r\nATTENDEE;CN=****;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;RSVP\r\n =TRUE;PARTSTAT=NEEDS-ACTION:mailto:****@****.de\r\nATTENDEE;CN=****@****.de;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;RSVP=TRUE\r\n ;PARTSTAT=ACCEPTED:mailto:****@****.de\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n", "sabredav-90db4e22-7f5f-4d8d-b9fb-879feff91c8d.ics", 1522939000, "99317663fa6cda4250bd3b0dfbfcb876", 2772]:

SQLSTATE[22P02]: Invalid text representation: 7 FEHLER:  ung[c3][bc]ltige Eingabesyntax f[c3][bc]r Typ bytea</s:message>
</d:error>

LOCAL RESOURCE:
LocalEvent=[eTag=null, fileName=7c1563db-ecb7-426e-b7d1-a5f65ca15668.ics, weAreOrganizer=true, calendar=at.bitfire.davdroid.resource.LocalCalendar@4b8b3d1, event=Event=[alarms=[], attendees=[ATTENDEE;CN=****;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:****@****.de
, ATTENDEE;CN=****@****.de;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;RSVP=TRUE;PARTSTAT=ACCEPTED:mailto:****@****.de
], classification=null, color=null, description=Möbel anschauen, Vertrag unterschreiben, dtEnd=DTEND;TZID=Europe/Berlin:20180406T113000, dtStart=DTSTART;TZID=Europe/Berlin:20180406T093000, duration=null, exDates=[], exRule=null, exceptions=[], lastModified=null, location=null, opaque=true, organizer=ORGANIZER:mailto:****@****.de, rDates=[], rRule=null, recurrenceId=null, status=null, summary=****, unknownProperties=[], sequence=0, uid=7c1563db-ecb7-426e-b7d1-a5f65ca15668, shadow$_klass_=class at.bitfire.ical4android.Event, shadow$_monitor_=0], id=308, shadow$_klass_=class at.bitfire.davdroid.resource.LocalEvent, shadow$_monitor_=0]

REMOTE RESOURCE:
https://cloud.****.de/remote.php/dav/calendars/****/****/7c1563db-ecb7-426e-b7d1-a5f65ca15668.ics

EXCEPTION:
at.bitfire.dav4android.exception.HttpException: 500 Internal Server Error
    at at.bitfire.dav4android.DavResource.checkStatus(DavResource.kt:343)
    at at.bitfire.dav4android.DavResource.checkStatus(DavResource.kt:307)
    at at.bitfire.dav4android.DavResource.put(DavResource.kt:195)
    at at.bitfire.davdroid.syncadapter.SyncManager.uploadDirty(SyncManager.kt:351)
    at at.bitfire.davdroid.syncadapter.SyncManager.performSync(SyncManager.kt:136)
    at at.bitfire.davdroid.syncadapter.CalendarsSyncAdapterService$CalendarsSyncAdapter.sync(CalendarsSyncAdapterService.kt:55)
    at at.bitfire.davdroid.syncadapter.SyncAdapterService$SyncAdapter.onPerformSync(SyncAdapterService.kt:70)
    at android.content.AbstractThreadedSyncAdapter$SyncThread.run(AbstractThreadedSyncAdapter.java:272)

SOFTWARE INFORMATION
Package: at.bitfire.davdroid
Version: 1.10.1.1-ose (205) from 13.02.2018
Installed from: com.google.android.packageinstaller
JB Workaround installed: no

CONNECTIVITY (at the moment)
Active connection: WiFi, CONNECTED

CONFIGURATION
Power saving disabled: yes
android.permission.READ_CONTACTS permission: granted
android.permission.WRITE_CONTACTS permission: granted
android.permission.READ_CALENDAR permission: granted
android.permission.WRITE_CALENDAR permission: granted
org.dmfs.permission.READ_TASKS permission: granted
org.dmfs.permission.WRITE_TASKS permission: granted
System-wide synchronization: automatically
Account: ****@****.de
  Address book sync. interval: 240 min
  Calendar     sync. interval: 60 min
  OpenTasks    sync. interval: 240 min
  WiFi only: false
  [CardDAV] Contact group method: CATEGORIES
  [CalDAV] Time range (past days): 90
           Manage calendar colors: true
Address book account: **** (****@****.de Vg)
  Main account: Account {name=****@****.de, type=bitfire.at.davdroid}
  URL: https://cloud.****.de/remote.php/dav/addressbooks/users/****/****/
  Sync automatically: true

SQLITE DUMP
android_metadata
    |  locale |
    |  de_DE |
----------
services
    |  _id | accountName | service | principal |
    |  1 | ****@****.de | carddav | https://cloud.****.de/remote.php/dav/principals/users/****/ |
    |  2 | ****@****.de | caldav | https://cloud.****.de/remote.php/dav/principals/users/****/ |
----------
sqlite_sequence
    |  name | seq |
    |  services | 2 |
    |  homesets | 3 |
    |  collections | 17 |
----------
homesets
    |  _id | serviceID | url |
    |  2 | 1 | https://cloud.****.de/remote.php/dav/addressbooks/users/****/ |
    |  3 | 2 | https://cloud.****.de/remote.php/dav/calendars/****/ |
----------
collections
    |  _id | serviceID | type | url | readOnly | forceReadOnly | displayName | description | color | timezone | supportsVEVENT | supportsVTODO | source | sync |
    |  9 | 1 | ADDRESS_BOOK | https://cloud.****.de/remote.php/dav/addressbooks/users/****/****/ | 0 | 0 | **** | <null> | <null> | <null> | 0 | 0 | <null> | 1 |
    |  10 | 1 | ADDRESS_BOOK | https://cloud.****.de/remote.php/dav/addressbooks/users/****/contacts/ | 0 | 0 | Kontakte | <null> | <null> | <null> | 0 | 0 | <null> | 0 |
    |  11 | 2 | CALENDAR | https://cloud.****.de/remote.php/dav/calendars/****/contact_birthdays/ | 1 | 0 | Geburtstage von Kontakten | <null> | -54 | <null> | 1 | 1 | <null> | 0 |
    |  12 | 2 | CALENDAR | https://cloud.****.de/remote.php/dav/calendars/****/feiertage/ | 0 | 0 | Feiertage | <null> | -4033305 | <null> | 1 | 1 | <null> | 1 |
    |  13 | 2 | CALENDAR | https://cloud.****.de/remote.php/dav/calendars/****/****/ | 0 | 0 | **** | <null> | -1526157 | <null> | 1 | 1 | <null> | 1 |
    |  14 | 2 | CALENDAR | https://cloud.****.de/remote.php/dav/calendars/****/****_shared_by_****/ | 1 | 0 | **** (****) | <null> | -729151 | <null> | 1 | 1 | <null> | 1 |
    |  15 | 2 | CALENDAR | https://cloud.****.de/remote.php/dav/calendars/****/****-1/ | 0 | 0 | **** | <null> | -9122585 | <null> | 1 | 1 | <null> | 1 |
    |  16 | 2 | CALENDAR | https://cloud.****.de/remote.php/dav/calendars/****/personal/ | 0 | 0 | Persönlich | <null> | -8853644 | <null> | 1 | 1 | <null> | 1 |
    |  17 | 2 | CALENDAR | https://cloud.****.de/remote.php/dav/calendars/****/personal_shared_by_****/ | 1 | 0 | Persönlich (****) | <null> | -2885678 | <null> | 1 | 1 | <null> | 1 |
----------

SYSTEM INFORMATION
Android version: 8.0.0 (R16NW.G950FXXU1CRB7)
Device: samsung SM-G950F (dreamlte)

--- END DEBUG INFO ---
georgehrke commented 6 years ago

Beginning with Nextcloud 9 the CalDAV server became part of Nextcloud's server and the calendar app is just a CalDAV client running in your browser. Please report issues related to the CalDAV server in Nextcloud's server repo: https://github.com/nextcloud/server/issues