You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kie.apache.org by "pibizza (via GitHub)" <gi...@apache.org> on 2025/10/23 15:24:08 UTC
[PR] Separate rne per session [incubator-kie-drools]
pibizza opened a new pull request, #6499:
URL: https://github.com/apache/incubator-kie-drools/pull/6499
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
(AI generated summary, human revised. Hopefully not too boring)
Summary
This PR restructures the Phreak evaluation architecture by making RuleNetworkEvaluator (RNE) a per-session component and consolidating scattered evaluation logic into a single, cohesive location.
Motivation
Previously, the Phreak evaluation logic was fragmented across multiple static utility classes (SegmentPropagator, TupleEvaluationUtil) and the RNE was accessed as a singleton. This made the code harder to understand, test, and maintain. The architecture also created unnecessary coupling between components.
Key Changes
1. RuleNetworkEvaluator is now per-session (commit da0123bb4b)
- Converted RuleNetworkEvaluator from interface with static utilities to a proper per-session service
- Created RuleNetworkEvaluatorImpl to hold the concrete implementation
- Each ReteEvaluator now owns its own RuleNetworkEvaluator instance
- Phreak node handlers (PhreakJoinNode, PhreakAccumulateNode, etc.) are instantiated per-session and held by the RNE
2. Consolidated segment propagation logic (commit 213f89d4ec)
- Moved all code from SegmentPropagator into RuleNetworkEvaluatorImpl
- Peer processing methods (processPeers, processPeerInserts, processPeerUpdates, processPeerDeletes) are now internal to RNE
- Deleted SegmentPropagator.java entirely
3. Absorbed tuple evaluation utilities (commit e9eec815aa)
- Moved forceFlushLeftTuple and related methods from TupleEvaluationUtil into RNE
- Made outerEval private - it's now an internal implementation detail
- Deleted TupleEvaluationUtil.java
4. Extracted common Phreak operations (commit 35532a5903)
- Created PhreakNodeOperations to hold shared utility methods used across multiple Phreak node types
- Reduces code duplication and provides a clear home for cross-cutting node operations
5. Updated all Phreak nodes to use per-session RNE
- Modified all Phreak*Node classes to accept ReteEvaluator in their constructors
- Updated PhreakNetworkNodeFactory to create per-session instances
- Updated metric instrumentation classes accordingly
Benefits
- Better encapsulation: Internal evaluation mechanics (like outerEval) are now private
- Clearer architecture: All network evaluation logic lives in one place (RNE)
- Improved testability: Per-session instances are easier to test and mock
- Reduced coupling: Eliminated circular dependencies between RNE and utility classes
- Easier to extend: Future Phreak improvements have a clear home in the RNE
Files Changed
- Deleted: SegmentPropagator.java, TupleEvaluationUtil.java (logic moved to RNE)
- Added: RuleNetworkEvaluatorImpl.java, PhreakNodeOperations.java
- Refactored: RuleNetworkEvaluator.java (interface-only now)
- Updated: All Phreak*Node classes, PhreakNetworkNodeFactory, and session management classes
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org
Re: [PR] [incubator-kie-issues #203] Cleanup Phreak code - Make RuleNetworkEvaluator per-session [incubator-kie-drools]
Posted by "pibizza (via GitHub)" <gi...@apache.org>.
pibizza merged PR #6499:
URL: https://github.com/apache/incubator-kie-drools/pull/6499
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org
Re: [PR] [incubator-kie-issues #203] Cleanup Phreak code - Make RuleNetworkEvaluator per-session [incubator-kie-drools]
Posted by "pibizza (via GitHub)" <gi...@apache.org>.
pibizza commented on PR #6499:
URL: https://github.com/apache/incubator-kie-drools/pull/6499#issuecomment-3457178873
this seems pretty much good. Since I have two approvals I am going to rebase it and once I see the build completing, I will just merge it. @mdproctor @Rikkola if you want to provide comments feel free.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org