|
1 | 1 | #!/bin/bash |
2 | 2 |
|
3 | | -# Check if variables exist |
4 | | -if [ -z "$CONNECT_ZOOKEEPER_CONNECT" ]; then |
5 | | - echo "CONNECT_ZOOKEEPER_CONNECT is not defined" |
6 | | - exit 2 |
| 3 | +if [ "$WAIT_FOR_KAFKA" != "1" ]; then |
| 4 | + echo "Starting without checking for Kafka availability" |
| 5 | + exit 0 |
7 | 6 | fi |
8 | 7 |
|
9 | | -if [ -z "$CONNECT_KEY_CONVERTER_SCHEMA_REGISTRY_URL" ]; then |
10 | | - echo "CONNECT_KEY_CONVERTER_SCHEMA_REGISTRY_URL is not defined" |
11 | | - exit 4 |
| 8 | +max_timeout=32 |
| 9 | + |
| 10 | + |
| 11 | +IS_TEMP=0 |
| 12 | + |
| 13 | +if [ -z "$COMMAND_CONFIG_FILE_PATH" ]; then |
| 14 | + COMMAND_CONFIG_FILE_PATH="$(mktemp)" |
| 15 | + IS_TEMP=1 |
| 16 | +fi |
| 17 | + |
| 18 | +if [ ! -f "$COMMAND_CONFIG_FILE_PATH" ] || [ $IS_TEMP = 1 ]; then |
| 19 | + while IFS='=' read -r -d '' n v; do |
| 20 | + if [[ "$n" == "CONNECT_"* ]]; then |
| 21 | + name="${n/CONNECT_/""}" # remove first "CONNECT_" |
| 22 | + name="${name,,}" # lower case |
| 23 | + name="${name//_/"."}" # replace all '_' with '.' |
| 24 | + echo "$name=$v" >> ${COMMAND_CONFIG_FILE_PATH} |
| 25 | + fi |
| 26 | + done < <(env -0) |
12 | 27 | fi |
13 | 28 |
|
14 | | -KAFKA_BROKERS=${KAFKA_BROKERS:-3} |
| 29 | +# Check if variables exist |
| 30 | +if [ -z "$CONNECT_BOOTSTRAP_SERVERS" ]; then |
| 31 | + echo "CONNECT_BOOTSTRAP_SERVERS is not defined" |
| 32 | +else |
| 33 | + KAFKA_BROKERS=${KAFKA_BROKERS:-3} |
15 | 34 |
|
16 | | -max_timeout=32 |
| 35 | + tries=10 |
| 36 | + timeout=1 |
| 37 | + while true; do |
| 38 | + KAFKA_CHECK=$(kafka-broker-api-versions --bootstrap-server "$CONNECT_BOOTSTRAP_SERVERS" --command-config "${COMMAND_CONFIG_FILE_PATH}" | grep "(id: " | wc -l) |
17 | 39 |
|
18 | | -tries=10 |
19 | | -timeout=1 |
20 | | -while true; do |
21 | | - ZOOKEEPER_CHECK=$(zookeeper-shell ${CONNECT_ZOOKEEPER_CONNECT} <<< "ls /brokers/ids" | tail -n 1) |
22 | | - echo "Zookeeper response: ${ZOOKEEPER_CHECK}" |
23 | | - ZOOKEEPER_CHECK="$(echo -e "${ZOOKEEPER_CHECK}" | tr -d '[:space:]' | tr -d '[' | tr -d ']')" |
| 40 | + if [ "$KAFKA_CHECK" -ge "$KAFKA_BROKERS" ]; then |
| 41 | + echo "Kafka brokers available." |
| 42 | + break |
| 43 | + fi |
24 | 44 |
|
25 | | - IFS=',' read -r -a array <<< "${ZOOKEEPER_CHECK}" |
26 | | - LENGTH=${#array[@]} |
27 | | - if [ "$LENGTH" -eq "$KAFKA_BROKERS" ]; then |
28 | | - echo "Kafka brokers available." |
29 | | - break |
30 | | - fi |
| 45 | + tries=$((tries - 1)) |
| 46 | + if [ ${tries} -eq 0 ]; then |
| 47 | + echo "FAILED: KAFKA BROKERs NOT READY." |
| 48 | + exit 5 |
| 49 | + fi |
| 50 | + echo "Expected $KAFKA_BROKERS brokers but found only $KAFKA_CHECK. Waiting $timeout second before retrying ..." |
| 51 | + sleep ${timeout} |
| 52 | + if [ ${timeout} -lt ${max_timeout} ]; then |
| 53 | + timeout=$((timeout * 2)) |
| 54 | + fi |
| 55 | + done |
31 | 56 |
|
32 | | - tries=$((tries - 1)) |
33 | | - if [ ${tries} -eq 0 ]; then |
34 | | - echo "FAILED: KAFKA BROKERs NOT READY." |
35 | | - exit 5 |
36 | | - fi |
37 | | - echo "Expected $KAFKA_BROKERS brokers but found only $LENGTH. Waiting $timeout second before retrying ..." |
38 | | - sleep ${timeout} |
39 | | - if [ ${timeout} -lt ${max_timeout} ]; then |
40 | | - timeout=$((timeout * 2)) |
41 | | - fi |
42 | | -done |
| 57 | + echo "Kafka is available." |
| 58 | +fi |
43 | 59 |
|
44 | | -tries=10 |
45 | | -timeout=1 |
46 | | -while true; do |
47 | | - if wget --spider -q "${CONNECT_KEY_CONVERTER_SCHEMA_REGISTRY_URL}/subjects" 2>/dev/null; then |
48 | | - echo "Schema registry available." |
49 | | - break |
50 | | - fi |
51 | | - tries=$((tries - 1)) |
52 | | - if [ $tries -eq 0 ]; then |
53 | | - echo "FAILED TO REACH SCHEMA REGISTRY." |
54 | | - exit 6 |
55 | | - fi |
56 | | - echo "Failed to reach schema registry. Retrying in ${timeout} seconds." |
57 | | - sleep ${timeout} |
58 | | - if [ ${timeout} -lt ${max_timeout} ]; then |
59 | | - timeout=$((timeout * 2)) |
60 | | - fi |
61 | | -done |
| 60 | +if [ -z "$CONNECT_KEY_CONVERTER_SCHEMA_REGISTRY_URL" ]; then |
| 61 | + echo "CONNECT_KEY_CONVERTER_SCHEMA_REGISTRY_URL is not defined" |
| 62 | +else |
| 63 | + tries=10 |
| 64 | + timeout=1 |
| 65 | + while true; do |
| 66 | + if wget --spider -q "${CONNECT_KEY_CONVERTER_SCHEMA_REGISTRY_URL}/subjects" 2>/dev/null; then |
| 67 | + echo "Schema registry available." |
| 68 | + break |
| 69 | + fi |
| 70 | + tries=$((tries - 1)) |
| 71 | + if [ $tries -eq 0 ]; then |
| 72 | + echo "FAILED TO REACH SCHEMA REGISTRY." |
| 73 | + exit 6 |
| 74 | + fi |
| 75 | + echo "Failed to reach schema registry. Retrying in ${timeout} seconds." |
| 76 | + sleep ${timeout} |
| 77 | + if [ ${timeout} -lt ${max_timeout} ]; then |
| 78 | + timeout=$((timeout * 2)) |
| 79 | + fi |
| 80 | + done |
62 | 81 |
|
| 82 | + echo "Schema registry is available." |
| 83 | +fi |
63 | 84 |
|
64 | | -echo "Kafka is available. Ready to go!" |
| 85 | +if [ $IS_TEMP = 1 ]; then |
| 86 | + /bin/rm -f "$COMMAND_CONFIG_FILE_PATH" |
| 87 | +fi |
0 commit comments