package Ġcom . github . th ake . log miner . kafka . connect Ċ Ċ import Ġmu . Kotlin Logging Ċ import Ġorg . apache . kafka . common . config . Abstract Config Ċ import Ġorg . apache . kafka . common . config . Config Def Ċ import Ġorg . apache . kafka . common . config . Config Def . Import ance Ċ import Ġjava . sql . Connection Ċ import Ġjava . sql . Driver Manager Ċ import Ġjava . sql . SQLException Ċ import Ġjava . time . Duration Ċ import Ġjava . time . Zone Id Ċ Ċ private Ġval Ġlogger Ġ= ĠKotlin Logging . logger Ġ{} Ċ Ċ sealed Ġclass ĠLog Miner Selector Ċ data Ġclass ĠTable Selector ( val Ġowner : ĠString , Ġval ĠtableName : ĠString ) Ġ: ĠLog Miner Selector () Ċ data Ġclass ĠSchema Selector ( val Ġowner : ĠString ) Ġ: ĠLog Miner Selector () Ċ enum Ġclass ĠLog miner Dictionary Source Ġ{ ĊĠĠĠ ĠON LINE , ĠRED O _ LOG Ċ } Ċ Ċ class ĠSource Connector Config ( ĊĠĠĠ Ġconfig : ĠConfig Def ?, ĊĠĠĠ Ġparsed Config : ĠMap < String , ĠString > Ċ ) Ġ: ĠAbstract Config ( config , Ġparsed Config ) Ġ{ ĊĠĠĠ Ġconstructor ( parsed Config : ĠMap < String , ĠString >) Ġ: Ġthis ( ĊĠĠĠĠĠĠĠ Ġconf (), ĊĠĠĠĠĠĠĠ Ġparsed Config ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġfun Ġopen Connection () Ġ: ĠConnection ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdb Uri Ġ= Ġ"${ db HostName }:${ db Port }/${ db Sid }" ĊĠĠĠĠĠĠĠ Ġfun Ġdo Open Connection (): ĠConnection Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠDriver Manager . getConnection ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" jdbc : oracle : thin :@ $ db Uri ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb User , Ġdb Password ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . info Ġ{ Ġ" Connected Ġto Ġdatabase Ġat Ġ$ db Uri " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvar Ġcurrent Attempt Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġconnection : ĠConnection ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġwhile Ġ( current Attempt Ġ< Ġdb Attempts Ġ&& Ġconnection Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( current Attempt Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . info Ġ{ Ġ" Waiting Ġ${ db Backoff . to Millis ()} Ġms Ġbefore Ġnext Ġattempt Ġto Ġacquire Ġa Ġconnection " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠThread . sleep ( db Backoff . to Millis ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Attempt ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconnection Ġ= Ġdo Open Connection () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠSQLException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . error ( e ) Ġ{ Ġ" Couldn 't Ġconnect Ġto Ġdatabase Ġwith Ġurl Ġ$ db Uri . ĠAttempt Ġ$ current Attempt ." Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġconnection ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġval Ġdb Sid : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠgetString ( DB _ SID ) ĊĊĠĠĠ Ġval Ġdb HostName : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠgetString ( DB _ HOST ) ĊĊĠĠĠ Ġval Ġdb Port : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġget Int ( DB _ PORT ) ĊĊĠĠĠ Ġval Ġdb User : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠgetString ( DB _ USERNAME ) ĊĊĠĠĠ Ġval Ġdb Password : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠgetString ( DB _ PASSWORD ) ĊĊĠĠĠ Ġval Ġdb Name : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠgetString ( DB _ NAME ) ĊĊĠĠĠ Ġval Ġdb Zone Id : ĠZone Id ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠZone Id . of ( getString ( DB _ TIME ZONE )) ĊĊĊĠĠĠ Ġval Ġlog miner Dictionary Source : ĠLog miner Dictionary Source ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠLog miner Dictionary Source . valueOf ( getString ( DB _ LOG MIN ER _ DI CTIONARY )) ĊĊĠĠĠ Ġval Ġmon itored Tables : ĠList < String > ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠgetString ( MON IT O RED _ TABLE S ). split ("," ). map Ġ{ Ġit . trim () Ġ} ĊĊĠĠĠ Ġval Ġlog Miner Selectors : ĠList < Log Miner Selector > ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġmon itored Tables . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparts Ġ= Ġit . split (".") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( parts . size Ġ> Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTable Selector ( parts [ 0 ], Ġparts [ 1 ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSchema Selector ( parts [ 0 ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġbatch Size : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġget Int ( BATCH _ SIZE ) ĊĠĠĠ Ġval Ġdb Fetch Size : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġget Int ( DB _ FETCH _ SIZE ) Ġ?: Ġbatch Size ĊĊĊĠĠĠ Ġval Ġstart Sc n : ĠLong ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġget Long ( START _ SC N ) Ġ?: Ġ 0 ĊĊĊĠĠĠ Ġval Ġpoll Interval : ĠDuration ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠDuration . of Millis ( getLong ( POLL _ INTERVAL _ MS )) ĊĊĠĠĠ Ġval Ġdb Backoff : ĠDuration ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠDuration . of Millis ( getLong ( DB _ BACK OFF _ MS )) ĊĊĠĠĠ Ġval Ġdb Attempts : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġget Int ( DB _ AT TEMP TS ) ĊĊĠĠĠ Ġval Ġis T omb stones On Delete Ġ: ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġget Boolean ( TO MB ST ONES _ ON _ DELETE ) ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠDB _ NAME Ġ= Ġ" db . name " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠDB _ SID Ġ= Ġ" db . sid " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠDB _ HOST Ġ= Ġ" db . hostname " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠDB _ PORT Ġ= Ġ" db . port " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠDB _ USERNAME Ġ= Ġ" db . user " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠDB _ PASSWORD Ġ= Ġ" db . user . password " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠDB _ AT TEMP TS Ġ= Ġ" db . attempts " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠDB _ BACK OFF _ MS Ġ= Ġ" db . backoff . ms " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠDB _ LOG MIN ER _ DI CTIONARY Ġ= Ġ" db . log miner . dictionary " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠDB _ TIME ZONE Ġ= Ġ" db . timezone " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠMON IT O RED _ TABLE S Ġ= Ġ" table . whitelist " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠDB _ FETCH _ SIZE Ġ= Ġ" db . fetch . size " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠSTART _ SC N Ġ= Ġ" start . sc n " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠB ATCH _ SIZE Ġ= Ġ" batch . size " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠPOL L _ INTERVAL _ MS Ġ= Ġ" poll . interval . ms " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTO MB ST ONES _ ON _ DELETE Ġ= Ġ" tom b stones . on . delete " ĊĊĠĠĠĠĠĠĠ Ġfun Ġconf (): ĠConfig Def Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠConfig Def () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. define ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDB _ NAME , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfig Def . Type . STRING , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠImport ance . HIGH , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Logical Ġname Ġof Ġthe Ġdatabase . ĠThis Ġname Ġwill Ġbe Ġused Ġas Ġa Ġprefix Ġfor Ġthe Ġtopic . ĠYou Ġcan Ġchoose Ġthis Ġname Ġas Ġyou Ġlike ." ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. define ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDB _ SID , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfig Def . Type . STRING , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠImport ance . HIGH , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Database ĠSID " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. define ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDB _ HOST , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfig Def . Type . STRING , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠImport ance . HIGH , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Database Ġhostname " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. define ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDB _ PORT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfig Def . Type . INT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠImport ance . HIGH , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Database Ġport Ġ( usually Ġ 1 5 2 1 )" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. define ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDB _ USERNAME , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfig Def . Type . STRING , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠImport ance . HIGH , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Database Ġuser " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. define ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDB _ PASSWORD , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfig Def . Type . STRING , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠImport ance . HIGH , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Database Ġpassword " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. define ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDB _ LOG MIN ER _ DI CTIONARY , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfig Def . Type . STRING , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog miner Dictionary Source . ON LINE . name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠImport ance . LOW , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Type Ġof Ġlog miner Ġdictionary Ġthat Ġshould Ġbe Ġused . ĠValid Ġvalues : Ġ" Ġ+ ĠLog miner Dictionary Source . values () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. join ToString Ġ{ Ġit . name Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. define ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDB _ TIME ZONE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfig Def . Type . STRING , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" UTC ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠImport ance . HIGH , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" The Ġtimezone Ġin Ġwhich ĠTIMESTAMP Ġcolumns Ġ( without Ġany Ġtimezone Ġinformation ) Ġshould Ġbe Ġinterpreted Ġas . ĠValid Ġvalues Ġare Ġall Ġvalues Ġthat Ġcan Ġbe Ġpassed Ġto Ġhttps :// docs . oracle . com / javase / 8 / docs / api / java / time / Zone Id . html # of - java . lang . String -" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. define ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMON IT O RED _ TABLE S , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfig Def . Type . STRING , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠImport ance . HIGH , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Tables Ġthat Ġshould Ġbe Ġmon itored , Ġseparated Ġby Ġ',' . ĠTables Ġhave Ġto Ġbe Ġspecified Ġwith Ġschema . ĠTable Ġnames Ġare Ġcase - sensitive Ġ( e . g . Ġif Ġyour Ġtable Ġname Ġis Ġan Ġun quoted Ġidentifier , Ġyou 'll Ġneed Ġto Ġspecify Ġit Ġin Ġall Ġcaps ). ĠYou Ġcan Ġalso Ġjust Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" specify Ġa Ġschema Ġto Ġindicate Ġthat Ġall Ġtables Ġwithin Ġthat Ġschema Ġshould Ġbe Ġmon itored . ĠExamples : Ġ' MY _ USER . TABLE , ĠOTHER _ SCHEMA '. " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. define ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTO MB ST ONES _ ON _ DELETE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfig Def . Type . BOOLEAN , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠImport ance . HIGH , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" If Ġset Ġto Ġfalse , Ġno Ġto mb stone Ġrecords Ġwill Ġbe Ġemitted Ġafter Ġa Ġdelete Ġoperation ." ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. define ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠB ATCH _ SIZE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfig Def . Type . INT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 0 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠImport ance . HIGH , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Batch Ġsize Ġof Ġrows Ġthat Ġshould Ġbe Ġfetched Ġin Ġone Ġbatch " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. define ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDB _ FETCH _ SIZE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfig Def . Type . INT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠImport ance . MEDIUM , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" JDBC Ġresult Ġset Ġprefetch Ġsize . ĠIf Ġnot Ġset , Ġit Ġwill Ġbe Ġdefault ed Ġto Ġbatch . size . ĠThe Ġfetch " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġshould Ġnot Ġbe Ġsmaller Ġthan Ġthe Ġbatch Ġsize ." ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. define ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSTART _ SC N , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfig Def . Type . LONG , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 L , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠImport ance . HIGH , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Start ĠS CN , Ġif Ġset Ġto Ġ 0 Ġan Ġinitial Ġint ake Ġfrom Ġthe Ġtables Ġwill Ġbe Ġperformed ." ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. define ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDB _ AT TEMP TS , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfig Def . Type . INT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠImport ance . LOW , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Maximum Ġnumber Ġof Ġattempts Ġto Ġretrieve Ġa Ġvalid ĠJDBC Ġconnection ." ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. define ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDB _ BACK OFF _ MS , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfig Def . Type . LONG , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 0 0 0 0 L , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠImport ance . LOW , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Backoff Ġtime Ġin Ġmilliseconds Ġbetween Ġconnection Ġattempts ." ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. define ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPOL L _ INTERVAL _ MS , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfig Def . Type . LONG , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 0 0 0 L , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠImport ance . LOW , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Positive Ġinteger Ġvalue Ġthat Ġspecifies Ġthe Ġnumber Ġof Ġmilliseconds Ġthe Ġconnector Ġshould Ġwait Ġafter Ġa Ġpolling Ġattempt Ġdidn 't Ġretrieve Ġany Ġresults ." ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġmain () Ġ{ ĊĠĠĠ Ġprintln ( Source Connector Config . conf (). to En ric hed R st ()) Ċ }