Skip to content

Commit bda8e99

Browse files
fix: Add default config based on target object (#76)
Only apply "enable.auto.commit", "enable.auto.offset.store", "enable.partition.eof" and "allow.auto.create.topics" configurations if the target object is a consumer. That change fixes #73
1 parent 49cc053 commit bda8e99

File tree

4 files changed

+21
-14
lines changed

4 files changed

+21
-14
lines changed

c_src/erlkaf_config.cc

+13-11
Original file line numberDiff line numberDiff line change
@@ -54,19 +54,21 @@ template <typename T> ERL_NIF_TERM parse_config(ErlNifEnv* env, ERL_NIF_TERM lis
5454
return ATOMS.atomOk;
5555
}
5656

57-
bool appy_kafka_default_config(rd_kafka_conf_t* config)
57+
bool appy_kafka_default_config(rd_kafka_conf_t* config, TargetObject target)
5858
{
59-
if(rd_kafka_conf_set(config, "enable.auto.commit", "true", NULL, 0) != RD_KAFKA_CONF_OK)
60-
return false;
59+
if(target == TargetObject::Consumer) {
60+
if(rd_kafka_conf_set(config, "enable.auto.commit", "true", NULL, 0) != RD_KAFKA_CONF_OK)
61+
return false;
6162

62-
if(rd_kafka_conf_set(config, "enable.auto.offset.store", "false", NULL, 0) != RD_KAFKA_CONF_OK)
63-
return false;
63+
if(rd_kafka_conf_set(config, "enable.auto.offset.store", "false", NULL, 0) != RD_KAFKA_CONF_OK)
64+
return false;
6465

65-
if(rd_kafka_conf_set(config, "enable.partition.eof", "false", NULL, 0) != RD_KAFKA_CONF_OK)
66-
return false;
66+
if(rd_kafka_conf_set(config, "enable.partition.eof", "false", NULL, 0) != RD_KAFKA_CONF_OK)
67+
return false;
6768

68-
if(rd_kafka_conf_set(config, "allow.auto.create.topics", "true", NULL, 0) != RD_KAFKA_CONF_OK)
69-
return false;
69+
if(rd_kafka_conf_set(config, "allow.auto.create.topics", "true", NULL, 0) != RD_KAFKA_CONF_OK)
70+
return false;
71+
}
7072

7173
#ifdef SIGIO
7274
// quick termination
@@ -99,9 +101,9 @@ ERL_NIF_TERM parse_topic_config(ErlNifEnv* env, ERL_NIF_TERM list, rd_kafka_topi
99101
return parse_config(env, list, conf, kTopicConfFuns);
100102
}
101103

102-
ERL_NIF_TERM parse_kafka_config(ErlNifEnv* env, ERL_NIF_TERM list, rd_kafka_conf_t* conf)
104+
ERL_NIF_TERM parse_kafka_config(ErlNifEnv* env, ERL_NIF_TERM list, rd_kafka_conf_t* conf, TargetObject target)
103105
{
104-
if(!appy_kafka_default_config(conf))
106+
if(!appy_kafka_default_config(conf, target))
105107
return make_error(env, "failed to apply default kafka config");
106108

107109
return parse_config(env, list, conf, kKafkaConfFuns);

c_src/erlkaf_config.h

+6-1
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,13 @@
66
typedef struct rd_kafka_conf_s rd_kafka_conf_t;
77
typedef struct rd_kafka_topic_conf_s rd_kafka_topic_conf_t;
88

9+
enum TargetObject {
10+
Producer = 0,
11+
Consumer,
12+
};
13+
914
ERL_NIF_TERM parse_topic_config(ErlNifEnv* env, ERL_NIF_TERM list, rd_kafka_topic_conf_t* conf);
10-
ERL_NIF_TERM parse_kafka_config(ErlNifEnv* env, ERL_NIF_TERM list, rd_kafka_conf_t* conf);
15+
ERL_NIF_TERM parse_kafka_config(ErlNifEnv* env, ERL_NIF_TERM list, rd_kafka_conf_t* conf, TargetObject target);
1116

1217
#endif // C_SRC_ERLKAF_CONFIG_H_
1318

c_src/erlkaf_consumer.cc

+1-1
Original file line numberDiff line numberDiff line change
@@ -264,7 +264,7 @@ ERL_NIF_TERM enif_consumer_new(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv
264264
scoped_ptr(client_conf, rd_kafka_conf_t, rd_kafka_conf_new(), rd_kafka_conf_destroy);
265265
scoped_ptr(topic_conf, rd_kafka_topic_conf_t, rd_kafka_topic_conf_new(), rd_kafka_topic_conf_destroy);
266266

267-
ERL_NIF_TERM parse_result = parse_kafka_config(env, argv[2], client_conf.get());
267+
ERL_NIF_TERM parse_result = parse_kafka_config(env, argv[2], client_conf.get(), TargetObject::Consumer);
268268

269269
if(parse_result != ATOMS.atomOk)
270270
return parse_result;

c_src/erlkaf_producer.cc

+1-1
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ ERL_NIF_TERM enif_producer_new(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv
178178

179179
scoped_ptr(config, rd_kafka_conf_t, rd_kafka_conf_new(), rd_kafka_conf_destroy);
180180

181-
ERL_NIF_TERM parse_result = parse_kafka_config(env, argv[1], config.get());
181+
ERL_NIF_TERM parse_result = parse_kafka_config(env, argv[1], config.get(), TargetObject::Producer);
182182

183183
if(parse_result != ATOMS.atomOk)
184184
return parse_result;

0 commit comments

Comments
 (0)