Skip to content

Commit 4e1372a

Browse files
author
Don Tregonning
committed
WIP
1 parent 4e7ba60 commit 4e1372a

File tree

3 files changed

+79
-12
lines changed

3 files changed

+79
-12
lines changed

src/main/java/com/splunk/kafka/connect/SplunkSinkRecord.java

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
import org.apache.commons.lang3.builder.EqualsBuilder;
2020
import org.apache.kafka.connect.header.Headers;
2121
import org.apache.kafka.connect.sink.SinkRecord;
22+
import org.slf4j.Logger;
23+
import org.slf4j.LoggerFactory;
2224

2325
/**
2426
* SplunkSinkRecord provides helper functionality to enable Header support for the Splunk Connect for Kafka, Namely
@@ -29,6 +31,7 @@
2931
* @since 1.1.0
3032
*/
3133
public class SplunkSinkRecord {
34+
private static final Logger log = LoggerFactory.getLogger(SplunkSinkRecord.class);
3235
Headers headers;
3336
SplunkSinkConnectorConfig connectorConfig;
3437
String splunkHeaderIndex = "";
@@ -50,7 +53,10 @@ public SplunkSinkRecord() {}
5053
public SplunkSinkRecord(SinkRecord record, SplunkSinkConnectorConfig connectorConfig) {
5154
this.connectorConfig = connectorConfig;
5255
this.headers = record.headers();
53-
setMetadataValues();
56+
if(this.headers != null) {
57+
log.info("not null headers");
58+
setMetadataValues();
59+
}
5460
}
5561

5662
/**
@@ -77,10 +83,24 @@ protected boolean compareRecordHeaders(SinkRecord record) {
7783
}
7884

7985
private void setMetadataValues() {
80-
splunkHeaderIndex = this.headers.lastWithName(connectorConfig.headerIndex).value().toString();
81-
splunkHeaderHost = this.headers.lastWithName(connectorConfig.headerHost).value().toString();
82-
splunkHeaderSource = this.headers.lastWithName(connectorConfig.headerSource).value().toString();
83-
splunkHeaderSourcetype = this.headers.lastWithName(connectorConfig.headerSourcetype).value().toString();
86+
log.info("Made it to setMetadataValues");
87+
88+
if(this.headers.lastWithName(connectorConfig.headerIndex).value() != null) {
89+
splunkHeaderIndex = this.headers.lastWithName(connectorConfig.headerIndex).value().toString();
90+
}
91+
if(this.headers.lastWithName(connectorConfig.headerHost).value() != null) {
92+
splunkHeaderHost = this.headers.lastWithName(connectorConfig.headerHost).value().toString();
93+
}
94+
if(this.headers.lastWithName(connectorConfig.headerSource).value() != null) {
95+
splunkHeaderSource = this.headers.lastWithName(connectorConfig.headerSource).value().toString();
96+
}
97+
if(this.headers.lastWithName(connectorConfig.headerSourcetype).value() != null) {
98+
splunkHeaderSourcetype = this.headers.lastWithName(connectorConfig.headerSourcetype).value().toString();
99+
}
100+
}
101+
102+
public String id() {
103+
return
84104
}
85105

86106
@Override

src/main/java/com/splunk/kafka/connect/SplunkSinkTask.java

Lines changed: 48 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
package com.splunk.kafka.connect;
1717

1818
import com.splunk.hecclient.*;
19+
import com.sun.tools.corba.se.idl.StringGen;
1920
import org.apache.kafka.clients.consumer.OffsetAndMetadata;
2021
import org.apache.kafka.common.TopicPartition;
2122
import org.apache.kafka.connect.errors.RetriableException;
@@ -143,7 +144,7 @@ private void preventTooManyOutstandingEvents() {
143144

144145
private void handleRaw(final Collection<SinkRecord> records) {
145146
if(connectorConfig.headerSupport) {
146-
handleRecordsWithHeader(records);
147+
if(records != null) { handleRecordsWithHeader(records); }
147148
}
148149

149150
else if (connectorConfig.hasMetaDataConfigured()) {
@@ -160,27 +161,67 @@ else if (connectorConfig.hasMetaDataConfigured()) {
160161
}
161162

162163
private void handleRecordsWithHeader(final Collection<SinkRecord> records) {
163-
HashMap<SplunkSinkRecord, ArrayList<SinkRecord>> recordsWithSameHeaders = new HashMap<>();
164+
log.info("Inside handle records");
165+
166+
HashMap<String, ArrayList<SinkRecord>> recordsWithSameHeaders = new HashMap<>();
164167
SplunkSinkRecord splunkSinkRecord;
165168
for (SinkRecord record : records) {
166-
splunkSinkRecord = new SplunkSinkRecord(record, connectorConfig);
169+
log.info("Inside loop");
167170

168-
if (!recordsWithSameHeaders.containsKey(splunkSinkRecord)) {
169-
recordsWithSameHeaders.put(splunkSinkRecord, new ArrayList<>());
171+
// splunkSinkRecord = new SplunkSinkRecord(record, connectorConfig);
172+
String key = headerId(record);
173+
if (!recordsWithSameHeaders.containsKey(key)) {
174+
recordsWithSameHeaders.put(key, new ArrayList<>());
170175
}
171176
ArrayList<SinkRecord> recordList = recordsWithSameHeaders.get(record);
172177
recordList.add(record);
173-
recordsWithSameHeaders.put(splunkSinkRecord, recordList);
178+
recordsWithSameHeaders.put(key, recordList);
174179
}
175180

181+
int index = 0;
176182
Iterator itr = recordsWithSameHeaders.entrySet().iterator();
177183
while(itr.hasNext()) {
184+
log.info("Sending Log {}", index);
178185
Map.Entry set = (Map.Entry)itr.next();
179186
SplunkSinkRecord splunkSinkRecordKey = (SplunkSinkRecord)set.getKey();
180187
ArrayList<SinkRecord> recordArrayList = (ArrayList)set.getValue();
181-
EventBatch batch = createRawHeaderEventBatch(1);
188+
EventBatch batch = createRawHeaderEventBatch(splunkSinkRecordKey);
182189
sendEvents(recordArrayList, batch);
190+
index++;
191+
}
192+
}
193+
194+
public String headerId(SinkRecord sinkRecord) {
195+
Headers headers = sinkRecord.headers();
196+
String headerId = "";
197+
198+
if(headers.lastWithName(connectorConfig.headerIndex).value() != null) {
199+
headerId += headers.lastWithName(connectorConfig.headerIndex).value().toString();
183200
}
201+
202+
insertheaderToken(headerId);
203+
204+
if(headers.lastWithName(connectorConfig.headerHost).value() != null) {
205+
headerId += headers.lastWithName(connectorConfig.headerHost).value().toString();
206+
}
207+
208+
insertheaderToken(headerId);
209+
210+
if(headers.lastWithName(connectorConfig.headerSource).value() != null) {
211+
headerId += headers.lastWithName(connectorConfig.headerSource).value().toString();
212+
}
213+
214+
insertheaderToken(headerId);
215+
216+
if(headers.lastWithName(connectorConfig.headerSourcetype).value() != null) {
217+
headerId += headers.lastWithName(connectorConfig.headerSourcetype).value().toString();
218+
}
219+
220+
return headerId;
221+
}
222+
223+
public String insertheaderToken(String id) {
224+
return id += "$$$";
184225
}
185226

186227
private void handleEvent(final Collection<SinkRecord> records) {

src/test/java/com/splunk/kafka/connect/SplunkSinkTaskTest.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -226,6 +226,12 @@ public void putWithRawAndAckWithoutMeta() {
226226
putWithSuccess(true, false);
227227
}
228228

229+
@Test
230+
public void handleRecordsWithHeaders() {
231+
232+
233+
}
234+
229235
private void putWithSuccess(boolean raw, boolean withMeta) {
230236
int batchSize = 100;
231237
int total = 1000;

0 commit comments

Comments
 (0)