Bug #10738
closedBP blogmeta update routine incorrectly overwrites 'post_title' for unrelated activities
0%
Description
I'm pretty sure this is a BP bug but I want to open it here first, to get a sanity check from Ray. Also, we'll need to do some cleanup on the Commons, which will need to reference this ticket.
My logging script for catching requests that generate many database queries just sent me notice of a new blog post (/wp-admin/post.php) generating thousands of database updates. The crux seems to be here:
[46] => Array ( [0] => SELECT DISTINCT a.id FROM wp_bp_activity a WHERE a.component IN ( 'blogs' ) AND a.type IN ( 'new_blog_comment' ) AND a.secondary_item_id IN ( 57,50,44,34,25,18,13,6 ) AND a.is_spam = 0 AND a.type NOT IN ('activity_comment') AND a.date_recorded <= '2018-11-20 22:23:39' ORDER BY a.date_recorded DESC, a.id DESC LIMIT 0, 100000 [1] => 0.023439884185791 [2] => edit_post, wp_update_post, wp_insert_post, wp_transition_post_status, do_action('transition_post_status'), WP_Hook->do_action, WP_Hook->apply_filters, bp_activity_catch_transition_post_type_status, bp_activity_post_type_update, do_action('bp_activity_post_type_updated'), WP_Hook->do_action, WP_Hook->apply_filters, bp_blogs_update_post_activity_meta, bp_activity_get, BP_Activity_Activity::get ) [47] => Array ( [0] => SELECT * FROM wp_bp_activity WHERE id IN (537629,537500,537472,532145,531304,530685,530361,530385,530186,529724,529655,529577,529255,528960,528842,528805,528398,528207,526911,526546,526148,526140,526124,526010,525751,525400,525418,525363,525210,525186,525166,525148,525141,525121,525061,525008,524973,524634,524574,524254,524004,523935,523696,523499,523121,523925,523920,523933,523252,522856,522829,521903,521545,520986,520135,519929,519836,519720,519114,519100,518899,518341,518144,518148,517864,517334,517300,517100,516435,516299,516269,516098,515319,514844,514810,503886,502795,502359,501720,501376,501332,501268,500828,500805,500619,500551,500528,500254,500158,500084,499800,499557,499429,499352,498761,498746,498738,498743,498448,498157,498198,497686,497320,497281,497250,496998,496984,496679,496673,496672,496507,496304,496143,496087,496085,495761,495106,495090,494947,494945,494944,494472,494379,494361,494305,493985,493914,493880,493858,493752,493333,493313,493285,493283,493282,493241,493181,492778,492580,492555,492552,492176,492117,491930,491658,491574,491502,491435,491182,491082,491037,491033,491039,490989,490929,490848,490793,490589,490545,490504,490524,489981,489780,489757,489720,489698,489793,489614,489531,489489,489364,489340,489307,489285,489268,489245,489440,489165,489092,489078,488993,488877,478749,478714,478368,478357,478347,478208,478130,478108,477622,477609,477599,477594,476942,476794,476716,476668,476636,476318,475833,475473,475074,474663,474486,474279,474121,474036,473982,473768,473649,473461,473406,473395,473359,473351,473147,474574,473049,473041,473028,472849,472722,472571,472449,472298,472177,472158,472078,472051,471559,471449,471061,470946,470917,470816,470621,470605,470514,470458,470454,470434,469647,467418,464195,459730,459839,459406,459274,458713,458670,458553,458261,457975,457779,457696,457615,457527,457603,457212,457136,457327,457055,457047,456921,456807,456754,456744,456307,456227,456096,456000,455910,455518,455436,455188,455050,455027,454996,454686,454283,454264,453302,453195,453159,449683,449229,447959,447542,446802,446388,446221,445841,448830,444493,444420,444352,444267,444250,443984,443974,443739,443737,443525,443407,443392,443383,443362,443268,443233,442820,442587,442573,442482,442272,442257,442021,442008,442004,441961,441690,441648,441673,441607,441585,441507,441449,441411,441161,441015,440988,440972,440812,440698,440206,440076,440005,437939,437902,436507,435846,432052,431990,431737,431086,430680,429995,429978,429608,429285,427662,427444,427242,427204,427073,426920,426849,426817,426803,426792,426739,426574,424074,423757,421758,420957,420672,420664,421112,420520,419404,419197,419227,418998,418691,417936,417310,417249,416970,416488,416295,416179,416006,415783,415804,415649,413551,413490,412820,412424,412144,411990,411118,411028,411020,411002,410941,410891,410794,410759,410008,410137,405496,402924,397890,367401,367198,358486,424613,356936,347629,348938,346545,344323,342517,343335,343340,338929,338477,338383,338048,337818,335753,332759,331836,331490,331041,331012,330824,330126,329482,329469,329456,329433,329410,329354,329334,329217,329207,329119,328811,328624,328456,328023,328004,327884,327774,327736,329069,326597,326527,325893,325371,323708,323135,322651,320544,314177,313856,312837,312124,311853,311046,311012,309821,309749,309715,309590,309081,308811,308667,416679,308000,307754,307450,307434,416682,307274,307150,307034,306648,306804,306078,305762,305634,304971,304800,304979,304554,304541,304277,304171,303923,303573,303345,303219,303055,303030,300683,300548,300528,299494,294645,291973,282341,280592,280383,280373,265733,265708,265695,265713,265711,264906,264549,264251,263723,263119,261708,259087,257794,256887,256756,256447,255446,255263,255660,254963,254841,254465,253144,253068,252974,252520,251719,251279,251277,251199,250726,249599,249374,248845,248797,247637,250217,238312,236183,235873,234931,234704,234016,232494,232471,232341,232177,232274,231128,230836,228656,228214,229653,227846,227322,226942,226805,226688,226219,226044,225834,225884,225676,225515,225363,225240,224994,224743,224635,224373,224278,224262,223566,223547,222970,222775,222332,222007,221895,221853,221766,221225,221080,220739,220492,220327,219885,219513,219158,264745,216940,216132,215467,213294,213186,8035,212881,212762,212505,212313,298264,211398,211223,211143,210394,264752,209121,209113,208858,208659,206903,205245,204662,204417,204389,204293,204750,203898,203873,203620,203447,203300,202822,202714,202666,202704,202361,202187,202095,202626,201916,201656,201646,201547,201057,310291,200571,200420,200426,413249,202001,200359,200345,199949,199585,199083,198045,198029,197980,196799,197174,197304,196725,196479,196414,196298,196179,195548,194857,194520,194164,195534,194095,195541,193975,194001,203905,193437,193346,193344,192960,192128,191598,191549,191516,191158,191009,190898,190626,190393,189899,189814,189319,189312,187390,185554,177124,171826,168620,162029,152825,134503,120336,117812,113558,106513,100841,203911,94831,94434,203919,90038,85044,84672,84638,84388,83849,83803,83713,83639,83583,83275,83265,83240,83225,82561,82008,81938,81303,81294,80850,80639,80632,80617,80586,80389,80317,80166,80152,80136,79268,78600,78603,78258,77649,77646,76131,75835,75592,75463,75442,75336,74476,74362,74074,11825,74300,73327,72490,72285,72268,70864,70465,70296,70006,69892,69693,69368,68575,67626,67472,67286,66895,199515,66749,66349,72295,66076,65861,65821,65685,65559,65288,65166,65160,65004,64981,64710,64125,64098,64006,63587,63251,62204,61749,61446,61452,61122,61051,60484,58330,57979,57978,57695,57408,57369,57266,57177,57017,57416,56985,57402,56797,56662,56623,63635,56610,56408,55834,55688,55605,55150,53164,52497,52097,54746,50892,50674,50450,50170,49797,56493,49503,49418,49149,48798,48128,47755,47575,47273,47262,47227,47246,47031,46909,46720,46535,46427,46420,46354,46304,46090,46066,45808,45737,45505,45464,45440,45214,45075,44775,44565,44519,44411,43945,43831,43649,41763,41089,39579,38504,38499,38451,38340,37986,37528,36746,36689,36335,36192,35914,35816,35428,34573,34437,34421,34356,33790,33752,33636,33509,33412,33347,32873,32730,32573,32555,32092,31898,31907,32146,31902,32095,31748,31464,31285,31278,31243,31311,31078,30865,30629,30655,30498,30444,14198,14103,13707,30805,13157,12543,12515,12441,12169,11491,11477,11476,11472,11469,11468,11464,11450,11445,11244,11243,11001,10886,10781,10756,10743,10742,10741,10740,10679,10678,10617,10446,10444,10316,10312,10115,10035,10028,10027,10001,9992,9962,9906,9884,9880,9825,9703,9618,9500,9498,9077,9074,9073,8281,8071,7993,7968,7938,7826,7825,7810,7531,7510,7498) [1] => 0.14506387710571 [2] => edit_post, wp_update_post, wp_insert_post, wp_transition_post_status, do_action('transition_post_status'), WP_Hook->do_action, WP_Hook->apply_filters, bp_activity_catch_transition_post_type_status, bp_activity_post_type_update, do_action('bp_activity_post_type_updated'), WP_Hook->do_action, WP_Hook->apply_filters, bp_blogs_update_post_activity_meta, bp_activity_get, BP_Activity_Activity::get, BP_Activity_Activity::get_activity_data )
After this, BP does lots of stuff with the located IDs, including calling bp_blogs_update_post_activity_meta() on each - which updates them with the incorrect 'post_title' meta.
Tracing it back, I believe the problematic part is https://buddypress.trac.wordpress.org/browser/tags/3.2.0/src/bp-blogs/bp-blogs-functions.php?marks=662-666#L634. When querying for old-style activity comment items, BP queries based on 'action', 'object', and 'secondary_id' - but not 'primary_id'. As such, it returns a large number of activity items associated with posts on different sites (bad) and then proceeds to update the metadata on them (worse).
From what I can see, this problem goes back to when the activitymeta syncing was introduced in https://buddypress.trac.wordpress.org/changeset/8944. Hard to me that neither you nor I nor anyone else caught it until now.
Ray, could you please look this over and verify that my reasoning is correct? If so, I think we need to do the following:
1. Write a patch for BP that fixes the bug there. I think it's a simple as adding 'primary_id' to the activity query linked above, but this needs verification.
2. Write a script that walks through 'new_blog_comment' items on the Commons and resets the corresponding 'post_title', as needed
Related issues