Преглед изворни кода

为避免接口滥用引发内存溢出,通用查询接口未定义页数时,也限制返回条数(以页数上限配置为准)

yucheng пре 3 година
родитељ
комит
bedbd62409

+ 1 - 1
dmp-business/dmp-rwd-version/src/main/java/com/persagy/dmp/rwd/demand/controller/DictionaryDemandController.java

@@ -170,7 +170,7 @@ public class DictionaryDemandController {
         QueryWrapper<DictionaryDemand> wrapper = new QueryWrapper<>();
         wrapper.eq("valid", ValidEnum.TRUE.getType());
         // 查询待回复和论证中
-        wrapper.in("bill_state", states);
+        wrapper.in("bill_state", (Object) states);
         ensureQueryCond(wrapper, cond);
         Page page = service.page(pageable, wrapper);
         return ResultHelper.multi(page.getRecords(), page.getTotal());

+ 2 - 4
dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/define/controller/ObjectInfoController.java

@@ -20,13 +20,11 @@ import com.persagy.dmp.common.utils.ResultHelper;
 import com.persagy.dmp.define.entity.ObjectInfoDefine;
 import com.persagy.dmp.define.entity.ObjectTypeDefine;
 import com.persagy.dmp.digital.entity.ObjectDigital;
-import com.persagy.dmp.digital.entity.ObjectRelation;
 import com.persagy.dmp.mybatis.utils.ConditionUtil;
 import com.persagy.dmp.rwd.define.service.IObjectInfoService;
 import com.persagy.dmp.rwd.define.service.IObjectTypeService;
 import lombok.RequiredArgsConstructor;
 import org.apache.commons.lang.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -74,8 +72,8 @@ public class ObjectInfoController {
             Integer total = service.queryCount(wrapper);
             page.setTotal(total);
         } else {
-            // 20210819 临时处理,优化执行计划,解决Mysql:Out of sort memory问题
-            wrapper.select("/*+ SET_VAR(sort_buffer_size = 2M) */*");
+            /// 20210819 临时处理,优化执行计划,解决Mysql:Out of sort memory问题
+            // wrapper.select("/*+ SET_VAR(sort_buffer_size = 2M) */*");
             page = service.queryByCondition(QueryCriteriaHelper.toPage(criteria), wrapper);
         }
         return ResultHelper.multi(page.getRecords(), page.getTotal());

+ 3 - 2
dmp-comp/dmp-digital-starter/src/main/java/com/persagy/dmp/basic/utils/QueryCriteriaHelper.java

@@ -37,12 +37,13 @@ public class QueryCriteriaHelper {
         }
         // 没有每页行数表示不分页
         if(criteria.getSize() == null || criteria.getSize() < 1) {
-            criteria.setSize(-1L);
+            // 20210923 为避免接口滥用引发内存溢出,限制返回条数
+            criteria.setSize(Long.MAX_VALUE);
         }
         Page<T> pageInfo = new Page<>();
         pageInfo.setCurrent(criteria.getPage());
         pageInfo.setSize(criteria.getSize());
-        // 20210819 size<-1时,拦截器不执行page的配置,因此改为在wrapper中排序
+        /// 20210819 size<-1时,拦截器不执行page的配置,因此改为在wrapper中排序
 //        pageInfo.setOrders(criteria.getOrders());
         pageInfo.setSearchCount(!criteria.isWithoutCount());
         return pageInfo;