
Apache Dubbo GitHub рдкрд░ рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рдЬрд╛рд╡рд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рдпрд╣ рдЖрд╢реНрдЪрд░реНрдп рдХреА рдмрд╛рдд рдирд╣реАрдВ рд╣реИред рдпрд╣ 8 рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдЗрд╕реЗ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЙрдЪреНрдЪ рдкреНрд░рджрд░реНрд╢рди рд╡рд╛рд▓реЗ рдЖрд░рдкреАрд╕реА рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдмреЗрд╢рдХ, рдЗрд╕рдХреЗ рдХреЛрдб рдХреЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдмрдЧ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рддрдп рдХрд┐рдП рдЧрдП рд╣реИрдВ рдФрд░ рдХреЛрдб рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдЙрдЪреНрдЪ рд╕реНрддрд░ рдкрд░ рдмрдиреА рд╣реБрдИ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕реНрдЯреИрдЯрд┐рдХ рдХреЛрдб рдПрдирд╛рд▓рд╛рдЗрдЬрд╝рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдРрд╕реА рджрд┐рд▓рдЪрд╕реНрдк рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдирд┐рдХрд▓рд╛ред
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕реНрдЯреИрдЯрд┐рдХ рдХреЛрдб рдПрдирд╛рд▓рд╛рдЗрдЬрд░ рдЖрдИрдЯреА рдмрд╛рдЬрд╛рд░ рдкрд░ рд▓рдЧрднрдЧ 10 рд╡рд░реНрд╖реЛрдВ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рддрдХ рд░рд╣рд╛ рд╣реИ рдФрд░ рдпрд╣ рдПрдХ рдмрд╣реБрдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдФрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╕рдорд╛рдзрд╛рди рд╣реИред рдлрд┐рд▓рд╣рд╛рд▓, рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд╕реА, рд╕реА ++, рд╕реА #, рдЬрд╛рд╡рд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╡рд┐рдВрдбреЛрдЬ, рд▓рд┐рдирдХреНрд╕ рдФрд░ рдореИрдХрдУрдПрд╕ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдПрдХ рдмреА 2 рдмреА-рд╕рдорд╛рдзрд╛рди рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рднрд┐рдиреНрди рдХрдВрдкрдирд┐рдпреЛрдВ рдореЗрдВ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЯреАрдореЛрдВ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рд╡рд┐рддрд░рдг рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдФрд░
рдпрд╣рд╛рдВ рдкрд░реАрдХреНрд╖рдг рдХреБрдВрдЬреА
рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд
рд╣реИ ред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛
рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ рдХрд┐ рдЖрдк рдЦреБрд▓реЗ рд╕реНрд░реЛрдд рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдореБрдлреНрдд рдХреЗ рд▓рд┐рдП рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдпрджрд┐ рдЖрдк рдПрдХ рдЫрд╛рддреНрд░ рд╣реИрдВред
Apache Dubbo: рдпрд╣ рдХреНрдпрд╛ рд╣реИ рдФрд░ рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ
рдЖрдЬрдХрд▓, рд▓рдЧрднрдЧ рд╕рднреА рдмрдбрд╝реЗ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╕рд┐рд╕реНрдЯрдо
рд╡рд┐рддрд░рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдпрджрд┐ рдПрдХ рд╡рд┐рддрд░рд┐рдд рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдХрдо рд╡рд┐рд▓рдВрдмрддрд╛ рдХреЗ рд╕рд╛рде рджреВрд░рджрд░рд╛рдЬ рдХреЗ рдШрдЯрдХреЛрдВ рдХреЗ рдмреАрдЪ рдПрдХ рд╕рдВрд╡рд╛рджрд╛рддреНрдордХ рд╕рдВрдмрдВрдз рд╣реИ рдФрд░ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдХрдо рдбреЗрдЯрд╛ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИ, рддреЛ рдпрд╣
рдЖрд░рдкреАрд╕реА (рджреВрд░рд╕реНрде рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЙрд▓) рдкрд░реНрдпрд╛рд╡рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдордЬрдмреВрдд рдХрд╛рд░рдг рд╣реИред
Apache Dubbo рдЬрд╛рд╡рд╛ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдУрдкрди рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреЗ рд╕рд╛рде рдПрдХ рдЙрдЪреНрдЪ-рдкреНрд░рджрд░реНрд╢рди
RPC (рджреВрд░рд╕реНрде рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЙрд▓) рд╡рд╛рддрд╛рд╡рд░рдг рд╣реИред рдХрдИ рдЕрдиреНрдп рдЖрд░рдкреАрд╕реА рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рдорд╛рди, рдбрдмрдмреЛ рдХреБрдЫ рддрд░реАрдХреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╕реЗрд╡рд╛ рдмрдирд╛рдиреЗ рдХреЗ рд╡рд┐рдЪрд╛рд░ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рдЬрд┐рд╕реЗ рджреВрд░рд╕реНрде рд░реВрдк рд╕реЗ рдЙрдирдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдФрд░ рд╡рд╛рдкрд╕реА рдореВрд▓реНрдпреЛрдВ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рдкрд░, рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЧреНрд░рд╛рд╣рдХ рдкреВрдЫрддрд╛рдЫ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдбрдмрдмреЛ рдХрд╛ рд╕рд░реНрд╡рд░ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХреНрд▓рд╛рдЗрдВрдЯ рдХреА рддрд░рдл, рдПрдХ рд╕реНрдЯрдм рд╣реИ рдЬреЛ рд╕рд░реНрд╡рд░ рдХреЗ рд╕рдорд╛рди рддрд░реАрдХреЗ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдбрдмреНрдмреВ рддреАрди рдкреНрд░рдореБрдЦ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд░рд┐рдореЛрдЯ рдХреЙрд▓рд┐рдВрдЧ, рдЕрд╕рдлрд▓-рд╕рд╣рд┐рд╖реНрдгреБрддрд╛ рдФрд░ рд▓реЛрдб рд╕рдВрддреБрд▓рди, рд╕рд╛рде рд╣реА рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкрдВрдЬреАрдХрд░рдг рдФрд░ рд╕реЗрд╡рд╛ рдЦреЛрдЬ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред
рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд╛ рдХрд╛рд░реНрдп рдХреНрд░рдо рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ рдФрд░ рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╕рдордп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ:
- GitHub рд╕реЗ Apache Dubbo рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛;
- рд╕реНрдЯрд╛рд░реНрдЯ-рдЕрдк рдЬрд╛рд╡рд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЗ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдФрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЪрд▓рд╛рдпрд╛;
- рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдорд┐рд▓реА, рдЗрд╕рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХреА рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рдорд╛рдорд▓реЛрдВ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд┐рдпрд╛ред
рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рдкрд░рд┐рдгрд╛рдо: рдирд┐рд╢реНрдЪрд┐рддрддрд╛ рдХреЗ рдЙрдЪреНрдЪ рдФрд░ рдордзреНрдпрдо рд╕реНрддрд░ (рдХреНрд░рдорд╢рдГ 46 рдФрд░ 27) рдХреА 73 рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдБ 4000+ рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд╛рд░реА рдХреА рдЧрдИрдВ, рдЬреЛ рдХреЛрдб рдЧреБрдгрд╡рддреНрддрд╛ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдВрдХреЗрддрдХ рд╣реИред
рд╕рднреА рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдБ рддреНрд░реБрдЯрд┐рдпрд╛рдБ рдирд╣реАрдВ рд╣реИрдВред рдпрд╣ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдкрд░рд┐рдгрд╛рдо рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рд╕реАрдзреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдХрд┐рд╕реА рдХреЛ рдЗрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЙрд╕рдХреЗ рдмрд╛рдж, рдЖрдк рдЭреВрдареА рд╕рдХрд╛рд░рд╛рддреНрдордХ (
рдЙрджрд╛рд╣рд░рдг ) рдХреЗ рдХрд╛рдлреА рдХрдо рдкреНрд░рддрд┐рд╢рдд рдХреА рдЙрдореНрдореАрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдореИрдВрдиреЗ 9 рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ (7 рдЙрдЪреНрдЪ рдФрд░ 2 рдордзреНрдпрдо) рдкрд░ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛, рдкрд░реАрдХреНрд╖рдг рдХреЗ рд╕рд╛рде рдлрд╛рдЗрд▓реЛрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рддред
рдирддреАрдЬрддрди, рдореЗрд░реЗ рдкрд╛рд╕ рдХрдо рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЪреЗрддрд╛рд╡рдиреА рдереА, рдЬрд┐рд╕рдореЗрдВ рдЧрд▓рдд рд╕рдХрд╛рд░рд╛рддреНрдордХрддрд╛ рднреА рд╢рд╛рдорд┐рд▓ рдереА, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред рд▓реЗрдЦ рдореЗрдВ рдЖрдЧреЗ рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде рд╕рднреА 73 рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдореЗрдВ рджреЗрд░реА рд▓рдВрдмреА, рд╣рд╛рд╕реНрдпрд╛рд╕реНрдкрдж рдФрд░ рдердХрд╛рдК рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЦреБрд╢ рд░рд╣рдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рдХреЛ рдЪреБрдирд╛ред
рдЬрд╛рд╡рд╛ рдореЗрдВ рдмрд╛рдЗрдЯ рд╕рд╛рдЗрди рдХрд░реЗрдВ
V6007 рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ 'endKey [i] <0xff' рд╣рдореЗрд╢рд╛ рд╕рдЪ рд╣реЛрддреА рд╣реИред OptionUtil.java (32)
public static final ByteSequence prefixEndOf(ByteSequence prefix) { byte[] endKey = prefix.getBytes().clone(); for (int i = endKey.length - 1; i >= 0; i--) { if (endKey[i] < 0xff) {
рдмрд╛рдЗрдЯ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдорд╛рди (-128 рд╕реЗ 127 рдХрд╛ рдорд╛рди) рдХреА рддреБрд▓рдирд╛ 0xff (255) рдХреЗ рдорд╛рди рд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдпрд╣ рдзреНрдпрд╛рди рдореЗрдВ рдирд╣реАрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЬрд╛рд╡рд╛ рдореЗрдВ
рдмрд╛рдЗрдЯ рдкреНрд░рдХрд╛рд░ рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд┐рдП рдЧрдП рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╕реНрдерд┐рддрд┐ рд╣рдореЗрд╢рд╛ рд╕рд╣реА рд╣реЛрдЧреА, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдпрд╣ рдЕрд░реНрдерд╣реАрди рд╣реИред
рдЙрд╕реА рдореВрд▓реНрдпреЛрдВ рдХреА рд╡рд╛рдкрд╕реА
V6007 рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ '.PreferIPV6Address ()' рд╣рдореЗрд╢рд╛ рдЭреВрдареА рд╣реИред NetUtils.java (236)
private static Optional<InetAddress> toValidAddress(InetAddress address) { if (address instanceof Inet6Address) { Inet6Address v6Address = (Inet6Address) address; if (isPreferIPV6Address()) {
рд╡рд┐рдзрд┐
.PreferIPV6Address рд╣реИ ред
static boolean isPreferIPV6Address() { boolean preferIpv6 = Boolean.getBoolean("java.net.preferIPv6Addresses"); if (!preferIpv6) { return false;
ThePreferIPV6Address рд╡рд┐рдзрд┐ рджреЛрдиреЛрдВ рдорд╛рдорд▓реЛрдВ рдореЗрдВ
рдЧрд▓рдд рд╣реИред рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдПрдХ рдбреЗрд╡рд▓рдкрд░ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ рдПрдХ рдорд╛рдорд▓рд╛
рд╕рдЪ рд╣реЛ, рдЕрдиреНрдпрдерд╛ рд╡рд┐рдзрд┐ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред
рд╡реНрдпрд░реНрде рдХреА рдЬрд╛рдБрдЪ
V6007 рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ '! рдореБрдЦреМрдЯрд╛ [i]ред рдЕрд╕рдорд╛рдирддрд╛ (ipAddress [i])' рд╣рдореЗрд╢рд╛ рд╕рдЪ рд╣реИред NetUtils.java (476)
public static boolean matchIpRange(....) throws UnknownHostException { .... for (int i = 0; i < mask.length; i++) { if ("*".equals(mask[i]) || mask[i].equals(ipAddress[i])) { continue; } else if (mask[i].contains("-")) { .... } else if (....) { continue; } else if (!mask[i].equals(ipAddress[i])) {
рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЕрдЧрд░-рдФрд░-рдЕрдЧрд░, рдЪреЗрдХ
"*"ред рдмрд░рд╛рдмрд░ (рдореБрдЦреМрдЯрд╛ [i]) || рдорд╛рд╕реНрдХ [i] .equals (ipAddress [i]) рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рд╢рд░реНрдд рдкреВрд░реА рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рддреЛ рдЕрдЧрд▓рд╛ рдЪреЗрдХ рдЕрдЧрд░ рдФрд░-рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рд╣рдореЗрдВ рдЙрд╕
рдорд╛рд╕реНрдХ рдХреЛ рджрд┐рдЦрд╛рддрд╛ рд╣реИ
[i] рдФрд░
ipAddress [i] рд╕рдорд╛рди рдирд╣реАрдВ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЕрдЧрд░-рдФрд░-рдЕрдЧрд░ рдпрд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЪреЗрдХреЛрдВ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдореЗрдВ рд╣реИ рддреЛ рд╡рд╣
рдорд╛рд╕реНрдХ [i] рдФрд░
ipAddress [i] рдмрд░рд╛рдмрд░ рдирд╣реАрдВ рд╣реИред рдЪреВрдВрдХрд┐
рдорд╛рд╕реНрдХ [i] рдФрд░
ipAddress [i ] рдХреЛ рдХреЛрдИ рдорд╛рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рджреВрд╕рд░рд╛ рдЪреЗрдХ рд╡реНрдпрд░реНрде рд╣реИред
V6007 рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ 'message.length> 0' рд╣рдореЗрд╢рд╛ рд╕рдЪ рд╣реЛрддрд╛ рд╣реИред рдбрд┐рдкреНрд░реЗрд╕реНрдбрдЯреЗрд▓рдиреЗрдЯрдХреЛрдбреЗ.рдЬрд╛рд╡рд╛ (302)
V6007 рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ 'рд╕рдВрджреЗрд╢! = рдирд▓' рд╣рдореЗрд╢рд╛ рд╕рдЪ рд╣реИред рдбрд┐рдкреНрд░реЗрд╕реНрдбрдЯреЗрд▓рдиреЗрдЯрдХреЛрдбреЗ.рдЬрд╛рд╡рд╛ (302)
protected Object decode(.... , byte[] message) throws IOException { .... if (message == null || message.length == 0) { return NEED_MORE_INPUT; } ....
рдЪреЗрдХ
рдореИрд╕реЗрдЬ! = Null && message.length> 0 рд▓рд╛рдЗрди 302 рдореЗрдВ рдмреЗрдорд╛рдиреА рд╣реИред 302 рдкрдВрдХреНрддрд┐ рдореЗрдВ рдЬрд╛рдБрдЪ рд╕реЗ рдкрд╣рд▓реЗ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рддреА рд╣реИ:
if (message == null || message.length == 0) { return NEED_MORE_INPUT; }
рдпрджрд┐ рдЪреЗрдХ рдХреА рд╢рд░реНрдд рдкреВрд░реА рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рддреЛ рд╣рдо рдЬрд╛рдиреЗрдВрдЧреЗ рдХрд┐
рд╕рдВрджреЗрд╢ рд╢реВрдиреНрдп рдирд╣реАрдВ рд╣реИ рдФрд░ рдЗрд╕рдХреА рд▓рдВрдмрд╛рдИ 0. рдХреЗ рдмрд░рд╛рдмрд░ рдирд╣реАрдВ рд╣реИред рдпрд╣ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ рдХрд┐ рдЗрд╕рдХреА рд▓рдВрдмрд╛рдИ 0 рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ (рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рд▓рдВрдмрд╛рдИ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдирдХрд╛рд░рд╛рддреНрдордХ рд╕рдВрдЦреНрдпрд╛)ред рд╕реНрдерд╛рдиреАрдп рд╡реИрд░рд┐рдПрдмрд▓
рд╕рдВрджреЗрд╢ рдХреЛ рд▓рд╛рдЗрди 302 рд╕реЗ рдкрд╣рд▓реЗ рдХреЛрдИ рдорд╛рди рдирд╣реАрдВ рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рд▓рд╛рдЗрди 302 рдореЗрдВ
рд╕рдВрджреЗрд╢ рдЪрд░ рдХрд╛ рдорд╛рди рдКрдкрд░ рджрд┐рдП рдЧрдП рдХреЛрдб рдХреЗ рд╕рдорд╛рди рд╣реИред рдпрд╣ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐
рд╕рдВрджреЗрд╢! = Null && message.length> 0 рд╣рдореЗрд╢рд╛ рд╕рддреНрдп рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдЕрдиреНрдп рдмреНрд▓реЙрдХ рдореЗрдВ рдХреЛрдб рдХрднреА рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
рдПрдХ Uninitialized рд╕рдВрджрд░реНрдн рдлрд╝реАрд▓реНрдб рдХрд╛ рдорд╛рди рд╕реЗрдЯ рдХрд░рдирд╛
V6007 рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ '! ShouldExport ()' рд╣рдореЗрд╢рд╛ рдЭреВрдареА рд╣реЛрддреА рд╣реИред ServiceConfig.java (371)
public synchronized void export() { checkAndUpdateSubConfigs(); if (!shouldExport()) {
ServiceConfig рд╡рд░реНрдЧ рдХреА
shouldExport рд╡рд┐рдзрд┐
getExport рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддреА рд╣реИ, рдЬрд┐рд╕реЗ рдЙрд╕реА рдХрдХреНрд╖рд╛ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
private boolean shouldExport() { Boolean export = getExport();
GetExport рдореЗрдердб,
Abstract AbstractServiceConfig рдХреНрд▓рд╛рд╕ рдХреЗ
getExport рдореЗрдердб рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ
рдмреВрд▓рд┐рдпрди рдЯрд╛рдЗрдк рдХреЗ
рдПрдХреНрд╕рдкреЛрд░реНрдЯ рдлреАрд▓реНрдб рдХрд╛ рдорд╛рди рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдлрд╝реАрд▓реНрдб рдорд╛рди рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ
setExport рд╡рд┐рдзрд┐ рднреА рд╣реИред
protected Boolean export; .... public Boolean getExport() { return export; } .... public void setExport(Boolean export) { this.export = export; }
рдирд┐рд░реНрдпрд╛рдд рдХреНрд╖реЗрддреНрд░ рдХреЛрдб рдореЗрдВ рдХреЗрд╡рд▓
setExport рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
SetExport рд╡рд┐рдзрд┐ рдХреЗрд╡рд▓
рдПрдмреНрд╕рдЯреНрд░реИрдХреНрдЯ AbstractServiceBuilder рд╡рд░реНрдЧ рдХреЗ рдирд┐рд░реНрдорд╛рдг рд╡рд┐рдзрд┐ рдореЗрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ (рдХреЗрд╡рд▓
AbstractServiceConfig рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░) рдпрджрд┐ рдХреНрд╖реЗрддреНрд░ рд╢реВрдиреНрдп рдирд╣реАрдВ рд╣реИред
@Override public void build(T instance) { .... if (export != null) { instance.setExport(export); } .... }
рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рднреА рд╕рдВрджрд░реНрдн рдлрд╝реАрд▓реНрдб
рд╢реВрдиреНрдп рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рд░рдВрдн рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░
рдирд┐рд░реНрдпрд╛рдд рдлрд╝реАрд▓реНрдб рдХреЛ рдХреЛрдИ рдорд╛рди рдЕрд╕рд╛рдЗрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛,
setExport рд╡рд┐рдзрд┐ рдХрднреА рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ред
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк,
ServiceSonfig рдХреНрд▓рд╛рд╕ рдХрд╛
getExport рдореЗрдердб,
AbstractServiceConfig рдХреНрд▓рд╛рд╕ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддреЗ рд╣реБрдП рд╣рдореЗрд╢рд╛ рд╡рд╛рдкрд╕ рд▓реМрдЯреЗрдЧрд╛ред рд░рд┐рдЯрд░реНрди рд╡реИрд▓реНрдпреВ рдХрд╛ рдЙрдкрдпреЛрдЧ
ServiceConfig рдХреНрд▓рд╛рд╕ рдХреЗ
shouldExport рдореЗрдердб рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП
shouldExport method рд╣рдореЗрд╢рд╛
рд╕рд╣реА рд░рд╣реЗрдЧрд╛ред рд╕рдЪ рд▓реМрдЯрдиреЗ рдХреЗ рдХрд╛рд░рдг, рдХреА
! ShouldExport () рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдореВрд▓реНрдп рд╣рдореЗрд╢рд╛ рдЧрд▓рдд рд╣реЛрдЧрд╛ред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ, рдХрд┐
ServiceConfig рд╡рд░реНрдЧ рдХрд╛
рдирд┐рд░реНрдпрд╛рдд рдХреНрд╖реЗрддреНрд░ рдХрднреА рднреА рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдЖрдПрдЧрд╛ рдЬрдм рддрдХ рдХрд┐ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
if (shouldDelay()) { DELAY_EXPORT_EXECUTOR.schedule(this::doExport, getDelay(), ....); } else { doExport(); }
рдЧреИрд░-рдирдХрд╛рд░рд╛рддреНрдордХ рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдорд╛рди
V6009 '
рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди ' рдлрд╝рдВрдХреНрд╢рди '-1' рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬрдмрдХрд┐ рдЧреИрд░-рдирдХрд╛рд░рд╛рддреНрдордХ рдорд╛рди рдЕрдкреЗрдХреНрд╖рд┐рдд рд╣реИред рддрд░реНрдХ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░реЗрдВ: 2. AbstractEtcdClient.java (169)
protected void createParentIfAbsent(String fixedPath) { int i = fixedPath.lastIndexOf('/'); if (i > 0) { String parentPath = fixedPath.substring(0, i); if (categories.stream().anyMatch(c -> fixedPath.endsWith(c))) { if (!checkExists(parentPath)) { this.doCreatePersistent(parentPath); } } else if (categories.stream().anyMatch(c -> parentPath.endsWith(c))) { String grandfather = parentPath .substring(0, parentPath.lastIndexOf('/'));
рдЕрдВрддрд┐рдо
IndexOf рдлрд╝рдВрдХреНрд╢рди рдХрд╛
рдкрд░рд┐рдгрд╛рдо рджреВрд╕рд░реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ
рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рджреВрд╕рд░рд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдПрдХ рдЛрдгрд╛рддреНрдордХ рд╕рдВрдЦреНрдпрд╛ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рднрд▓реЗ рд╣реА
lastIndexOf -1 рд╡рд╛рдкрд╕ рдЖ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рдпрд╣ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдорд╛рдВрдЧ-рдХреЗ рд▓рд┐рдП рдорд╛рди рдирд╣реАрдВ рдкрд╛рддрд╛ рд╣реИред рдпрджрд┐
рд╕рдмрд╕реНрдЯреНрд░рд┐рдВрдЧ рд╡рд┐рдзрд┐ рдХрд╛ рджреВрд╕рд░рд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╣рд▓реЗ (-1 <0) рд╕реЗ рдХрдо рд╣реИ, рддреЛ рдЕрдкрд╡рд╛рдж
StringIndexOutOfBoundsException рдХреЛ рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рддреНрд░реБрдЯрд┐ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЕрдВрддрд┐рдо
IndexOf рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдП рдЧрдП рдкрд░рд┐рдгрд╛рдо рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрджрд┐ рдпрд╣ рд╕рд╣реА рд╣реИ (рдХрдо рд╕реЗ рдХрдо, рдирдХрд╛рд░рд╛рддреНрдордХ рдирд╣реАрдВ), рддреЛ рдЗрд╕реЗ
рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдкрд╛рд╕ рдХрд░реЗрдВред
рдЕрдкреНрд░рдпреБрдХреНрдд рд▓реВрдк рдХрд╛рдЙрдВрдЯрд░
V6016 рд▓реВрдк рдХреЗ рдЕрдВрджрд░ рдПрдХ рд╕реНрдерд┐рд░ рд╕реВрдЪрдХрд╛рдВрдХ рджреНрд╡рд╛рд░рд╛ 'рдкреНрд░рдХрд╛рд░' рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рддрддреНрд╡ рддрдХ рд╕рдВрджрд┐рдЧреНрдз рдкрд╣реБрдВрдЪред RpcUtils.java (153)
public static Class<?>[] getParameterTypes(Invocation invocation) { if ($INVOKE.equals(invocation.getMethodName()) && invocation.getArguments() != null && invocation.getArguments().length > 1 && invocation.getArguments()[1] instanceof String[]) { String[] types = (String[]) invocation.getArguments()[1]; if (types == null) { return new Class<?>[0]; } Class<?>[] parameterTypes = new Class<?>[types.length]; for (int i = 0; i < types.length; i++) { parameterTypes[i] = ReflectUtils.forName(types[0]);
рд▓реВрдк рдХреЗ
рд▓рд┐рдП , рд╕рд░рдгреА
рдкреНрд░рдХрд╛рд░ рдХреЗ рддрддреНрд╡ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ
0 рдирд┐рд░рдВрддрд░ рд╕реВрдЪрдХрд╛рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╕рд░рдгреА рддрддреНрд╡реЛрдВ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реВрдЪрдХрд╛рдВрдХ рдХреЗ рд░реВрдк рдореЗрдВ
i рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд▓реЗрдЦрдХреЛрдВ рдиреЗ рдЗрд╕реЗ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рд╣реИред
рд╡реНрдпрд░реНрде рдХрд░рддреЗ-рдХрд░рддреЗ
V6019 рдЕрдиреБрдкрд▓рдмреНрдз рдХреЛрдб рдХрд╛ рдкрддрд╛ рдЪрд▓рд╛ред рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдореМрдЬреВрдж рд╣реЛред рдЧреНрд░рд┐рдЬрд╝реНрд▓реА рдХреЛрдбреЗрдХ рдПрдбреЗрдкреНрдЯрд░ред рдЬрд╛рд╡рд╛ (136)
@Override public NextAction handleRead(FilterChainContext context) throws IOException { .... do { savedReadIndex = frame.readerIndex(); try { msg = codec.decode(channel, frame); } catch (Exception e) { previousData = ChannelBuffers.EMPTY_BUFFER; throw new IOException(e.getMessage(), e); } if (msg == Codec2.DecodeResult.NEED_MORE_INPUT) { frame.readerIndex(savedReadIndex); return context.getStopAction(); } else { if (savedReadIndex == frame.readerIndex()) { previousData = ChannelBuffers.EMPTY_BUFFER; throw new IOException("Decode without read data."); } if (msg != null) { context.setMessage(msg); return context.getInvokeAction(); } else { return context.getInvokeAction(); } } } while (frame.readable());
рд▓реВрдк рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐
рдХрд░рддреЗ рд╣реИрдВ -
рдЬрдмрдХрд┐ (рдлреНрд░реЗрдо.рдбреНрд░реЗрдбреЗрдмрд▓ ()) рдЕрдЧрдореНрдп рдХреЛрдб рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд▓реВрдк рдХреЗ рдкрд╣рд▓реЗ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЗ рджреМрд░рд╛рди рд╡рд┐рдзрд┐ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рддреА рд╣реИред рдЕрдЧрд░-рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рд▓реВрдк рдХреЗ рд╢рд░реАрд░ рдореЗрдВ
msg рдЪрд░ рдХреА рдХрдИ рдЬрд╛рдВрдЪреЗрдВ рдХреА рдЬрд╛рддреА рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ,
рдпрджрд┐ рджреЛрдиреЛрдВ рдореЗрдВ рдФрд░
рдЕрдиреНрдп рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╡рд┐рдзрд┐ рд╕реЗ рд╡рд╛рдкрд╕ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдпрд╛ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рд▓реВрдк рдХрд╛ рд╢рд░реАрд░ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕ рд▓реВрдк рдХреЗ рдЙрдкрдпреЛрдЧ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред
рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рд╕реНрд╡рд┐рдЪ рдореЗрдВ
V6067 рджреЛ рдпрд╛ рджреЛ рд╕реЗ рдЕрдзрд┐рдХ рдХреЗрд╕-рд╢рд╛рдЦрд╛рдПрдБ рдПрдХ рд╣реА рдХреНрд░рд┐рдпрд╛ рдХрд░рддреЗ рд╣реИрдВред JVMUtil.java (67), JVMUtil.java (71)
private static String getThreadDumpString(ThreadInfo threadInfo) { .... if (i == 0 && threadInfo.getLockInfo() != null) { Thread.State ts = threadInfo.getThreadState(); switch (ts) { case BLOCKED: sb.append("\t- blocked on " + threadInfo.getLockInfo()); sb.append('\n'); break; case WAITING:
WAITING рдФрд░
TIMED_WAITING рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдореЗрдВ рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рдХреЛрдб рд╣реЛрддрд╛ рд╣реИред рдпрджрд┐ рд╕рдорд╛рди рдХрд╛рд░реНрдп рдХрд┐рдП рдЬрд╛рдиреЗ рд╣реИрдВ, рддреЛ
WAITING рдХреЗрд╕ рдмреНрд▓реЙрдХ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╣рдЯрд╛рдХрд░ рдХреЛрдб рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╡рд╣реА рдХреЛрдб
WAITING рдФрд░
TIMED_WAITING рдХреЗ рд▓рд┐рдП рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛
редрдирд┐рд╖реНрдХрд░реНрд╖
рдЬрд╛рд╡рд╛ рдореЗрдВ
рдЖрд░рдкреАрд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рд╡реНрдпрдХреНрддрд┐ рдиреЗ рд╢рд╛рдпрдж рдЕрдкрд╛рдЪреЗ рдбрдмреНрдмреВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реБрдирд╛ рд╣реИред рдпрд╣ рдХрдИ рдбреЗрд╡рд▓рдкрд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦрд┐рдд рдПрдХ рд▓рдВрдмреА рдХрд╣рд╛рдиреА рдФрд░ рдХреЛрдб рдХреЗ рд╕рд╛рде рдПрдХ рд▓реЛрдХрдкреНрд░рд┐рдп рдУрдкрди рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реИред рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдХреЛрдб рдмрд╣реБрдд рдЕрдЪреНрдЫреА рдЧреБрдгрд╡рддреНрддрд╛ рдХрд╛ рд╣реИ, рдлрд┐рд░ рднреА рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕реНрдереИрддрд┐рдХ рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдЦреЛрдЬрдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛ред рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдордзреНрдпрдо рдФрд░ рдмрдбрд╝реЗ рдЖрдХрд╛рд░ рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рднрд▓реЗ рд╣реА рдЖрдкрдХрд╛ рдХреЛрдб рдХрд┐рддрдирд╛ рд╕рд╣реА рд╣реЛред
рдиреЛрдЯред рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдмрд╛рд░ рдХреЗ рдЪреЗрдХ рдПрдХ рд╕реНрдерд┐рд░ рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЧрд▓рдд рддрд░реАрдХреЗ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдХрд╛ рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг
рдпрд╣рд╛рдВ рдФрд░
рдпрд╣рд╛рдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ред рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд╛ рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ!
рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдЕрджреНрднреБрдд рдЙрдкрдХрд░рдг рдХреЗ рд▓рд┐рдП Apache Dubbo Developers рдХрд╛ рдзрдиреНрдпрд╡рд╛рджред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рд▓реЗрдЦ рдЖрдкрдХреЛ рдХреЛрдб рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ред рд▓реЗрдЦ рдХреЛрдб рдХреЗ рд╕рднреА рд╕рдВрджрд┐рдЧреНрдз рдЯреБрдХрдбрд╝реЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИ рдХрд┐ рд╡реЗ рд╕реНрд╡рдпрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ рдФрд░ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░реЗрдВред