Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Grails w/GORM MongoDB插件:org.Grails.datastore.mapping.core.OptimisticLockingException_Mongodb_Grails_Gorm_Gorm Mongodb - Fatal编程技术网

Grails w/GORM MongoDB插件:org.Grails.datastore.mapping.core.OptimisticLockingException

Grails w/GORM MongoDB插件:org.Grails.datastore.mapping.core.OptimisticLockingException,mongodb,grails,gorm,gorm-mongodb,Mongodb,Grails,Gorm,Gorm Mongodb,我有一个每隔几分钟运行一次的作业,一个新的域对象被实例化并用api调用的数据填充,然后调用.save()提交到数据库 此应用程序使用GORM Mongo插件 在将新war部署到测试箱后,每次作业开始并试图处理文件时,我都会收到org.grails.datastore.mapping.core.OptimisticLockingException,然后调用api,然后保存结果。日志(&error)指向.save()调用 日志显示“正在分析文件内容”后引发错误 下面的stacktrace可能是杀伤力

我有一个每隔几分钟运行一次的作业,一个新的域对象被实例化并用api调用的数据填充,然后调用.save()提交到数据库

此应用程序使用GORM Mongo插件

在将新war部署到测试箱后,每次作业开始并试图处理文件时,我都会收到
org.grails.datastore.mapping.core.OptimisticLockingException
,然后调用api,然后保存结果。日志(&error)指向.save()调用

日志显示“正在分析文件内容”后引发错误

下面的stacktrace可能是杀伤力过大

Heuristic completion: outcome state is rolled back; nested exception is org.springframework.transaction.TransactionSystemException: Could not commit Datastore transaction; nested exception is org.grails.datastore.mapping.core.OptimisticLockingException: The instance was updated by another user while you were editing
org.springframework.transaction.HeuristicCompletionException: Heuristic completion: outcome state is rolled back; nested exception is org.springframework.transaction.TransactionSystemException: Could not commit Datastore transaction; nested exception is org.grails.datastore.mapping.core.OptimisticLockingException: The instance was updated by another user while you were editing
   at org.grails.datastore.gorm.GormStaticApi.withNewSession(GormStaticApi.groovy:756)
   at grails.plugins.quartz.GrailsJobFactory$GrailsJob.execute(GrailsJobFactory.java:102)
   at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
   at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)
Caused by: org.springframework.transaction.TransactionSystemException: Could not commit Datastore transaction; nested exception is org.grails.datastore.mapping.core.OptimisticLockingException: The instance was updated by another user while you were editing
   at org.grails.datastore.mapping.transactions.DatastoreTransactionManager.doCommit(DatastoreTransactionManager.java:156)
   ... 8 more
Caused by: org.grails.datastore.mapping.core.OptimisticLockingException: The instance was updated by another user while you were editing
   at org.grails.datastore.mapping.mongo.engine.MongoEntityPersister$5.doInDB(MongoEntityPersister.java:664)
   at org.grails.datastore.mapping.mongo.engine.MongoEntityPersister.updateEntry(MongoEntityPersister.java:625)
   at org.grails.datastore.mapping.mongo.engine.MongoEntityPersister.updateEntry(MongoEntityPersister.java:82)
   at org.grails.datastore.mapping.engine.NativeEntryEntityPersister$2.run(NativeEntryEntityPersister.java:862)
   at org.grails.datastore.mapping.core.impl.PendingOperationExecution.executePendingOperation(PendingOperationExecution.java:33)
   at org.grails.datastore.mapping.core.AbstractSession.flushPendingOperations(AbstractSession.java:364)
   at org.grails.datastore.mapping.core.AbstractSession.flushPendingUpdates(AbstractSession.java:343)
   at org.grails.datastore.mapping.core.AbstractSession.flush(AbstractSession.java:263)
   at org.grails.datastore.mapping.mongo.MongoSession.flush(MongoSession.java:126)
   at org.grails.datastore.mapping.transactions.DatastoreTransactionManager.doCommit(DatastoreTransactionManager.java:151)
   ... 8 more
org.springframework.transaction.HeuristicCompletionException: Heuristic completion: outcome state is mixed; nested exception is org.springframework.transaction.UnexpectedRollbackException: Transaction rolled back because it has been marked as rollback-only
   at org.grails.datastore.gorm.GormStaticApi.withNewSession(GormStaticApi.groovy:756)
   at grails.plugins.quartz.GrailsJobFactory$GrailsJob.execute(GrailsJobFactory.java:102)
   at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
   at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)
Caused by: org.springframework.transaction.UnexpectedRollbackException: Transaction rolled back because it has been marked as rollback-only
   ... 6 more
在尝试tomcat重启、检查mongo连接等之后,我通过删除域对象mongo集合(我最近对域对象做了一系列更改)解决了这种行为。是否可能是域对象更改和mongo/GORM数据模型冲突导致此错误?如果是这样,我如何避免将来需要删除集合


我认为不可能有其他东西正在访问同一个域集合,因此我不认为这是一个乐观锁定异常,但如果是,我可以在mongo端运行哪些命令来查看哪些连接正在访问该集合?

您好,您找到解决方案了吗?
Heuristic completion: outcome state is rolled back; nested exception is org.springframework.transaction.TransactionSystemException: Could not commit Datastore transaction; nested exception is org.grails.datastore.mapping.core.OptimisticLockingException: The instance was updated by another user while you were editing
org.springframework.transaction.HeuristicCompletionException: Heuristic completion: outcome state is rolled back; nested exception is org.springframework.transaction.TransactionSystemException: Could not commit Datastore transaction; nested exception is org.grails.datastore.mapping.core.OptimisticLockingException: The instance was updated by another user while you were editing
   at org.grails.datastore.gorm.GormStaticApi.withNewSession(GormStaticApi.groovy:756)
   at grails.plugins.quartz.GrailsJobFactory$GrailsJob.execute(GrailsJobFactory.java:102)
   at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
   at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)
Caused by: org.springframework.transaction.TransactionSystemException: Could not commit Datastore transaction; nested exception is org.grails.datastore.mapping.core.OptimisticLockingException: The instance was updated by another user while you were editing
   at org.grails.datastore.mapping.transactions.DatastoreTransactionManager.doCommit(DatastoreTransactionManager.java:156)
   ... 8 more
Caused by: org.grails.datastore.mapping.core.OptimisticLockingException: The instance was updated by another user while you were editing
   at org.grails.datastore.mapping.mongo.engine.MongoEntityPersister$5.doInDB(MongoEntityPersister.java:664)
   at org.grails.datastore.mapping.mongo.engine.MongoEntityPersister.updateEntry(MongoEntityPersister.java:625)
   at org.grails.datastore.mapping.mongo.engine.MongoEntityPersister.updateEntry(MongoEntityPersister.java:82)
   at org.grails.datastore.mapping.engine.NativeEntryEntityPersister$2.run(NativeEntryEntityPersister.java:862)
   at org.grails.datastore.mapping.core.impl.PendingOperationExecution.executePendingOperation(PendingOperationExecution.java:33)
   at org.grails.datastore.mapping.core.AbstractSession.flushPendingOperations(AbstractSession.java:364)
   at org.grails.datastore.mapping.core.AbstractSession.flushPendingUpdates(AbstractSession.java:343)
   at org.grails.datastore.mapping.core.AbstractSession.flush(AbstractSession.java:263)
   at org.grails.datastore.mapping.mongo.MongoSession.flush(MongoSession.java:126)
   at org.grails.datastore.mapping.transactions.DatastoreTransactionManager.doCommit(DatastoreTransactionManager.java:151)
   ... 8 more
org.springframework.transaction.HeuristicCompletionException: Heuristic completion: outcome state is mixed; nested exception is org.springframework.transaction.UnexpectedRollbackException: Transaction rolled back because it has been marked as rollback-only
   at org.grails.datastore.gorm.GormStaticApi.withNewSession(GormStaticApi.groovy:756)
   at grails.plugins.quartz.GrailsJobFactory$GrailsJob.execute(GrailsJobFactory.java:102)
   at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
   at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)
Caused by: org.springframework.transaction.UnexpectedRollbackException: Transaction rolled back because it has been marked as rollback-only
   ... 6 more