Actually maybe not because with PrintSinkFunction it ran for a bit and then it threw the error.
On Thu, 3 Feb 2022 at 14:24, John Smith <java.dev....@gmail.com> wrote: > 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; >>> } >>> } >>> >>>