Details
-
Improvement
-
Status: Open
-
Major
-
Resolution: Unresolved
-
None
-
None
-
None
Description
GFSH currently executes functions using the method, `execute(Function)` rather than a more acceptable `execute(ID)`.
In both cases the function is required to be on the server-side, BUT the main difference is that for the first case the function does not need to be registered. Which makes no sense, as the function as to be present on the server side.
This approach makes it difficult to move functions (package) or replace them with better versions at runtime, as the function versions have to match up for it to be able to deserialize correctly.
In the approach of `execute(ID)` the problem exists that the functions need to be registered which means that possibly they might become "public" when listing them with `list functions`.
But the benefits are larger, as they are registered by name and thus invocation from the client side is against the ID and not the Function itself. In addition, this approach allows for the updating of the function, without having to update the client, as the implementation does not have to live in GFSH.