[JAVA-211] need to be able to determine if there is an error or exception Created: 04/Nov/10  Updated: 04/Dec/13  Resolved: 07/Mar/12

Status: Closed
Project: Java Driver
Component/s: Cluster Management, Connection Management
Affects Version/s: 2.3
Fix Version/s: None

Type: Improvement Priority: Major - P3
Reporter: Joseph Wang Assignee: Eliot Horowitz (Inactive)
Resolution: Incomplete Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   

Have the following codes:

try {
db = mongo.getDb("lp");
coll = db.getCollection("lp.mrtest");

if (enable_limit)

{ cur = coll.find(query).limit(20).addOption( Bytes.QUERYOPTION_SLAVEOK); } else { cur = coll.find(query).addOption(Bytes.QUERYOPTION_SLAVEOK); }
size = enable_limit ? cur.itcount() : cur.size();
} catch (Exception ex) {
System.out.println("count: get exception " + ex);
ex.printStackTrace();

db = mongo.getDb("lp");
coll = db.getCollection("lp.mrtest");
if (enable_limit) { cur = coll.find(query).limit(20).addOption( Bytes.QUERYOPTION_SLAVEOK); }

else

{ cur = coll.find(query).addOption(Bytes.QUERYOPTION_SLAVEOK); }
size = enable_limit ? cur.itcount() : cur.size();
System.out.println("count: get " + size);
} catch (Throwable t) {
System.out.println("count: get thowable " + t);
t.printStackTrace();

db = mongo.getDb("lp");
coll = db.getCollection("lp.mrtest");
if (enable_limit) { cur = coll.find(query).limit(20).addOption( Bytes.QUERYOPTION_SLAVEOK); } else { cur = coll.find(query).addOption(Bytes.QUERYOPTION_SLAVEOK); }

size = enable_limit ? cur.itcount() : cur.size();
System.out.println("count: get " + size);
}

Testing failover by issuing kill -9 on the primary node. Cannot seem to be able to catch exception s.t. I
can retry the query.

java.io.IOException: couldn't connect to [ip-10-166-59-166/10.166.59.166:20000] bc:java.net.ConnectException: Connection refused
at com.mongodb.DBPort._open(DBPort.java:205)
at com.mongodb.DBPort.go(DBPort.java:85)
at com.mongodb.DBPort.go(DBPort.java:66)
at com.mongodb.DBPort.call(DBPort.java:56)
at com.mongodb.DBTCPConnector.call(DBTCPConnector.java:211)
at com.mongodb.DBApiLayer$MyCollection.__find(DBApiLayer.java:284)
at com.mongodb.DBCursor._check(DBCursor.java:297)
at com.mongodb.DBCursor._hasNext(DBCursor.java:420)
at com.mongodb.DBCursor.hasNext(DBCursor.java:445)
at com.mongodb.DBCursor.itcount(DBCursor.java:535)
at com.leadpoint.db.MongoDbQueryPerformanceTest.getCount(MongoDbQueryPerformanceTest.java:101)
at com.leadpoint.db.MongoDbQueryPerformanceTest.main(MongoDbQueryPerformanceTest.java:255)
Nov 4, 2010 4:03:26 PM com.mongodb.DBTCPConnector$MyPort error
SEVERE: MyPort.error called
java.io.IOException: couldn't connect to [ip-10-166-59-166/10.166.59.166:20000] bc:java.net.ConnectException: Connection refused
at com.mongodb.DBPort._open(DBPort.java:205)
at com.mongodb.DBPort.go(DBPort.java:85)
at com.mongodb.DBPort.go(DBPort.java:66)
at com.mongodb.DBPort.call(DBPort.java:56)
at com.mongodb.DBTCPConnector.call(DBTCPConnector.java:211)
at com.mongodb.DBApiLayer$MyCollection.__find(DBApiLayer.java:284)
at com.mongodb.DBCursor._check(DBCursor.java:297)
at com.mongodb.DBCursor._hasNext(DBCursor.java:420)
at com.mongodb.DBCursor.hasNext(DBCursor.java:445)
at com.mongodb.DBCursor.itcount(DBCursor.java:535)



 Comments   
Comment by Jeffrey Yemin [ 07/Mar/12 ]

Please re-open if you have more information that you can share.

Comment by Scott Hernandez (Inactive) [ 26/Aug/11 ]

Joseph, Can you test with the latest driver? If not I'm going to close this as a lot of this code has changed already.

Comment by Eliot Horowitz (Inactive) [ 22/Nov/10 ]

You should have gotten a MongoException.Network error
Can you try with head and let me know what you get?

Comment by Joseph Wang [ 04/Nov/10 ]

Tried db.getLastError(). Doesn't seem to work.

DBObject dbObject = db.getLastError();
if (dbObject != null) {
if (dbObject.get("err") != null)

{ System.out.println("Info getCount:" + dbObject.get("err")); }

}

java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:168)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
at java.io.BufferedInputStream.read1(BufferedInputStream.java:258)
at java.io.BufferedInputStream.read(BufferedInputStream.java:317)
at org.bson.io.Bits.readFully(Bits.java:35)
at org.bson.io.Bits.readFully(Bits.java:28)
at com.mongodb.Response.<init>(Response.java:35)
at com.mongodb.DBPort.go(DBPort.java:101)
at com.mongodb.DBPort.go(DBPort.java:66)
at com.mongodb.DBPort.call(DBPort.java:56)
at com.mongodb.DBTCPConnector.call(DBTCPConnector.java:211)
at com.mongodb.DBApiLayer$MyCollection.__find(DBApiLayer.java:284)
at com.mongodb.DB.command(DB.java:152)
at com.mongodb.DB.command(DB.java:141)
at com.mongodb.DB.getLastError(DB.java:302)
at com.leadpoint.db.MongoDbQueryPerformanceTest.getCount(MongoDbQueryPerformanceTest.java:102)
at com.leadpoint.db.MongoDbQueryPerformanceTest.main(MongoDbQueryPerformanceTest.java:264)
Nov 4, 2010 4:21:02 PM com.mongodb.ReplicaSetStatus$Node update
WARNING: node down: ip-10-166-57-74:20000 java.io.EOFException

Generated at Thu Feb 08 08:51:45 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.