Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.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
Java “MongoDb质量节约”;isOK()checkWriteError“;例外情况_Java_Mongodb_Exception_Save - Fatal编程技术网

Java “MongoDb质量节约”;isOK()checkWriteError“;例外情况

Java “MongoDb质量节约”;isOK()checkWriteError“;例外情况,java,mongodb,exception,save,Java,Mongodb,Exception,Save,我正在尝试编写一个解析器,并使用MongoDB作为数据库。从本质上讲,它是通过创建对象,然后保存它们。它一秒钟要做几次。保存了大约164个对象后,它会因以下错误而崩溃: com.mongodb.MongoException:isOk()位于 com.mongodb.DBTCPConnector.\u checkWriteError(DBTCPConnector.java:130) 在com.mongodb.DBTCPConnector.say(DBTCPConnector.java:142)上

我正在尝试编写一个解析器,并使用MongoDB作为数据库。从本质上讲,它是通过创建对象,然后保存它们。它一秒钟要做几次。保存了大约164个对象后,它会因以下错误而崩溃:

com.mongodb.MongoException:isOk()位于 com.mongodb.DBTCPConnector.\u checkWriteError(DBTCPConnector.java:130) 在com.mongodb.DBTCPConnector.say(DBTCPConnector.java:142)上 com.mongodb.DBApiLayer$MyCollection.insert(DBApiLayer.java:141)位于 DBApiLayer$MyCollection.insert(DBApiLayer.java:97)位于 com.mongodb.DBCollection.insert(DBCollection.java:61)位于 com.mongodb.DBCollection.save(DBCollection.java:547)位于 com.google.code.morphia.DatastoreImpl.save(DatastoreImpl.java:638)位于 com.google.code.morphia.DatastoreImpl.save(DatastoreImpl.java:685)位于 com.google.code.morphia.DatastoreImpl.save(DatastoreImpl.java:679)位于 com.soleo.internal.releasenotes.orm.Storage.save(Storage.java:764)位于 com.soleo.internal.releasenotes.page.MainPage$2.onSubmit(MainPage.java:256)

现在,在同一个数据库中有1000多个对象,我只是没有一次将它们全部插入。所以这不可能是硬盘空间问题。我在网上找不到关于这个错误的任何文档。奇怪的是,只有当我试图保存这个对象时。如果我尝试在崩溃后保存对象B,它保存得很好。它只是在我最初保存的对象A上崩溃

我多次运行测试,但都在同一个地方失败了。我使用随机值来证明这不是一个可变问题:

FIRST TRY:
==============================
CREATING RELEASE #162
Component: iHateYou
Location: 250344
Version: 8.8.1.5-2
Date: Sun Feb 07 00:00:00 EST 3188 (02-07-3188)
SAVING.............
SUCCESS.
==============================
CREATING RELEASE #163
Component: iHateYou
Location: 227407
Version: 5.5.7.6-7
Date: Sat Mar 04 00:00:00 EST 439 (03-04-439)
SAVING.............
SUCCESS.
==============================
CREATING RELEASE #164
Component: iHateYou
Location: 38694
Version: 3.5.4.7-7
Date: Mon Jan 03 00:00:00 EST 158 (01-03-158)
SAVING.............
Oct 28, 2011 11:17:11 AM org.apache.wicket.RequestCycle logRuntimeException
SEVERE: isOk()
com.mongodb.MongoException: isOk()
        at com.mongodb.DBTCPConnector._checkWriteError(DBTCPConnector.java:130)
        at com.mongodb.DBTCPConnector.say(DBTCPConnector.java:142)


SECOND TRY:
==============================
CREATING RELEASE #162
Component: iHateYou
Location: 64717
Version: 0.1.0.4-8
Date: Sun May 07 00:00:00 EST 971 (05-07-971)
SAVING.............
SUCCESS.
==============================
CREATING RELEASE #163
Component: iHateYou
Location: 19360
Version: 4.5.8.1-3
Date: Wed Aug 04 00:00:00 EST 1339 (08-04-1339)
SAVING.............
SUCCESS.
==============================
CREATING RELEASE #164
Component: iHateYou
Location: 115518
Version: 0.0.8.0-2
Date: Sat Apr 07 00:00:00 EST 143 (04-07-143)
SAVING.............
Oct 28, 2011 11:15:28 AM org.apache.wicket.RequestCycle logRuntimeException
SEVERE: isOk()
com.mongodb.MongoException: isOk()
        at com.mongodb.DBTCPConnector._checkWriteError(DBTCPConnector.java:130)
        at com.mongodb.DBTCPConnector.say(DBTCPConnector.java:142)
下面是一些部分模糊的代码:

Random blank = new Random();
ObjectRef blah = new ObjectRef("iHateYou");
storage.save(blah);

for(int i = 0; i < 300; i++)
{
    System.out.println("==============================\nCREATING OBJECT #" + i);
    ObjectA saveMe = new ObjectA();
    saveMe.setRef(storage.getRefByName("iHateYou"));
    System.out.println("Component: " + saveMe.getRef.getName());
    saveMe.setLocation(blank.nextInt(300000) + "");
    System.out.println("Location: " + saveMe.getLocation());
    saveMe.setVersion(new Version(blank.nextInt(9) + "." + blank.nextInt(9) + "." + blank.nextInt(9) + "." + blank.nextInt(9) + "-" + blank.nextInt(9)));
    System.out.println("Version: " + saveMe.getVersion());

    try 
    {
        String randomDate = "0" + blank.nextInt(9) + "-0" + blank.nextInt(9) + "-" + blank.nextInt(4000);
        saveMe.setReleaseDate(new SimpleDateFormat("MM-dd-yyyy").parse(randomDate));
        System.out.println("Date: " + saveMe.getReleaseDate() + " (" + randomDate + ") ");
    } 
    catch (ParseException e) 
    {
        e.printStackTrace();
    } 
    System.out.println("SAVING.............");
    storage.save(saveMe);
    System.out.println("SUCCESS.");
}
Random blank=new Random();
ObjectRef blah=新的ObjectRef(“iHateYou”);
储存。保存(废话);
对于(int i=0;i<300;i++)
{
System.out.println(“===========================================\n正在创建对象#”+i);
ObjectA saveMe=new ObjectA();
saveMe.setRef(storage.getRefByName(“iHateYou”);
System.out.println(“组件:+saveMe.getRef.getName());
saveMe.setLocation(blank.nextInt(300000)+“”;
System.out.println(“位置:+saveMe.getLocation());
saveMe.setVersion(新版本(blank.nextInt(9)+“+blank.nextInt(9)+”+blank.nextInt(9)+“+blank.nextInt(9)+”-“+blank.nextInt(9));
System.out.println(“版本:+saveMe.getVersion());
尝试
{
字符串randomDate=“0”+blank.nextInt(9)+“-0”+blank.nextInt(9)+“-”+blank.nextInt(4000);
saveMe.setReleaseDate(新的SimpleDateFormat(“MM dd yyyy”).parse(randomDate));
System.out.println(“日期:+saveMe.getReleaseDate()+”(“+randomDate+”));
} 
捕获(解析异常)
{
e、 printStackTrace();
} 
System.out.println(“保存…”);
存储。保存(saveMe);
System.out.println(“成功”);
}

听起来可能是这个bug的变种:

你在用切分吗?在这种情况下,您的配置数据库可能已损坏。驱动程序可能不希望收到回消息“isOk”

请告诉我们有关您的环境的更多信息:MongoDB版本、是否使用分片、驱动程序版本等