Groovy和Java MongoDB驱动程序批量插入引发异常

量身定制

以下groovy脚本使用Java MongoDB驱动程序,并尝试使用GPar在单独的线程中运行批量插入。第一个脚本mongobulk1.groovy可以正常运行,但可以在不使用“ BulkWriteOperation”的情况下运行。

为了获得更好的性能,第二个脚本mongobulk2.groovy使用了'BulkWritOperation'功能,但是它引发以下异常:

Caught: java.lang.IllegalStateException: java.lang.IllegalStateException: no operations
java.lang.IllegalStateException: java.lang.IllegalStateException: no operations
    at jsr166y.ForkJoinTask.getThrowableException(ForkJoinTask.java:504)
    at jsr166y.ForkJoinTask.reportResult(ForkJoinTask.java:567)
    at jsr166y.ForkJoinTask.join(ForkJoinTask.java:611)
    at jsr166y.ForkJoinPool.invoke(ForkJoinPool.java:1492)
    at groovyx.gpars.extra166y.ParallelArrayWithMapping.apply(ParallelArrayWithMapping.java:48)
    at groovyx.gpars.extra166y.ParallelArray.apply(ParallelArray.java:329)
    at groovyx.gpars.pa.GParsPoolUtilHelper.eachParallelPA(GParsPoolUtilHelper.groovy:192)
    at groovyx.gpars.GParsPoolUtil.eachParallel(GParsPoolUtil.java:358)
    at Importer$_main_closure1.doCall(mongobulk2.groovy:107)
    at groovyx.gpars.GParsPool$_withExistingPool_closure1.doCall(GParsPool.groovy:174)
    at groovyx.gpars.GParsPool$_withExistingPool_closure1.doCall(GParsPool.groovy)
    at groovyx.gpars.GParsPool.withExistingPool(GParsPool.groovy:173)
    at groovyx.gpars.GParsPool$withExistingPool$2.callStatic(Unknown Source)
    at groovyx.gpars.GParsPool.withPool(GParsPool.groovy:145)
    at groovyx.gpars.GParsPool$withPool$1.callStatic(Unknown Source)
    at groovyx.gpars.GParsPool.withPool(GParsPool.groovy:121)
    at groovyx.gpars.GParsPool$withPool$0.callStatic(Unknown Source)
    at groovyx.gpars.GParsPool.withPool(GParsPool.groovy:100)
    at groovyx.gpars.GParsPool$withPool.call(Unknown Source)
    at Importer.main(mongobulk2.groovy:106)
Caused by: java.lang.IllegalStateException: no operations
    at org.bson.util.Assertions.isTrue(Assertions.java:36)
    at com.mongodb.DBCollectionImpl.executeBulkWriteOperation(DBCollectionImpl.java:132)
    at com.mongodb.DBCollection.executeBulkWriteOperation(DBCollection.java:1663)
    at com.mongodb.DBCollection.executeBulkWriteOperation(DBCollection.java:1659)
    at com.mongodb.BulkWriteOperation.execute(BulkWriteOperation.java:90)
    at Importer.run(mongobulk2.groovy:82)
    at Importer$run$2.call(Unknown Source)
    at Importer$_main_closure1_closure2.doCall(mongobulk2.groovy:112)
    at groovyx.gpars.pa.GParsPoolUtilHelper$_eachParallelPA_closure8.doCall(GParsPoolUtilHelper.groovy:192)
    at com.sun.proxy.$Proxy9.op(Unknown Source)
    at groovyx.gpars.extra166y.AbstractParallelAnyArray$OUPap.leafApply(AbstractParallelAnyArray.java:640)
    at groovyx.gpars.extra166y.PAS$FJOApply.atLeaf(PAS.java:147)
    at groovyx.gpars.extra166y.PAS$FJBase.compute(PAS.java:108)
    at jsr166y.RecursiveAction.exec(RecursiveAction.java:148)
    at jsr166y.ForkJoinTask.doExec(ForkJoinTask.java:305)
    at jsr166y.ForkJoinWorkerThread.execTask(ForkJoinWorkerThread.java:575)
    at jsr166y.ForkJoinPool.scan(ForkJoinPool.java:755)
    at jsr166y.ForkJoinPool.work(ForkJoinPool.java:617)
    at jsr166y.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:369)

任何的想法?

Xsenechal

实际上,您的算法是错误的,并且您builder.execute()在构建器没有要求进行创建(即“无操作”)时触发

您可以通过在之前添加sysout来检查此内容builder.execute()

println "nb request to execute: $builder.requests.size"
BulkWriteResult result = builder.execute()

这是关联的mongo客户端源代码:

Assertions.isTrue("no operations", !writeRequests.isEmpty());

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

未找到Mongodb Java驱动程序游标异常

来自分类Dev

如何避免异常过早达到使用MongoDB的Java驱动程序3.4+ 3.6+或流的结束?(插入期间)

来自分类Dev

MongoDB Java驱动程序:MongoCore驱动程序与MongoDB驱动程序与MongoDB异步驱动程序

来自分类Dev

Java MySQL JDBC 驱动程序异常

来自分类Dev

使用Aggregate()查询的Group和Project的MongoDb C#驱动程序给出异常

来自分类Dev

java mongodb驱动程序重复键上没有异常

来自分类Dev

Promise和Nodejs MongoDB驱动程序

来自分类Dev

MongoDB驱动程序和集群

来自分类Dev

MongoDB Ruby驱动程序和mongoS

来自分类Dev

检查更新/插入是否有错误| MongoDB Java驱动程序

来自分类Dev

使用Java Mongo DB驱动程序使用MongoDB插入时出现重复密钥错误

来自分类Dev

MongoDb无法在分片环境中使用Java驱动程序插入文档

来自分类Dev

如何在MongoDB Java驱动程序中将动态字段插入文档

来自分类Dev

MongoDB Java驱动程序记录查询

来自分类Dev

关于MongoDB Java驱动程序的困惑

来自分类Dev

MongoDB的$ setIntersection与Java驱动程序

来自分类Dev

MongoDB Java驱动程序-对象类型

来自分类Dev

MongoDB异步Java驱动程序find()

来自分类Dev

MongoDB:使用Java驱动程序拉

来自分类Dev

mongodb java 驱动程序 pullByFilter

来自分类Dev

尝试使用CodeIgniter和MongoDB驱动程序将集合插入到MongoDB中时发生PHP错误

来自分类Dev

获取HTMLUnit驱动程序异常(java.lang.ClassNotFoundException)-w Selenium和Java

来自分类Dev

Mongo在Java驱动程序中插入$ currentDate

来自分类Dev

使用Datastax Java驱动程序插入列系列吗?

来自分类Dev

使用对象和驱动程序类的Java自定义异常处理

来自分类Dev

Mongodb C#驱动程序和ISODate

来自分类Dev

MongoDB C#驱动程序和DateTime字段

来自分类Dev

MongoDB C#驱动程序和DateTime字段

来自分类Dev

用tornadoweb和电机驱动程序更新mongodb

Related 相关文章

  1. 1

    未找到Mongodb Java驱动程序游标异常

  2. 2

    如何避免异常过早达到使用MongoDB的Java驱动程序3.4+ 3.6+或流的结束?(插入期间)

  3. 3

    MongoDB Java驱动程序:MongoCore驱动程序与MongoDB驱动程序与MongoDB异步驱动程序

  4. 4

    Java MySQL JDBC 驱动程序异常

  5. 5

    使用Aggregate()查询的Group和Project的MongoDb C#驱动程序给出异常

  6. 6

    java mongodb驱动程序重复键上没有异常

  7. 7

    Promise和Nodejs MongoDB驱动程序

  8. 8

    MongoDB驱动程序和集群

  9. 9

    MongoDB Ruby驱动程序和mongoS

  10. 10

    检查更新/插入是否有错误| MongoDB Java驱动程序

  11. 11

    使用Java Mongo DB驱动程序使用MongoDB插入时出现重复密钥错误

  12. 12

    MongoDb无法在分片环境中使用Java驱动程序插入文档

  13. 13

    如何在MongoDB Java驱动程序中将动态字段插入文档

  14. 14

    MongoDB Java驱动程序记录查询

  15. 15

    关于MongoDB Java驱动程序的困惑

  16. 16

    MongoDB的$ setIntersection与Java驱动程序

  17. 17

    MongoDB Java驱动程序-对象类型

  18. 18

    MongoDB异步Java驱动程序find()

  19. 19

    MongoDB:使用Java驱动程序拉

  20. 20

    mongodb java 驱动程序 pullByFilter

  21. 21

    尝试使用CodeIgniter和MongoDB驱动程序将集合插入到MongoDB中时发生PHP错误

  22. 22

    获取HTMLUnit驱动程序异常(java.lang.ClassNotFoundException)-w Selenium和Java

  23. 23

    Mongo在Java驱动程序中插入$ currentDate

  24. 24

    使用Datastax Java驱动程序插入列系列吗?

  25. 25

    使用对象和驱动程序类的Java自定义异常处理

  26. 26

    Mongodb C#驱动程序和ISODate

  27. 27

    MongoDB C#驱动程序和DateTime字段

  28. 28

    MongoDB C#驱动程序和DateTime字段

  29. 29

    用tornadoweb和电机驱动程序更新mongodb

热门标签

归档