|
16 | 16 | package com.splunk.kafka.connect; |
17 | 17 |
|
18 | 18 | import com.splunk.hecclient.*; |
19 | | -import com.sun.tools.corba.se.idl.StringGen; |
20 | 19 | import org.apache.kafka.clients.consumer.OffsetAndMetadata; |
21 | 20 | import org.apache.kafka.common.TopicPartition; |
22 | 21 | import org.apache.kafka.connect.errors.RetriableException; |
|
30 | 29 | import org.slf4j.Logger; |
31 | 30 | import org.slf4j.LoggerFactory; |
32 | 31 |
|
33 | | -import javax.net.ssl.SSLEngineResult; |
34 | | - |
35 | 32 | public final class SplunkSinkTask extends SinkTask implements PollerCallback { |
36 | 33 | private static final Logger log = LoggerFactory.getLogger(SplunkSinkTask.class); |
37 | 34 | private static final long flushWindow = 30 * 1000; // 30 seconds |
@@ -161,67 +158,63 @@ else if (connectorConfig.hasMetaDataConfigured()) { |
161 | 158 | } |
162 | 159 |
|
163 | 160 | private void handleRecordsWithHeader(final Collection<SinkRecord> records) { |
164 | | - log.info("Inside handle records"); |
165 | | - |
166 | 161 | HashMap<String, ArrayList<SinkRecord>> recordsWithSameHeaders = new HashMap<>(); |
167 | | - SplunkSinkRecord splunkSinkRecord; |
168 | | - for (SinkRecord record : records) { |
169 | | - log.info("Inside loop"); |
170 | 162 |
|
171 | | - // splunkSinkRecord = new SplunkSinkRecord(record, connectorConfig); |
| 163 | + for (SinkRecord record : records) { |
172 | 164 | String key = headerId(record); |
173 | 165 | if (!recordsWithSameHeaders.containsKey(key)) { |
174 | | - recordsWithSameHeaders.put(key, new ArrayList<>()); |
| 166 | + ArrayList<SinkRecord> recordList = new ArrayList<SinkRecord>(); |
| 167 | + recordsWithSameHeaders.put(key, recordList); |
175 | 168 | } |
176 | | - ArrayList<SinkRecord> recordList = recordsWithSameHeaders.get(record); |
| 169 | + ArrayList<SinkRecord> recordList = recordsWithSameHeaders.get(key); |
177 | 170 | recordList.add(record); |
178 | 171 | recordsWithSameHeaders.put(key, recordList); |
179 | 172 | } |
180 | 173 |
|
181 | 174 | int index = 0; |
182 | | - Iterator itr = recordsWithSameHeaders.entrySet().iterator(); |
| 175 | + Iterator<Map.Entry<String, ArrayList<SinkRecord>>> itr = recordsWithSameHeaders.entrySet().iterator(); |
183 | 176 | while(itr.hasNext()) { |
184 | | - log.info("Sending Log {}", index); |
185 | | - Map.Entry set = (Map.Entry)itr.next(); |
186 | | - SplunkSinkRecord splunkSinkRecordKey = (SplunkSinkRecord)set.getKey(); |
| 177 | + Map.Entry set = itr.next(); |
| 178 | + String splunkSinkRecordKey = (String)set.getKey(); |
187 | 179 | ArrayList<SinkRecord> recordArrayList = (ArrayList)set.getValue(); |
188 | 180 | EventBatch batch = createRawHeaderEventBatch(splunkSinkRecordKey); |
189 | 181 | sendEvents(recordArrayList, batch); |
190 | 182 | index++; |
191 | 183 | } |
| 184 | + log.debug("{} records have been bucketed in to {} batches",records.size(), index); |
192 | 185 | } |
193 | 186 |
|
194 | 187 | public String headerId(SinkRecord sinkRecord) { |
195 | 188 | Headers headers = sinkRecord.headers(); |
196 | 189 | String headerId = ""; |
197 | 190 |
|
198 | | - if(headers.lastWithName(connectorConfig.headerIndex).value() != null) { |
| 191 | + if(headers.lastWithName(connectorConfig.headerIndex) != null) { |
199 | 192 | headerId += headers.lastWithName(connectorConfig.headerIndex).value().toString(); |
200 | 193 | } |
201 | 194 |
|
202 | | - insertheaderToken(headerId); |
| 195 | + headerId = insertheaderToken(headerId); |
203 | 196 |
|
204 | | - if(headers.lastWithName(connectorConfig.headerHost).value() != null) { |
| 197 | + if(headers.lastWithName(connectorConfig.headerHost) != null) { |
205 | 198 | headerId += headers.lastWithName(connectorConfig.headerHost).value().toString(); |
206 | 199 | } |
207 | 200 |
|
208 | | - insertheaderToken(headerId); |
| 201 | + headerId = insertheaderToken(headerId); |
209 | 202 |
|
210 | | - if(headers.lastWithName(connectorConfig.headerSource).value() != null) { |
| 203 | + if(headers.lastWithName(connectorConfig.headerSource) != null) { |
211 | 204 | headerId += headers.lastWithName(connectorConfig.headerSource).value().toString(); |
212 | 205 | } |
213 | 206 |
|
214 | | - insertheaderToken(headerId); |
| 207 | + headerId = insertheaderToken(headerId); |
215 | 208 |
|
216 | | - if(headers.lastWithName(connectorConfig.headerSourcetype).value() != null) { |
| 209 | + if(headers.lastWithName(connectorConfig.headerSourcetype) != null) { |
217 | 210 | headerId += headers.lastWithName(connectorConfig.headerSourcetype).value().toString(); |
218 | 211 | } |
219 | 212 |
|
220 | 213 | return headerId; |
221 | 214 | } |
222 | 215 |
|
223 | 216 | public String insertheaderToken(String id) { |
224 | | - return id += "$$$"; |
| 217 | + return id + "$$$"; |
225 | 218 | } |
226 | 219 |
|
227 | 220 | private void handleEvent(final Collection<SinkRecord> records) { |
@@ -266,15 +259,17 @@ private void send(final EventBatch batch) { |
266 | 259 | } |
267 | 260 | } |
268 | 261 |
|
269 | | - private EventBatch createRawHeaderEventBatch(SplunkSinkRecord splunkSinkRecord) { |
| 262 | + private EventBatch createRawHeaderEventBatch(String splunkSinkRecord) { |
| 263 | + String[] split = splunkSinkRecord.split("[$]{3}"); |
| 264 | + |
270 | 265 | return RawEventBatch.factory() |
271 | | - .setIndex(splunkSinkRecord.getSplunkHeaderIndex()) |
272 | | - .setSourcetype(splunkSinkRecord.getSplunkHeaderSourcetype()) |
273 | | - .setSource(splunkSinkRecord.getSplunkHeaderSource()) |
274 | | - .setHost(splunkSinkRecord.getSplunkHeaderHost()) |
| 266 | + .setIndex(split[0]) |
| 267 | + .setSourcetype(split[1]) |
| 268 | + .setSource(split[2]) |
| 269 | + .setHost(split[3]) |
275 | 270 | .build(); |
276 | | - |
277 | 271 | } |
| 272 | + |
278 | 273 | // setup metadata on RawEventBatch |
279 | 274 | private EventBatch createRawEventBatch(final TopicPartition tp) { |
280 | 275 | if (tp == null) { |
|
0 commit comments