Github user mmiklavc commented on a diff in the pull request:
https://github.com/apache/metron/pull/977#discussion_r179860237
--- Diff:
metron-analytics/metron-profiler-common/src/main/java/org/apache/metron/profiler/DefaultMessageDistributor.java
---
@@ -262,11 +262,19 @@ public ProfileBuilder getBuilder(MessageRoute route,
Context context) throws Exe
/**
* Builds the key that is used to lookup the {@link ProfileBuilder}
within the cache.
*
+ * <p>The cache key is built using the hash codes of the profile and
entity name. If the profile
+ * definition is ever changed, the same cache entry will not be reused.
This ensures that no
+ * state can be carried over from the old definition into the new, which
might result in an
+ * invalid profile measurement.
+ *
* @param profile The profile definition.
* @param entity The entity.
*/
- private String cacheKey(ProfileConfig profile, String entity) {
- return format("%s:%s", profile, entity);
+ private int cacheKey(ProfileConfig profile, String entity) {
+ return new HashCodeBuilder(17, 37)
--- End diff --
I'm not as familiar with this functionality - How do we cut over/end an
existing profile when a profile definition is changed? Is there any continuity
in the calculations or is it an immediate start over from scratch?
---