[00:03:32] cwdent: harharhar: "*the* labs network node" [00:03:51] ejegg|away: that's scary, to think there might be real customer data in a CiviCRM somewhere! [00:15:58] Fundraising Tech Backlog, Fundraising-Backlog, fundraising-tech-ops, MediaWiki-extensions-DonationInterface: payments1004 should have the "mwscript" frontend to MW maintenance scripts - https://phabricator.wikimedia.org/T109665#1555672 (awight) NEW [00:37:45] Fundraising Sprint Rowlf the Dog, Fundraising Tech Backlog, Fundraising-Backlog, Unplanned-Sprint-Work: Settle unslain orphans - https://phabricator.wikimedia.org/T109668#1555753 (awight) NEW a:awight [00:49:53] fundraising-tech-ops, Traffic, operations, Patch-For-Review: Decide what to do with *.donate.wikimedia.org subdomain + TLS - https://phabricator.wikimedia.org/T102827#1555784 (CCogdill_WMF) I agree this is not a great solution, and have made that argument in the past. However, changing the domain w... [01:19:44] awight: zuul choked on merge, so you've got a chance to veto the quick and dirty version of the session reset patch: https://gerrit.wikimedia.org/r/232525 [01:20:40] (CR) Awight: [C: 2] "Kicking blindly" [extensions/DonationInterface] - https://gerrit.wikimedia.org/r/232525 (https://phabricator.wikimedia.org/T105041) (owner: Ejegg) [01:21:07] (Merged) jenkins-bot: Blank submethod on method change, OID on recur change [extensions/DonationInterface] - https://gerrit.wikimedia.org/r/232525 (https://phabricator.wikimedia.org/T105041) (owner: Ejegg) [01:21:33] That looks fun! [01:21:48] hehe, thank you for the help! I started going down the refactor path and realized that should involve lots of discussion [01:22:06] so yeah, code duplication was the path of least resistance :( [01:22:52] I will say: this is how we get ants. [01:22:59] (CR) Cdentinger: Add BannerMixinHook tests. (1 comment) [extensions/CentralNotice] (campaign_mixins) - https://gerrit.wikimedia.org/r/229422 (owner: Cdentinger) [01:23:17] yep, not proud of it [01:23:47] I'm sure you'll pave over it in a few days... [01:24:20] sorry all my metaphors are fossilized. [01:24:40] Would you like a car wash with that? [01:24:52] * awight waves at MBeat [01:24:53] aw [01:25:00] what do you think of K4's DonationData refactor plan? https://phabricator.wikimedia.org/T86261 [01:25:46] Is that really necessary? [01:26:18] Can we do it in a more modular way, where any special behavior required by a gateway is implemented without complicating the easy cases? [01:26:59] I mean... we're talking about logic like, "if a request comes back with a different order id in the post body, use that" [01:27:02] right? [01:27:10] Yeah, I was thinking the DonationData should mostly just harvest stuff [01:27:26] Not even... [01:27:33] donation data should be a dumb container IMO [01:28:14] for example, you should be able to instantiate 2 donation datas without the entire application freaking out about side effects. [01:28:47] Yeah, I still wouldn't have it call anything to actually generate new data [01:28:56] or change anything's state [01:29:17] just read a list of things the gateway wants and places it prefers to get them [01:29:20] then do that [01:29:33] Can you state the problem we're trying to solve? [01:30:31] Collate a bunch of different data from different sources and normalize some of it? [01:31:47] that's uh the domain, but what are gateways doing that we need this fancy GPS architecture? [01:32:31] The only problem I'm aware of there is that sometimes a gateway needs different behavior around resetting order ids, generating a new one, accepting one from the gateway, etc [01:32:41] Did you run into other stuff which affects more than just the order id? [01:33:33] awight: payment method/submethod reset should probably go there too [01:33:38] hey man what are you still doing working? [01:34:06] oh, just trolling you on the hacky fix! [01:34:25] My thoughts about this are, we should be able to express processor twitchiness in a very modular way, and a declarative approach is not gonna cut it. [01:35:19] Meaning for example, if a processor wants non-base behavior for changing the payment method, we should be able to express that as a few tight hooks that actually contain the business logic, rather than have all the different possible code paths expressed in the base class, and toggle that with flags in the subclasses. [01:36:00] Same with order id. If a particular transaction response can reset the order ID, put that in a hook on just that transaction. [01:36:50] the declarative thing would only be worthwhile if there's some value in treating all processor quirks in a standardized way, for example an admin dashboard where you would flip that switch or something. [01:37:07] ok, how about fields that only one or two gateways need, but are just pulled from the post [01:37:23] And this is reused across multiple gateways, eh? [01:37:33] can you concrete that in a real field? [01:37:58] fiscal_number, for instance? [01:38:28] The gateway also needs to tell the form class what it needs, so I think there is some place for an input specification [01:38:35] My pet vision, which I'll explain just so my prejudices are clear (cos it blinds me to other possibilities), is that each data field could be handled by a module. Fiscal number is a great example of that. [01:39:06] Then, a gateway would declare a list of components that compose it. [01:39:35] so write a new function for each field that gets X from post and sets X in DonationData? [01:39:47] iff it has special behaviors, yeah [01:40:14] would validation be split across all these modules? [01:40:24] And input rendering? [01:40:29] yeah--a processor subclass should be able to override any staging, unstaging, validation, etc [01:40:35] I'd really like to do that without inheritance [01:40:44] So the modules could be rearranged at runtime [01:41:10] For example, requiring address for some country, even as an A/B test [01:42:16] donno how this would play out in the real world, though. module solutions like this seem to fall into dependency hell pretty quickly [01:43:11] So what about a generic input spec? field name, type, validation rules, where to get it. Then the gateway itself can do anything more complicated than harvesting after DonationData is instantiated [01:44:00] * cwdent zonks out [01:44:46] well, validations and types will be almost always be the same for each field, across gateways [01:44:59] we could have an input spec that gets built up internally [01:45:54] a processor would have something like, [base_pii, payment_auth_token, order_id_generate_locally, fiscal_number] [01:46:12] sorry, i'm trying to take over your dream [01:46:29] this part of DI has been bothering me for years, can u tell... [01:46:36] yeah, or for 'generate locally' just not list order_id and set it after DonationData is constructed. [01:47:14] yeah, we could say order_id is a pure abstract base class module [01:47:35] you have to declare exactly which type of order_id handling your processor does [01:49:32] Horrible early attempt at this: https://gerrit.wikimedia.org/r/#/c/118297/ [01:49:55] Ooh, code! [01:50:15] sometimes words are confusing... [01:50:27] I no longer believe in the graph between data stages [01:51:12] I think it's simpler, we can just do an event-based thing [01:52:06] so amount_minor_units will respond to the 'unstage' event with x/100 and to 'stage' with x*100 [01:52:31] ah, interesting. [01:52:58] and a 'harvest' event, and an 'maybe regenerate order id' event? [01:52:59] probably everything should have pure side effects, so we can get tricky [01:53:03] errr [01:53:07] something like that, yes [01:53:18] I don't know about the order id one [01:53:34] when would that happen? [01:53:57] oh, i don't know either. [01:54:15] I think more that there's a simpler event like 'stage', and the order_id_regen module can call an internal helper function maybe_regenerate [01:54:28] in my world the adapter just makes it after DonationData is constructed and force feeds it to the Data class [01:54:55] btw, K4 is really excited about this part of the fixin' so you probably wanna socialize further before hacking it up [01:55:15] not that she licked any cookies, just that she would enjoy watching the dragon beheaded [01:55:38] yeah, I know there are big ideas about it all around. hence the hack [01:55:43] ejegg: any time a DD is constructed? That wounds weird [01:55:56] ah, ok, maybe not [01:56:07] Whatever the instantiation happens during, perhaps [01:56:08] and yeah, it should respond to certain changes in DD [01:56:24] like what? [01:56:26] sorry I'm dim [01:56:43] It felt pretty strange to wake up at 2:30pm [01:56:57] fundraising-tech-ops, Traffic, operations, Patch-For-Review: Decide what to do with *.donate.wikimedia.org subdomain + TLS - https://phabricator.wikimedia.org/T102827#1555937 (BBlack) >>! In T102827#1555784, @CCogdill_WMF wrote: > I agree this is not a great solution, and have made that argument in... [01:56:58] umm, i dunno either. i should let this percolate a while [01:57:06] you lost me at "certain changes" [01:57:09] need concrete [01:58:27] i was thinking of the session stuff, but that's not changes in a single DD object, that's changes from the stored values once we've got our new object [01:59:23] Ah yes, session stuff. Yeah I think that's the 'harvest' event. But it should probably be more nuanced than that, cos there are so many different contexts [02:00:13] * donatewiki or banner request * reply from processor API * donor form POST * redirect from processor [02:00:16] ... [02:00:27] plus like potential variations within each of those [02:01:58] yeah, my idea with the input spec was that the adapter provided the right one for the context to keep DD less complicated [02:02:22] but that leaves plenty of complication in the gateway class... [02:02:30] meh I guess that's really only two main cases, * normalized field names coming from code we own * API response from third party, which can be specific to each api call [02:03:00] counting redirect as an API response? [02:03:17] yeah [02:04:45] So DD would consume API responses like XML too? Or would the gateway do some flattening first? [02:05:03] I think the adapter [02:05:27] not sure how to make that component-based [02:05:58] sounds right [02:06:01] but it should be--adapters that can use multiple API encodings, for example [02:09:27] yuck, my list of components scheme really doesn't fit that well. [02:10:19] cos you would need to find the conflicting api response decoding module and remove it :( much easier to do the declarative thing we have now, for that case. [02:10:46] transaction.AA.response_type = xml [02:11:13] flattening. good point about that, too. [02:12:26] oh. actually, components are still a good fit. If the gateway only uses one type of response decoding, it's declared in the main intitialization. If it differs per-transaction, then we declare the decoding module name in each transaction. [02:12:32] i still feel there's some commonality between what we snarf from the request, how we build input, and how we check for required values in API responses [02:12:47] yes absolutely [02:13:13] a component orientation just means that we put common code in a separate class rather than in the base class [02:14:46] (i also want to have symmetrical client side / server side validation, which needs the rules expressed declaratively) [02:15:06] but of course there are some validations that need a function [02:15:50] and PHP doesn't seem to have any good symmetrical validation libraries that aren't embedded in huge frameworks [02:16:54] I've never seen symettrical validation pay off. [02:17:15] mmet [02:17:37] I think it's fine to just check for empty required fields, and let the server do the rest. [02:18:08] huh, ok. so we at least need to declare optional vs required [02:18:39] For example, loading error messages in multiple languages... no validation libarary will be able to do that [02:19:25] ah right. the js ones like to do their own messaging. [02:19:38] gross [02:19:43] i just want one that tells me which fields broke what rules [02:19:46] hehehe [02:19:54] that would confuse the hell out of users [02:20:28] please enter a fiscal number of between 6 and 40 characters, inclusive, but not including punctuation :p [02:20:36] no, I know what u meant [02:21:01] i mean, my js calls validate with the ruleset, then go through the list of violations and sets #field-name-error.text to mw.msg(di-error-fieldname-rule) [02:21:17] ah, that's why you're so burnt [02:21:30] heh, too much work? [02:21:35] yeah that code needs to get lost over the ocean on a foggy day [02:22:51] oh sorry, I see you're talking about a new way of doing it. yeah that would be way better [02:23:18] all that would take is to include rule name in the (in)validation response [02:23:32] and some translatewiki.net sorcery [02:23:41] yeah, that's the validation library API I want [02:24:26] have it find inputs by name, so they're called the same thing client+server [02:24:42] by all means, do librarize this! [02:25:29] really oughtta exist already. I'll keep searching a bit longer [02:27:29] anyway, I think I'll sign off for now. Good luck regaining your circadiosity [02:27:42] thanks! [02:54:44] It's time for the percolator. [02:58:03] >_> [02:58:09] That sounds just like the Katie I know [03:33:01] :-) [15:16:04] good morning. I'm wfh today, just fyi [15:18:33] I also have a solid 4 hours of meetings after 1pm :( [15:24:58] wheee [15:25:23] AndyRussG: nm my comments from last night, i think i figured it out [15:25:24] right?! [15:25:33] going to push a new PS up shortly [15:26:23] cwdent: ah cool! Yeah I had a thought last night while I was doing the dishes but didn't have the energy to write it up, lemme try to recall :) [15:26:29] Love that dishes reflection time :) [15:27:31] hehe i agree, dishwashers rob a person of something [15:28:07] anyway i just wired up ajax to call insertBanner [15:28:30] cwdent: ah yeah exactly what I wa gonna say! since the workings of $.ajax are not what's under test, it's surely good enough just to call insertBanner directly from inside the mocked ajax... [15:28:39] but i also found that testing stuff right after chooseandmaybe wasn't reliable in that case [15:29:05] cwdent: heheh we do have a dishwasher, but there's still rinsing them and the pots and pans, cleaning the counters... [15:29:18] cwdent: ah! in what way? because of possible existing cookies? [15:29:35] so i actually blew away all that ranpre/post stuff because i realized that testing the parameters of the functions implicitly tests their being run [15:30:55] AndyRussG: it looked like the ajax call to insert the banner was happening async, sometimes at the end the status would be banner_chosen, sometimes banner_shown, but inside the postbanner callback it is always banner_shown [15:32:19] cwdent: re: ranpre/post, sounds great [15:34:29] cwdent: I don't see where th async stuff would be happening... The only async is for geoIp but that's resolved already [15:35:11] hmm yeah it didn't seem right to me either from looking at the code. let me mess around some more and see if i can nail down what's happening [15:35:20] cwdent: on the async end of things, though, here's a patch that moves things around a bit in that sense, in theory to improve the banner bump (who knows tho) https://gerrit.wikimedia.org/r/#/c/232424/ [15:35:51] cwdent: k ping anytime if u have questions! if a hangout would help also pls LMK :) [15:36:12] will do! thanks [15:45:27] AndyRussG: ah ha! https://phabricator.wikimedia.org/diffusion/ECNO/browse/campaign_mixins/resources/subscribing/ext.centralNotice.display.js;4092020d759b0151cfcf69f699f14898403c3569$199 [15:45:46] and yeah i just linked to diffusion :D [15:45:52] you can link to a line number [15:46:13] anyway that is set to true in the test, though i'm not sure how that happens [15:47:07] cwdent: wat!? definitely shouldn't be set to true!! [15:47:10] really weird [15:47:34] huh! yeah i just logged state and saw testingBanner: true [15:55:38] it's cool that you guys answered on pt.wikipedia.org and in Portugueses. thanks! [15:58:55] AndyRussG: yeah the more i look the more confusing that gets [16:01:13] cwdent: when I debug into that, in the test, it goes onto the non-testing code path [16:02:18] cwdent: the point of the cn.internal.state object is that all changes to state and data are made from there, so they should be easy to trace [16:02:38] No other objects are allowed to write to data directly, only indirectly by calling methods on internal.state [16:03:15] AndyRussG: displayTestingBanner should not be getting called? [16:04:22] cwdent: ahahah I see whats happening [16:04:36] it's the previous test, banner= override param [16:04:46] ooooh, setting the banner url param [16:04:49] and qunit doesn't reliably keep tests in the same order, I think [16:04:50] makes startup think it's testing [16:05:20] cwdent: not quite... I think we're not running startup here, or we shouldn't be [16:05:35] but that test does call displayTestingBanner() directly [16:06:01] I think we need to reset state at the beginning of each test somehow [16:06:18] yep, i can make that happen [16:06:42] cwdent: woohoo! thanks, glad u noticed this [16:06:51] * AndyRussG facepalms for not noticing this [16:06:54] 8p [16:11:16] AndyRussG: hooray! that fixes it [16:11:24] \o/ [16:13:13] (PS9) Cdentinger: Add BannerMixinHook tests. [extensions/CentralNotice] (campaign_mixins) - https://gerrit.wikimedia.org/r/229422 [16:13:56] argh dammit, there's still some race condition [16:14:38] (CR) jenkins-bot: [V: -1] Add BannerMixinHook tests. [extensions/CentralNotice] (campaign_mixins) - https://gerrit.wikimedia.org/r/229422 (owner: Cdentinger) [16:31:41] AndyRussG: well it's a least a different thing this time, testingBanner isn't set, but it's the same behavior where the posthook doesn't fire [16:31:46] like half the time [16:31:54] #jsthings [16:31:59] huh [16:32:20] cwdent: Is it the version now in Gerrit? [16:32:29] (PS1) Ejegg: Merge branch 'master' into deployment [extensions/DonationInterface] (deployment) - https://gerrit.wikimedia.org/r/232753 [16:33:08] (CR) Ejegg: [C: 2] Merge branch 'master' into deployment [extensions/DonationInterface] (deployment) - https://gerrit.wikimedia.org/r/232753 (owner: Ejegg) [16:33:53] AndyRussG: yeah just pushed it up...maybe you will see something obvious [16:34:55] (PS1) Ejegg: Update DonationInterface [core] (fundraising/REL1_25) - https://gerrit.wikimedia.org/r/232755 [16:38:25] (CR) Ejegg: [C: 2 V: 2] Update DonationInterface [core] (fundraising/REL1_25) - https://gerrit.wikimedia.org/r/232755 (owner: Ejegg) [16:44:35] awight: deploying DI. No reason to skip the orphan box, is there? [16:46:28] cwdent: K I think I see one bit of confusion... So intneral.state isn't a static object with data on it. It's a singleton that handles state. See ext.centralNotice.display.state.js [16:46:39] ahh, doesn't seem like i'd make things worse there... [16:47:01] !log updated payments from fca36026b1e90298abd93562803d3ea7d6893d96 to 049ad15323564fd5cd7f5efcadddb532a3590cef [16:47:55] AndyRussG: oh, so it's passing a reference when i try to save it [16:48:14] weird part is the state still doesn't contain testingBanner when it fails this time [16:48:48] cwdent: check out that file to see how it actually stores state information. [16:49:14] yeah I dunnow what's happening, but you don't want to replace the whole js object [16:49:24] Look at the top of that file, so we have these vars: [16:49:25] var state, [16:49:25] data = {}, [16:49:25] campaign, [16:49:25] banner [16:49:55] state is the handle for the object that is visible outside this file [16:50:07] line 149: state = mw.centralNotice.internal.state = { [16:50:22] and after that a bunch of methods are defined [16:51:15] data is the public, read-only object that can be gotten via state.getData() [16:51:30] campaign and banner are internal vars for storing campaign and banner objects [16:52:51] Fundraising Sprint Queen, MediaWiki-extensions-DonationInterface, Patch-For-Review: Something broken in payments-antifraud and payments-initial message generation - https://phabricator.wikimedia.org/T109022#1557708 (DStrine) [16:53:01] oh noes [16:53:03] sorry [16:53:03] Fundraising Sprint The Pogues, Fundraising-Backlog, Wikimedia-Fundraising-CiviCRM, Astropay Integration, Patch-For-Review: AstroPay audit parse failure - https://phabricator.wikimedia.org/T107673#1557715 (DStrine) [16:53:11] Fundraising Sprint Rowlf the Dog, Fundraising-Backlog, MediaWiki-extensions-DonationInterface, Patch-For-Review: Spike: Lots of 21000050 errors for Globalcollect, since July - https://phabricator.wikimedia.org/T107845#1505515 (Ejegg) Oops, that last patch was useless. Logging our generic error mes... [16:53:16] I'm taking the "unplanned sprint work" tag off of older tasks [16:53:24] ah, thanks dstrine [16:53:24] Fundraising Sprint The Pogues, Fundraising-Backlog, fundraising-tech-ops: Footer images on payments missing - https://phabricator.wikimedia.org/T106728#1557728 (DStrine) [16:53:31] ahhh [16:53:35] AndyRussG: aah, yeah, starting to see [16:53:36] Fundraising Sprint N*E*R*D, Fundraising Sprint ODB, Fundraising-Backlog, MediaWiki-extensions-CentralNotice, and 2 others: Publishing translations for central notice banners fails - https://phabricator.wikimedia.org/T104774#1557736 (DStrine) [16:53:38] Fundraising Sprint Miles Davis, Fundraising Sprint N*E*R*D, Fundraising-Backlog, WMF FR, Patch-For-Review: Drupal 7.38 upgrade - https://phabricator.wikimedia.org/T103006#1557739 (DStrine) [16:53:41] i am so bad at javascript [16:53:57] cwdent: the best solution that I can think of now is to add a method to the state object that resets all the objects that are set during the normal process of choosing a banner, etc [16:54:05] it'd be a method just for testing, but so it goes [16:54:52] oh ok...that makes sense [16:54:57] let me see if i can figure that out [16:55:01] or to make data, banner and campaign publically available and mark them as @private [16:55:27] cwdent: yeah JS has its meandering bits... maybe part of how I documented stuff was not clear also? [16:55:36] dstrine: stop blowing up my email! :P [16:56:05] you literally asked for it several times [16:56:07] cwdent: some overview is at the top of ext.centralNotice.display.js [16:56:19] and that's the correct usage of literally :) [16:58:06] fun fact: the colloquial definition of literally (figuratively, extremely) has actually been supported by webster's for many years [16:58:15] Fundraising Sprint Queen, Fundraising Sprint Rowlf the Dog, Fundraising Sprint The Pogues, Fundraising-Backlog, and 2 others: FailPage logic is all jacked up - https://phabricator.wikimedia.org/T108041#1557765 (DStrine) [16:58:17] we no longer have a world that means what literally used to mean [16:58:20] *word [16:58:25] Fundraising Sprint Queen, Fundraising Sprint Rowlf the Dog, Fundraising-Backlog, Astropay Integration, Patch-For-Review: Investigate 'Invalid control' errors from AstroPay - https://phabricator.wikimedia.org/T109335#1557766 (DStrine) [16:58:43] Fundraising Sprint Queen, Fundraising Sprint Rowlf the Dog, Fundraising-Backlog, Patch-For-Review: Investigate AstroPay SmashPig FailMail - https://phabricator.wikimedia.org/T108995#1557769 (DStrine) [16:58:51] Fundraising Sprint Queen, Fundraising Sprint Rowlf the Dog, Fundraising-Backlog, MediaWiki-extensions-DonationInterface, Patch-For-Review: Freaky banner arguments cause redirect to (nonexistent) Worldpay form. - https://phabricator.wikimedia.org/T108605#1557770 (DStrine) [16:59:02] Fundraising Sprint Queen, Fundraising Sprint Rowlf the Dog, Fundraising Sprint The Pogues, Fundraising-Backlog, fundraising-tech-ops: Make DonationInterface fatal errors accessible - https://phabricator.wikimedia.org/T107918#1557771 (DStrine) [17:00:27] atgo: did you happen to see my email to WP? am i asking generally the right questions of the right people? [17:00:49] sure! [17:00:58] they can always include other people or ask for more clarification [17:01:28] so for some context, jessica is our account manager [17:01:50] as far as the adam vs. kyle breakout i'm not totally sure what their responsibilities are. PPena? [17:03:55] hey Jeff_Green - i may have given PPena some wrong instructions for the yubikey. didn't realize that you'd changed operation procedure after i sent you mine :) [17:04:04] ha it's ok [17:05:37] (PS1) Ejegg: Log real GC error on validation problem [extensions/DonationInterface] - https://gerrit.wikimedia.org/r/232761 (https://phabricator.wikimedia.org/T107845) [17:11:44] cwdent: late second--yeah i thought your email was great. Glad I'm on the CC list, too, cos I have the same questions. [17:13:20] ejegg: just saw your note. Yeah, everything is back on HEAD. I should have followed up by mentioning that fact on my cautionary thread. [17:14:03] great, thanks awight [17:24:46] (PS10) Cdentinger: Add BannerMixinHook tests. [extensions/CentralNotice] (campaign_mixins) - https://gerrit.wikimedia.org/r/229422 [17:25:02] AndyRussG: ^ well this does work, though i am not sure i'm doing the right thing [17:26:10] (CR) jenkins-bot: [V: -1] Add BannerMixinHook tests. [extensions/CentralNotice] (campaign_mixins) - https://gerrit.wikimedia.org/r/229422 (owner: Cdentinger) [17:27:06] AndyRussG, dstrine: also i was wondering, since i'm probably going to have to dive into they worldpay thing when they get back to me, what would you guys think about making the current CN test coverage ticket cover just these few, throw a point on there, and close it? will definitely revisit later, maybe during the slush [17:27:54] cwdent: that sounds quite resonable to me :) [17:28:09] cool [17:28:18] wth! same error in jenkins, but i can't reproduce [17:31:12] oh geez, it's actually a different but similar error in the last test, probably related to my last change [17:35:13] AndyRussG: TypeError: mw.centralNotice.getBucket is not a function [17:35:19] well that doesn't make a whole lot of sense to me [17:36:13] you have a namespace closure around the test, which defines mw? [17:36:22] otherwise, it's mediaWiki i think [17:37:18] yeah you do. nvm [17:37:28] awight: yeah it gets passed in the seaf [17:37:50] The order is different in those two files, which is un peu funky [17:38:32] the fact that the browser tests are running in a stateful browser makes for some difficult cross pollination between the tests [17:38:58] u ever get the headless mode working? [17:39:12] hrm, no but i'm on a different computer now so i should try again [17:39:29] doesn't it still use your installed browser though? [17:39:37] no, it uses phantomjs [17:39:39] i feel like something like phantomjs might be better [17:39:41] oh haha [17:39:44] nm! [17:40:33] is that what jenkins is doing? [17:42:04] yep! [17:42:33] I got this going a few times, I might be able to help... [17:43:37] awight: where is the doc again? [17:43:41] on how to do that? [17:43:47] i remember seeing one [17:45:02] doc! that would be nice [17:45:22] I guess this is the jenkins magic: grunt karma:main [17:47:30] https://www.mediawiki.org/wiki/Continuous_integration/Entry_points#Grunt_task_runner [17:47:41] meh [17:49:15] https://www.mediawiki.org/wiki/Manual:JavaScript_unit_testing [17:49:26] https://www.mediawiki.org/wiki/Manual:JavaScript_unit_testing#From_the_command_line [17:50:04] sez "in Chrome", creepy. [17:50:29] hrm yeah i think this is where i saw that [17:50:36] i know there's a way with phantomjs though [17:51:34] https://www.npmjs.com/package/grunt-contrib-qunit [17:55:16] ERROR [launcher]: Cannot start Chrome [17:55:18] yeeeeap [17:55:30] which is funny, because i'm running chrome, and the tests pass [17:55:31] I've definitely done the phantomjs thing, but things may have changed [18:00:29] cwdent: awight: u need some environment vars.. maybe you're using chromium? Yeah it does run on that! [18:02:30] cwdent: I'm getting all green on both Special:JavaScriptTest and grunt qunit... where didja get your error? [18:02:52] cwdent: here are the environment vars I used: export MW_SERVER='http://localhost'; export MW_SCRIPT_PATH='/mw1' [18:03:18] AndyRussG: do you symlink wiki to /mw1 or something? i remember fiddling with that last time [18:03:25] that looks like the right magic! [18:03:27] AndyRussG: i only see the error on jenkins, not locally [18:04:00] I recall once I had to set an env var to tell it the browser path, somehow it got fixed for my setup but maybe on urs not [18:04:39] MW_SCRIPT_PATH is setup funny on my computer, edit a page on your wiki and you may see it in the URL [18:04:46] Or it might be in LocalSettings? [18:05:15] jwiw, there's a lot of phantomjs talk in the integration-jenkins repo [18:06:26] "The browser by default is Firefox. You can change the browser by setting the environment variable BROWSER, other choices include chrome and phantomjs. PhantomJS is a headless WebKit browser." [18:06:30] from https://www.mediawiki.org/wiki/Quality_Assurance/Browser_testing/Running_tests [18:06:47] "On Linux with X11[1] you can run browser tests in a headless mode by setting the environment variable HEADLESS to true." [18:06:54] lol x11[1] [18:07:16] hehe, you can laugh now, but mir is coming... [18:07:26] not wayland? [18:07:34] i think it got rebranded [18:07:53] what's the 11 for again--1911? [18:08:01] in my day linux display managers were called xfree86 dammit! [18:08:18] hahahah me too [18:08:22] https://en.wikipedia.org/wiki/Wayland_%28display_server_protocol%29 [18:08:29] https://en.wikipedia.org/wiki/Mir_%28software%29#Software_architecture [18:08:30] aww man, the last thing I need is for ubuntu to be rewriting core stuff [18:08:38] I think they're fighting [18:09:00] You can run Wayland on Debian [18:09:18] cwdent: that error looks really strange [18:09:23] yeah i tried it. everything broke in all kinds of new and interesting ways! [18:09:38] oooh fun [18:09:44] progress! [18:09:51] AndyRussG: yeah i agree, i can't see how what i changed would affect this [18:11:21] hey--that test is failing in load.php [18:11:30] cwdent: looks like Jenkins was giving the same error on PS9 too [18:11:45] I think that means it hasn't actually started running the test? Maybe RL module dependency fail. [18:11:51] huh didn't they just delete that endpoint? [18:11:56] jk [18:12:01] Your test module should depend on the CN stuff you need [18:12:07] atgo sorry just saw this now. Kyle is merch services, Adam is new integrations [18:12:17] cwdent: ^ [18:12:18] thanks PPena [18:12:34] atgo so things related to Enhanced SOP should go to Adam +Jessica [18:12:48] thanks! [18:25:07] awight: the weird thing is that it can't get to that execution point if mw.centralNotice isn't there [18:25:25] also, works locally under grunt [18:26:30] and re: dependencies, all it needs is ext.centralNotice.display, which is the module under test and should be loaded automatically, no? [18:27:25] no, nothing is automatic [18:28:24] how does it load the module under test, then? [18:28:54] I'm pretty sure all the loading is done just the same as a normal pageview [18:29:13] the only thing the test framework does is call your test's entry point [18:30:36] wow, I don't understand how ext.centralNotice.display.tests.js is loaded at all [18:30:46] I downloaded that patch and it's not declared as a module? [18:31:37] ah sorry, it's that horrible dynamic thing I copied into efCentralNoticeResourceLoaderTestModules [18:32:21] Maybe we should get rid of the filesystem globbing, and explicitly declare our test modules + their dependencies? [18:34:42] awight: hmmmmm I think it's fine.. could be made more explicit, but I'm pretty sure the issue in the test is not a lack of loading of mw.centralNotice.display module. The test can't reach the point where it's getting an error if that module wasn't loaded earlier. Rather, something strange is overwriting, somewhere, I think [18:34:52] it does look like line 447 will load the right dependency [18:35:30] this might be a typo? ./resources/subscribing/ext.centralNotice.kvStore.js: mw.centralNotice = ( mw.CentralNotice || {} ); [18:35:38] capital C [18:35:52] good call. [18:37:49] awight: woohoo!! that's an evil bug, great spotting 8D [18:38:01] grep -r ftw [18:39:28] i almost have phantomjs working, except it hangs at [D] ["phantomjs","onInitialized"] and times out [18:39:32] * cwdent grumble [18:39:54] don't forget the "i" switch!!!! [18:40:02] wat [18:40:52] (PS1) AndyRussG: Fix a typo in ext.centralNotice.kvStore declaration [extensions/CentralNotice] (campaign_mixins) - https://gerrit.wikimedia.org/r/232781 [18:41:11] "i" for case InSeNsItIvE [18:41:29] cwdent: awight: ^ + 2 & I'll rebase the tests patch? [18:41:34] ejegg: What do you think about a new flag to getLogger, which will optionally echo to stdout, for the orphan slayer? [18:41:37] AndyRussG: hehehe [18:41:45] AndyRussG: you got it [18:41:55] :D [18:42:04] (CR) Awight: [C: 2] "More Better!" [extensions/CentralNotice] (campaign_mixins) - https://gerrit.wikimedia.org/r/232781 (owner: AndyRussG) [18:42:17] (CR) Cdentinger: [C: 2] Fix a typo in ext.centralNotice.kvStore declaration [extensions/CentralNotice] (campaign_mixins) - https://gerrit.wikimedia.org/r/232781 (owner: AndyRussG) [18:42:38] whoa...+4? [18:42:41] Oh no! double +2! That sends a patch into git limbo for eternity! [18:42:54] quick, someone subtract 2 [18:42:55] (Merged) jenkins-bot: Fix a typo in ext.centralNotice.kvStore declaration [extensions/CentralNotice] (campaign_mixins) - https://gerrit.wikimedia.org/r/232781 (owner: AndyRussG) [18:43:02] Either that, or someone owes someone a beer [18:43:30] awight: how about a log config setting? [18:43:45] mmm. yeah that would work perfectly for the slayer [18:43:49] I like that better [18:44:24] I can do that as part of https://phabricator.wikimedia.org/T107918, thanks! [18:45:27] Fundraising Sprint Queen, Fundraising Sprint Rowlf the Dog, Fundraising Sprint The Pogues, Fundraising-Backlog, fundraising-tech-ops: Make DonationInterface fatal errors accessible - https://phabricator.wikimedia.org/T107918#1558132 (awight) Side thing: on payments1004, we should find a way t... [18:45:58] Hrm, I guess it's fine to echo info to stdout while we're running under cron, and have stderr failmail us... [18:46:17] 1> /dev/null or something [18:47:16] (PS11) AndyRussG: Add BannerMixinHook tests. [extensions/CentralNotice] (campaign_mixins) - https://gerrit.wikimedia.org/r/229422 (owner: Cdentinger) [18:47:49] (CR) AndyRussG: "Rebased onto typo fix" [extensions/CentralNotice] (campaign_mixins) - https://gerrit.wikimedia.org/r/229422 (owner: Cdentinger) [18:48:27] (CR) jenkins-bot: [V: -1] Add BannerMixinHook tests. [extensions/CentralNotice] (campaign_mixins) - https://gerrit.wikimedia.org/r/229422 (owner: Cdentinger) [18:49:52] cwdent: awight: well, that wasn't it [18:49:57] * awight hides behind a barrel [18:50:11] ah awight I'm sure that bug would have bitten us one day! [18:50:15] Fantastic u found it [18:51:25] arg I'm gonna wash away some sweat and hopefully improve brain function, brb [18:52:26] Just mentioning... [18:52:26] ./includes/CNChoiceDataResourceLoaderModule.php: return 'mw.centralNotice = { choiceData: [] };'; [18:52:32] ./resources/subscribing/ext.centralNotice.display.js: mw.centralNotice = cn; [18:53:47] The first one worries me a bit. [18:54:06] maybe we can just make that safer with another || thing? [18:54:41] * ejegg tunes up dev wikis to get in on this CentralNotice party [18:54:55] hehe [18:55:09] it's more fun that it appears to be [18:55:12] than [18:55:39] it looks like a blast! [18:56:08] seems to be a race condition, luckily jenkins is consistent about triggering the "wrong path [18:56:31] cwdent is working on local phantomjs so we can reproduce the exact error [18:56:40] i think the answer to my phantomjs problem must be this: http://stackoverflow.com/questions/18392463/grunt-not-running-qunit-tests-on-phantom [18:56:42] ah, cool [18:56:45] unfortunately i don't understand it [18:56:50] the answer that is [18:57:07] i tried saving that bridge to a file and injecting it with: https://www.npmjs.com/package/grunt-contrib-qunit#inject [18:57:18] Is jenkins definitely running with phantomjs? [18:57:29] If not, I would suspect that we dropped the support [18:57:40] 18:48:12 INFO [launcher]: Starting browser Chrome [18:57:43] jenkins ^ [18:57:48] d'oh [18:59:48] mari sez: ggggghjwiqoeyugggggggggggggggggggggttttttttttttttttttttttttttttttttttdoZ; [18:59:51] ';[z;op [19:00:00] ;jlzlZ;zzpk [19:00:50] uuuuuuisdkosad;['oc07xodfj [19:02:03] yggmmmmmm,xza[z[[[oxosdkosiduxapxoazx9ao7sxxasaoiio [19:02:10] hi mari! [19:02:33] Ll'lkLk [19:02:45] MAri says "hi", and something about a museum [19:03:10] j [19:03:22] j [19:03:33] "i could write one letter, okay?" [19:03:39] mm/vk;d' [19:03:40] hehe [19:04:28] she ended the first line with a semicolon [19:04:30] just like dad [19:04:41] gvvgcpjbbgjmv cvjkm [q.ļju7yhyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyur mjhhhhhhhhhhhhhhhhhhhhhhhhhhhhhj kkkkkkkkkkkkkkkk[=oopbc./,lllk oljjknkxmm [19:04:45] i do not. [19:04:52] hehehe [19:04:56] hi mari! [19:05:07] Kurt Vonnegut claims to [19:05:19] have nrver used a ; [19:06:17] Fundraising-Backlog, MediaWiki-extensions-CentralNotice: Unnecessary bucket warnings in campaign settings - https://phabricator.wikimedia.org/T109714#1558199 (atgo) How about we adjust the warning to say "Bucket 'x' has multiple banners assigned. Traffic will split evenly across the assigned banners." to... [19:06:45] Fundraising-Backlog, MediaWiki-extensions-CentralNotice: Unnecessary bucket warnings in campaign settings - https://phabricator.wikimedia.org/T109714#1558200 (atgo) It still saves with the warning? That's a confusing flow. [19:11:31] whew [19:19:43] hey cwdent - would you have any interest in getting on a call with worldpay? i'm just remembering that pats has a weekly with them this afternoon (unless it was canceled) so you could maybe jump on that [19:23:55] sure! what time? [19:27:01] cwdent: awight: in theory that choiceData module shouldn't be getting loaded here. ext.centralNotice.display depends on it, not vice versa [19:28:22] cwdent: I'm gonna try sending up the last patchset that didn't produce the Jenkins error, to see if that passes. If it doesn't, it could be due to some infrastructure issue... [19:28:28] or change at least [19:29:02] sounds good AndyRussG [19:29:07] thx! [19:31:44] AndyRussG: so besides all this, that resetState method is more or less what you were thinking? [19:32:18] cwdent: yeah! my only comment on that was to substitute "state" for "choices" in the comment, and add @private annotation [19:32:35] 2 [19:32:47] cwdent: 2 oclock. let me confirm with PPena that it's happening [19:32:56] ok! [19:33:04] I confess I'm unsure how kosher it'll be considered. I know we do that for private but publicized-for-testing member vars, but not sure about methods [19:33:29] though I don't really see much difference either, and this is cleaner than making the variables public and having the test reset them [19:33:39] Mmmm well, maybe not, now that I think of it... [19:33:47] rrrrgghh [19:34:06] cwdent: she says that's perfect! i sent you an invite i think? [19:34:13] it's being weird. but i can email you the info as well if helpful [19:34:19] yep! i'll be there [19:34:24] cool :D [19:34:39] thanks! [19:38:17] (PS12) AndyRussG: Add BannerMixinHook tests. [extensions/CentralNotice] (campaign_mixins) - https://gerrit.wikimedia.org/r/229422 (owner: Cdentinger) [19:40:07] (CR) AndyRussG: "Reverted ext.centralNotice.display.tests.js to what it was in PS8 (last PS that was passing on Jenkins)." [extensions/CentralNotice] (campaign_mixins) - https://gerrit.wikimedia.org/r/229422 (owner: Cdentinger) [19:41:15] cwdent: hmm that passed the tests! so at least we know it wasn't something strange that changed on Jenkins that made things stop working [19:41:41] huh, well that's good anyway [19:41:52] heh yeah something is not nothing [19:41:57] if i can get this phantom thing working maybe i'll be able to reproduce [19:42:03] although jenkins is using chromium [19:42:12] cwdent: Not sure if you saw but ^ yeah [19:42:13] mmmm so maybe that's not it? [19:42:17] or Chrome even [19:42:36] yeah I did see, but if Jenkins is actually using chrome, are we sure it makes sense to try phantomjs? [19:42:57] agreed [19:43:04] I mean, pls go ahead if u think it might help, tho! [19:43:12] I dunno what detail could be different... [19:43:25] yeah, i doubt it'll help in this case [19:43:26] awight: cwdent: I feel like my brain is all awash with qunit sloosh and I need to let it drain out for a bit to get a better perspective on this [19:43:34] i hear that [19:43:50] as in, I feel like if I give it a break and come back to it with fresh eyes I'll catch something else [19:44:00] does that make sense? would that be OK? [19:44:05] for sure! [19:44:17] yeah i'll keep messing with phantom for a minute [19:44:25] i just...need it to work now [19:44:38] K cool! haha yes I very much know the feeling :) [19:45:13] quite possibly useful for other stuff too :) [19:46:21] cwdent: you should check that our qunit setup still supports phantomjs... [19:46:46] (PS13) AndyRussG: Banner history logger campaign mixin [extensions/CentralNotice] (campaign_mixins) - https://gerrit.wikimedia.org/r/229560 (https://phabricator.wikimedia.org/T90918) [19:46:50] I know we used to use it, so the fact that we switched jenkins to use chrome is highly suspect [19:48:31] cwdent: https://phabricator.wikimedia.org/T74063 [19:48:48] (PS2) AndyRussG: Execute display logic right away [extensions/CentralNotice] (campaign_mixins) - https://gerrit.wikimedia.org/r/232424 [19:50:05] yea I remember talking to Krinkle about that one [19:50:41] oh, heh [19:50:44] thanks awight [19:52:20] * cwdent puts it down, walks away [19:52:51] * cwdent closes 40 tabs [19:54:04] http://www.theonion.com/article/area-dad-informs-busboy-hes-ready-order-51130 [19:59:42] AndyRussG: the thing that changed between PS8 and 9 was the addition of getBucket(), so i guess we can assume that is what is borked: for some reason getBucket doesn't exist in jenkins's browser [20:00:44] I really miss their paper editions [20:01:48] cwdent: well, yes at that point... I'd guess it's closer to some side effect, like: because of some lack of network access or cookie something different on jenkins, the code goes thru a different code path, which triggers some bug that we haven't seen yet and destroys the CN object right before it gets to that point [20:02:32] you can add any console logging you need to these test patchsets, btw [20:05:32] ejegg: you free for standup? [20:12:47] Fundraising Sprint Rowlf the Dog, Fundraising-Backlog, MediaWiki-extensions-DonationInterface, Patch-For-Review: Spike: Lots of 21000050 errors for Globalcollect, since July - https://phabricator.wikimedia.org/T107845#1558397 (Ejegg) a:Ejegg [20:19:37] Fundraising Sprint Queen, Fundraising Sprint Rowlf the Dog, Fundraising Sprint The Pogues, Fundraising-Backlog, Patch-For-Review: Recent recurring GC donations not recurring or displaying as such at GC - https://phabricator.wikimedia.org/T105041#1558437 (atgo) Thanks @ejegg - will we know that... [20:45:26] Fundraising Tech Backlog: Set up fr-tech permissions for Eileen - https://phabricator.wikimedia.org/T109765#1558568 (K4-713) NEW a:Jgreen [20:46:04] WOOO [20:46:11] ...woo. [20:46:34] (wooooo) [20:49:58] Fundraising Tech Backlog, fundraising-tech-ops: Set up fr-tech permissions for Eileen - https://phabricator.wikimedia.org/T109765#1558596 (atgo) [20:52:49] ahh cwdent - for what it's worth, this is an actual dial-in usually... not a hangout [20:52:51] just a heads up [20:54:53] atgo: e-mail looks great, thx for doing that! [20:55:00] mmhmm [20:55:06] oh ok! [20:55:24] K4-713: I'm FREEE [20:55:46] start date? [20:55:58] hot dog [20:58:28] I was going to say things, but he left. [20:59:01] atgo: anything special i should know? just call that number? [20:59:22] yeah! just a regular conference call [20:59:50] wait cwdent [21:00:19] PPena is pinging you privately with the info [21:00:59] thanks! [21:03:19] how do you like this flute music? :P [21:04:34] ok so cwdent they sent us the wrong thing [21:05:32] argh. this is frustrating [21:06:13] we're in! pinged you individually, too [21:09:11] * K4-713 is jealous of your alleged flautist [21:22:29] hey cwdent - did you get what you needed there? i wasn't following super closely :) [21:23:07] atgo: yeah i think i am going to get an email tomorrow with details on sandbox setup [21:23:15] which should be everything i need to get rolling! [21:23:16] cool, sounds good [21:36:18] (PS13) Cdentinger: Add BannerMixinHook tests. [extensions/CentralNotice] (campaign_mixins) - https://gerrit.wikimedia.org/r/229422 [21:36:39] * cwdent holds breath [21:37:13] (CR) jenkins-bot: [V: -1] Add BannerMixinHook tests. [extensions/CentralNotice] (campaign_mixins) - https://gerrit.wikimedia.org/r/229422 (owner: Cdentinger) [21:37:19] damn [21:38:47] well it's a different error, the error i got in chrome/ubuntu a minute ago, the error that this changed fixed on that system [21:44:36] (PS14) Cdentinger: Add BannerMixinHook tests. [extensions/CentralNotice] (campaign_mixins) - https://gerrit.wikimedia.org/r/229422 [22:16:11] (CR) Cdentinger: "Well, this change does fix the errors on every browser I could find. However there's something subtle going on, in script load order, or " [extensions/CentralNotice] (campaign_mixins) - https://gerrit.wikimedia.org/r/229422 (owner: Cdentinger) [22:17:21] fundraising-tech-ops, Traffic, operations, Patch-For-Review: Decide what to do with *.donate.wikimedia.org subdomain + TLS - https://phabricator.wikimedia.org/T102827#1559092 (CCogdill_WMF) I looked into Pimcore, Mautic, and OpenEMM. All documentation I can find on these tools suggests they are mea... [22:26:31] AndyRussG: does 'top RL queue' still mean something? [22:26:49] ejegg: I think it may, but less than before! [22:26:55] ah, cool [22:27:03] Ah yeah are you looking at the rollout plan? rrrg I have to update that too... [22:27:19] oh, just one of the comments in the banner history commit [22:27:41] ejegg: ahhhhh woops also have to fix that, yeah [22:28:04] k. so far just trivial feedback like that [22:28:07] ejegg: there's another patch in Gerrit for changes following RL becoming async [22:28:09] cool! [22:28:52] https://gerrit.wikimedia.org/r/#/c/232424/ [22:31:48] so, you can be sure the dependency runs before the dependent script, but can you be sure the dependent script runs after dom-ready functions in the dependency? [22:32:05] Like if everything is cached or run from local storage? [22:36:13] Fundraising research, Research-and-Data: Scope donor contribution campaign test - https://phabricator.wikimedia.org/T104652#1559171 (leila) @DarTar is this related to the meeting we had with Juliet last week? If so, should we move this to Radar or Paused? [22:37:38] ejegg: correct, you can't be sure the dom-ready functions in the dependency have run without again going to dom-ready again, I think... sorry specifically which dependencies and dependents are you worrried about? AFIK all that stuff is controlled for either by promises, or known order in which functions are set using $( function ), which must are supposed to run in order [22:39:36] sorry, was hallucinating that you had unwrapped a call, when you're actually wrapping it in dom-ready for safety. backwards day [22:44:48] ejegg: I've been totally hallucinating all day! [22:44:56] heh [22:45:26] async js lends itself well to that [22:47:07] Do you need to wait for the DOM to use local storage? [22:47:39] no [22:47:43] one sec brb! [22:59:35] ejegg: sorry about that! was just getting charged $60 to have my car scanned, back home [22:59:51] oh no! Hope you interrupted them in time [23:00:08] I think that's what they charge, not much choice... [23:00:18] I don't know the first thing about cars. Just that the engine light came on [23:00:23] oh, i thought you meant getting a ticket... [23:01:12] ahh heh no fortunately. The engine light went on during a what was supposed to be a super-fast kid-library run, so I passed by the mechanic ;p [23:01:32] any info from the scan? [23:02:13] yeah. It's from a sensor that detects oxygen in the exhaust that sometimes doesn't work when it's hot and humid because it gets water on it 8p [23:02:25] heh [23:02:27] They reset the computer, and the light is off now [23:03:52] K I think I'll rebase the banner history patch on top of the switch-the-dom-time patch. That'll also let us check that localStorage is available before $( function ) [23:04:33] AndyRussG: submitted a fix for that test btw [23:04:35] I sure hope it is! I mean, yes localStorage is in the DOM, but I assumed that $( function ) is about basic DOM contents from the base HTML being ready [23:05:31] cwdent: fantastic! yeah I was looking at PS14 there [23:06:30] i was able to produce a totally different error in ubuntu/chrome [23:06:38] but ubuntu/firefox passed :P [23:07:27] huh! OK yeah I was thinking I would expect an error in one of those tests in fact [23:08:31] AndyRussG: would you say as a rule you shouldn't reference the cn global from within mixins? [23:08:48] it seems like that is where the load order gets funny [23:08:48] cwdent: no, on the contrary, it's supposed to be accessible! [23:08:55] AndyRussG: yeah that's sort of what i figured [23:09:10] but how can it? The mixin is only called by a call to the cn global [23:09:29] i wonder if it is script loading that's the problem or if it's a quirk of qunit [23:10:27] cwdent: what errors are you getting? no errors here for now [23:11:00] yep PS14 fixed the errors [23:11:16] but i had to move some code out of the mixin to get consistent behavior [23:11:19] the bucket calls [23:12:35] the mixin is called off cn, but could the closure definition be happening too early? [23:13:08] cwdent: heh maybeee [23:13:53] I wouldn't mind actually leaving the bucket change inside the pre mixin, if we can make it work, since that is something that you're supposed to be able to do [23:13:55] (CR) Ejegg: Banner history logger campaign mixin (3 comments) [extensions/CentralNotice] (campaign_mixins) - https://gerrit.wikimedia.org/r/229560 (https://phabricator.wikimedia.org/T90918) (owner: AndyRussG) [23:14:26] yeah I was gonna say, setBucket should only happen after the bucketer processes buckets, which happens in chooseAndMaybeDisplay() [23:15:40] ok yeah i was wondering that [23:15:48] let me test this... [23:16:03] cwdent: no issues with calling cn.cancelBanner from within the mixin handler... [23:21:35] (CR) Ejegg: Banner history logger campaign mixin (2 comments) [extensions/CentralNotice] (campaign_mixins) - https://gerrit.wikimedia.org/r/229560 (https://phabricator.wikimedia.org/T90918) (owner: AndyRussG) [23:24:27] dang, that 100% sampling of history on banner click is either going to have to resolve AFTER the event logging call finishes (and delay sending the donor to the payments site), or is going to risk the eventLogging request being canceled as the browser navigates away [23:25:14] sorry, I mean the sendLog promise would have to resolve... [23:25:55] ejegg: hmmm.... Well I think if it's sendBeacon we're OK, it's precisely for that... Unsure about other cases [23:26:07] lol well now the same code is producing a ton of errors i can't get to go away [23:26:21] there is state leaking out of my browser [23:27:32] oh cool, sendBeacon is pretty nifty! [23:28:41] but phooey on IE and safari [23:29:18] well i gotta roll, but i'll get to the bottom of this [23:29:20] later! [23:29:22] cya [23:30:58] cwdent|afk: see ya! [23:31:47] ooh, event logging respects navigator.doNotTrack! [23:32:31] ejegg: heh fantastic! [23:32:34] didn't know that [23:33:58] and fallback is definitely async [23:34:51] so the 100% click sample will be more like a 100% of ff/chrome/opera click sample [23:35:04] Fundraising research, Research-and-Data: Scope donor contribution campaign test - https://phabricator.wikimedia.org/T104652#1559349 (DarTar) moved to Radar, no immediate action item on our end, but this may come back in Q2-Q4 per discussion with Juliet. [23:35:21] Fundraising research, Research consulting, Research-and-Data: Scope donor contribution campaign test - https://phabricator.wikimedia.org/T104652#1559350 (DarTar) [23:36:27] Fundraising research, Research consulting, Research-and-Data: Scope donor contribution campaign test - https://phabricator.wikimedia.org/T104652#1559354 (DarTar) a:DarTar>None [23:40:27] Fundraising research, Analytics-Backlog, Research-and-Data: What's our projected ability to fundraise in the coming years - https://phabricator.wikimedia.org/T107606#1559376 (DarTar) @ggellerman we agreed that tasks in staged should never go back to backlog but move elsewhere or be marked as completed...