2021-04-16 18:40:39 +02:00
|
|
|
#!/bin/bash
|
|
|
|
|
2023-01-31 00:34:36 +01:00
|
|
|
## Exit early if PRECREATION is not needed
|
|
|
|
if [[ $DATAHUB_PRECREATE_TOPICS == "false" ]]; then
|
|
|
|
echo "DATAHUB_PRECREATE_TOPICS=${DATAHUB_PRECREATE_TOPICS}"
|
|
|
|
echo "Pre-creation of topics has been turned off, exiting"
|
|
|
|
exit 0
|
|
|
|
fi
|
|
|
|
|
2023-01-09 12:27:00 +00:00
|
|
|
. kafka-config.sh
|
2022-12-15 20:09:29 -06:00
|
|
|
|
2021-04-16 17:51:43 -07:00
|
|
|
echo "bootstrap.servers=$KAFKA_BOOTSTRAP_SERVER" > $CONNECTION_PROPERTIES_PATH
|
|
|
|
echo "security.protocol=$KAFKA_PROPERTIES_SECURITY_PROTOCOL" >> $CONNECTION_PROPERTIES_PATH
|
2021-04-16 18:40:39 +02:00
|
|
|
|
2022-07-14 02:17:23 +05:30
|
|
|
## Add support for SASL_PLAINTEXT
|
|
|
|
if [[ $KAFKA_PROPERTIES_SECURITY_PROTOCOL == "SASL_PLAINTEXT" ]]; then
|
|
|
|
echo "sasl.jaas.config=$KAFKA_PROPERTIES_SASL_JAAS_CONFIG" >> $CONNECTION_PROPERTIES_PATH
|
|
|
|
echo "sasl.kerberos.service.name=$KAFKA_PROPERTIES_SASL_KERBEROS_SERVICE_NAME" >> $CONNECTION_PROPERTIES_PATH
|
|
|
|
fi
|
|
|
|
|
2022-08-23 00:01:10 +01:00
|
|
|
## Add support for SASL_SSL
|
|
|
|
if [[ $KAFKA_PROPERTIES_SECURITY_PROTOCOL == "SASL_SSL" ]]; then
|
|
|
|
echo "sasl.jaas.config=$KAFKA_PROPERTIES_SASL_JAAS_CONFIG" >> $CONNECTION_PROPERTIES_PATH
|
|
|
|
echo "sasl.mechanism=$KAFKA_PROPERTIES_SASL_MECHANISM" >> $CONNECTION_PROPERTIES_PATH
|
|
|
|
fi
|
|
|
|
|
2021-04-16 18:40:39 +02:00
|
|
|
if [[ $KAFKA_PROPERTIES_SECURITY_PROTOCOL == "SSL" ]]; then
|
2022-05-16 16:51:19 -04:00
|
|
|
if [[ -n $KAFKA_PROPERTIES_SSL_KEYSTORE_LOCATION ]]; then
|
|
|
|
echo "ssl.keystore.location=$KAFKA_PROPERTIES_SSL_KEYSTORE_LOCATION" >> $CONNECTION_PROPERTIES_PATH
|
|
|
|
echo "ssl.keystore.password=$KAFKA_PROPERTIES_SSL_KEYSTORE_PASSWORD" >> $CONNECTION_PROPERTIES_PATH
|
|
|
|
echo "ssl.key.password=$KAFKA_PROPERTIES_SSL_KEY_PASSWORD" >> $CONNECTION_PROPERTIES_PATH
|
2022-06-14 10:29:24 -07:00
|
|
|
if [[ -n $KAFKA_PROPERTIES_SSL_KEYSTORE_TYPE ]]; then
|
|
|
|
echo "ssl.keystore.type=$KAFKA_PROPERTIES_SSL_KEYSTORE_TYPE" >> $CONNECTION_PROPERTIES_PATH
|
|
|
|
fi
|
2022-05-16 16:51:19 -04:00
|
|
|
fi
|
|
|
|
if [[ -n $KAFKA_PROPERTIES_SSL_TRUSTSTORE_LOCATION ]]; then
|
|
|
|
echo "ssl.truststore.location=$KAFKA_PROPERTIES_SSL_TRUSTSTORE_LOCATION" >> $CONNECTION_PROPERTIES_PATH
|
|
|
|
echo "ssl.truststore.password=$KAFKA_PROPERTIES_SSL_TRUSTSTORE_PASSWORD" >> $CONNECTION_PROPERTIES_PATH
|
2022-06-14 10:29:24 -07:00
|
|
|
if [[ -n $KAFKA_PROPERTIES_SSL_TRUSTSTORE_TYPE ]]; then
|
|
|
|
echo "ssl.truststore.type=$KAFKA_PROPERTIES_SSL_TRUSTSTORE_TYPE" >> $CONNECTION_PROPERTIES_PATH
|
|
|
|
fi
|
2022-05-16 16:51:19 -04:00
|
|
|
fi
|
2021-04-16 17:51:43 -07:00
|
|
|
echo "ssl.endpoint.identification.algorithm=$KAFKA_PROPERTIES_SSL_ENDPOINT_IDENTIFICATION_ALGORITHM" >> $CONNECTION_PROPERTIES_PATH
|
2021-04-16 18:40:39 +02:00
|
|
|
fi
|
|
|
|
|
2022-11-22 16:37:24 -05:00
|
|
|
# Add support for SASL_CLIENT_CALLBACK_HANDLER_CLASS
|
|
|
|
if [[ -n "$KAFKA_PROPERTIES_SASL_CLIENT_CALLBACK_HANDLER_CLASS" ]]; then
|
|
|
|
echo "sasl.client.callback.handler.class=$KAFKA_PROPERTIES_SASL_CLIENT_CALLBACK_HANDLER_CLASS" >> $CONNECTION_PROPERTIES_PATH
|
|
|
|
fi
|
|
|
|
|
2022-12-16 13:39:18 -06:00
|
|
|
cub kafka-ready -c $CONNECTION_PROPERTIES_PATH -b $KAFKA_BOOTSTRAP_SERVER 1 180
|
2022-12-27 12:35:48 -06:00
|
|
|
|
2023-01-09 12:27:00 +00:00
|
|
|
|
|
|
|
############################################################
|
|
|
|
# Start Topic Creation Logic
|
|
|
|
############################################################
|
|
|
|
# make the files
|
|
|
|
START=$(mktemp -t start-XXXX)
|
|
|
|
FIFO=$(mktemp -t fifo-XXXX)
|
|
|
|
FIFO_LOCK=$(mktemp -t lock-XXXX)
|
|
|
|
START_LOCK=$(mktemp -t lock-XXXX)
|
|
|
|
|
|
|
|
## mktemp makes a regular file. Delete that an make a fifo.
|
|
|
|
rm $FIFO
|
|
|
|
mkfifo $FIFO
|
|
|
|
echo $FIFO
|
|
|
|
|
|
|
|
## create a trap to cleanup on exit if we fail in the middle.
|
|
|
|
cleanup() {
|
|
|
|
rm $FIFO
|
|
|
|
rm $START
|
|
|
|
rm $FIFO_LOCK
|
|
|
|
rm $START_LOCK
|
|
|
|
}
|
|
|
|
trap cleanup 0
|
|
|
|
|
|
|
|
# Start worker script
|
|
|
|
. kafka-topic-workers.sh $START $FIFO $FIFO_LOCK $START_LOCK
|
|
|
|
|
|
|
|
## Open the fifo for writing.
|
|
|
|
exec 3>$FIFO
|
|
|
|
## Open the start lock for reading
|
|
|
|
exec 4<$START_LOCK
|
|
|
|
|
|
|
|
## Wait for the workers to start
|
|
|
|
while true; do
|
|
|
|
flock 4
|
|
|
|
started=$(wc -l $START | cut -d \ -f 1)
|
|
|
|
flock -u 4
|
|
|
|
if [[ $started -eq $WORKERS ]]; then
|
|
|
|
break
|
|
|
|
else
|
|
|
|
echo waiting, started $started of $WORKERS
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
exec 4<&-
|
|
|
|
|
|
|
|
## utility function to send the jobs to the workers
|
|
|
|
send() {
|
|
|
|
work_id=$1
|
|
|
|
topic_args=$2
|
|
|
|
echo sending $work_id $topic_args
|
|
|
|
echo "$work_id" "$topic_args" 1>&3 ## the fifo is fd 3
|
|
|
|
}
|
|
|
|
|
|
|
|
## Produce the jobs to run.
|
|
|
|
send "$METADATA_AUDIT_EVENT_NAME" "--topic $METADATA_AUDIT_EVENT_NAME"
|
|
|
|
send "$METADATA_CHANGE_EVENT_NAME" "--topic $METADATA_CHANGE_EVENT_NAME"
|
|
|
|
send "$FAILED_METADATA_CHANGE_EVENT_NAME" "--topic $FAILED_METADATA_CHANGE_EVENT_NAME"
|
2023-01-24 18:48:23 +00:00
|
|
|
send "$METADATA_CHANGE_LOG_VERSIONED_TOPIC_NAME" "--topic $METADATA_CHANGE_LOG_VERSIONED_TOPIC_NAME"
|
2022-03-29 18:32:04 -07:00
|
|
|
|
2021-07-30 17:41:03 -07:00
|
|
|
# Set retention to 90 days
|
2023-01-24 18:48:23 +00:00
|
|
|
send "$METADATA_CHANGE_LOG_TIMESERIES_TOPIC_NAME" "--config retention.ms=7776000000 --topic $METADATA_CHANGE_LOG_TIMESERIES_TOPIC_NAME"
|
|
|
|
send "$METADATA_CHANGE_PROPOSAL_TOPIC_NAME" "--topic $METADATA_CHANGE_PROPOSAL_TOPIC_NAME"
|
|
|
|
send "$FAILED_METADATA_CHANGE_PROPOSAL_TOPIC_NAME" "--topic $FAILED_METADATA_CHANGE_PROPOSAL_TOPIC_NAME"
|
2023-01-09 12:27:00 +00:00
|
|
|
send "$PLATFORM_EVENT_TOPIC_NAME" "--topic $PLATFORM_EVENT_TOPIC_NAME"
|
2021-07-30 17:41:03 -07:00
|
|
|
|
2023-01-31 18:44:37 -06:00
|
|
|
# Infinite retention upgrade topic
|
|
|
|
send "$DATAHUB_UPGRADE_HISTORY_TOPIC" "config retention.ms=-1 --topic $DATAHUB_UPGRADE_HISTORY_TOPIC"
|
2021-05-11 15:41:42 -07:00
|
|
|
# Create topic for datahub usage event
|
|
|
|
if [[ $DATAHUB_ANALYTICS_ENABLED == true ]]; then
|
2023-01-09 12:27:00 +00:00
|
|
|
send "$DATAHUB_USAGE_EVENT_NAME" "--topic $DATAHUB_USAGE_EVENT_NAME"
|
2021-05-11 15:41:42 -07:00
|
|
|
fi
|
2022-07-17 18:59:09 -07:00
|
|
|
|
2023-01-09 12:27:00 +00:00
|
|
|
## close the filo
|
|
|
|
exec 3<&-
|
|
|
|
## disable the cleanup trap
|
|
|
|
trap '' 0
|
|
|
|
## It is safe to delete the files because the workers
|
|
|
|
## already opened them. Thus, only the names are going away
|
|
|
|
## the actual files will stay there until the workers
|
|
|
|
## all finish.
|
|
|
|
cleanup
|
|
|
|
## now wait for all the workers.
|
|
|
|
wait
|
|
|
|
|
|
|
|
echo "Topic Creation Complete."
|
|
|
|
|
|
|
|
############################################################
|
|
|
|
# End Topic Creation Logic
|
|
|
|
############################################################
|
|
|
|
|
2023-01-31 18:44:37 -06:00
|
|
|
kafka-configs.sh --command-config $CONNECTION_PROPERTIES_PATH --bootstrap-server $KAFKA_BOOTSTRAP_SERVER --entity-type topics --entity-name _schemas --alter --add-config cleanup.policy=compact
|