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

[Breaking] Unable to save or access questions based on Google Analytics #6104

Closed
VikramTiwari opened this issue Oct 6, 2017 · 5 comments
Closed
Assignees
Labels
Administration/Permissions Collection or Data permissions Database/Google Analytics Priority:P1 Security holes w/o exploit, crashing, setup/upgrade, login, broken common features, correctness Type:Bug Product defects
Milestone

Comments

@VikramTiwari
Copy link
Contributor

VikramTiwari commented Oct 6, 2017

  • Your databases: Google Analytics

  • Metabase version: 0.26.1

  • Metabase hosting environment: Docker

  • Metabase internal database: MySQL

  • Repeatable steps to reproduce the issue
    Create a question using Google Analytics as a non-admin user and try to save the question. Gives permission error.

10-05 23:54:50 WARN models.card :: Error getting permissions for card: Not something with an ID: ga:newUsers 
 ["util$get_id.invokeStatic(util.clj:754)"
 "util$get_id.invoke(util.clj:745)"
 "query_processor.middleware.expand_macros$metric_id.invokeStatic(expand_macros.clj:77)"
 "query_processor.middleware.expand_macros$metric_id.invoke(expand_macros.clj:75)"
 "query_processor.middleware.expand_macros$expand_metric.invokeStatic(expand_macros.clj:92)"
 "query_processor.middleware.expand_macros$expand_metric.invoke(expand_macros.clj:90)"
 "query_processor.middleware.expand_macros$expand_metrics_in_ag_clause$fn__26832.invoke(expand_macros.clj:102)"
 "query_processor.middleware.expand_macros$expand_metrics_in_ag_clause.invokeStatic(expand_macros.clj:98)"
 "query_processor.middleware.expand_macros$expand_metrics_in_ag_clause.invoke(expand_macros.clj:97)"
 "query_processor.middleware.expand_macros$expand_metrics_STAR_.invokeStatic(expand_macros.clj:125)"
 "query_processor.middleware.expand_macros$expand_metrics_STAR_.invoke(expand_macros.clj:123)"
 "query_processor.middleware.expand_macros$expand_metrics.invokeStatic(expand_macros.clj:133)"
 "query_processor.middleware.expand_macros$expand_metrics.invoke(expand_macros.clj:128)"
 "query_processor.middleware.expand_macros$expand_metrics_and_segments.invokeStatic(expand_macros.clj:142)"
 "query_processor.middleware.expand_macros$expand_metrics_and_segments.invoke(expand_macros.clj:140)"
 "query_processor.middleware.expand_macros$expand_macros_STAR_.invokeStatic(expand_macros.clj:150)"
 "query_processor.middleware.expand_macros$expand_macros_STAR_.invoke(expand_macros.clj:147)"
 "models.card$mbql_permissions_path_set.invokeStatic(card.clj:84)"
 "models.card$mbql_permissions_path_set.invoke(card.clj:80)"
 "models.card$query_perms_set_STAR_.invokeStatic(card.clj:102)"
 "models.card$query_perms_set_STAR_.invoke(card.clj:98)"
 "api.card$fn__35937$fn__35940.invoke(card.clj:250)"
 "api.common.internal$do_with_caught_api_exceptions.invokeStatic(internal.clj:248)"
 "api.common.internal$do_with_caught_api_exceptions.invoke(internal.clj:243)"
 "api.card$fn__35937.invokeStatic(card.clj:239)"
 "api.card$fn__35937.invoke(card.clj:239)"
 "middleware$enforce_authentication$fn__35060.invoke(middleware.clj:122)"
 "api.routes$fn__44107.invokeStatic(routes.clj:57)"
 "api.routes$fn__44107.invoke(routes.clj:57)"
 "routes$fn__49731$fn__49732.doInvoke(routes.clj:75)"
 "routes$fn__49731.invokeStatic(routes.clj:71)"
 "routes$fn__49731.invoke(routes.clj:71)"
 "middleware$log_api_call$fn__35159$fn__35161.invoke(middleware.clj:349)"
 "middleware$log_api_call$fn__35159.invoke(middleware.clj:348)"
 "middleware$add_security_headers$fn__35109.invoke(middleware.clj:264)"
 "middleware$bind_current_user$fn__35064.invoke(middleware.clj:142)"
 "middleware$maybe_set_site_url$fn__35113.invoke(middleware.clj:287)"]

10-05 23:54:50 WARN metabase.middleware :: POST /api/card 403 (128 ms) (1 DB calls)
"You don't have permissions to do that."

More logs:

10-05 21:50:05 INFO sync.util :: STARTING: Analyze data for googleanalytics Database 101 'Google Analytics'
10-05 21:50:05 ERROR db.metadata-queries :: Error fetching table row count. Query returned:
 nil
10-05 21:50:05 ERROR sync.util :: Unable to determine row count for Table 561 '104113330': class java.lang.NullPointerException
[]

10-05 21:50:06 ERROR sync.util :: Error syncing _metabase_metadata table for googleanalytics Database 102 'Google Analytics': Google Analytics does not implement table-rows-seq.
("driver$fn__22939.invokeStatic(driver.clj:213)"
 "driver$fn__22939.doInvoke(driver.clj:210)"
 "driver$fn__22749$G__22710__22758.invoke(driver.clj:34)"
 "sync.sync_metadata.metabase_metadata$fn__31793$sync_metabase_metadata_table_BANG___31798$fn__31799.invoke(metabase_metadata.clj:77)"
 "sync.sync_metadata.metabase_metadata$fn__31793$sync_metabase_metadata_table_BANG___31798.invoke(metabase_metadata.clj:61)"
 "sync.sync_metadata.metabase_metadata$fn__31855$sync_metabase_metadata_BANG___31860$fn__31861$fn__31862.invoke(metabase_metadata.clj:98)"
 "sync.util$do_with_error_handling.invokeStatic(util.clj:115)"
 "sync.util$do_with_error_handling.invoke(util.clj:110)"
 "sync.sync_metadata.metabase_metadata$fn__31855$sync_metabase_metadata_BANG___31860$fn__31861.invoke(metabase_metadata.clj:93)"
 "sync.sync_metadata.metabase_metadata$fn__31855$sync_metabase_metadata_BANG___31860.invoke(metabase_metadata.clj:88)"
 "sync.sync_metadata$fn__32133$sync_db_metadata_BANG___32138$fn__32139$fn__32140.invoke(sync_metadata.clj:32)"
 "sync.util$do_with_error_handling.invokeStatic(util.clj:115)"
 "sync.util$do_with_error_handling.invoke(util.clj:110)"
 "sync.util$do_with_error_handling.invokeStatic(util.clj:113)"
 "sync.util$do_with_error_handling.invoke(util.clj:110)"
 "driver$fn__22937.invokeStatic(driver.clj:209)"
 "driver$fn__22937.invoke(driver.clj:209)"
 "driver$fn__22911$G__22692__22920.invoke(driver.clj:34)"
 "sync.util$sync_in_context$fn__29547.invoke(util.clj:106)"
 "sync.util$with_db_logging_disabled$fn__29544.invoke(util.clj:98)"
 "sync.util$with_start_and_finish_logging$fn__29539.invoke(util.clj:87)"
 "sync.util$with_sync_events$fn__29536.invoke(util.clj:70)"
 "sync.util$with_duplicate_ops_prevented$fn__29527.invoke(util.clj:49)"
 "sync.util$do_sync_operation.invokeStatic(util.clj:133)"
 "sync.util$do_sync_operation.invoke(util.clj:130)"
 "sync.sync_metadata$fn__32133$sync_db_metadata_BANG___32138$fn__32139.invoke(sync_metadata.clj:23)"
 "sync.sync_metadata$fn__32133$sync_db_metadata_BANG___32138.invoke(sync_metadata.clj:20)"
 "task.sync_databases.SyncAndAnalyzeDatabase.execute(sync_databases.clj:35)")

10-05 21:50:06 INFO sync.util :: FINISHED: Sync metadata for googleanalytics Database 102 'Google Analytics' (6 s)
10-05 21:50:06 DEBUG sync.util :: Sync operations in flight: {:analyze #{101 102 10}}
10-05 21:50:06 INFO sync.util :: STARTING: Analyze data for googleanalytics Database 102 'Google Analytics'
10-05 21:50:06 ERROR db.metadata-queries :: Error fetching table row count. Query returned:
 nil
10-05 21:50:06 ERROR sync.util :: Unable to determine row count for Table 562 '119717510': class java.lang.NullPointerException
[]

10-05 21:57:58 WARN metabase.middleware :: GET /api/card/5052 403 (3 ms) (2 DB calls)
"You don't have permissions to do that."

More details:

@salsakran
Copy link
Contributor

reproduced

@salsakran salsakran added Type:Bug Product defects Priority:P1 Security holes w/o exploit, crashing, setup/upgrade, login, broken common features, correctness Administration/Permissions Collection or Data permissions labels Nov 14, 2017
@camsaul camsaul self-assigned this Nov 15, 2017
@camsaul camsaul added this to the 0.27 milestone Nov 15, 2017
@camsaul
Copy link
Member

camsaul commented Nov 16, 2017

This looks like an issue where's it's getting GA "metrics" mixed up with Metabase "metrics" and trying to fetch the definition of the metric to see what tables it references

Simple enough fix

@dhinus
Copy link

dhinus commented Jan 26, 2018

@camsaul I'm seeing this exact same error on 0.27.2. It looks like your fix only considered ga: as a Google Analytics prefix, but for some reason I'm seeing gaid: in my logs, and that doesn't match the regex you added in 7380efe.

Jan 26 16:52:41 WARN metabase.models.card :: Error getting permissions for card: Not something with an ID: gaid::-1 

@camsaul
Copy link
Member

camsaul commented Jan 26, 2018

@dhinus good catch. I don't think I realized gaid: could be a prefix as well. I will take a look at that.

@salsakran
Copy link
Contributor

closed via #6818

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Administration/Permissions Collection or Data permissions Database/Google Analytics Priority:P1 Security holes w/o exploit, crashing, setup/upgrade, login, broken common features, correctness Type:Bug Product defects
Projects
None yet
Development

No branches or pull requests

5 participants