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

Permissions to collection, but not to database, shows QB+SQL on dashboard, but can only view SQL question #10402

Closed
flamber opened this issue Jul 23, 2019 · 7 comments

Comments

@flamber
Copy link
Contributor

commented Jul 23, 2019

Describe the bug
There's an inconsistency in how permissions are handled.
When a user only has access to view a collection and no database access, then the user can view a dashboard and it's questions, but can only click to view SQL question. When trying to access QB question, it displays "Sorry, you don’t have permission to see that.", which means that you cannot download data, which was the goal. Reported in the forum.

To Reproduce

  1. With admin, create a user in All Users.
  2. With admin, in Permissions, no Data Access on database to All Users, and View on Our Analytics to All Users.
  3. With admin, create two questions - one QB and one SQL, querying database that user does not have access to. Save the questions in Our Analytics.
  4. With admin, create dashboard and add the two questions, save in Our Analytics.
  5. With user, view the dashboard (console fetchData error) and it shows both questions.
    • click SQL question (console errors on 0.32.9) and it shows data. (0.33.0-preview2 no console errors, and it shows the SQL query too).
    • click QB question (console errors on 0.32.9) and shows the message "Sorry, you don’t have permission to see that.". (0.33.0-preview2 just shows a spinner and TypeError: n is null error in console, so UI stops working)

Logs
There's a couple of related console messages, but this is the main one:

fetchData error Object { status: 403, data: "You don't have permissions to do that.", isCancelled: false }

Information about your Metabase Installation:
Metabase 0.32.9 production and 0.33.0-preview2 test, using Sample Dataset, on Firefox.

@mazameli

This comment has been minimized.

Copy link
Contributor

commented Aug 1, 2019

Reproduced in master. SQL questions do seem to work fine.

If you don't have data access but do have collection access, clicking on a GUI question either from a dashboard as in the example, or from a collection takes you to the simple question pick-your-data step with an infinitely loading spinner.

JS console errors:

warning.js:33 Warning: setState(...): Cannot update during an existing state transition (such as within `render` or another component's constructor). Render methods should be a pure function of props and state; constructor side-effects are an anti-pattern, but can be moved to `componentWillMount`.
printWarning @ warning.js:33
warning @ warning.js:57
getInternalInstanceReadyForUpdate @ ReactUpdateQueue.js:52
enqueueSetState @ ReactUpdateQueue.js:207
../../../node_modules/react/lib/ReactBaseClasses.js.ReactComponent.setState @ ReactBaseClasses.js:62
_callee$ @ DataSelector.jsx:294
tryCatch @ runtime.js:45
invoke @ runtime.js:271
prototype.<computed> @ runtime.js:97
step @ DataSelector.jsx:19
(anonymous) @ DataSelector.jsx:19
(anonymous) @ DataSelector.jsx:19
(anonymous) @ DataSelector.jsx:318
onBack @ DataSelector.jsx:341
TablePicker @ DataSelector.jsx:781
(anonymous) @ ReactCompositeComponent.js:303
measureLifeCyclePerf @ ReactCompositeComponent.js:73
_constructComponentWithoutOwner @ ReactCompositeComponent.js:302
_constructComponent @ ReactCompositeComponent.js:277
mountComponent @ ReactCompositeComponent.js:185
mountComponent @ ReactReconciler.js:43
mountChildren @ ReactMultiChild.js:234
_createInitialChildren @ ReactDOMComponent.js:701
mountComponent @ ReactDOMComponent.js:520
mountComponent @ ReactReconciler.js:43
performInitialMount @ ReactCompositeComponent.js:368
mountComponent @ ReactCompositeComponent.js:255
mountComponent @ ReactReconciler.js:43
mountChildren @ ReactMultiChild.js:234
_createInitialChildren @ ReactDOMComponent.js:701
mountComponent @ ReactDOMComponent.js:520
mountComponent @ ReactReconciler.js:43
performInitialMount @ ReactCompositeComponent.js:368
mountComponent @ ReactCompositeComponent.js:255
mountComponent @ ReactReconciler.js:43
mountComponentIntoNode @ ReactMount.js:102
perform @ Transaction.js:141
batchedMountComponentIntoNode @ ReactMount.js:124
batchedUpdates @ ReactDefaultBatchingStrategy.js:58
batchedUpdates @ ReactUpdates.js:95
_renderNewRootComponent @ ReactMount.js:317
_renderSubtreeIntoContainer @ ReactMount.js:399
renderSubtreeIntoContainer @ ReactMount.js:340
_renderPopover @ Popover.jsx:289
(anonymous) @ makeAssimilatePrototype.js:15
componentDidMount @ Popover.jsx:95
(anonymous) @ makeAssimilatePrototype.js:15
(anonymous) @ ReactCompositeComponent.js:262
measureLifeCyclePerf @ ReactCompositeComponent.js:73
(anonymous) @ ReactCompositeComponent.js:261
notifyAll @ CallbackQueue.js:74
close @ ReactReconcileTransaction.js:78
closeAll @ Transaction.js:207
perform @ Transaction.js:154
perform @ Transaction.js:141
perform @ ReactUpdates.js:87
flushBatchedUpdates @ ReactUpdates.js:170
closeAll @ Transaction.js:207
perform @ Transaction.js:154
batchedUpdates @ ReactDefaultBatchingStrategy.js:60
batchedUpdates @ ReactUpdates.js:95
dispatchEvent @ ReactEventListener.js:145
Show 32 more frames
warning.js:33 Warning: setState(...): Cannot update during an existing state transition (such as within `render` or another component's constructor). Render methods should be a pure function of props and state; constructor side-effects are an anti-pattern, but can be moved to `componentWillMount`.
printWarning @ warning.js:33
warning @ warning.js:57
getInternalInstanceReadyForUpdate @ ReactUpdateQueue.js:52
enqueueSetState @ ReactUpdateQueue.js:207
../../../node_modules/react/lib/ReactBaseClasses.js.ReactComponent.setState @ ReactBaseClasses.js:62
_callee$ @ DataSelector.jsx:294
tryCatch @ runtime.js:45
invoke @ runtime.js:271
prototype.<computed> @ runtime.js:97
step @ DataSelector.jsx:19
(anonymous) @ DataSelector.jsx:19
(anonymous) @ DataSelector.jsx:19
(anonymous) @ DataSelector.jsx:318
onBack @ DataSelector.jsx:341
TablePicker @ DataSelector.jsx:781
(anonymous) @ ReactCompositeComponent.js:303
measureLifeCyclePerf @ ReactCompositeComponent.js:73
_constructComponentWithoutOwner @ ReactCompositeComponent.js:302
_constructComponent @ ReactCompositeComponent.js:277
mountComponent @ ReactCompositeComponent.js:185
mountComponent @ ReactReconciler.js:43
mountChildren @ ReactMultiChild.js:234
_createInitialChildren @ ReactDOMComponent.js:701
mountComponent @ ReactDOMComponent.js:520
mountComponent @ ReactReconciler.js:43
performInitialMount @ ReactCompositeComponent.js:368
mountComponent @ ReactCompositeComponent.js:255
mountComponent @ ReactReconciler.js:43
mountChildren @ ReactMultiChild.js:234
_createInitialChildren @ ReactDOMComponent.js:701
mountComponent @ ReactDOMComponent.js:520
mountComponent @ ReactReconciler.js:43
performInitialMount @ ReactCompositeComponent.js:368
mountComponent @ ReactCompositeComponent.js:255
mountComponent @ ReactReconciler.js:43
mountComponentIntoNode @ ReactMount.js:102
perform @ Transaction.js:141
batchedMountComponentIntoNode @ ReactMount.js:124
batchedUpdates @ ReactDefaultBatchingStrategy.js:58
batchedUpdates @ ReactUpdates.js:95
_renderNewRootComponent @ ReactMount.js:317
_renderSubtreeIntoContainer @ ReactMount.js:399
renderSubtreeIntoContainer @ ReactMount.js:340
_renderPopover @ Popover.jsx:289
(anonymous) @ makeAssimilatePrototype.js:15
componentDidMount @ Popover.jsx:95
(anonymous) @ makeAssimilatePrototype.js:15
(anonymous) @ ReactCompositeComponent.js:262
measureLifeCyclePerf @ ReactCompositeComponent.js:73
(anonymous) @ ReactCompositeComponent.js:261
notifyAll @ CallbackQueue.js:74
close @ ReactReconcileTransaction.js:78
closeAll @ Transaction.js:207
perform @ Transaction.js:154
perform @ Transaction.js:141
perform @ ReactUpdates.js:87
flushBatchedUpdates @ ReactUpdates.js:170
closeAll @ Transaction.js:207
perform @ Transaction.js:154
batchedUpdates @ ReactDefaultBatchingStrategy.js:60
enqueueUpdate @ ReactUpdates.js:198
enqueueUpdate @ ReactUpdateQueue.js:22
enqueueSetState @ ReactUpdateQueue.js:216
../../../node_modules/react/lib/ReactBaseClasses.js.ReactComponent.setState @ ReactBaseClasses.js:62
onStateChange @ connectAdvanced.js:205
notify @ Subscription.js:26
notifyNestedSubs @ Subscription.js:65
onStateChange @ connectAdvanced.js:202
(anonymous) @ makeAssimilatePrototype.js:15
dispatch @ createStore.js:173
(anonymous) @ middleware.js:22
(anonymous) @ index.js:28
(anonymous) @ store.js:17
dispatch @ applyMiddleware.js:35
action @ store.js:22
_callee3$ @ actions.js:445
tryCatch @ runtime.js:45
invoke @ runtime.js:271
prototype.<computed> @ runtime.js:97
step @ actions.js:77
(anonymous) @ actions.js:77
Promise.then (async)
step @ actions.js:77
(anonymous) @ actions.js:77
Promise.then (async)
step @ actions.js:77
(anonymous) @ actions.js:77
(anonymous) @ actions.js:77
(anonymous) @ actions.js:482
(anonymous) @ store.js:16
(anonymous) @ bindActionCreators.js:3
componentWillMount @ QueryBuilder.jsx:170
(anonymous) @ ReactCompositeComponent.js:345
measureLifeCyclePerf @ ReactCompositeComponent.js:73
performInitialMount @ ReactCompositeComponent.js:344
mountComponent @ ReactCompositeComponent.js:255
mountComponent @ ReactReconciler.js:43
performInitialMount @ ReactCompositeComponent.js:368
mountComponent @ ReactCompositeComponent.js:255
mountComponent @ ReactReconciler.js:43
performInitialMount @ ReactCompositeComponent.js:368
mountComponent @ ReactCompositeComponent.js:255
mountComponent @ ReactReconciler.js:43
performInitialMount @ ReactCompositeComponent.js:368
mountComponent @ ReactCompositeComponent.js:255
mountComponent @ ReactReconciler.js:43
_updateRenderedComponent @ ReactCompositeComponent.js:762
_performComponentUpdate @ ReactCompositeComponent.js:721
updateComponent @ ReactCompositeComponent.js:642
receiveComponent @ ReactCompositeComponent.js:544
receiveComponent @ ReactReconciler.js:122
_updateRenderedComponent @ ReactCompositeComponent.js:751
_performComponentUpdate @ ReactCompositeComponent.js:721
updateComponent @ ReactCompositeComponent.js:642
receiveComponent @ ReactCompositeComponent.js:544
receiveComponent @ ReactReconciler.js:122
_updateRenderedComponent @ ReactCompositeComponent.js:751
_performComponentUpdate @ ReactCompositeComponent.js:721
updateComponent @ ReactCompositeComponent.js:642
receiveComponent @ ReactCompositeComponent.js:544
receiveComponent @ ReactReconciler.js:122
_updateRenderedComponent @ ReactCompositeComponent.js:751
_performComponentUpdate @ ReactCompositeComponent.js:721
updateComponent @ ReactCompositeComponent.js:642
receiveComponent @ ReactCompositeComponent.js:544
receiveComponent @ ReactReconciler.js:122
_updateRenderedComponent @ ReactCompositeComponent.js:751
_performComponentUpdate @ ReactCompositeComponent.js:721
updateComponent @ ReactCompositeComponent.js:642
receiveComponent @ ReactCompositeComponent.js:544
receiveComponent @ ReactReconciler.js:122
updateChildren @ ReactChildReconciler.js:107
_reconcilerUpdateChildren @ ReactMultiChild.js:204
_updateChildren @ ReactMultiChild.js:308
updateChildren @ ReactMultiChild.js:295
_updateDOMChildren @ ReactDOMComponent.js:944
updateComponent @ ReactDOMComponent.js:758
receiveComponent @ ReactDOMComponent.js:720
receiveComponent @ ReactReconciler.js:122
_updateRenderedComponent @ ReactCompositeComponent.js:751
_performComponentUpdate @ ReactCompositeComponent.js:721
updateComponent @ ReactCompositeComponent.js:642
receiveComponent @ ReactCompositeComponent.js:544
receiveComponent @ ReactReconciler.js:122
_updateRenderedComponent @ ReactCompositeComponent.js:751
_performComponentUpdate @ ReactCompositeComponent.js:721
updateComponent @ ReactCompositeComponent.js:642
receiveComponent @ ReactCompositeComponent.js:544
receiveComponent @ ReactReconciler.js:122
_updateRenderedComponent @ ReactCompositeComponent.js:751
_performComponentUpdate @ ReactCompositeComponent.js:721
updateComponent @ ReactCompositeComponent.js:642
receiveComponent @ ReactCompositeComponent.js:544
receiveComponent @ ReactReconciler.js:122
_updateRenderedComponent @ ReactCompositeComponent.js:751
_performComponentUpdate @ ReactCompositeComponent.js:721
updateComponent @ ReactCompositeComponent.js:642
receiveComponent @ ReactCompositeComponent.js:544
receiveComponent @ ReactReconciler.js:122
_updateRenderedComponent @ ReactCompositeComponent.js:751
_performComponentUpdate @ ReactCompositeComponent.js:721
updateComponent @ ReactCompositeComponent.js:642
receiveComponent @ ReactCompositeComponent.js:544
receiveComponent @ ReactReconciler.js:122
_updateRenderedComponent @ ReactCompositeComponent.js:751
_performComponentUpdate @ ReactCompositeComponent.js:721
updateComponent @ ReactCompositeComponent.js:642
receiveComponent @ ReactCompositeComponent.js:544
receiveComponent @ ReactReconciler.js:122
_updateRenderedComponent @ ReactCompositeComponent.js:751
_performComponentUpdate @ ReactCompositeComponent.js:721
updateComponent @ ReactCompositeComponent.js:642
performUpdateIfNecessary @ ReactCompositeComponent.js:558
performUpdateIfNecessary @ ReactReconciler.js:154
runBatchedUpdates @ ReactUpdates.js:148
perform @ Transaction.js:141
perform @ Transaction.js:141
perform @ ReactUpdates.js:87
flushBatchedUpdates @ ReactUpdates.js:170
closeAll @ Transaction.js:207
perform @ Transaction.js:154
batchedUpdates @ ReactDefaultBatchingStrategy.js:60
batchedUpdates @ ReactUpdates.js:95
dispatchEvent @ ReactEventListener.js:145
Show 150 more frames
actions.js:529 Error loading metadata for card TypeError: Cannot read property 'fields' of null
    at StructuredQuery.dependentTableIds (StructuredQuery.js:1370)
    at _callee5$ (actions.js:529)
    at tryCatch (runtime.js:45)
    at Generator.invoke [as _invoke] (runtime.js:271)
    at Generator.prototype.<computed> [as next] (runtime.js:97)
    at step (actions.js:77)
    at actions.js:77
    at new Promise (<anonymous>)
    at actions.js:77
    at actions.js:556
_callee5$ @ actions.js:529
tryCatch @ runtime.js:45
invoke @ runtime.js:271
prototype.<computed> @ runtime.js:97
step @ actions.js:77
(anonymous) @ actions.js:77
(anonymous) @ actions.js:77
(anonymous) @ actions.js:556
_callee3$ @ redux.js:205
tryCatch @ runtime.js:45
invoke @ runtime.js:271
prototype.<computed> @ runtime.js:97
step @ redux.js:15
(anonymous) @ redux.js:15
(anonymous) @ redux.js:15
(anonymous) @ redux.js:215
(anonymous) @ store.js:16
dispatch @ applyMiddleware.js:35
_callee3$ @ actions.js:459
tryCatch @ runtime.js:45
invoke @ runtime.js:271
prototype.<computed> @ runtime.js:97
step @ actions.js:77
(anonymous) @ actions.js:77
Promise.then (async)
step @ actions.js:77
(anonymous) @ actions.js:77
Promise.then (async)
step @ actions.js:77
(anonymous) @ actions.js:77
(anonymous) @ actions.js:77
(anonymous) @ actions.js:482
(anonymous) @ store.js:16
(anonymous) @ bindActionCreators.js:3
componentWillMount @ QueryBuilder.jsx:170
(anonymous) @ ReactCompositeComponent.js:345
measureLifeCyclePerf @ ReactCompositeComponent.js:73
performInitialMount @ ReactCompositeComponent.js:344
mountComponent @ ReactCompositeComponent.js:255
mountComponent @ ReactReconciler.js:43
performInitialMount @ ReactCompositeComponent.js:368
mountComponent @ ReactCompositeComponent.js:255
mountComponent @ ReactReconciler.js:43
performInitialMount @ ReactCompositeComponent.js:368
mountComponent @ ReactCompositeComponent.js:255
mountComponent @ ReactReconciler.js:43
performInitialMount @ ReactCompositeComponent.js:368
mountComponent @ ReactCompositeComponent.js:255
mountComponent @ ReactReconciler.js:43
_updateRenderedComponent @ ReactCompositeComponent.js:762
_performComponentUpdate @ ReactCompositeComponent.js:721
updateComponent @ ReactCompositeComponent.js:642
receiveComponent @ ReactCompositeComponent.js:544
receiveComponent @ ReactReconciler.js:122
_updateRenderedComponent @ ReactCompositeComponent.js:751
_performComponentUpdate @ ReactCompositeComponent.js:721
updateComponent @ ReactCompositeComponent.js:642
receiveComponent @ ReactCompositeComponent.js:544
receiveComponent @ ReactReconciler.js:122
_updateRenderedComponent @ ReactCompositeComponent.js:751
_performComponentUpdate @ ReactCompositeComponent.js:721
updateComponent @ ReactCompositeComponent.js:642
receiveComponent @ ReactCompositeComponent.js:544
receiveComponent @ ReactReconciler.js:122
_updateRenderedComponent @ ReactCompositeComponent.js:751
_performComponentUpdate @ ReactCompositeComponent.js:721
updateComponent @ ReactCompositeComponent.js:642
receiveComponent @ ReactCompositeComponent.js:544
receiveComponent @ ReactReconciler.js:122
_updateRenderedComponent @ ReactCompositeComponent.js:751
_performComponentUpdate @ ReactCompositeComponent.js:721
updateComponent @ ReactCompositeComponent.js:642
receiveComponent @ ReactCompositeComponent.js:544
receiveComponent @ ReactReconciler.js:122
updateChildren @ ReactChildReconciler.js:107
_reconcilerUpdateChildren @ ReactMultiChild.js:204
_updateChildren @ ReactMultiChild.js:308
updateChildren @ ReactMultiChild.js:295
_updateDOMChildren @ ReactDOMComponent.js:944
updateComponent @ ReactDOMComponent.js:758
receiveComponent @ ReactDOMComponent.js:720
receiveComponent @ ReactReconciler.js:122
_updateRenderedComponent @ ReactCompositeComponent.js:751
_performComponentUpdate @ ReactCompositeComponent.js:721
updateComponent @ ReactCompositeComponent.js:642
receiveComponent @ ReactCompositeComponent.js:544
receiveComponent @ ReactReconciler.js:122
_updateRenderedComponent @ ReactCompositeComponent.js:751
_performComponentUpdate @ ReactCompositeComponent.js:721
updateComponent @ ReactCompositeComponent.js:642
receiveComponent @ ReactCompositeComponent.js:544
receiveComponent @ ReactReconciler.js:122
_updateRenderedComponent @ ReactCompositeComponent.js:751
_performComponentUpdate @ ReactCompositeComponent.js:721
updateComponent @ ReactCompositeComponent.js:642
receiveComponent @ ReactCompositeComponent.js:544
receiveComponent @ ReactReconciler.js:122
_updateRenderedComponent @ ReactCompositeComponent.js:751
_performComponentUpdate @ ReactCompositeComponent.js:721
updateComponent @ ReactCompositeComponent.js:642
receiveComponent @ ReactCompositeComponent.js:544
receiveComponent @ ReactReconciler.js:122
_updateRenderedComponent @ ReactCompositeComponent.js:751
_performComponentUpdate @ ReactCompositeComponent.js:721
updateComponent @ ReactCompositeComponent.js:642
receiveComponent @ ReactCompositeComponent.js:544
receiveComponent @ ReactReconciler.js:122
_updateRenderedComponent @ ReactCompositeComponent.js:751
_performComponentUpdate @ ReactCompositeComponent.js:721
updateComponent @ ReactCompositeComponent.js:642
receiveComponent @ ReactCompositeComponent.js:544
receiveComponent @ ReactReconciler.js:122
_updateRenderedComponent @ ReactCompositeComponent.js:751
_performComponentUpdate @ ReactCompositeComponent.js:721
updateComponent @ ReactCompositeComponent.js:642
performUpdateIfNecessary @ ReactCompositeComponent.js:558
performUpdateIfNecessary @ ReactReconciler.js:154
runBatchedUpdates @ ReactUpdates.js:148
perform @ Transaction.js:141
perform @ Transaction.js:141
perform @ ReactUpdates.js:87
flushBatchedUpdates @ ReactUpdates.js:170
closeAll @ Transaction.js:207
perform @ Transaction.js:154
batchedUpdates @ ReactDefaultBatchingStrategy.js:60
batchedUpdates @ ReactUpdates.js:95
dispatchEvent @ ReactEventListener.js:145
Show 95 more frames
StructuredQuery.js:1370 Uncaught (in promise) TypeError: Cannot read property 'fields' of null
    at StructuredQuery.dependentTableIds (StructuredQuery.js:1370)
    at _callee5$ (actions.js:529)
    at tryCatch (runtime.js:45)
    at Generator.invoke [as _invoke] (runtime.js:271)
    at Generator.prototype.<computed> [as next] (runtime.js:97)
    at step (actions.js:77)
    at actions.js:77
    at new Promise (<anonymous>)
    at actions.js:77
    at actions.js:556

If I click on a GUI question from a dashboard, I do see a 403 in the server logs, but I don't see any errors if I click on a GUI question from a collection.

08-01 10:56:09 WARN middleware.log :: GET /api/database/1/metadata 403 7 ms (3 DB calls) 
"You don't have permissions to do that."

08-01 10:56:09 INFO api.card :: Question's average execution duration is 74 ms; using 'magic' TTL of 740 seconds 💾
08-01 10:56:09 INFO api.card :: Question's average execution duration is 67 ms; using 'magic' TTL of 670 seconds 💾
08-01 10:56:09 INFO middleware.cache :: Query took 49 ms to run; miminum for cache eligibility is 1000 ms
08-01 10:56:09 DEBUG middleware.log :: POST /api/card/292/query 200 [ASYNC: completed] 70 ms (12 DB calls) Jetty threads: 4/50 (2 idle, 0 queued) (111 total active threads) Queries in flight: 1
08-01 10:56:09 INFO middleware.cache :: Query took 58 ms to run; miminum for cache eligibility is 1000 ms
08-01 10:56:09 DEBUG middleware.log :: POST /api/card/291/query 200 [ASYNC: completed] 79 ms (18 DB calls) Jetty threads: 4/50 (2 idle, 0 queued) (111 total active threads) Queries in flight: 1
08-01 10:56:16 DEBUG middleware.log :: GET /api/session/properties 200 4 ms (1 DB calls) Jetty threads: 6/50 (2 idle, 0 queued) (111 total active threads) Queries in flight: 0
08-01 10:56:16 DEBUG middleware.log :: GET /api/user/current 200 6 ms (3 DB calls) Jetty threads: 6/50 (2 idle, 0 queued) (111 total active threads) Queries in flight: 0
08-01 10:56:16 DEBUG middleware.log :: GET /api/database 200 3 ms (3 DB calls) Jetty threads: 5/50 (2 idle, 0 queued) (111 total active threads) Queries in flight: 0
08-01 10:56:16 DEBUG middleware.log :: GET /api/database 200 3 ms (3 DB calls) Jetty threads: 5/50 (2 idle, 0 queued) (111 total active threads) Queries in flight: 0
08-01 10:56:16 DEBUG middleware.log :: GET /api/card/291 200 3 ms (5 DB calls) Jetty threads: 5/50 (2 idle, 0 queued) (111 total active threads) Queries in flight: 0
08-01 10:56:16 DEBUG middleware.log :: GET /api/alert/question/291 200 1 ms (1 DB calls) Jetty threads: 5/50 (2 idle, 0 queued) (111 total active threads) Queries in flight: 0

@mazameli mazameli added this to the 0.33 milestone Aug 1, 2019

@mazameli mazameli moved this from To do to Release blockers in 0.33 final fixes and polish Aug 5, 2019

@mazameli mazameli removed this from Release blockers in 0.33 final fixes and polish Aug 5, 2019

@mazameli

This comment has been minimized.

Copy link
Contributor

commented Aug 6, 2019

I almost feel like this is a p0 or a 0.5. It breaks the use case of having only collection perms but no data perms, at least for GUI questions. I know it's prioritized in the bug bash bonanza, but just wanted to emphasize that I think fixing this one is important.

@mazameli

This comment has been minimized.

Copy link
Contributor

commented Aug 16, 2019

@salsakran I think this is a regression introduced in release-0.33.x. I can't reproduce this in 0.32.10, but I can reproduce it in release-0.33.x.

But @flamber, in the initial description you said you were seeing this in 0.32.9?

@flamber

This comment has been minimized.

Copy link
Contributor Author

commented Aug 16, 2019

@mazameli
Yes. I created the issue because several people in the forum were reporting it, but I didn't understand the problem to begin with. They were on various versions of <= 0.32.9
Do you want me to setup a new empty environment and try various 0.32 versions?

@mazameli

This comment has been minimized.

Copy link
Contributor

commented Aug 16, 2019

@flamber No, that's okay. I think it's enough to know that it was fixed in 0.32.10 but broken again in 0.33. I might test out an earlier 0.32.x release myself. Cheers!

@tlrobinson

This comment has been minimized.

Copy link
Member

commented Aug 19, 2019

Hmm, I'm seeing different errors than you all:

connectAdvanced.js:241 Uncaught TypeError: Cannot read property 'aggregation' of null
    at Array.isValid (Aggregation.js:100)
    at StructuredQuery._cleanClauseList (StructuredQuery.js:421)
    at StructuredQuery.cleanAggregations (StructuredQuery.js:369)
    at StructuredQuery.clean (StructuredQuery.js:346)
    at Question._serializeForUrl (Question.js:873)
    at Question.isDirtyComparedTo (Question.js:861)
    at selectors.js:205
    at index.js:76
    at index.js:36
    at index.js:90
isValid @ Aggregation.js:100
_cleanClauseList @ StructuredQuery.js:421
cleanAggregations @ StructuredQuery.js:369
clean @ StructuredQuery.js:346
_serializeForUrl @ Question.js:873
isDirtyComparedTo @ Question.js:861
(anonymous) @ selectors.js:205
(anonymous) @ index.js:76
(anonymous) @ index.js:36
(anonymous) @ index.js:90
(anonymous) @ index.js:36
mapStateToProps @ QueryBuilder.jsx:120
mapToPropsProxy @ wrapMapToProps.js:43
detectFactoryAndVerify @ wrapMapToProps.js:52
mapToPropsProxy @ wrapMapToProps.js:43
handleFirstCall @ selectorFactory.js:26
pureFinalPropsSelector @ selectorFactory.js:74
runComponentSelector @ connectAdvanced.js:26
initSelector @ connectAdvanced.js:178
(anonymous) @ makeAssimilatePrototype.js:15
QueryBuilder @ connectAdvanced.js:119
(anonymous) @ ReactCompositeComponent.js:292
measureLifeCyclePerf @ ReactCompositeComponent.js:73
_constructComponentWithoutOwner @ ReactCompositeComponent.js:291
_constructComponent @ ReactCompositeComponent.js:282
mountComponent @ ReactCompositeComponent.js:185
mountComponent @ ReactReconciler.js:43
_updateRenderedComponent @ ReactCompositeComponent.js:762
_performComponentUpdate @ ReactCompositeComponent.js:721
updateComponent @ ReactCompositeComponent.js:642
receiveComponent @ ReactCompositeComponent.js:544
receiveComponent @ ReactReconciler.js:122
_updateRenderedComponent @ ReactCompositeComponent.js:751
_performComponentUpdate @ ReactCompositeComponent.js:721
updateComponent @ ReactCompositeComponent.js:642
receiveComponent @ ReactCompositeComponent.js:544
receiveComponent @ ReactReconciler.js:122
_updateRenderedComponent @ ReactCompositeComponent.js:751
_performComponentUpdate @ ReactCompositeComponent.js:721
updateComponent @ ReactCompositeComponent.js:642
receiveComponent @ ReactCompositeComponent.js:544
receiveComponent @ ReactReconciler.js:122
_updateRenderedComponent @ ReactCompositeComponent.js:751
_performComponentUpdate @ ReactCompositeComponent.js:721
updateComponent @ ReactCompositeComponent.js:642
receiveComponent @ ReactCompositeComponent.js:544
receiveComponent @ ReactReconciler.js:122
_updateRenderedComponent @ ReactCompositeComponent.js:751
_performComponentUpdate @ ReactCompositeComponent.js:721
updateComponent @ ReactCompositeComponent.js:642
receiveComponent @ ReactCompositeComponent.js:544
receiveComponent @ ReactReconciler.js:122
updateChildren @ ReactChildReconciler.js:107
_reconcilerUpdateChildren @ ReactMultiChild.js:204
_updateChildren @ ReactMultiChild.js:308
updateChildren @ ReactMultiChild.js:295
_updateDOMChildren @ ReactDOMComponent.js:944
updateComponent @ ReactDOMComponent.js:758
receiveComponent @ ReactDOMComponent.js:720
receiveComponent @ ReactReconciler.js:122
_updateRenderedComponent @ ReactCompositeComponent.js:751
_performComponentUpdate @ ReactCompositeComponent.js:721
updateComponent @ ReactCompositeComponent.js:642
receiveComponent @ ReactCompositeComponent.js:544
receiveComponent @ ReactReconciler.js:122
_updateRenderedComponent @ ReactCompositeComponent.js:751
_performComponentUpdate @ ReactCompositeComponent.js:721
updateComponent @ ReactCompositeComponent.js:642
receiveComponent @ ReactCompositeComponent.js:544
receiveComponent @ ReactReconciler.js:122
_updateRenderedComponent @ ReactCompositeComponent.js:751
_performComponentUpdate @ ReactCompositeComponent.js:721
updateComponent @ ReactCompositeComponent.js:642
receiveComponent @ ReactCompositeComponent.js:544
receiveComponent @ ReactReconciler.js:122
_updateRenderedComponent @ ReactCompositeComponent.js:751
_performComponentUpdate @ ReactCompositeComponent.js:721
updateComponent @ ReactCompositeComponent.js:642
receiveComponent @ ReactCompositeComponent.js:544
receiveComponent @ ReactReconciler.js:122
_updateRenderedComponent @ ReactCompositeComponent.js:751
_performComponentUpdate @ ReactCompositeComponent.js:721
updateComponent @ ReactCompositeComponent.js:642
receiveComponent @ ReactCompositeComponent.js:544
receiveComponent @ ReactReconciler.js:122
_updateRenderedComponent @ ReactCompositeComponent.js:751
_performComponentUpdate @ ReactCompositeComponent.js:721
updateComponent @ ReactCompositeComponent.js:642
receiveComponent @ ReactCompositeComponent.js:544
receiveComponent @ ReactReconciler.js:122
_updateRenderedComponent @ ReactCompositeComponent.js:751
_performComponentUpdate @ ReactCompositeComponent.js:721
updateComponent @ ReactCompositeComponent.js:642
performUpdateIfNecessary @ ReactCompositeComponent.js:558
performUpdateIfNecessary @ ReactReconciler.js:154
runBatchedUpdates @ ReactUpdates.js:148
perform @ Transaction.js:141
perform @ Transaction.js:141
perform @ ReactUpdates.js:87
flushBatchedUpdates @ ReactUpdates.js:170
closeAll @ Transaction.js:207
perform @ Transaction.js:154
batchedUpdates @ ReactDefaultBatchingStrategy.js:60
batchedUpdates @ ReactUpdates.js:95
dispatchEvent @ ReactEventListener.js:145
Show 75 more frames
@flamber

This comment has been minimized.

Copy link
Contributor Author

commented Aug 19, 2019

@tlrobinson That matches with what was seen in #10499 (several issues in one)

@tlrobinson tlrobinson referenced this issue Aug 19, 2019
4 of 4 tasks complete

@tlrobinson tlrobinson self-assigned this Aug 19, 2019

@tlrobinson tlrobinson closed this Aug 20, 2019

@camsaul camsaul moved this from P1 Bugs to Done in Bug Bashing Bonanza 2019 Aug 26, 2019

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.