Weighing in late, as usual, but I'm not sure what Leif means by "ts/mgmt.h". Did you mean "ts/mgmtapi.h"? If so, that's a rather heavy weight solution for the desired action here. AFAICT using that requires setting up a full API client, not just making a single call to send a message. You'd also have the problem that it wouldn't work without `traffic_manager` which could be problematic for testing.
The main goal here is to address a chronic issue which is the ability for plugins to shutdown ATS in a standard way, certainly better than calling "abort()" or "TSAssert(false)". On Wed, Jun 19, 2019 at 3:04 PM Fei Deng <duke8...@gmail.com> wrote: > I think it is already logging it right now, leif had a new PR for it just > recently to remove the Emergency call. > > Regards, > Fei Deng > > > On Wed, Jun 19, 2019 at 11:18 AM Sudheer Vinukonda > <sudheervinuko...@yahoo.com.invalid> wrote: > > > >>> ....while on a config reload it should not call it and fall back to > > the previous configuration. > > Is there a way we can alert this (at a minimum, an Error log?)? > > Falling back to old config (definitely preferable), but, silently is a > bit > > misleading and confusing. > > > > - Sudheer > > > > On Wednesday, June 19, 2019, 9:13:44 AM PDT, Fei Deng < > > duke8...@gmail.com> wrote: > > > > Adding some notes here from the discussion we had just now: > > > > - *Fatal* and *Emergency* both need to be exposed to plugins, where > > *Emergency* keeps traffic server down and *Fatal* will try and restart > > (just like the core functions). > > - When reading configs for the first time and fails, traffic server > > should call *Emergency*, while on a config reload it should not call it > > and fall back to the previous configuration. > > > > If I forgot something we just talked about please add to this note @Alan > > @Bryan. > > > > Regards, > > Fei Deng > > > > > > On Tue, Jun 18, 2019 at 10:11 AM Fei Deng <duke8...@gmail.com> wrote: > > > > > So this is what it looks like now: > > > > > > tsapi void > > > TSEmergency(const char *fmt, ...) > > > { > > > va_list args; > > > > > > va_start(args, fmt); > > > EmergencyV(fmt, args); > > > va_end(args); > > > } > > > > > > Regards, > > > Fei Deng > > > > > > > > > On Tue, Jun 18, 2019 at 9:41 AM Fei Deng <duke8...@gmail.com> wrote: > > > > > >> Yes, this is suggested by Alan and Susan, since sometimes we need > > plugins > > >> to be able to abort and not try to restart (say if some important > files > > are > > >> missing). I'll change the name to TSEmergency(). > > >> > > >> And I'll look at TSDebug and TSError, and make it similar to those. > > >> > > >> Regards, > > >> Fei Deng > > >> > > >> > > >> On Mon, Jun 17, 2019 at 5:59 PM Bryan Call <bc...@apache.org> wrote: > > >> > > >>> Looking how Emergency() vs ink_emergency() works. The only > difference > > >>> is Emergency() calls Diags::cleanup_func() with is only defined in > > >>> traffic_manager. > > >>> > > >>> Here is the call stack for Emergency(): > > >>> Emergency > DiagsError > diags->error > error_va > ink_emergency_va > > > >>> ::exit(UNRECOVERABLE_EXIT) > > >>> > > >>> Vs > > >>> ink_emergency > ink_emergency_va > ::exit(UNRECOVERABLE_EXIT) > > >>> > > >>> -Bryan > > >>> > > >>> > > >>> > On Jun 17, 2019, at 3:27 PM, Bryan Call <bc...@apache.org> wrote: > > >>> > > > >>> > I would assume he is going to be calling ink_emergency(), so it > > >>> wouldn’t be a management API. > > >>> > > > >>> > Fei, can you add more details about what "This API is a wrapper for > > >>> the "Emergency” call” is really going to do? > > >>> > > > >>> > -Bryan > > >>> > > > >>> > > > >>> >> On Jun 17, 2019, at 3:22 PM, Leif Hedstrom <zw...@apache.org> > > wrote: > > >>> >> > > >>> >> > > >>> >> > > >>> >>> On Jun 17, 2019, at 4:16 PM, Bryan Call <bc...@apache.org> > wrote: > > >>> >>> > > >>> >>> I would recommend having it like TSDebug and TSError. > > >>> >>> > > >>> >>> tsapi void TSEmergency(const char *fmt, ...) TS_PRINTFLIKE(1, 2); > > >>> >>> > > >>> >>> TSDebug and TSError: > > >>> >>> tsapi void TSDebug(const char *tag, const char *format_str, ...) > > >>> TS_PRINTFLIKE(2, 3); > > >>> >>> tsapi void TSError(const char *fmt, ...) TS_PRINTFLIKE(1, 2); > > >>> >>> > > >>> >> > > >>> >> > > >>> >> What I don’t like with the original idea is that we’re putting > > >>> management APIs (which we have ts/mgmt.h for) into the plugin APIs. > > There > > >>> should be nothing stopping a plugin from using the management APIs I > > don’t > > >>> think? If there is, that’s yet another issue. > > >>> >> > > >>> >> I feel reasonably strongly about not merging ts/hmgmt.h > > functionality > > >>> into ts/ts.h. > > >>> >> > > >>> >> — Leif > > >>> >> > > >>> >>> > > >>> >>> -Bryan > > >>> >>> > > >>> >>> > > >>> >>>> On Jun 17, 2019, at 2:13 PM, Fei Deng <duke8...@apache.org> > > wrote: > > >>> >>>> > > >>> >>>> void TSEmergencyShutdown(const char *log_msg); > > >>> >>>> > > >>> >>>> This API is a wrapper for the "Emergency" call, which signals > > >>> >>>> traffic_manager to not restart traffic_server after the > shutdown, > > >>> i.e. this > > >>> >>>> call should be used when something has gone wrong and cannot be > > >>> recovered > > >>> >>>> by a restart. > > >>> >>> > > >>> >> > > >>> > > > >>> > > >>> >