gpt4 book ai didi

grails - 异步任务后合并期间出错

转载 作者:行者123 更新时间:2023-12-02 05:45:26 25 4
gpt4 key购买 nike

我有一个应用程序,它基本上调用多个 Web 服务,存储从这些 Web 服务接收到的数据并将其呈现给用户。我有一个调用所有 Web 服务的异步任务,它看起来像这样:

List<Promise> t = new ArrayList<Promise>()
def TIMEOUT_TIME = 6

t[0] = task {
def responseFrom0 = webserviceRequestService.getResponse(0)
if(responseFrom0){
return responseFrom0
}
}

t[1] = task {
def responseFrom1 = webserviceRequestService.getResponse(1)
if(responseFrom1){
return responseFrom1
}
}

操作 getResponse 看起来像这样:

    List<ResponseResult> result = new ArrayList<TravelQuote>()

try {
wsClient = prepareRequestMap()
wsResponse = externalWebservice.getQuotes(wsClient)
wsResponse.responseList.each {
ResponseResult responseResult = new ResponseResult()

//populate properties of ResponseResult
responseResult.save(failOnError:true, flush:true)
result.add(responseResult)

}

} catch(Exception e){
log.error e.message
e.printStackTrace()
}

return result

最后,我收集了来自所有网络服务的所有响应,如下所示:

    result.each {
if(it){
try{
it=it.merge()
}catch (Exception e){
log.error("Error occured while merging responses... : ${e.message}")
}

}
}

现在,这里的问题是我从最后一个代码块中得到这个异常

非空属性引用空值或 transient 值:ResponseResult.dateCreated;嵌套异常是 org.hibernate.PropertyValueException:not-null 属性引用 null 或 transient 值:ResponseResult.dateCreated

dateCreated 来自这个类,我已经在我的所有域类上实现了该类。

abstract class AbstractPersistentObject implements Serializable{
static final long serialVersionUID = 1L;
Date dateCreated
Date lastUpdated
}

这个问题的奇怪之处在于,这种情况只发生在生产环境中,无论我做什么,我都无法在任何其他环境中复制它。而且,一旦发生这种情况,服务器每次运行该代码时都会抛出该特定问题,直到服务器重新启动为止。重新启动后,此代码可以正常工作。

我的想法已经用完了,有人有什么想法吗?

最佳答案

答案似乎是抛出的异常:外部 Web 服务返回的记录没有 dateCreated 字段的值。

根据我的经验,来自生产环境的数据几乎总是包含丢失或格式不正确的值。您应该通过更改 ResponseResult.dateCreated 的定义以允许空值来解决这个问题,并在代码中处理这种情况。

关于grails - 异步任务后合并期间出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34389582/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com