4.1.1.1 Probe Provider Factory

  • <code>ProbeProviderFactory</code> defined as interface, but it is a real class. <code>createInstance</code> should be <code>createProvider</code>.
  • When you say The method returns a class that implements this interface, explain how.

4.1.1.2 Probe Providers

  • Should the <code>TxManager</code> interface not be annotated with <code>@ProbeProvider</code>?
  • When you say that the return value from this method will be a class that implements the TxManager interface, you might want to explain how the impl is created, and what the impl looks like initially (i.e., zero-overhead methods).

4.1.1.5 Emitting probe events

  • Minor typo in code snippet: <code>txProvider</code> should be <code>txMgr</code>, or the other way round

4.1.1.6 ProviderRegistry

  • Can you explain the meaning of the pattern components in <code>:::</code>. I think it's as follows: <code>moduleId:providerName:appName:probeName</code>. What are the naming conventions for <code>moduleId</code> and <code>appName</code>?

4.1.1.12 Registering clients

  • Definition of <code>ProbeProviderInfo</code> from 4.1.1.7 repeated and probably out-of-scope here
  • The terms <code>Client</code> and <code>Listener</code> seem to be used interchangeably. Should we use <code>Listener</code> consistently in the API, i.e., change <code>Client</code> to </code>Listener</code> in <code>ProbeClientMediator</code> and <code>registerClient</code>?
  • Should <code>ProbeClientMediator</code> also define a method for unregistering a listener/client?

4.1.1.13 Note about gfProbe clients

  • A client that does not have any of its methods annotated with <code>ProbeListener</code> will never receive any probe events and will be ignored by the framework, right?

4.1.1.14 ProbeContainer

  • So the plan is to be able to deploy probe listeners:
    • Packaged in standalone JAR files
    • Packaged in WAR- and EAR-bundled JAR files
    • As part of a WAR file's WEB-INF/classes (would they not inherit the permissions granted to the WAR file's other classes, which would make it difficult for the security system to enforce the restriction that probe listeners must not be able to open server sockets or create threads?)
  • Will the probe listeners be automatically unregistered from the ProbeClientMediator during undeployment?

4.1.2.3.1 Probe Listener

  • listeners for a provider will be registered or unregistered based on the lifecycle event from the provider (when provider is coming up or going down):
    Do providers implement some kind of state machine? When a provider is created using <code>ProbeProviderFactory.createProvider</code>, will it automatically be put in <code>STARTED</code>?

4.1.2.3.3 OVH

  • It consists of interfaces for the Telemetry objects to register/unregister themselves as the tree nodes.:
    Not sure I completely understand, but does this mean that in addition to registering itself by calling <code>ProbeClientMediator.registerClient</code>, a client must also register with the OVH? How does it do that, and under what name? Is this interface the same as the <code>TreeNodeFactory</code> in 4.1.2.6?
  • What does the term <code>client</code> mean here? In earlier sections, client meant <code>ProbeListener</code>, but in the context of the OVH, it also refers to REST and CLI (once part of the tree, they are exposed to any client).

4.1.2.4 Custom ProbeListeners or Scripts

  • What is the difference between <code>ProbeClient</code> and <code>ProbeListener</code>? How can a <code>ProbeClient</code> be turned into a script?

4.1.2.6 Framework Utilities

  • Code snippet: What happens to <code>TreeNode child</code>? Is it ever used?

4.5.1.2 gfProbes Infrastructure Exported Interfaces

  • <code>ProbeProviderFactory</code>: Is it <code>createProvider</code> or <code>createInstance</code>? Is <code>ProbeProviderFactory</code> really an interface? How do you acquire an instance of it?
  • <code>ProbeProvider</code>, <code>ProbeProviderInfo</code>, <code>ProbeProviderRegistry</code> missing?

4.5.1.3 Utility Framework Classes

  • Why does <code>FlashlightMonitoringRegistry</code> have <code>Flashlight</code> in its name, when none of the other classes (e.g., <code>TreeNodeFactory</code>) do?