Deck: Share panel makes navigator "extremely slow" and crashing

Created on 20 Feb 2018  路  9Comments  路  Source: nextcloud/deck

This fantastic Apps is completly out of order... :(
We can't use it anymore and have tons of projects on it....
I think it cames from LDAP users search. It was fully working on NC12 (12.0.029) with Deck 0.3.0
[NEW]
After some debug, I can tell you:

  • all users are "upcoming" nicely but after a loooooooooooooong time using:
    /ocs/v1.php/apps/files_sharing/api/v1/sharees?format=json&itemType=0&itemType=1&perPage=4
    this is the waiting of this promise that makes the navigator crashing.

Steps to reproduce)

1.launch Deck
2.Open a deck on list

  1. click on Share icon
  2. after the panel is opened the navigator compeltly lag and stop working.

Expected behaviour

It should run normal :) like a charm

Actual behaviour

The navigator is completly out of order. Quickly it asks you to close the tab.

Server configuration

Operating system:
Centos7.2
Web server:
Apache 2.4

Database:
MariaDB
PHP version:
mysql Ver 15.1 Distrib 5.5.56-MariaDB

Nextcloud version: (see Nextcloud admin page)
13.0.0.14

Are you using an external user-backend, if yes which one: LDAP/ActiveDirectory/Webdav/...
using an 1200+ users LDAP

Client configuration

Browser:
ALL !

Operating system:
Win7Pro

Logs

Browser log

FIREFOX
Error: Script terminated by timeout at:
xa@http://mydomain.fr/core/vendor/core.js?v=33e9d56d-15:3:18349
css@http://mydomain.fr/core/vendor/core.js?v=33e9d56d-15:3:22501
Ha@http://mydomain.fr/core/vendor/core.js?v=33e9d56d-15:3:20560
set@http://mydomain.fr/core/vendor/core.js?v=33e9d56d-15:3:22850
style@http://mydomain.fr/core/vendor/core.js?v=33e9d56d-15:3:22285
n.fn[d]/<@http://mydomain.fr/core/vendor/core.js?v=33e9d56d-15:4:19886
n.access@http://mydomain.fr/core/vendor/core.js?v=33e9d56d-15:2:30220
n.fn[d]@http://mydomain.fr/core/vendor/core.js?v=33e9d56d-15:4:19646
$.fn.avatar@http://mydomain.fr/index.php/js/core/merged-template-prepend.js?v=33e9d56d-15:5112:3
link@http://mydomain.fr/apps/deck/js/public/app.js?v=33e9d56d-15:1128:4
Ra/<@http://mydomain.fr/apps/deck/js/vendor/angular/angular.min.js?v=33e9d56d-15:17:132
ta/<@http://mydomain.fr/apps/deck/js/vendor/angular/angular.min.js?v=33e9d56d-15:85:367
va@http://mydomain.fr/apps/deck/js/vendor/angular/angular.min.js?v=33e9d56d-15:85:426
p@http://mydomain.fr/apps/deck/js/vendor/angular/angular.min.js?v=33e9d56d-15:71:93
f@http://mydomain.fr/apps/deck/js/vendor/angular/angular.min.js?v=33e9d56d-15:62:388
da/<@http://mydomain.fr/apps/deck/js/vendor/angular/angular.min.js?v=33e9d56d-15:62:11
W/<@http://mydomain.fr/apps/deck/js/vendor/angular/angular.min.js?v=33e9d56d-15:67:138
d@http://mydomain.fr/apps/deck/js/vendor/angular/angular.min.js?v=33e9d56d-15:64:120
m@http://mydomain.fr/apps/deck/js/vendor/angular/angular.min.js?v=33e9d56d-15:68:163
link/<@http://mydomain.fr/apps/deck/js/vendor/angular/angular.min.js?v=33e9d56d-15:288:340
$digest@http://mydomain.fr/apps/deck/js/vendor/angular/angular.min.js?v=33e9d56d-15:148:398
$apply@http://mydomain.fr/apps/deck/js/vendor/angular/angular.min.js?v=33e9d56d-15:151:353
l@http://mydomain.fr/apps/deck/js/vendor/angular/angular.min.js?v=33e9d56d-15:103:165
t@http://mydomain.fr/apps/deck/js/vendor/angular/angular.min.js?v=33e9d56d-15:108:228
yg/onload@http://mydomain.fr/apps/deck/js/vendor/angular/angular.min.js?v=33e9d56d-15:109:139

Erreur dans les liens source : SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data
URL de la ressource : http://mydomain.fr/core/vendor/core.js?v=33e9d56d-15
URL du lien source : purify.min.js.map
```

0. Needs triage bug

All 9 comments

Ok, the bug cames from the fact that all my users are filling the dropdown menu under the input name selector. So there are about 1200+ GET for the avatar running at the same time.
On old NC12 (12.0..0.29), only 2 steps (12 users) were coming, then when I was slidding the drop down menu, GET request were made 6 by 6.
I'm looking in the code were is the promise call to reduce the list and see if it is not running fast.
If you take a look at the "main user search" on the up right menubar,for myself it returns only the 24 first "A" users. Not all the whole list.

The sharing API doesn't respect the limit of users requested, so it returns all users when searching them in the servers ContactsManager. A partly fix is in https://github.com/nextcloud/server/pull/8206 already, I'll see if I can add a hotfix to deck, so that at least the rendering of the users will be limited. So at least the massive wait time that is required during the list rendering should be fine then.

Ahah yep I thought also it was a bug from NC...

https://github.com/nextcloud/deck/pull/423 should help with the hanging UI.

Mhhhh or not :) Changed the lines below as mentioned in the patch:

 -                 var users = response.ocs.data.exact.users.concat(response.ocs.data.users);
+                 var users = response.ocs.data.exact.users.concat(response.ocs.data.users.slice(0, 4));
-                 var groups = response.ocs.data.exact.groups.concat(response.ocs.data.groups);
+                 var groups = response.ocs.data.exact.groups.concat(response.ocs.data.groups.slice(0, 4)); 

No changes for me... ?!?!

@jacestk In general you need to either patch the combined js file in js/public/app.js or enable debug more on your nextcloud instance so that all the js files get loaded individually.

Ok thank you, I made the patch and set on the debug mode. Just waiting for the NC core update!

@juliushaertl - thank you for the workaround!

When I enable debug mode in nextcloud, the board user assignement works perfect. Fast and no loading problems from LDAP. I have 1200 Users.

But the Card user assignement is dead.

What does it mean "patch the combined js file in js/public/app.js"?

Deck is such an awesome app. Keep on!

What does it mean "patch the combined js file in js/public/app.js"?

We use a build script to combine all the individual js files into one app.js, since that is not available for the shipped release package, you need to find the code and patch it in app.js, if you don't run in debug mode.

Anyway I'll try to do a bugfix release soon, so that the fix will be available to everyone.

But the Card user assignement is dead.

I cannot reproduce that, can you open a new issue with some more details?

Was this page helpful?
0 / 5 - 0 ratings

Related issues

armaccloud picture armaccloud  路  3Comments

juliushaertl picture juliushaertl  路  4Comments

langfingaz picture langfingaz  路  3Comments

Dubidubiduu picture Dubidubiduu  路  3Comments

poVoq picture poVoq  路  4Comments