Skip to content

Commit

Permalink
feat: Fixed an issue where the curing use case was created at an inco…
Browse files Browse the repository at this point in the history
…rrect time (#286)
  • Loading branch information
pangdayuan1 authored Dec 23, 2024
1 parent cd10915 commit c5eaeed
Show file tree
Hide file tree
Showing 6 changed files with 28 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -293,10 +293,9 @@ public boolean saveList(List<AREXMocker> valueList) {
}
String collection = getCollectionName(category);

long currentTime = System.currentTimeMillis();
long expirationTime = System.currentTimeMillis() + expiration;
valueList.forEach(item -> {
item.setCreationTime(currentTime);
item.setExpirationTime(currentTime + expiration);
item.setExpirationTime(expirationTime);

if (category.isEntryPoint()) {
item.setId(item.getRecordId());
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.arextest.storage.repository.scenepool;

import com.arextest.model.scenepool.Scene;
import java.util.Date;
import java.util.List;

public interface ScenePoolProvider {
Expand All @@ -12,7 +13,7 @@ public interface ScenePoolProvider {

void upsertOne(Scene scene);

long clearSceneByAppid(String appid);
long clearSceneByAppid(String appid, Date date, int limit);

Scene findByRecordId(String recordId);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,8 +69,8 @@ private Update getUpdate(Scene scene) {
}

@Override
public long clearSceneByAppid(String appid) {
Query filter = Query.query(Criteria.where(Fields.appId).is(appid));
public long clearSceneByAppid(String appid, Date date, int limit) {
Query filter = Query.query(Criteria.where(Fields.appId).is(appid).and(Fields.creationTime).lte(date)).limit(limit);
return getTemplate().remove(filter, Scene.class, getCollectionName()).getDeletedCount();
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package com.arextest.storage.service;

import static com.arextest.storage.repository.scenepool.ScenePoolFactory.REPLAY_SCENE_POOL;

import com.arextest.common.config.DefaultApplicationConfig;
import com.arextest.model.mock.AREXMocker;
import com.arextest.model.mock.MockCategoryType;
import com.arextest.model.mock.Mocker.Target;
Expand All @@ -10,6 +9,7 @@
import com.arextest.storage.repository.scenepool.ScenePoolFactory;
import com.arextest.storage.repository.scenepool.ScenePoolProvider;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import jakarta.annotation.Resource;
import org.apache.commons.lang3.StringUtils;
Expand All @@ -22,11 +22,25 @@
public class ScenePoolService {
@Resource
private ScenePoolFactory scenePoolFactory;
@Resource
private DefaultApplicationConfig defaultApplicationConfig;
private static final int DEFAULT_LIMIT = 200;
private static final String CLEAR_LIMIT_KEY = "clear.pool.limit";
private static final int MAX_PAGE_SIZE = 300;

public long clearReplayPoolByApp(String appId) {
ScenePoolProvider provider = scenePoolFactory.getProvider(REPLAY_SCENE_POOL);
return provider.clearSceneByAppid(appId);
public long clearPoolByApp(String appId, String providerName) {
ScenePoolProvider provider = scenePoolFactory.getProvider(providerName);

int limit = defaultApplicationConfig.getConfigAsInt(CLEAR_LIMIT_KEY, DEFAULT_LIMIT);
long totalDeletedCount = 0;
Date date = new Date();
long deletedCount;
do {
deletedCount = provider.clearSceneByAppid(appId, date, limit);
totalDeletedCount += deletedCount;
} while (deletedCount == limit);

return totalDeletedCount;
}

public AREXMocker findByRecordId(String recordId, MockCategoryType categoryType) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
import com.arextest.common.model.response.Response;
import com.arextest.common.utils.ResponseUtils;
import com.arextest.model.replay.QuerySceneRequestType;
import com.arextest.storage.repository.scenepool.ScenePoolFactory;
import com.arextest.storage.service.ScenePoolService;
import lombok.AllArgsConstructor;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
Expand All @@ -31,7 +31,7 @@ public class ScenePoolController {
@GetMapping(value = "/clearReplayPool/{appId}", produces = "application/json")
@ResponseBody
public Response clearReplayPool(@PathVariable("appId") String appId) {
scenePoolService.clearReplayPoolByApp(appId);
scenePoolService.clearPoolByApp(appId, ScenePoolFactory.REPLAY_SCENE_POOL);
return ResponseUtils.successResponse(true);
}

Expand Down
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -449,7 +449,7 @@
</profiles>

<properties>
<revision>2.0.5</revision>
<revision>2.0.6</revision>
<commons-lang3.version>3.3.2</commons-lang3.version>
<java.version>1.8</java.version>

Expand Down

0 comments on commit c5eaeed

Please sign in to comment.