下面列出了com.mongodb.MongoException#getMessage ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
@SuppressWarnings("boxing")
public static String ensureIndexes(MongoIndex index, DB dbConn, int indexOrder) {
DBObject options = new BasicDBObject();
options.put("name", "idx_" + indexOrder);
options.put("unique", index.isUnique());
options.put("sparse", index.isSparse());
options.put("ns", dbConn.getCollection(index.getCollection()).getFullName());
try {
dbConn.getCollection(index.getCollection()).createIndex(new BasicDBObject(index.getKeys()), options);
return null;
} catch (MongoException e) {
LOG.error("Failed to ensure index:{}", e.getMessage());
return "Failed to ensure index:" + e.getMessage();
}
}
private void checkRetriableException(final MongoSinkTopicConfig config, final MongoException e) {
if (getRemainingRetriesForTopic(config.getTopic()).decrementAndGet() <= 0) {
throw new DataException("Failed to write mongodb documents despite retrying", e);
}
Integer deferRetryMs = config.getInt(RETRIES_DEFER_TIMEOUT_CONFIG);
LOGGER.debug("Deferring retry operation for {}ms", deferRetryMs);
context.timeout(deferRetryMs);
throw new RetriableException(e.getMessage(), e);
}
private void processSinkRecords(MongoCollection<BsonDocument> collection, List<SinkRecord> batch) {
String collectionName = collection.getNamespace().getCollectionName();
List<? extends WriteModel<BsonDocument>> docsToWrite =
sinkConfig.isUsingCdcHandler(collectionName)
? buildWriteModelCDC(batch,collectionName)
: buildWriteModel(batch,collectionName);
try {
if (!docsToWrite.isEmpty()) {
LOGGER.debug("bulk writing {} document(s) into collection [{}]",
docsToWrite.size(), collection.getNamespace().getFullName());
BulkWriteResult result = collection.bulkWrite(
docsToWrite, BULK_WRITE_OPTIONS);
LOGGER.debug("mongodb bulk write result: " + result.toString());
}
} catch (MongoException mexc) {
if (mexc instanceof BulkWriteException) {
BulkWriteException bwe = (BulkWriteException) mexc;
LOGGER.error("mongodb bulk write (partially) failed", bwe);
LOGGER.error(bwe.getWriteResult().toString());
LOGGER.error(bwe.getWriteErrors().toString());
LOGGER.error(bwe.getWriteConcernError().toString());
} else {
LOGGER.error("error on mongodb operation", mexc);
LOGGER.error("writing {} document(s) into collection [{}] failed -> remaining retries ({})",
docsToWrite.size(), collection.getNamespace().getFullName() ,remainingRetries);
}
if (remainingRetries-- <= 0) {
throw new ConnectException("failed to write mongodb documents"
+ " despite retrying -> GIVING UP! :( :( :(", mexc);
}
LOGGER.debug("deferring retry operation for {}ms", deferRetryMs);
context.timeout(deferRetryMs);
throw new RetriableException(mexc.getMessage(), mexc);
}
}
@Override
public void deleteBySha1(final String tenant, final String sha1Hash) {
try {
deleteArtifact(gridFs.findOne(new Query()
.addCriteria(Criteria.where(FILENAME).is(sha1Hash).and(TENANT_QUERY).is(sanitizeTenant(tenant)))));
} catch (final MongoException e) {
throw new ArtifactStoreException(e.getMessage(), e);
}
}
@Override
protected void deleteTempFile(final String tempFile) {
try {
deleteArtifact(loadTempFile(tempFile));
} catch (final MongoException e) {
throw new ArtifactStoreException(e.getMessage(), e);
}
}
@Override
public void insertObject(final NoSqlObject<Document> object) {
try {
final Document unwrapped = object.unwrap();
LOGGER.debug("Inserting BSON Document {}", unwrapped);
InsertOneResult insertOneResult = this.collection.insertOne(unwrapped);
LOGGER.debug("Insert MongoDb result {}", insertOneResult);
} catch (final MongoException e) {
throw new AppenderLoggingException("Failed to write log event to MongoDB due to error: " + e.getMessage(),
e);
}
}
@Override
public void insertObject(final NoSqlObject<Document> object) {
try {
final Document unwrapped = object.unwrap();
LOGGER.debug("Inserting object {}", unwrapped);
this.collection.insertOne(unwrapped);
} catch (final MongoException e) {
throw new AppenderLoggingException("Failed to write log event to MongoDB due to error: " + e.getMessage(),
e);
}
}