fix conflict on key
This commit is contained in:
parent
7e02ccb622
commit
48873104b8
2 changed files with 30 additions and 24 deletions
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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>
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue