Evergreen ILS Website

IRC log for #evergreen, 2017-07-03

| Channels | #evergreen index | Today | | Search | Google Search | Plain-Text | summary | Join Webchat

All times shown according to the server's local time.

Time Nick Message
04:31 pinesol_green News from qatests: Test Success <http://testing.evergreen-ils.org/~live>
07:18 rjackson_isl joined #evergreen
08:35 Dyrcona joined #evergreen
08:44 mmorgan joined #evergreen
08:46 bos20k joined #evergreen
09:09 bos20k joined #evergreen
09:22 Jillianne joined #evergreen
09:45 jvwoolf joined #evergreen
11:07 jeff @coffee #evergreen
11:07 * pinesol_green brews and pours a cup of Rusty's Hawaiian Red Caturra Natural, and sends it sliding down the bar to #evergreen
11:08 Dyrcona @tea #evergreen
11:08 * pinesol_green brews and pours a pot of English Breakfast, and sends it sliding down the bar to #evergreen (http://ratetea.com/tea/harn​ey/english-breakfast/3525/)
11:11 mmorgan @quote random
11:11 pinesol_green mmorgan: Quote #65: "< paxed> #evergreen: wrong questions answered correctly." (added by csharp at 02:27 PM, August 13, 2013)
11:15 Freddy_Enrique joined #evergreen
11:16 Freddy_Enrique Buenos dias Folks :)
11:18 csharp @hate action_triggers
11:18 pinesol_green csharp: The operation succeeded.  csharp hates action_triggers.
11:18 bshum @hates action_triggers
11:18 pinesol_green bshum: action_triggers doesn't seem to hate anything.
11:18 bshum :)
11:18 jeff hah
11:18 jeff @whocares action_triggers
11:18 pinesol_green csharp hates action_triggers
11:18 jeff there you go.
11:18 bshum No I did mine on purpose
11:19 jeff ah.
11:19 bshum We hate action_triggers, it doesn't hate us
11:19 bshum :D
11:19 jeff well, now that you've said that...
11:19 jeff :P
11:19 bshum Heh
11:24 mmorgan action_triggers just likes to toy with us ;-)
11:29 csharp when they work, they're fine, but when they don't they fail spectacularly
11:29 csharp and there's not a dependable way to monitor them in real time (that I'm aware of)
11:29 csharp so you just find out later that they failed
11:29 mmorgan Indeed.
11:30 csharp I might just hate OpenSRF though :-)
11:30 Dyrcona csharp: You're not sending the output to /dev/null are you?
11:30 Dyrcona Of course, the email is still after the fact, but....
11:30 Dyrcona I love/hate computers. :)
11:31 csharp no, I get notified
11:31 csharp and we can monitor the lock file age or whatever, but that's not great either
11:31 Dyrcona I was just adding something to our cron, and most of our local scripts go to /dev/null, so thought I'd ask.
11:31 mmorgan computers also like to toy with us ;-)
11:32 Dyrcona mmorgan: Not yet, but soon. :)
11:33 berick csharp: i've been pondering an action_trigger.event watcher script that looks for events stuck in 'collected', etc.
11:34 mmorgan csharp: When I'm running a trigger by hand, I monitor by querying the state, count(*) of the relevant rows in action_trigger.event.
11:34 jeff while we're on the subject, what's the best thing to read to bring myself up to speed with A/T filters?
11:34 mmorgan Not sure how that might apply to those run by cron.
11:34 jeff i've been meaning to dig into docs/code/commits/launchpad/list-archives/slides to seek that out.
11:35 Dyrcona And, I typoed my crontab entry. :P
11:36 berick jeff: what do you mean by A/T filters.. validators?
11:36 csharp berick: I would support that - if you want a tester/extra eyes/help, let me know
11:37 jeff berick: A/T filters as in Open-ILS/examples/action_tr​igger_filters.json.example
11:37 bshum Maybe he means granularities?
11:37 bshum Oh those, heh
11:37 berick ah
11:38 jeff Something along the lines of using them to exclude patron groups from certain notification methods. I think someone mentioned something along those lines recently and I was curious to know more, including knowing if that was just a clever hack or a core purpose of filters.
11:38 berick jeff: in short, the 'filter' component of a filter is a cstore query, run from the context of the target (hook core_type) search call.  (though maybe that much was obvious)
11:39 berick i think that was me :)
11:40 csharp the other thing I want is a "nofitication method filter" that checks that the user in question actually has a valid email/sms entered before processing
11:41 csharp during the gathering phase so circs for users without those entered aren't even considered
11:41 jeff heh. state general mailing list for libraries often has "we're getting rid of STUFF, does anyone want it?" -- often for things that are still recent, but a library is weeding for their own local reasons, etc.
11:41 mmorgan csharp++
11:41 jeff today's "anyone want these?" is regarding a large quantity of periodical backissues, and includes a spreadsheet with a column labeled "Approximate Linear Feet" :-)
11:42 berick csharp: i think that would be possible using a similar trick to what jeff is referring to..
11:42 * berick finds the email
11:42 miker filters are there to avoid having huge piles of state=invalid events generated by the validator. though, since validators are kinda underutilized (originally meant for folks to create their own -- they'll load from outside the EG modules following a simple set of rules), filters have become more important
11:44 mmorgan jeff: berick: http://markmail.org/message/gqoltyr64hms3wmy
11:44 Dyrcona I don't see any reason you couldn't filter with patron groups.
11:44 berick csharp: http://libmail.georgialibraries.org/piperma​il/open-ils-general/2017-April/013808.html -- replace the "profile" check with regex..
11:44 berick er, email regex
11:44 berick or simple <> null check
11:44 berick oh heh thanks mmorgan
11:45 * mmorgan also had plans for delving into filters more. :)
11:45 jeff that's what i was thinking of!
11:45 jeff berick++ mmorgan++ miker++
11:48 csharp berick++ # that looks promising
11:49 * Dyrcona fell behind in the conversation reviewing the filters used here. :)
11:49 berick I think A/T deaths would be much less painful if it didn't have to collect everything up front, i.e. process groups start to finish before moving on to the next group.  I wonder how hard it would be to teach the event group code to collect the groups in the initial query instead of loading everything to manually group.
11:49 * csharp really needs to get more confortable with json queries and their perl dialects
11:50 csharp berick: I would totally love that
11:50 csharp we're dealing with 75K notices daily sometimes and that's a lot to check
11:51 csharp the suggested A/T filter may mitigate some of that though
11:51 berick yeah, and one hiccup means starting over from nothing
11:51 csharp right
11:51 * csharp prays that the re-do doesn't spill over into July 4th
11:51 csharp I didn't get a Memorial Day holiday either for similar reasons
11:52 Dyrcona Holiday? What's that? :)
11:52 Dyrcona Oh, yeah, upgrade/maintenance days. :/
11:53 miker well, you can't process a group untill you've validated all events in the group, and you don't know what's in the group to validate until you've collected all events
11:54 csharp the other factor that makes us (well, me) miserable is that to do email AND sms AND patron message center means three separate processes over the same data
11:54 berick right, but the collect stage could (theoretically) grab items in groups before validation
11:55 csharp and with preminder/courtesy notices that means everyone who doesn't return before the due date gets a message
11:55 miker berick: sure ... that would leave them in collected, rather than validated, in the case of a death, though, no?
11:56 miker csharp: I've longed for a chance to create "stacked" reactors. a way to specify more than one reactor to run over the data during the reacting phase. but, tuits
11:57 berick miker: does it matter?  any stuck state means "do over".
11:57 miker (and, transactionally, it's more complicated that it might seem. what do we do when one of three reactors fails for some reason on an event)
11:57 berick stacked_reactors++
11:59 miker berick: that's my point, really, I guess. if they're going to be left in a do-over state, does it matter which? IOW, what does making the state tree deep (collect-all, validate[0], react[0], validate[1], react[1])  instead of wide (collect-all, validate-all, react-all) buy us?
12:00 miker it would make FTTB (for lack of a better term) faster, but the total time would be the same, or a bit longer
12:01 _adb joined #evergreen
12:03 miker and the logic would be more complicated, but that's not a hard argument against it if lower TTFB (not FTTB, duh) is an improvement
12:04 berick miker: my point was only this, if we collected events in groups from the DB instead of collecting all events into the ML, then grouping in the ML, then A/T could better recover from a failure.  it would avoid cases where we leave thousands of events stuck in collected, etc.
12:04 berick death of one group would not kill the overall process
12:07 miker but group_field isn't a value ... there's nothing to group them until you can analyze the full target set. I'm not saying it's impossible, but I think it would add an up-front query that spits out, say, an array of targets for each event, which we then loop over row-wise, using the values in the array as group_field filter values. is that what you're thinking?
12:07 berick yes, exactly.  hadn't thought the implementation that far, but that's idea.
12:08 jeff it's a bad sign with the header of a CSV file isn't valid CSV.
12:09 berick hm, could you also just sort on the group field in the initial query, then collect row-wise until it finds a row from the next group, etc.
12:10 miker in open-ils.trigger.event.find_pending? probably, yeah
12:11 berick yeah
12:12 miker though you can't use parallel gather then
12:12 miker because there's no shared state between gather requests in parallel (MultiSession) mode
12:13 berick true
12:13 miker and parallel gather can help a lot
12:15 berick yeah, it can.  just pondering the trade-off there
12:18 berick e.g. if you replaced parallel=3 with running 3 separate granularity (email, sms, etc.) a/t processors at the same time, would the end result be about the same
12:19 csharp maybe also figure out a way to configure some hard limits ("don't process more than 30000 events at one time")
12:19 berick each would take longer, but the whole shebang would take about the same amount of time
12:21 miker adding a sibling to find_pending that returned a pregrouped result (my thought experiment above) would allow gathering targets in parallel grouped by event. probably with more new code.
12:21 miker so, we /could/ have both.
12:22 miker also, having a granularity per notification type doesn't allow stacked reactors, which will cut actual CPU time be a lot by removing all pre-react duplication
12:23 miker with stacked reactors, we allow more unrelated triggers to be processed at the same time, shortening the whole a/t daily run
12:24 csharp miker++ # missed your stacked reactors comment
12:27 berick miker: so collect the array of target values (as you noted above), chop those up and hand them off to be collected via parallel process?  If we do that, the parallel process could also just go ahead and react too, i would think
12:31 miker berick: sure, we could rework open-ils.trigger.event.run_all_pending and open-ils.trigger.event.find_pending_by_group to work a bit differently.  probably a whole new code path that smooshes the two together, interleaving the state loops
12:31 bos20k joined #evergreen
12:32 miker s/$/ would be best/
12:32 berick yeah
12:33 miker and a new find_pending that pregroups, obv
12:33 mmorgan berick: miker: So at what point does the validation happen?
12:34 miker mmorgan: after collect and before react
12:35 mmorgan ok, gotcha. Thanks.
12:36 miker the order is, aprox: 'pending','found','collecting','collected',​'validating',['invalid','valid'],'reacting'​,'reacted','cleaning',['complete','error'] ... with stops at invalid after validating, or error at any point
12:38 berick the order each event goes throuh would be the same, but each group of events (e.g 5 overdue circs for 1 patron) would go through the whole process ('pending' -> 'complete') before the next event group starts.
12:41 mmorgan So if it was an email trigger and the 1 patron had no email address the whole group would be invalid right then and move on to the next group.
12:42 miker or in parallel (to the degree max-parallel is allowed) ... however, there's a race condition here: by the time we start processing the last pre-grouped event set there may be more events that should be added to the group (or some that should have aged out of the group, perhaps). by doing all the collecting and validating up front, we shrink that window ... but by effectively serializing everything up to validation, especially over a large total event
12:42 miker set, we'll likely have more instances of "missed" or "invalid" events
12:42 miker now...
12:42 miker that may not be a  problem in practice
12:42 miker if the large runs are all daily, and off-hours
12:43 miker but, the race window /is/ wider
12:43 miker mmorgan: yes. though jeff and csharp were asking about a way to avoid those altogether via filters
12:43 miker in that specific case
12:44 berick miker: hm, mabye the pre-grouping lookup code can grab the group value and the target ID.
12:46 mmorgan berick++
12:46 miker berick: oh, i figured that'd be exactly what it does. something like: select $group_field as grouper, target, agg_arry(event) from event where ... group by 1,2;
12:47 miker but that doesn't close the race condition window. the first event group will be (basically) perfect, and the last will be as out of date as (number_of_groups/parallelism)​*avg_pending_to_complete_time
12:48 miker right now, the window is more like (number_of_events*avg_found_to_validate_time)
12:50 miker stacked reactors makes the hypothetical new way look better than it would without them, since the number of groups would shrink by a /lot/. by 66% in the case of email+sms+print stacked reactors
12:50 * miker disappears for lunch
12:51 berick ah, right, so that almost suggests ignore the targets during pre-lookup, then determine the targets as each group is collected.
12:52 berick that would slow it down.. but yeah not sure how much it matters in practice
13:38 miker note: stacked reactors can't just be "split reactor field on commas, run each" because some reactors are really only the start of a larger process, like print notices, and you need to know which reactor created which output. it's a whole infrastructure thing
13:58 pinesol_green Showing latest 5 of 8 commits to Evergreen...
13:58 pinesol_green [evergreen|Jason Etheridge] lp1661685 webstaff: add money.grocery to pcrud - <http://git.evergreen-ils.org/?p=​Evergreen.git;a=commit;h=3630820>
13:58 pinesol_green [evergreen|Jason Etheridge] lp1661685 fieldmapper label change for circ - <http://git.evergreen-ils.org/?p=​Evergreen.git;a=commit;h=5a42920>
13:58 pinesol_green [evergreen|Jason Etheridge] lp1661685 webstaff: Fix Owning Lib in Item Status - <http://git.evergreen-ils.org/?p=​Evergreen.git;a=commit;h=dada0a5>
13:58 pinesol_green [evergreen|Jason Etheridge] lp1661685 webstaff: Circ Lib column for Items Out - <http://git.evergreen-ils.org/?p=​Evergreen.git;a=commit;h=f6a1851>
13:58 pinesol_green [evergreen|Jason Etheridge] lp1661685 fix circ lib in patron holds list - <http://git.evergreen-ils.org/?p=​Evergreen.git;a=commit;h=972202a>
15:07 mmorgan1 joined #evergreen
15:53 Freddy_Enrique joined #evergreen
16:29 mmorgan joined #evergreen
16:31 pinesol_green News from qatests: Test Success <http://testing.evergreen-ils.org/~live>
16:37 jvwoolf left #evergreen
16:42 csharp @quote random
16:42 pinesol_green csharp: Quote #87: "<jeff> responsive XUL isn't really a thing." (added by bshum at 02:49 PM, July 30, 2014)
16:49 Freddy_Enrique excuse me guys, this is actually gonna be my first time using the mailing lists and dont know how to properly use it
16:50 csharp Freddy_Enrique: we're all ears ;-)
16:51 Freddy_Enrique is it necessary to subscribe to each one of them according to my needs or will it be enough with one subscription?
16:51 Freddy_Enrique I've just subscribed to Evergreen General Discussion List
16:53 csharp Freddy_Enrique: that's the "main" one, yes - the others are for specific topics (-dev is for general tech topics)
16:54 csharp big community announcements/discussions come through on General
16:55 Freddy_Enrique uhm, One of the many question I made was... When exactly and with what EG version will the staff client stop receiving support?
16:55 csharp Freddy_Enrique: I would probably join General and Dev at a minimum
16:56 csharp Freddy_Enrique: 3.0 is the target release for deprecating the staff client (meaning that it will be available but not receiving further support/development)
16:56 Freddy_Enrique was my question appropiate for that list?
16:56 csharp sure
16:57 Bmagic don't be shy
16:57 csharp since Evergreen is software, even the General list trends toward somewhat technical discussions sometimes
16:57 Bmagic csharp: Evergreen is a way of life
16:57 Bmagic sometimes softeware though
16:57 csharp ommmmmmmmmmmm
16:57 Bmagic sometimes software though
16:58 Freddy_Enrique oh, but when you say it will not longer receive support/development what comes to my mind is...crashes
16:58 Freddy_Enrique errors...etc etc
16:58 Freddy_Enrique So, after installing and manipulating the client for a while I think its time to go web now
16:59 Bmagic Freddy_Enrique: if you get a version working on a particular environment, it will probably work like that for a long time. It's when you need to upgrade the underlying stuff like the OS, when you run into issues mostly
17:00 * csharp is kind of amazed that the client works with Windows 10 given how old it is
17:00 Freddy_Enrique what the....really????
17:00 Bmagic That is MS doing the magic mostly
17:00 csharp I totally expected craziness but it's been rock solid
17:01 Freddy_Enrique then...as long as the staff client works, not really necessary to go web.
17:01 Freddy_Enrique to tell you the truth, I tried to install the web But I ended up messing things up
17:02 berick Freddy_Enrique: it will eventually be removed from EG
17:02 berick the XUL client
17:02 Freddy_Enrique better take my precautions
17:03 Freddy_Enrique first of all, the web installation is not oficial yet, so there are many sections scattered
17:03 Bmagic It's just a training issue more than anything
17:03 Freddy_Enrique it starts from the opensrf instalation
17:03 Freddy_Enrique but continues with the EG instalation
17:04 Freddy_Enrique and then we have the.... Windows Hatch Installer???
17:05 Freddy_Enrique I was told that I can deal with it after I installed the opensrf
17:05 mmorgan left #evergreen
17:11 Freddy_Enrique jajajajaja.... csharp. I've just picture Budda
17:11 Freddy_Enrique csharp++
18:48 jvwoolf joined #evergreen
18:48 jvwoolf left #evergreen

| Channels | #evergreen index | Today | | Search | Google Search | Plain-Text | summary | Join Webchat