update flags: days-to-update-flags

This commit is contained in:
ialbert 2026-01-23 10:48:47 +03:00
parent d133ac804d
commit 9d664898ff
4 changed files with 10 additions and 4 deletions

View file

@ -34,7 +34,7 @@ public class CreditTrackerSettings {
private String loadDir; private String loadDir;
private Long monitoringInterval; private Long monitoringInterval;
private String updateFlagsCronExpression; private String updateFlagsCronExpression;
private Long daysToUpdateFlags; private Integer daysToUpdateFlags;
private Long daysToUpdateFids; private Long daysToUpdateFids;
private String encoding; private String encoding;
private String dbVersion; private String dbVersion;

View file

@ -11,6 +11,7 @@ public interface PhonesMapMapper {
List<PhonesMap> searchedAtLessThan(@Param("daysCount") Integer daysCount, @Param("batchSize") int batchSize, @Param("lastId") Long lastId); List<PhonesMap> searchedAtLessThan(@Param("daysCount") Integer daysCount, @Param("batchSize") int batchSize, @Param("lastId") Long lastId);
PhonesMap findByPhone(@Param("phone") Long phone); PhonesMap findByPhone(@Param("phone") Long phone);
List<PhonesMap> findEligibleForFlagsUpdate(@Param("lastId") Long lastId, List<PhonesMap> findEligibleForFlagsUpdate(@Param("lastId") Long lastId,
@Param("interval") Integer interval,
@Param("batchSize") Integer batchSize); @Param("batchSize") Integer batchSize);
List<PhonesMap> findEligibleForFlagsInsert(@Param("lastId") Long lastId, List<PhonesMap> findEligibleForFlagsInsert(@Param("lastId") Long lastId,
@Param("batchSize") Integer batchSize); @Param("batchSize") Integer batchSize);

View file

@ -8,6 +8,7 @@ import org.slf4j.LoggerFactory;
import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled; import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import ru.nbch.credit_tracker.config.settings.CreditTrackerSettings;
import ru.nbch.credit_tracker.entities.app.PhonesMap; import ru.nbch.credit_tracker.entities.app.PhonesMap;
import ru.nbch.credit_tracker.mapper.signal.PhonesMapMapper; import ru.nbch.credit_tracker.mapper.signal.PhonesMapMapper;
import ru.nbch.credit_tracker.service.task.impl.FlagsEnricher; import ru.nbch.credit_tracker.service.task.impl.FlagsEnricher;
@ -24,12 +25,16 @@ public class UpdatingFlagsService {
private final static int BATCH_SIZE = 1000; private final static int BATCH_SIZE = 1000;
private final PhonesMapMapper phonesMapMapper; private final PhonesMapMapper phonesMapMapper;
private final FlagsEnricher flagsEnricherV2; private final FlagsEnricher flagsEnricherV2;
private final Integer updateDaysInterval;
private final AtomicBoolean insertIsRunning = new AtomicBoolean(false); private final AtomicBoolean insertIsRunning = new AtomicBoolean(false);
private final AtomicBoolean updateIsRunning = new AtomicBoolean(false); private final AtomicBoolean updateIsRunning = new AtomicBoolean(false);
public UpdatingFlagsService(PhonesMapMapper phonesMapMapper, FlagsEnricher flagsEnricherV2) { public UpdatingFlagsService(CreditTrackerSettings settings,
PhonesMapMapper phonesMapMapper,
FlagsEnricher flagsEnricherV2) {
this.phonesMapMapper = phonesMapMapper; this.phonesMapMapper = phonesMapMapper;
this.flagsEnricherV2 = flagsEnricherV2; this.flagsEnricherV2 = flagsEnricherV2;
this.updateDaysInterval = settings.getDaysToUpdateFlags();
} }
@Scheduled(cron = "${ct.update-flags-cron-expression}") @Scheduled(cron = "${ct.update-flags-cron-expression}")
@ -44,7 +49,7 @@ public class UpdatingFlagsService {
int batchNumber = 1; int batchNumber = 1;
List<PhonesMap> phonesMaps; List<PhonesMap> phonesMaps;
while (true) { while (true) {
phonesMaps = phonesMapMapper.findEligibleForFlagsUpdate(lastId, BATCH_SIZE); phonesMaps = phonesMapMapper.findEligibleForFlagsUpdate(lastId, updateDaysInterval, BATCH_SIZE);
log.trace("update batch {}, signals_phones_map records loaded: {}", batchNumber, phonesMaps.size()); log.trace("update batch {}, signals_phones_map records loaded: {}", batchNumber, phonesMaps.size());
if (phonesMaps.isEmpty()) { if (phonesMaps.isEmpty()) {
break; break;

View file

@ -17,7 +17,7 @@ public class KickPipeLineRepeatedRestoreImpl extends KickPipeLine {
PackageRecordsService packageRecordsService, PackageRecordsService packageRecordsService,
CreditTrackerSettings creditTrackerSettings) { CreditTrackerSettings creditTrackerSettings) {
super(setupParam, userPackageMapper, packageRecordsService, creditTrackerSettings); super(setupParam, userPackageMapper, packageRecordsService, creditTrackerSettings);
this.daysToUpdateFlags = creditTrackerSettings.getDaysToUpdateFlags().intValue(); this.daysToUpdateFlags = creditTrackerSettings.getDaysToUpdateFlags();
} }
@Override @Override