Page MenuHomePhabricator

User aqsloader hasn't MODIFY permissions on image_suggestions.* Cassandra tables anymore
Closed, ResolvedPublic

Description

T355917: Create a puppet template for aqsloader Cassandra user led to https://gerrit.wikimedia.org/r/c/operations/puppet/+/993102, which doesn't include the image_suggestions keyspace.
As a result, the Airflow DAG tasks that populate those tables are failing with messages like User aqsloader has no MODIFY permission on <table image_suggestions.title_cache> or any of its parents, which break the production system.
@Eevans, since this is rather urgent, can you please re-grant those permissions as a hotfix? We can then discuss about switching to the image_suggestions user as the one responsible for populating those tables.

See also Slack thread

Event Timeline

The airflow dag (search) image_suggestions_weekly has been paused today

Same for platform_eng's image_suggestions one.

Data engineering team has written some code for our cassandra-loading jobs to be able to read a password from a file on HDFS:
https://github.com/wikimedia/analytics-refinery-source/blob/master/refinery-spark/src/main/scala/org/wikimedia/analytics/refinery/spark/utils/WmfCassandraAuthConfFactory.scala

To make this code work, the spark job should be launched with options:

--conf spark.cassandra.auth.conf.factory=org.wikimedia.analytics.refinery.spark.utils.WmfCassandraAuthConfFactory --conf spark.cassandra.auth.username=CASSANDRA_USER_NAME --conf spark.cassandra.auth.passwordfilepath=hdfs:///PATH/TO/FILE

This code is not yet running for other prod jobs though :(

We already have instances of MySQL password being made able in files on HDFS:
https://github.com/wikimedia/operations-puppet/blob/3ada81b99516aef466f33b6816ff26f34a568a84/modules/profile/manifests/analytics/cluster/secrets.pp#L31.

This ticket feels like a great opportunity to start moving in the right direction for those cassandra passwords!

Change 995064 had a related patch set uploaded (by Eevans; author: Eevans):

[operations/puppet@production] cassandra: break-fix image suggestions Cassandra access

https://gerrit.wikimedia.org/r/995064

Change 995064 merged by Eevans:

[operations/puppet@production] cassandra: break-fix image suggestions Cassandra access

https://gerrit.wikimedia.org/r/995064

GRANTs (SELECT & MODIFY) for image_suggestions have been re-added.

cassandra@cqlsh> LIST ALL PERMISSIONS OF aqsloader;

 role      | username  | resource                                                    | permission
-----------+-----------+-------------------------------------------------------------+------------
 aqsloader | aqsloader |                                              <keyspace aqs> |     SELECT
 aqsloader | aqsloader |                                              <keyspace aqs> |     MODIFY
 aqsloader | aqsloader |                                <keyspace image_suggestions> |     SELECT
 aqsloader | aqsloader |                                <keyspace image_suggestions> |     MODIFY
 aqsloader | aqsloader |          <keyspace local_group_default_T_editors_bycountry> |     SELECT
 aqsloader | aqsloader |          <keyspace local_group_default_T_editors_bycountry> |     MODIFY
 aqsloader | aqsloader |  <keyspace local_group_default_T_knowledge_gap_by_category> |     SELECT
 aqsloader | aqsloader |  <keyspace local_group_default_T_knowledge_gap_by_category> |     MODIFY
 aqsloader | aqsloader | <keyspace local_group_default_T_lgc_pagecounts_per_project> |     SELECT
 aqsloader | aqsloader | <keyspace local_group_default_T_lgc_pagecounts_per_project> |     MODIFY
 aqsloader | aqsloader |      <keyspace local_group_default_T_mediarequest_per_file> |     SELECT
 aqsloader | aqsloader |      <keyspace local_group_default_T_mediarequest_per_file> |     MODIFY
 aqsloader | aqsloader |   <keyspace local_group_default_T_mediarequest_per_referer> |     SELECT
 aqsloader | aqsloader |   <keyspace local_group_default_T_mediarequest_per_referer> |     MODIFY
 aqsloader | aqsloader |     <keyspace local_group_default_T_mediarequest_top_files> |     SELECT
 aqsloader | aqsloader |     <keyspace local_group_default_T_mediarequest_top_files> |     MODIFY
 aqsloader | aqsloader | <keyspace local_group_default_T_pageviews_per_article_flat> |     SELECT
 aqsloader | aqsloader | <keyspace local_group_default_T_pageviews_per_article_flat> |     MODIFY
 aqsloader | aqsloader |   <keyspace local_group_default_T_pageviews_per_project_v2> |     SELECT
 aqsloader | aqsloader |   <keyspace local_group_default_T_pageviews_per_project_v2> |     MODIFY
 aqsloader | aqsloader |              <keyspace local_group_default_T_top_bycountry> |     SELECT
 aqsloader | aqsloader |              <keyspace local_group_default_T_top_bycountry> |     MODIFY
 aqsloader | aqsloader |              <keyspace local_group_default_T_top_pageviews> |     SELECT
 aqsloader | aqsloader |              <keyspace local_group_default_T_top_pageviews> |     MODIFY
 aqsloader | aqsloader |             <keyspace local_group_default_T_top_percountry> |     SELECT
 aqsloader | aqsloader |             <keyspace local_group_default_T_top_percountry> |     MODIFY
 aqsloader | aqsloader |             <keyspace local_group_default_T_unique_devices> |     SELECT
 aqsloader | aqsloader |             <keyspace local_group_default_T_unique_devices> |     MODIFY

(28 rows)
cassandra@cqlsh>
Eevans triaged this task as High priority.
Eevans closed this task as Resolved.EditedFeb 2 2024, 4:06 PM

By way of a closing summary (and for posterity sake): The image suggestions DAG should not be using the aqsloader user. The only reason this ever worked is because that user had excessive permissions. Fixing those permissions is what created surfaced the breakage seen here. As stated above, I've restored those grants as a temporary fix, and opened T356446 to followup with the permanent solution.