Deprecating the JSON RPC Client #1296

Closed
IzabellaRaulin opened this Issue Oct 18, 2016 · 0 comments

Comments

Projects
None yet
2 participants
@IzabellaRaulin
Contributor

IzabellaRaulin commented Oct 18, 2016

TL;DR:

  • JSON RPC is deprecated immediately and will be removed as part of 0.18 release
  • Only JSON RPC plugins are affected, which is no plugin listed in the plugin_catalog.
  • JSON RPC plugins will no longer work and must be updated

Please note: Removing JSON RPC does NOT impact any plugins listed in the PLUGIN_CATALOG.md

Reasoning

Originally the JSON RPC API was intended as a way to support non-GO languages for Snap collector plugin. We've since decided to consolidate support on using gRPC as the way to standardize the interface between Snap and all plugins. As part of this directive, the JSON RPC API will be removed as part of 0.18 (November 7th) and should be considered deprecated.

Collector plugins utilizing JSON RPC client will no longer work on Snap releases after version 0.18.

Impact to plugins using JSON RPC

Collector plugins utilizing JSON RPC will no longer be able to load starting in snap version 0.18.
The following error will occur:

$snapctl plugin load snap-plugin-collector-<plugin_name>

Error loading plugin:
rpc error: code = 13 desc = transport: write tcp 127.0.0.1:47006->127.0.0.1:42421: 
write: connection reset by peer

How to update plugins relying on JSON RPC client

  • plugins which are written in Go could be converted straightforward by a one line change in plugin metadata RPCTYPE - see how it was done for snap-plugin-collector-mock1

  • plugins which are written in different language than Go needs to be modified to use the gRPC API (notice that plugins written in Go might be converted to use gRPC API too). This can be done in these three steps:

    Step 1: change import of the Snap plugin library
    Depending on which language your plugin is written, import an appropriate library:

    If you’re interested in a different client library language, open an Issue to let us know.

    Step 2: increment the version of your collector plugin
    That helps you to load a newer version of your plugin and utilize it in running task(s) without downtime.

    Step 3: convert plugin.Start to plugin.StartCollector and adjust inputs
    See snap-plugin-collector-mock2-grpc for an example on how to use the gRPC API.


**If you have any further question or you need help to update your collector plugin, do not hesitate to reach out to maintainers directly or via our [Slack channel](http://slack.snap-telemetry.io/).**
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment