=org/compiere/util/DBReadReplicajava/lang/Objectm_userLjava/lang/String;m_passsqlValidateSync ConstantValue ,SELECT lastupdate FROM dbreplicasyncverifier sqlUpdateSync5UPDATE dbreplicasyncverifier SET lastupdate=getDate()sqlValidateDBAddressSELECT DBAddress FROM AD_SystemshiftIlogLorg/compiere/util/CLogger;()VCode       "!org/compiere/util/CLogger #$ getCLogger.(Ljava/lang/Class;)Lorg/compiere/util/CLogger; & LineNumberTableLocalVariableTable + )this!Lorg/compiere/util/DBReadReplica;!prepareNormalReadReplicaStatementD(Ljava/lang/String;IILjava/lang/String;)Ljava/sql/PreparedStatement; 1 23getConnectionRO()Ljava/sql/Connection; 576org/compiere/util/DB 89 getDatabase%()Lorg/compiere/db/AdempiereDatabase; ;=<!org/compiere/db/AdempiereDatabase >?convertStatement&(Ljava/lang/String;)Ljava/lang/String; ACBjava/sql/Connection DEprepareStatement2(Ljava/lang/String;II)Ljava/sql/PreparedStatement;G H?makeConcatWithConstants J KLwarning(Ljava/lang/String;)VN+org/adempiere/exceptions/AdempiereException MP )Q(Ljava/lang/Throwable;)VSjava/sql/SQLExceptionsql resultSetTyperesultSetConcurrencytrxNameconnLjava/sql/Connection;statementToReturnLjava/sql/PreparedStatement;eLjava/sql/SQLException; StackMapTable`java/lang/Stringbjava/sql/PreparedStatementgetReplicaVerificationTimestamp+(Ljava/sql/Connection;)Ljava/sql/Timestamp; Af Dg0(Ljava/lang/String;)Ljava/sql/PreparedStatement; ai jk executeQuery()Ljava/sql/ResultSet; monjava/sql/ResultSet pqnext()Zs lastupdate mu vw getTimestamp((Ljava/lang/String;)Ljava/sql/Timestamp; 5y z{close+(Ljava/sql/ResultSet;Ljava/sql/Statement;)V stVerifySync rsVerifySyncLjava/sql/ResultSet; replicaTsLjava/sql/Timestamp;java/sql/Timestampjava/lang/ThrowablegetReplicaDBAddress)(Ljava/sql/Connection;)Ljava/lang/String; DBAddress m ? getString stVerifyAddr rsVerifyAddrdbAddr tryConnect)(Ljava/lang/String;)Ljava/sql/Connection; 5 87(Ljava/lang/String;)Lorg/compiere/db/AdempiereDatabase; ; getDriverConnectionM(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/sql/Connection; A  setReadOnly(Z)V R getLocalizedMessage()Ljava/lang/String; H8(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; replicaURLsetMasterVerificationTimestamp()Ljava/sql/Timestamp; 5 executeUpdateEx'(Ljava/lang/String;Ljava/lang/String;)I 5 getSQLValueTSExM(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)Ljava/sql/Timestamp; $org/adempiere/exceptions/DBExceptionGlastTse1&Lorg/adempiere/exceptions/DBException;closeReadReplicaStatement(Ljava/sql/Statement;)V java/sql/Statement 3 getConnection A zGstLjava/sql/Statement; setUserPass Connection org/compiere/util/Ini ? getProperty[ _ indexOf(Ljava/lang/String;)I _ length()I _  substring(II)Ljava/lang/String;[,] _ split'(Ljava/lang/String;)[Ljava/lang/String;[=]  ?unescapeUID _ equalsIgnoreCase(Ljava/lang/String;)ZPWD org/compiere/model/MSystem q isSecurePropsADEMPIERE_DB_PASSWORD ?getVar java/util/logging/Level SEVERELjava/util/logging/Level; java/lang/Exception toString  C(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V attributespairs[Ljava/lang/String;pairpairComponentskeyvalueLjava/lang/Exception;&eq;= _ replaceD(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;,,DB_READ_REPLICA_URLS org/compiere/model/MSysConfig  ?getValue "$#org/compiere/util/Util %&isEmpty(Ljava/lang/String;Z)Z(.DB_READ_REPLICA_NORMAL_TIMEOUT_IN_MILLISECONDS * +, getIntValue(Ljava/lang/String;I)I.%DB_READ_REPLICA_NORMAL_MAX_ITERATIONS 0  2 465org/compiere/util/Env 78getCtx()Ljava/util/Properties; : ;<get4(Ljava/util/Properties;)Lorg/compiere/model/MSystem; > ? getDBAddressAjava/util/ArrayList @+D\| _F GtrimI4org/compiere/util/DBReadReplica$URLReplicaConnection HK )L(Ljava/lang/String;I)V NPOjava/util/List QRadd(Ljava/lang/Object;)Z TVUjava/util/Collections WXsort(Ljava/util/List;)V NZ [\iterator()Ljava/util/Iterator; ^`_java/util/Iterator pa()Ljava/lang/Object; Hc dqisUsable Hf g getReplicaURL H j Hl m setUsable Ho pq setConnection(Ljava/sql/Connection;)V s _u vRequalsG y cdG | }~before(Ljava/sql/Timestamp;)Z ^ qhasNext H(I)Ljava/lang/String; java/lang/Thread sleep(J)VAAbandoning replicas: none usable or max wait reached without sync Gjava/lang/InterruptedExceptionreplicaURLsConfigmasterDBAddress urlConnListLjava/util/List; replicaURLsindexiurc6Lorg/compiere/util/DBReadReplica$URLReplicaConnection;usedReplicaURLretConnurlConnreplicaDBAddress noMoreUsablesZLocalVariableTypeTableHLjava/util/List; SourceFileDBReadReplica.javaBootstrapMethods $java/lang/invoke/StringConcatFactory H(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite;/Error preparing statement in replica -> SQL = *Could not get a connection to , cause = /Could not sync dbreplicasyncverifier, cause = 3Error closing the read replica statement, cause =  -  1Could not get replica verification timestamp -> .Waiting  milliseconds for replication to syncCCould not close connection statement on replica, URL = , cause = %Using replica for connection, URL =  InnerClasses%java/lang/invoke/MethodHandles$Lookupjava/lang/invoke/MethodHandlesLookupURLReplicaConnection NestMembers!        J  A%'+,0 3()/**')( ,- ./D0::74*:K*@::%*FI:MYO #&R'* ABC EF#G(H4I7JAM(HDTDUDVDW?XY<Z[(\]^&__AaR cdGLMN* eL+hM,l$,rtNWN,+x:,+x,+x-(+R.6'>QRSUVWX(Y,Z.\6[8\=]@\E^(*GXYE|[C}~A^+AamRJ  GLMN*eL+hM,l$,NWN,+x:,+x,+x-(+R.6'>bcdfghi(j,k.m6l8m=n@mEo(*GXYE[C~A^+Aam_RJ  2L**L+M%*,IL+R'tvwxy.z0|( 20XY\]^_AR +K W KL%+IK*' ')()^ t*L%+I R' (\]^NR   ¸K**ɶ`*dK*׶L+Y:6>O2M,ݶ:2: 2ߧ: )#L%*++'N &->FLakp}(H-r>DF< L6 a! \ ^^ +_  #_ _  _A___  _ ?J*K*K*' (   23iK*!')<-)=/1N39=:@YB:*C:666 2 2E:  `p6HY J:  MW  Ͳ`S: : 6 2Y:  ]H:  b e: h: b i:  kr nr:t%wI kDx:%zI k"-{:  e:  C d6 Y:]H:  b 6  ) d%IW   %IY: N ]H:  h:  3   $ :% eI  % I )03R'NS#&*5>GJOU_jw    "#$(%.&1)8*=+J,P-S0\2_4d5h6o7r|;<?@ABC@GHJLMNTUX YZ[\&])_0`5aJXTeYffg(bN(#F.*?54>+G"JOR9 _" w   Y 8  XYa8:U   ? 8XY 5\] >+^_C __N ._A __N _A^__N _AH^!_A -_! __N _A^ __N _A__N _A^ __N _A[ __N _A^__N _AH^AIR __N _A^ __N _A> H H