@Override public BulkWriterResponse write(String sensorType, WriterConfiguration configurations, Iterable<Tuple> tuples, List<MESSAGE_T> messages) throws Exception { BulkWriterResponse response = new BulkWriterResponse(); if(messages.size() > 1) { response.addAllErrors(new IllegalStateException("WriterToBulkWriter expects a batch of exactly 1"), tuples); return response; } try { messageWriter.write(sensorType, configurations, Iterables.getFirst(tuples, null), Iterables.getFirst(messages, null)); } catch(Exception e) { response.addAllErrors(e, tuples); return response; } response.addAllSuccesses(tuples); return response; }
@Override public BulkWriterResponse write(String sourceType, WriterConfiguration configurations, Iterable<Tuple> tuples, List<JSONObject> messages) throws Exception { String collection = getCollection(sourceType, configurations); BulkWriterResponse bulkResponse = new BulkWriterResponse(); Collection<SolrInputDocument> docs = toDocs(messages); try { Optional<SolrException> exceptionOptional = fromUpdateResponse(solr.add(collection, docs)); // Solr commits the entire batch or throws an exception for it. There's no way to get partial failures. if(exceptionOptional.isPresent()) { bulkResponse.addAllErrors(exceptionOptional.get(), tuples); } else { if (shouldCommit) { exceptionOptional = fromUpdateResponse(solr.commit(collection, waitFlush, waitSearcher, softCommit)); if(exceptionOptional.isPresent()) { bulkResponse.addAllErrors(exceptionOptional.get(), tuples); } } if(!exceptionOptional.isPresent()) { bulkResponse.addAllSuccesses(tuples); } } } catch(HttpSolrClient.RemoteSolrException sse) { bulkResponse.addAllErrors(sse, tuples); } return bulkResponse; }
writerResponse.addAllErrors(e, tuples); return writerResponse;
@Override public BulkWriterResponse write(String sourceType , WriterConfiguration configurations , Iterable<Tuple> tuples , List<JSONObject> messages ) throws Exception { BulkWriterResponse response = new BulkWriterResponse(); // Currently treating all the messages in a group for pass/failure. try { // Messages can all result in different HDFS paths, because of Stellar Expressions, so we'll need to iterate through for(JSONObject message : messages) { String path = getHdfsPathExtension( sourceType, (String)configurations.getSensorConfig(sourceType).getOrDefault(IndexingConfigurations.OUTPUT_PATH_FUNCTION_CONF, ""), message ); SourceHandler handler = getSourceHandler(sourceType, path, configurations); handler.handle(message, sourceType, configurations, syncPolicyCreator); } } catch (Exception e) { response.addAllErrors(e, tuples); } response.addAllSuccesses(tuples); return response; }
table.put(puts); } catch (Exception e) { response.addAllErrors(e, tuples); return response;