Êþº¾=Ç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/Timestamp„java/lang/ThrowablegetReplicaDBAddress)(Ljava/sql/Connection;)Ljava/lang/String;ˆ DBAddress mŠ ‹? getString stVerifyAddr rsVerifyAddrdbAddr tryConnect)(Ljava/lang/String;)Ljava/sql/Connection; 5’ 8“7(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;¡ H¢8(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;Þ[=] à á?unescapeãåUID _ç èéequalsIgnoreCase(Ljava/lang/String;)ZëPWD íïîorg/compiere/model/MSystem ðq isSecurePropsòADEMPIERE_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 GŸtrimI4org/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)VŒAAbandoning replicas: none usable or max wait reached without sync¡ G�java/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 sync¼CCould not close connection statement on replica, URL = , cause = ¾%Using replica for connection, URL =  InnerClassesÁ%java/lang/invoke/MethodHandles$LookupÃjava/lang/invoke/MethodHandlesLookupURLReplicaConnection NestMembers!        J  A³³³¸³%±'+,0 3()/*·*±')( ,- ./÷D¸0::Æ7¸4*¹:K*¹@:§:²%*ºF¶I:»MY·O¿° #&R'* ABC EF#G(H4I7JAM(HDTDUDVDW?XY<Z[(\]^ÿ&__AaR cdûGLMN* ¹eL+¹hM,¹l™$,r¹tN§WN,+¸x§:,+¸x¿,+¸x-°(+R.6'>QRSUVWX(Y,Z.\6[8\=]@\E^(*GXYE|[C}~A€^ÿ+Aam�RJƒ  …†ûGLMN*¹eL+¹hM,¹l™$,‡¹‰N§WN,+¸x§:,+¸x¿,+¸x-°(+R.6'>bcdfghi(j,k.m6l8m=n@mEo(*GXYEŒ[C�~AŽ^ÿ+Aam_RJƒ  ��©2L*¸‘*²²¹”L+¹˜§M²%*,¶œº ¶IL+°R'tvwxy.z0|( 2£0XY\]^ÿ_AR ¤¥•+K ¸¦W ½¸ªK§L²%+¶®º±¶IK*°¯'�ƒ „…†'‡)‰()²€³´^ÿ�¯ µ¶t*¹·¹¼§L²%+¶œº¾¶I± R'� �‘“(¿À\]^NR ÁÒ ¸²Ç ²Æ±¸ÄK**ɶË`*¶Ïd¶ÓK*×¶ÙL+Y:¾6>§O2M,ݶÙ:2:¾  2¸ß§â:ä¶æ™ ³§ê¶æ™³„¡ÿ±²Ç)¸ì™#ñ¸ó³§L²%²ö*+¶üº+¶±Ÿ¢ý'Nš › œž&Ÿ- >¢F£L¤a¥k¦p§}¨‚ ‹«—¬Ÿ­£®·°(H¥-r>DF< L6 a! £\ ^^ ÿ+_  ÿ#_ _  _A_ü_ÿ_  ÿ_ý á?J*¶K*¶K*°'³ ´µ(   23ºi¸K*¸!™°'ˆ¸)<-¸)=¸/¸1N¸3¸9¶=:»@Y·B:*C¶Ù:6¾66 §2 2¶E:  ²`p6»HY ·J:  ¹MW„  ¡ÿͲ`³²¡³¸S: : 6 §2¹Y: §¹ ¹]ÀH:  ¶bš§¢ ¶e: ¶h:Ç ¶b™ ¸i:Ç  ¶k§r ¶n¸r:¶tš²%ºw¶I ¶k§D¸x:Dz%ºz¶I ¶k§"-¶{™§Æ:  ¶e: §  ¹šÿC Ƨd6 ¹Y:§¹]ÀH:  ¶b™ 6 § ¹šÿß ™§) d¢²%º‚¶I…¸…§W„  ¡þÎ Ç ²%‹¶I¹Y: §N ¹]ÀH:  ¶h:  ǧ3 Æ   ¦§$ ¹¼§:²% ¶e¶œº�¶I ¹šÿ® Ʋ% º޶I °ÇØÛ�)03R'NSðñòóô#ö&ø*ù5û>ýGþJÿOU_jw�‹“›Ÿ ¤ §ª°ÈÐÓÚáîõú  "#$(%.&1)8*=+J,P-S0\2_4d5h6o7r|;�<„?‡@ŸA§BªC­@·G¼H¿JÇLÓMØNÜåTêUóX YZ[\&])_0`5aJXTeYffg(üb‘N(#F.*?²€54’>+“”G"•J–OÑR9— _"£ w ˜™ §Âš ª¿›Y ­8— Ȫœ™ Ú˜£á‘XYa�8:€‡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