mirror of https://github.com/apache/druid.git
68 lines
2.3 KiB
Bash
Executable File
68 lines
2.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
echo "This will run RealtimeStandaloneMain service in background"
|
|
set +u
|
|
shopt -s xpg_echo
|
|
shopt -s expand_aliases
|
|
|
|
PF=./twitter4j.properties
|
|
|
|
# if twitter4j.properties already exists, then user is okay with having twitter pw in file.
|
|
# Otherwise a twitter4j.properties file in curr. dir. is made temporarily for twitter login.
|
|
if [ -e "$PF" ]; then
|
|
PF_CLEANUP="date"
|
|
trap "exit 1" 1 2 3 15
|
|
else
|
|
PF_CLEANUP="/bin/rm $PF"
|
|
trap "${PF_CLEANUP} ; exit 1" 1 2 3 15
|
|
touch $PF
|
|
chmod 700 $PF
|
|
echo " Your twitter user login name and pw is needed "
|
|
read -p 'twitter username? ' TWIT_USER
|
|
read -s -p 'twitter password? ' TWIT_PW
|
|
echo "user=${TWIT_USER}" >> $PF
|
|
echo "password=${TWIT_PW}" >> $PF
|
|
TWIT_PW=""
|
|
fi
|
|
trap "${PF_CLEANUP} ; exit 1" 1 2 3 15
|
|
|
|
# props are set in src/main/resources/runtime.properties
|
|
|
|
[ -d /tmp/twitter_realtime ] && echo "cleaning up from previous run.." && /bin/rm -fr /tmp/twitter_realtime
|
|
|
|
# check spec file exists
|
|
[ ! -e twitter_realtime.spec ] && echo "expecting file twitter_realtime.spec (as specified by property druid.realtime.specFile) to be in current directory" && exit 3
|
|
|
|
OPT_PROPS=""
|
|
#OPT_PROPS="-Dtwitter4j.debug=true -Dtwitter4j.http.prettyDebug=true"
|
|
|
|
# start RealtimeNode process
|
|
#
|
|
echo "Log output of service can be found in ./RealtimeNode.out"
|
|
java -Xmx600m -Duser.timezone=UTC -Dfile.encoding=UTF-8 -classpath target/druid-examples-twitter-*-selfcontained.jar $OPT_PROPS -Dtwitter4j.http.useSSL=true druid.examples.RealtimeStandaloneMain >RealtimeNode.out 2>&1 &
|
|
PID=$!
|
|
|
|
trap "${PF_CLEANUP} ; kill ${PID} ; exit 1" 1 2 3 15
|
|
|
|
sleep 4
|
|
grep com.metamx.druid.realtime.TwitterSpritzerFirehoseFactory RealtimeNode.out | awk '{ print $7,$8,$9,$10,$11,$12,$13,$14,$15 }'
|
|
sleep 17
|
|
grep 'twitter4j.TwitterStreamImpl' RealtimeNode.out > p$$
|
|
grep 'Waiting for [0-9]000' p$$
|
|
RC1=$?
|
|
grep '401:Authentication credentials' p$$
|
|
RC2=$?
|
|
/bin/rm p$$
|
|
if [ $RC1 -eq 0 -a $RC2 -eq 0 ]; then
|
|
# avoid getting your ip addr blocked via too many failed login attempts
|
|
kill $PID
|
|
${PF_CLEANUP}
|
|
echo "twitter login failed, RealtimeStandaloneMain process terminated"
|
|
exit 7
|
|
fi
|
|
|
|
wait $PID
|
|
# clean up twitter credentials after wait since possible reconnection will need it
|
|
${PF_CLEANUP}
|
|
echo "RealtimeStandaloneMain finished"
|
|
|