Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

queryCellProcess should not return an error if it can't find the process for the passed apmID #12

Open
phil-kahrl opened this issue Sep 29, 2020 · 2 comments
Assignees
Labels
holarchy @encapsule/holarchy package issues.

Comments

@phil-kahrl
Copy link

Build info: "appgen": "@encapsule/holistic v0.0.46 crossroads KdclOLg3SyqYSF6u2YUbDg 8e52b7dc753f874256a631b2244721553e41a5dd 2020-09-29T18:58:04.000Z",

Using cell processor query such as:

          `holarchy: {
                CellProcessor: {
                    process: {
                        query: {
                            queryCellProcess: {
                                cellProcessNamespace: {
                                    apmID: "foo"
                               }
                          }
                   }
             }
      }`

I want to find if a process is running (the process may or may not be running).

If the process is not running, then the query should return some sort of empty result. Instead I get an error and a big orange box logged to the console with text like:

"ControllerAction request was successfully parsed and routed to plug-in filter delegate [r-JgxABoS_a-mSE2c1nvKA::Cell Process Manager: Process Query]. But, the plug-in rejected the request with error: Filter [r-JgxABoS_a-mSE2c1nvKA::Cell Process Manager: Process Query] failed while performing main operation. Filter [CxS4tmxfRdSF6C7pljlm5Q::cpmLib: Get Cell Process Descriptor] failed while performing main operation. Invalid cellProcessID specified. No active cell process with ID 'zkhowzwqMaTMU8prQEM_yA'. From the perspective of this error handler it's difficult to say precisely what this error means given the broad semantics of ControllerAction plug-in filters. Here is a list of possible problems in decreasing order of liklihood: Your request format may be invalid above the point in the request data where the message router made its delegate selection and this error is the plug-in rejecting the request entirely. Or, the selected ControllerAction plug-in filter may implement some sort of additional input value validation that constrains the permissible input beyond what's examined by the message router and ControllerAction plug-in filters. And, you've violated API constraints. Or, you have made a valid request but applied the action to the wrong type of cell (i.e. you think you're acting on a cell bound to APM X but it's really bound to a Y). Or, the cell you're attempting to act upon is not in the correct process step or otherwise prepared to accept or take action on behalf of the caller. Or, there's a bug in the ControllerAction plug-in filter itself. If you track down the source of this error and it's not on this list please report it!" ....

I would normally expect the semantics of a query to be such that not finding the thing that I query would return an empty result not an error.

@phil-kahrl phil-kahrl changed the title queryCellProcess should not log an error if it can't find the process for the passed apmID queryCellProcess should not return an error if it can't find the process for the passed apmID Sep 29, 2020
@ChrisRus ChrisRus self-assigned this Oct 5, 2020
@ChrisRus ChrisRus added the holarchy @encapsule/holarchy package issues. label Oct 5, 2020
@ChrisRus
Copy link
Member

ChrisRus commented Oct 5, 2020

I had not conceived a use case for query process as an existential mechanism; the only cell process that's ever known to be active is the Cell Process Manager, ~. And, insofar as you can query ~, you can find all active cell processes.

This may not be 100% practical. But, I need to understand why you are querying a non-existent cell process? What is that you're trying to accomplish?

@phil-kahrl
Copy link
Author

Here is a use case:

I want to construct a "grid" of cells. Each cell in the grid should have "neighbors" which are in namespaces within it's APM that are connected to cell processes via proxy. Each cell process uses the same APM but the "uniqueName" for the cell process is derived from its coordinates in the grid, "0-0", "0-1" etc. As each cell initializes and transitions from "uninitialized" to its starting state, it is responsible for connecting via proxy to it's neighbors. Since proxy connect requires a running cell process then each cell must start a cell process for a neighbor if the cell process is not running. The cell process for a neighbor may or may not exist since it could have already been started by another cell process's initialization routine. Running the cell process activate on a cell that is already running with the same unique name returns an error, querying the cell returns an error, and it is not possible to connect without the cell process already activated (running), so there is no way to handle this case without getting an error response from "act".

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
holarchy @encapsule/holarchy package issues.
Projects
None yet
Development

No branches or pull requests

2 participants