Release Date: Sunday, November 27, 2016

Release Highlights

  • Support for annotated app command discovery and invocation from robin.
  • Support for launching nvx-talon distributions.

 

Compatibility Notes

(warning) The following issues have compatibility implications:

Change Log

New Feature

ROBIN-87 - Add server admin command to get an apps list of commands along with usage.

A Talon XVM has the ability to discover annotated 'Command' methods provided by an application. This release provides the ability to for administrative tools such as Robin to discover these commands by requesting and retrieving a command list for an application via Talon's Command And Control Model

@Command(name = "resetOrderStats", 
           description="Resets the number of orders processed")
public String resetOrderStats(
                           @Option(shortForm = 'v', longForm ="verbose", defaultValue="false")
                           boolean verbose,
                           @Argument(name = "newOrderReceivedCount"), position=1)
                           long newNumOrdersReceived,
                           @Argument(name = "newOrderProcessingCount", position=2)
                           long newNumOrdersProcessed) { ... }

The above command could then be discovered and its usage printed via API:

Controller controller = new Controller();
Server server = Controller.getModel().getServer("MyVM");
App app = server.getApp("OrderProcessing");
for (ISrvMonCommandDescription command : app.getCommands()) {
    SrvMonUtil.printCommmandUsage(command, System.out);
    System.out.println();
}

or via the the robin command line tool:

listAppCommands -u MyVM OrderProcessing *

Compatibility Notes:

 

Note listing commands requires Robin to be talking to a Talon XVM of version 3.4 or newer

ROBIN-89 - Allow RobinTool to invoke commands on an App.

This feature allows listing and invoking annotated commands exposed via an application through annotations from the Robin command line tool rbntool.

Given a application method annotated as:

@Command(name = "echoString", 
                     aliases = { "repeatAString", "pingString" }, 
                     description = "Echos a string passed into the command")
public final String echoString(@Argument(name = "value",
                                                                   position = 1,
                                                                   required = true,
                                                                   defaultValue = "Hi There",
                                                                   description = "The String to echo") 
                                                                   final String echo) throws Exception 
{
        return echo;
}

rbntool can list list the command usage via the 'listAppCommands' command:

>listAppCommands -u myServer myApp *
echoString
Echos a string passed into the command
 Usage:

  echoString <value> 

       [value: The String to echo default='Hi There']
> invoke myServer myApp echoString "Hi!"
Success: Hi!

Improvement

ROBIN-85 - Enhance robin influxdb stats collector to include sentAcks stats from Talon

This release adds support for recording the following stats via the influx db stats appender:

  • numAcksSet
  • numMsgFiltered
  • msgFilterLatencies
  • numMsgsSourced

From server heartbeats

ROBIN-90 - Enable Robin to recognize Talon distributions

Prior to this release, Robin only provisioned nvx-core distributions. This release adds support for Robin to recognized and provision nvx-talon distributions

ROBIN-93 - Add support for launching robin shell scripts from arbitrary directories.

This release changes the rbnrool, rbn and rbmcommand scripts to allow launching them from a directory other than ROBIN_HOME.

Change

ROBIN-79 - Replace robin.conf by conf/application.conf

Robin uses the robin.conf file to source its configuration properties. However, this is only when Robin scripts are used. It is often confusing to users that the robin.conf is not a special file but rather just a a Talon application.conf file with a different name. Using application.conf under the $ROBIN_HOME/conf directory instead of robin.conf provides that clarity and allows users to work with Robin as a regular X application which allows for configuration to be provided in the conf/application.conf file. This release implements this change