{"action":"created","issue":{"url":"https://api.github.com/repos/owncloud/contacts/issues/1082","labels_url":"https://api.github.com/repos/owncloud/contacts/issues/1082/labels{/name}","comments_url":"https://api.github.com/repos/owncloud/contacts/issues/1082/comments","events_url":"https://api.github.com/repos/owncloud/contacts/issues/1082/events","html_url":"https://github.com/owncloud/contacts/issues/1082","id":113449080,"number":1082,"title":"OC 8.2 | Contacts don't load. Uncaught TypeError: Cannot read property 'length' of undefined","user":{"login":"HLFH","id":2359059,"avatar_url":"https://avatars.githubusercontent.com/u/2359059?v=3","gravatar_id":"","url":"https://api.github.com/users/HLFH","html_url":"https://github.com/HLFH","followers_url":"https://api.github.com/users/HLFH/followers","following_url":"https://api.github.com/users/HLFH/following{/other_user}","gists_url":"https://api.github.com/users/HLFH/gists{/gist_id}","starred_url":"https://api.github.com/users/HLFH/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/HLFH/subscriptions","organizations_url":"https://api.github.com/users/HLFH/orgs","repos_url":"https://api.github.com/users/HLFH/repos","events_url":"https://api.github.com/users/HLFH/events{/privacy}","received_events_url":"https://api.github.com/users/HLFH/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":4,"created_at":"2015-10-26T20:53:07Z","updated_at":"2015-10-27T20:46:05Z","closed_at":null,"body":"Hi,\r\n\r\nI set 'debug' => true, in config.php.\r\nServer: I'm using ArchLinux with Nginx & PHP-FPM & MariaDB & ownCloud 8.2.\r\nClient: I'm using Chrome 46.0.2490.71 on Chrome OS on Asus C300MA.\r\n\r\nContacts don't load and I get a deprecation warning: *tipsy is deprecated. Use tooltip instead* when I launch the Contacts app.\r\n![screenshot 2015-10-26 at 21 07 41](https://cloud.githubusercontent.com/assets/2359059/10742131/d53397a8-7c2b-11e5-9ecf-625a77089a99.png)\r\n\r\n1. I cleaned browser cache.\r\n2. This is the first console log :\r\n```\r\njs.js?v=a815f1ade8583eb4f11f101309082704:1984 Deprecation warning: tipsy is deprecated. Use tooltip instead.\r\njquery.min.js?v=a815f1ade8583eb4f11f101309082704:5 The specified value \"{value}\" is not a valid email address.\r\njquery.min.js?v=a815f1ade8583eb4f11f101309082704:5 The specified value \"{value}\" is not a valid email address.\r\nstorage.js?v=a815f1ade8583eb4f11f101309082704:218 Storage.getConnectors undefined\r\nstorage.js?v=a815f1ade8583eb4f11f101309082704:548 getGroupsForUser\r\njs.js?v=a815f1ade8583eb4f11f101309082704:1984 Deprecation warning: tipsy is deprecated. Use tooltip instead.\r\njs.js?v=a815f1ade8583eb4f11f101309082704:1984 Deprecation warning: tipsy is deprecated. Use tooltip instead.\r\njs.js?v=a815f1ade8583eb4f11f101309082704:1984 Deprecation warning: tipsy is deprecated. Use tooltip instead.\r\njs.js?v=a815f1ade8583eb4f11f101309082704:1984 Deprecation warning: tipsy is deprecated. Use tooltip instead.\r\njs.js?v=a815f1ade8583eb4f11f101309082704:1984 Deprecation warning: tipsy is deprecated. Use tooltip instead.\r\njs.js?v=a815f1ade8583eb4f11f101309082704:1984 Deprecation warning: tipsy is deprecated. Use tooltip instead.\r\napp.js?v=a815f1ade8583eb4f11f101309082704:257 showActions false\r\nstorage.js?v=a815f1ade8583eb4f11f101309082704:707 Object {readyState: 4, responseText: \"[{\"id\":\"inet_org_person\",\"name\":\"inetOrgPerson\",\"x…C\\/ldap_entries\\u003E\\n\\u003C\\/entries\\u003E\\n\"}]\", responseJSON: Array[2], status: 200, statusText: \"OK\"}\r\nstorage.js?v=a815f1ade8583eb4f11f101309082704:12 jqXHR Object {readyState: 4, responseText: \"[{\"id\":\"inet_org_person\",\"name\":\"inetOrgPerson\",\"x…C\\/ldap_entries\\u003E\\n\\u003C\\/entries\\u003E\\n\"}]\", responseJSON: Array[2], status: 200, statusText: \"OK\"}\r\nstorage.js?v=a815f1ade8583eb4f11f101309082704:707 Object {readyState: 4, responseText: \"{\"categories\":[],\"favorites\":[],\"shared\":[],\"lastgroup\":\"all\",\"sortorder\":\"\"}\", responseJSON: Object, status: 200, statusText: \"OK\"}\r\nstorage.js?v=a815f1ade8583eb4f11f101309082704:12 jqXHR Object {readyState: 4, responseText: \"{\"categories\":[],\"favorites\":[],\"shared\":[],\"lastgroup\":\"all\",\"sortorder\":\"\"}\", responseJSON: Object, status: 200, statusText: \"OK\"}\r\ngroups.js?v=a815f1ade8583eb4f11f101309082704:683 sortorder []\r\ngroups.js?v=a815f1ade8583eb4f11f101309082704:711 favorites []\r\nstorage.js?v=a815f1ade8583eb4f11f101309082704:707 Object {readyState: 4, responseText: \"{\"addressbooks\":[{\"id\":\"1\",\"displayname\":\"Contacts…ermissions\":31,\"backend\":\"local\",\"active\":true}]}\", responseJSON: Object, status: 200, statusText: \"OK\"}\r\nstorage.js?v=a815f1ade8583eb4f11f101309082704:12 jqXHR Object {readyState: 4, responseText: \"{\"addressbooks\":[{\"id\":\"1\",\"displayname\":\"Contacts…ermissions\":31,\"backend\":\"local\",\"active\":true}]}\", responseJSON: Object, status: 200, statusText: \"OK\"}\r\njs.js?v=a815f1ade8583eb4f11f101309082704:1984 Deprecation warning: tipsy is deprecated. Use tooltip instead.\r\naddressbooks.js?v=a815f1ade8583eb4f11f101309082704:802 Before resolve\r\naddressbooks.js?v=a815f1ade8583eb4f11f101309082704:804 After resolve\r\nstorage.js?v=a815f1ade8583eb4f11f101309082704:707 Object {readyState: 4, responseText: \"{\"contacts\":[{\"data\":{\"N\":[{\"value\":[\"Passage;Alex…\"owner\":\"HLFH\",\"parent\":\"1\",\"backend\":\"local\"}}]}\", responseJSON: Object, status: 200, statusText: \"OK\"}\r\nstorage.js?v=a815f1ade8583eb4f11f101309082704:12 jqXHR Object {readyState: 4, responseText: \"{\"contacts\":[{\"data\":{\"N\":[{\"value\":[\"Passage;Alex…\"owner\":\"HLFH\",\"parent\":\"1\",\"backend\":\"local\"}}]}\", responseJSON: Object, status: 200, statusText: \"OK\"}\r\nstorage.js?v=a815f1ade8583eb4f11f101309082704:300 response JSONResponse {statusCode: 200, error: false, data: Object}\r\nstorage.js?v=a815f1ade8583eb4f11f101309082704:302 Returning fetched address book\r\ncontacts.js?v=a815f1ade8583eb4f11f101309082704:2586 ContactList.loadContacts - fetching JSONResponse {statusCode: 200, error: false, data: Object}\r\ngroups.js?v=a815f1ade8583eb4f11f101309082704:69 Num contacts: 48\r\napp.js?v=a815f1ade8583eb4f11f101309082704:411 Num contacts: 48\r\napp.js?v=a815f1ade8583eb4f11f101309082704:419 status.contacts.loaded Object {numcontacts: 48}\r\napp.js?v=a815f1ade8583eb4f11f101309082704:431 addressBook AddressBook {isFileAction: false, storage: Storage, book: Object, $template: e.fn.init[1], addressBooks: AddressBookList…}$li: e.fn.init[1]$template: e.fn.init[1]addressBooks: AddressBookListbook: ObjectisFileAction: falsestorage: Storage__proto__: AddressBook\r\ngroups.js?v=a815f1ade8583eb4f11f101309082704:106 selectGroup all [li.group.active, prevObject: e.fn.init[1], context: document, selector: \"#grouplist li[data-id=\"all\"]\"]\r\napp.js?v=a815f1ade8583eb4f11f101309082704:723 status.group.selected Object {id: \"all\", type: \"all\", contacts: undefined}\r\napp.js?v=a815f1ade8583eb4f11f101309082704:257 showActions false\r\ncontacts.js?v=a815f1ade8583eb4f11f101309082704:2108 showContacts all\r\napp.js?v=a815f1ade8583eb4f11f101309082704:213 Groups loaded, id from url: \r\napp.js?v=a815f1ade8583eb4f11f101309082704:228 contacts are indexed.\r\nstorage.js?v=a815f1ade8583eb4f11f101309082704:707 Object {readyState: 4, responseText: \"{\"key\":\"lastgroup\",\"value\":\"all\"}\", responseJSON: Object, status: 200, statusText: \"OK\"}\r\nstorage.js?v=a815f1ade8583eb4f11f101309082704:12 jqXHR Object {readyState: 4, responseText: \"{\"key\":\"lastgroup\",\"value\":\"all\"}\", responseJSON: Object, status: 200, statusText: \"OK\"}\r\n```\r\nBesides the warnings, the contacts could be correctly loaded, but just for the first launch.\r\n3. Then, I launch again the Contacts app\r\n4. The contacts don't load. This is the second console log: \r\n```\r\njs.js?v=a815f1ade8583eb4f11f101309082704:1984 Deprecation warning: tipsy is deprecated. Use tooltip instead.\r\njquery.min.js?v=a815f1ade8583eb4f11f101309082704:5 The specified value \"{value}\" is not a valid email address.\r\njquery.min.js?v=a815f1ade8583eb4f11f101309082704:5 The specified value \"{value}\" is not a valid email address.\r\nstorage.js?v=a815f1ade8583eb4f11f101309082704:218 Storage.getConnectors undefined\r\nstorage.js?v=a815f1ade8583eb4f11f101309082704:548 getGroupsForUser\r\njs.js?v=a815f1ade8583eb4f11f101309082704:1984 Deprecation warning: tipsy is deprecated. Use tooltip instead.\r\njs.js?v=a815f1ade8583eb4f11f101309082704:1984 Deprecation warning: tipsy is deprecated. Use tooltip instead.\r\njs.js?v=a815f1ade8583eb4f11f101309082704:1984 Deprecation warning: tipsy is deprecated. Use tooltip instead.\r\njs.js?v=a815f1ade8583eb4f11f101309082704:1984 Deprecation warning: tipsy is deprecated. Use tooltip instead.\r\njs.js?v=a815f1ade8583eb4f11f101309082704:1984 Deprecation warning: tipsy is deprecated. Use tooltip instead.\r\njs.js?v=a815f1ade8583eb4f11f101309082704:1984 Deprecation warning: tipsy is deprecated. Use tooltip instead.\r\napp.js?v=a815f1ade8583eb4f11f101309082704:257 showActions false\r\nstorage.js?v=a815f1ade8583eb4f11f101309082704:707 Object {readyState: 4, responseText: \"[{\"id\":\"inet_org_person\",\"name\":\"inetOrgPerson\",\"x…C\\/ldap_entries\\u003E\\n\\u003C\\/entries\\u003E\\n\"}]\", responseJSON: Array[2], status: 200, statusText: \"OK\"}\r\nstorage.js?v=a815f1ade8583eb4f11f101309082704:12 jqXHR Object {readyState: 4, responseText: \"[{\"id\":\"inet_org_person\",\"name\":\"inetOrgPerson\",\"x…C\\/ldap_entries\\u003E\\n\\u003C\\/entries\\u003E\\n\"}]\", responseJSON: Array[2], status: 200, statusText: \"OK\"}\r\nstorage.js?v=a815f1ade8583eb4f11f101309082704:707 Object {readyState: 4, responseText: \"{\"categories\":[],\"favorites\":[],\"shared\":[],\"lastgroup\":\"all\",\"sortorder\":\"\"}\", responseJSON: Object, status: 200, statusText: \"OK\"}\r\nstorage.js?v=a815f1ade8583eb4f11f101309082704:12 jqXHR Object {readyState: 4, responseText: \"{\"categories\":[],\"favorites\":[],\"shared\":[],\"lastgroup\":\"all\",\"sortorder\":\"\"}\", responseJSON: Object, status: 200, statusText: \"OK\"}\r\ngroups.js?v=a815f1ade8583eb4f11f101309082704:683 sortorder []\r\ngroups.js?v=a815f1ade8583eb4f11f101309082704:711 favorites []\r\nstorage.js?v=a815f1ade8583eb4f11f101309082704:707 Object {readyState: 4, responseText: \"{\"addressbooks\":[{\"id\":\"1\",\"displayname\":\"Contacts…ermissions\":31,\"backend\":\"local\",\"active\":true}]}\", responseJSON: Object, status: 200, statusText: \"OK\"}\r\nstorage.js?v=a815f1ade8583eb4f11f101309082704:12 jqXHR Object {readyState: 4, responseText: \"{\"addressbooks\":[{\"id\":\"1\",\"displayname\":\"Contacts…ermissions\":31,\"backend\":\"local\",\"active\":true}]}\", responseJSON: Object, status: 200, statusText: \"OK\"}\r\njs.js?v=a815f1ade8583eb4f11f101309082704:1984 Deprecation warning: tipsy is deprecated. Use tooltip instead.\r\naddressbooks.js?v=a815f1ade8583eb4f11f101309082704:802 Before resolve\r\naddressbooks.js?v=a815f1ade8583eb4f11f101309082704:804 After resolve\r\nstorage.js?v=a815f1ade8583eb4f11f101309082704:707 Object {readyState: 4, responseText: \"[]\", responseJSON: Array[0], status: 200, statusText: \"OK\"}\r\nstorage.js?v=a815f1ade8583eb4f11f101309082704:12 jqXHR Object {readyState: 4, responseText: \"[]\", responseJSON: Array[0], status: 200, statusText: \"OK\"}\r\nstorage.js?v=a815f1ade8583eb4f11f101309082704:300 response JSONResponse {statusCode: 200, error: false, data: Array[0]}\r\nstorage.js?v=a815f1ade8583eb4f11f101309082704:302 Returning fetched address book\r\ncontacts.js?v=a815f1ade8583eb4f11f101309082704:2586 ContactList.loadContacts - fetching JSONResponse {statusCode: 200, error: false, data: Array[0]}\r\njquery.min.js?v=a815f1ade8583eb4f11f101309082704:4 Uncaught TypeError: Cannot read property 'length' of undefinedx.extend.each @ jquery.min.js?v=a815f1ade8583eb4f11f101309082704:4ContactList.insertContacts @ contacts.js?v=a815f1ade8583eb4f11f101309082704:2544(anonymous function) @ contacts.js?v=a815f1ade8583eb4f11f101309082704:2589(anonymous function) @ jquery.min.js?v=a815f1ade8583eb4f11f101309082704:4c @ jquery.min.js?v=a815f1ade8583eb4f11f101309082704:4p.fireWith @ jquery.min.js?v=a815f1ade8583eb4f11f101309082704:4i.(anonymous function) @ jquery.min.js?v=a815f1ade8583eb4f11f101309082704:4(anonymous function) @ storage.js?v=a815f1ade8583eb4f11f101309082704:308(anonymous function) @ jquery.min.js?v=a815f1ade8583eb4f11f101309082704:4c @ jquery.min.js?v=a815f1ade8583eb4f11f101309082704:4p.fireWith @ jquery.min.js?v=a815f1ade8583eb4f11f101309082704:4i.(anonymous function) @ jquery.min.js?v=a815f1ade8583eb4f11f101309082704:4(anonymous function) @ storage.js?v=a815f1ade8583eb4f11f101309082704:708c @ jquery.min.js?v=a815f1ade8583eb4f11f101309082704:4p.fireWith @ jquery.min.js?v=a815f1ade8583eb4f11f101309082704:4k @ jquery.min.js?v=a815f1ade8583eb4f11f101309082704:6r @ jquery.min.js?v=a815f1ade8583eb4f11f101309082704:6\r\n```"},"comment":{"url":"https://api.github.com/repos/owncloud/contacts/issues/comments/151638547","html_url":"https://github.com/owncloud/contacts/issues/1082#issuecomment-151638547","issue_url":"https://api.github.com/repos/owncloud/contacts/issues/1082","id":151638547,"user":{"login":"HLFH","id":2359059,"avatar_url":"https://avatars.githubusercontent.com/u/2359059?v=3","gravatar_id":"","url":"https://api.github.com/users/HLFH","html_url":"https://github.com/HLFH","followers_url":"https://api.github.com/users/HLFH/followers","following_url":"https://api.github.com/users/HLFH/following{/other_user}","gists_url":"https://api.github.com/users/HLFH/gists{/gist_id}","starred_url":"https://api.github.com/users/HLFH/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/HLFH/subscriptions","organizations_url":"https://api.github.com/users/HLFH/orgs","repos_url":"https://api.github.com/users/HLFH/repos","events_url":"https://api.github.com/users/HLFH/events{/privacy}","received_events_url":"https://api.github.com/users/HLFH/received_events","type":"User","site_admin":false},"created_at":"2015-10-27T20:46:05Z","updated_at":"2015-10-27T20:46:05Z","body":"Solved on ArchLinux. And I set Redis on a Unix socket as recommended.\r\n\r\n```\r\nyaourt -S redis php-redis\r\nsystemctl enable redis\r\nsystemctl start redis\r\nsudo cp /etc//redis.conf /etc/redis/redis.conf.orig\r\nsed 's/^port .*/port 0/' /etc/redis.conf.orig | sudo tee /etc/redis.conf\r\necho 'unixsocket /var/run/redis/redis.sock' | sudo tee -a /etc/redis.conf\r\necho 'unixsocketperm 770' | sudo tee -a /etc/redis.conf\r\nmkdir /var/run/redis\r\nchown redis:redis /var/run/redis\r\nchmod 755 /var/run/redis\r\nusermod -a -G redis http\r\n```\r\n\r\nThen:\r\n```bash\r\nvim redis.sh \r\nif [ -d /etc/tmpfiles.d ]; then\r\n  echo 'd  /var/run/redis  0755  redis  redis  10d  -' | sudo tee -a /etc/tmpfiles.d/redis.conf\r\nfi\r\n:wq!\r\n\r\nchmod +x redis.sh\r\n./redis.sh \r\nsystemctl restart redis\r\n\r\nvim /etc/php/conf.d/redis.ini \r\nextension=redis.so\r\n:wq!\r\n\r\nsystemctl restart nginx php-fpm\r\n\r\nvim /etc/default/grub/\r\n[...]\r\nGRUB_CMDLINE_LINUX_DEFAULT=\"quiet transparent_hugepage=never\"\r\n[...]\r\n:wq!\r\n\r\ngrub-mkconfig -o /boot/grub/grub.cfg\r\n\r\nvim /etc/sysctl.d/60-overcommit.conf\r\nvm.overcommit_memory = 1\r\n:wq!\r\n\r\nvim /etc/sysctl.d/60-somaxconn.conf\r\nnet.core.somaxconn = 65535\r\n:wq!\r\n\r\nusermodstatus=1/FAILURE\r\nsystemctl reboot\r\n```\r\n:wq!\r\n\r\n**With all this configuration, I also don't get the [Redis Server Went Away issue](https://github.com/owncloud/core/issues/16216).** "}}