[ https://issues.apache.org/jira/browse/IGNITE-12448?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17020946#comment-17020946 ]
Alexey Goncharuk commented on IGNITE-12448: ------------------------------------------- [~gvvinblade], I have one suggestion wrt to code organization based on general ideas from [~akalashnikov]: Right now it looks like that {{CalciteQueryProcessor}} is becoming both a wiring component which connects various pieces together, and also executes some important logic. This makes it impossible to test the logic without having an IgniteKernal instance. I would separate it the following way: * Move {{locals}} and {{remotes}} maps to either exchange service or messaging service. These maps are a part of communication subsystem, so the processor should not be aware of it and should not manage it * Separate all execution-related logic from CalciteQueryProcessor to a separate class which does not depend on {{KernalContext}} and accepts only interfaces. This way you can test this logic by mocking both all remote nodes or by simulating remote nodes without actual Ignite start * The {{CalciteQueryProcessor}} will just wire components that it pulls from contexts, setup listeners, etc. > Calcite integration. Communication protocol. > -------------------------------------------- > > Key: IGNITE-12448 > URL: https://issues.apache.org/jira/browse/IGNITE-12448 > Project: Ignite > Issue Type: Task > Components: sql > Reporter: Igor Seliverstov > Assignee: Igor Seliverstov > Priority: Major > Time Spent: 1h 20m > Remaining Estimate: 0h > > We need to introduce a communication protocol between query fragments in > scope of query execution. > * Protocol should have Push semantics with back pressure ability > * Protocol have to provide ordering guaranties - the data batches processed > in same order they sent to remote node. > * Protocol have to provide delivery guaranties. -- This message was sent by Atlassian Jira (v8.3.4#803005)