尝试保存第二个任务时服务的“并发”错误
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了尝试保存第二个任务时服务的“并发”错误相关的知识,希望对你有一定的参考价值。
我正在尝试将两个任务保存到同一个用户故事中。第一个请求总是成功,但第二个服务请求总是在响应中返回此消息:
并发冲突:[对象在此上下文中被读取以进行更新后已被修改] - ConcurrencyConflictException:自更新读取后修改:对象类:com.f4tech.slm.domain.UserStory:ObjectID:
我正在使用javascript SDK来创建任务。我做了两次:
Rally.data.ModelFactory.getModel({
type : 'Task',
success : function(task) {
var record = Ext.create(task, {
Name : taskName,
State : 'Defined',
TaskIndex : 1,
WorkProduct : workProductId,
Owner : userIdsTeam[owner],
SyncDevelopmentTasktoAccuRev : accuSync,
Estimate: hours,
TargetDeployment: targetDeployment,
context: {
project:'/project/' + currentProjectId,
projectScopeDown: true
},
});
record.save({
callback : afterSaveNewTaskCallback
});
}
});
我有什么办法可以摆脱这个错误并成功保存两个任务吗?
答案
由于您的任务都附加到相同的底层用户故事,因此创建者都试图锁定它以设置关联,这就是第二个失败的原因。您需要将回调链接在一起:
Rally.data.ModelFactory.getModel({
type : 'Task',
success : function(taskModel) {
//Create first task
var task1 = Ext.create(taskModel, {
//...fields...
});
task1.save({
callback: function() {
//Create second task
var task2 = Ext.create(taskModel, {
//...fields...
});
task2.save({
callback: afterSaveNewTaskCallback
});
}
});
}
});
另一答案
除了Kyle的答案,您还可以使用Rally.data.BulkRecordUpdater
为您排队创建/更新。 http://developer.rallydev.com/apps/2.0p5/doc/#!/api/Rally.data.BulkRecordUpdater
以上是关于尝试保存第二个任务时服务的“并发”错误的主要内容,如果未能解决你的问题,请参考以下文章
即使在使用异步任务后,当我尝试传递第二个意图时,我的应用程序也会退出并显示错误消息
尝试运行第二个命令时,在 bash 脚本中运行 AWS 服务会产生错误,我做错了吗?
当我尝试运行代码时,我将第二个输出作为垃圾值。谁能说出该代码中的错误