Skip to content

Release 3.0.50

Choose a tag to compare

@gonzaloebiz gonzaloebiz released this 11 Sep 16:11
a2ac09d

Implemented enhancements

  • Take an audience's counts off a response the caller already asked for (#88) — observeList() mirrors observeRoot(): passive, on the lists/{id} response the extension's statistics job already reads every twelve hours. Measured on a running install: the same eight calls with the change as without, and nineteen more bytes downloaded.

    getLists() gains include_total_contacts, appended last so every existing positional caller is unaffected. It is the billable figure, and the one the payload cannot yield by arithmetic — member_count + unsubscribe_count omits non-subscribed contacts, which on an ecommerce account is most of the audience. Absent is left null rather than derived.

    total_contacts includes cleaned, measured on an audience with 631 of them. A consumer deriving the non-subscribed residual must subtract cleaned explicitly, and even then the residual is an upper bound rather than an exact figure: pending and archived land in it, and archived are never billed.

    Only lists/{id} is observed, never a sub-resource — a member object carries its own stats, so a member fetch reached this and wrote nothing by luck rather than by design.

  • Notice a send that did not arrive, and say which windows were sampled (#87) — the reporting path discarded curl_exec()'s return and never read the status, so a refused connection, a timeout and a rejected envelope were all indistinguishable from delivery. A send that did not arrive now increments a counter carried on the next envelope as sfail.

    It is a running total for the emitting process and nothing resets it: take the maximum per process, never a sum. A send cannot report its own failure, so a process whose every send fails still reports nothing; what becomes visible is the partial case.

    The envelope also carries the sampler's two constants on the lane the sampler governs, as sr and sw, so a consumer predicting an installation's reporting cadence reads them instead of hardcoding them.

Note for extension authors

include_total_contacts does nothing until a caller asks for it. Until that lands, this reports the three counts that are not the billable figure and omits the one that is.