Ok it may be the ElasticSearch connector causing the issue? If I use PrintSinkFunction then I get no error and my stats print as expected.
On Wed, 2 Feb 2022 at 03:01, Francesco Guardiani <france...@ververica.com> wrote: > Hi, > your hash code and equals seems correct. Can you post a minimum stream > pipeline reproducer using this class? > > FG > > On Tue, Feb 1, 2022 at 8:39 PM John Smith <java.dev....@gmail.com> wrote: > >> Hi, getting java.lang.IllegalArgumentException: Key group 39 is not in >> KeyGroupRange{startKeyGroup=96, endKeyGroup=103}. Unless you're directly >> using low level state access APIs, this is most likely caused by >> non-deterministic shuffle key (hashCode and equals implementation). >> >> This is my class, is my hashCode deterministic? >> >> public final class MyEventCountKey { >> private final String countDateTime; >> private final String domain; >> private final String event; >> >> public MyEventCountKey(final String countDateTime, final String domain, >> final String event) { >> this.countDateTime = countDateTime; >> this.domain = domain; >> this.event = event; >> } >> >> public String getCountDateTime() { >> return countDateTime; >> } >> >> public String getDomain() { >> return domain; >> } >> >> public String getEven() { >> return event; >> } >> >> @Override >> public String toString() { >> return countDateTime + "|" + domain + "|" + event; >> } >> >> @Override >> public boolean equals(Object o) { >> if (this == o) return true; >> if (o == null || getClass() != o.getClass()) return false; >> MyEventCountKey that = (MyEventCountKey) o; >> return countDateTime.equals(that.countDateTime) && >> domain.equals(that.domain) && >> event.equals(that.event); >> } >> >> @Override >> public int hashCode() { >> final int prime = 31; >> int result = 1; >> result = prime * result + countDateTime.hashCode(); >> result = prime * result + domain.hashCode(); >> result = prime * result + event.hashCode(); >> return result; >> } >> } >> >>