fix conflict on key

This commit is contained in:
etreschenkov 2026-02-06 14:49:44 +03:00
parent 7e02ccb622
commit 48873104b8
2 changed files with 30 additions and 24 deletions

View file

@ -4,6 +4,7 @@ import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Optional; import java.util.Optional;
import java.util.Set;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Stream; import java.util.stream.Stream;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -71,34 +72,39 @@ public class FidNameEnricher implements Handler<SubjectPayload, SubjectPayload>
AtomicInteger cacheHits = context.get(PackageVariable.cacheHits); AtomicInteger cacheHits = context.get(PackageVariable.cacheHits);
AtomicInteger cacheMisses = context.get(PackageVariable.cacheMisses); AtomicInteger cacheMisses = context.get(PackageVariable.cacheMisses);
List<PhonesMap> subjectForSave = subjects.stream().flatMap(subject -> { Set<Long> seen = java.util.concurrent.ConcurrentHashMap.newKeySet();
Long phone = subject.getPhone();
if (cachedRecords.containsKey(phone)) { List<PhonesMap> subjectForSave = subjects.stream()
cacheHits.incrementAndGet(); .flatMap(subject -> {
fillByCache(subject, cachedRecords.get(phone)); Long phone = subject.getPhone();
} else { if (cachedRecords.containsKey(phone)) {
cacheMisses.incrementAndGet(); cacheHits.incrementAndGet();
Name name = nameByPhone.get(CTUtil.normalizePhoneNumber(phone)); fillByCache(subject, cachedRecords.get(phone));
if (name == null) { } else {
if (noFidsData.isEmpty()) { cacheMisses.incrementAndGet();
log.warn("Unexpected scenario...all recs are hit to cache, but nameData was trying to found in indic"); Name name = nameByPhone.get(CTUtil.normalizePhoneNumber(phone));
if (name == null) {
if (noFidsData.isEmpty()) {
log.warn("Unexpected scenario...all recs are hit to cache, but nameData was trying to found in indic");
}
return Stream.of(PhonesMap.builder()
.phone(phone)
.build());
} }
fillByName(subject, name);
return Stream.of(PhonesMap.builder() return Stream.of(PhonesMap.builder()
.fid(subject.getFid())
.phone(phone) .phone(phone)
.name1(name.getLast())
.first(name.getFirst())
.middle(name.getMiddle())
.birthDt(name.getBirthDate())
.build()); .build());
} }
fillByName(subject, name); return Stream.empty();
return Stream.of(PhonesMap.builder() })
.fid(subject.getFid()) .filter(phonesMap -> seen.add(phonesMap.getPhone()))
.phone(phone) .toList();
.name1(name.getLast())
.first(name.getFirst())
.middle(name.getMiddle())
.birthDt(name.getBirthDate())
.build());
}
return Stream.empty();
}).toList();
packageRecordsService.saveToCache(subjectForSave); packageRecordsService.saveToCache(subjectForSave);
} }

View file

@ -63,7 +63,7 @@
</appender> </appender>
<!--SQL запросы и результаты их выполнения--> <!--SQL запросы и результаты их выполнения-->
<logger name="ru.nbch.credit_tracker.mapper" level="DEBUG" additivity="false"> <logger name="ru.nbch.credit_tracker.mapper" level="INFO" additivity="false">
<appender-ref ref="FILE"/> <appender-ref ref="FILE"/>
<appender-ref ref="FILE-JSON"/> <appender-ref ref="FILE-JSON"/>
</logger> </logger>