我想写一个解析器,而且我正在使用MongoDB作为数据库。本质上它正在经历,创建对象,然后保存它们。它每秒要做几次。经过周围164对象保存它崩溃,出现此错误:MongoDb大量节省“isOK()checkWriteError”异常
com.mongodb.MongoException: isOk() at com.mongodb.DBTCPConnector._checkWriteError(DBTCPConnector.java:130) at com.mongodb.DBTCPConnector.say(DBTCPConnector.java:142) at com.mongodb.DBApiLayer$MyCollection.insert(DBApiLayer.java:141) at com.mongodb.DBApiLayer$MyCollection.insert(DBApiLayer.java:97) at com.mongodb.DBCollection.insert(DBCollection.java:61) at com.mongodb.DBCollection.save(DBCollection.java:547) at com.google.code.morphia.DatastoreImpl.save(DatastoreImpl.java:638) at com.google.code.morphia.DatastoreImpl.save(DatastoreImpl.java:685) at com.google.code.morphia.DatastoreImpl.save(DatastoreImpl.java:679) at com.soleo.internal.releasenotes.orm.Storage.save(Storage.java:764) at 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.");
}