
Apache Dubbo GitHub рдкрд░ рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рдЬрд╛рд╡рд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рдФрд░ рдпрд╣ рдЖрд╢реНрдЪрд░реНрдп рдХреА рдмрд╛рдд рдирд╣реАрдВ рд╣реИред рдпрд╣ 8 рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЙрдЪреНрдЪ рдкреНрд░рджрд░реНрд╢рди рд╡рд╛рд▓реЗ рдЖрд░рдкреАрд╕реА рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдмреЗрд╢рдХ, рдЙрдирдХреЗ рдХреЛрдб рдореЗрдВ рдЕрдзрд┐рдХрд╛рдВрд╢ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рддрдп рд╣реИрдВ рдФрд░ рдХреЛрдб рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдЙрдЪреНрдЪ рд╕реНрддрд░ рдкрд░ рдмрдиреА рд╣реБрдИ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕реНрдЯреИрдЯрд┐рдХ рдХреЛрдб рдПрдирд╛рд▓рд╛рдЗрдЬрд╝рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдРрд╕реА рджрд┐рд▓рдЪрд╕реНрдк рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рд╣рдо рдХреНрдпрд╛ рдЦреЛрдЬрдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣реЗред
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕реНрдЯреИрдЯрд┐рдХ рдХреЛрдб рдПрдирд╛рд▓рд╛рдЗрдЬрд░ рдЖрдИрдЯреА рдмрд╛рдЬрд╛рд░ рдореЗрдВ 10 рд╕реЗ рдЕрдзрд┐рдХ рд╡рд░реНрд╖реЛрдВ рд╕реЗ рдореМрдЬреВрдж рд╣реИ рдФрд░ рдпрд╣ рдПрдХ рдмрд╣реБрдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдФрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рд▓рд╛рдЧреВ рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╕рдорд╛рдзрд╛рди рд╣реИред рдлрд┐рд▓рд╣рд╛рд▓, рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд╕реА, рд╕реА ++, рд╕реА #, рдЬрд╛рд╡рд╛ рднрд╛рд╖рд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╡рд┐рдВрдбреЛрдЬ, рд▓рд┐рдирдХреНрд╕ рдФрд░ рдореИрдХрдУрдПрд╕ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдПрдХ рднреБрдЧрддрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдмреА 2 рдмреА рд╕рдорд╛рдзрд╛рди рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рднрд┐рдиреНрди рдХрдВрдкрдирд┐рдпреЛрдВ рдореЗрдВ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЯреАрдореЛрдВ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╡рд┐рддрд░рдг рдХрд┐рдЯ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рдФрд░
рдпрд╣рд╛рдВ рдкрд░реАрдХреНрд╖рдг рдХреБрдВрдЬреА
рдХрд╛ рдЕрдиреБрд░реЛрдз
рдХрд░реЗрдВ ред
рдЦреБрд▓реЗ рд╕реНрд░реЛрдд рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдпрд╛ рдпрджрд┐ рдЖрдк рдПрдХ рдЫрд╛рддреНрд░ рд╣реИрдВ, рддреЛ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдХрд╛ рдореБрдлреНрдд рдореЗрдВ рдЙрдкрдпреЛрдЧ
рдХрд░рдиреЗ рдХреЗ рд╡рд┐рдХрд▓реНрдк рднреА рд╣реИрдВред
рдЕрдкрд╛рдЪреЗ рдбрдмреНрдмреВ: рдпрд╣ рдХреНрдпрд╛ рд╣реИ рдФрд░ рдпрд╣ рдХреНрдпрд╛ рдЦрд╛рддрд╛ рд╣реИ?
рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рд▓рдЧрднрдЧ рд╕рднреА рдмрдбрд╝реЗ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╕рд┐рд╕реНрдЯрдо
рд╡рд┐рддрд░рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдпрджрд┐ рдПрдХ рд╡рд┐рддрд░рд┐рдд рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдХрдо рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рдордп рдФрд░ рд╕рдВрдЪрд╛рд░рд┐рдд рдбреЗрдЯрд╛ рдХреА рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдХрдо рдорд╛рддреНрд░рд╛ рдХреЗ рд╕рд╛рде рджреВрд░рджрд░рд╛рдЬ рдХреЗ рдШрдЯрдХреЛрдВ рдХреЗ рдмреАрдЪ рдПрдХ рд╕рдВрд╡рд╛рджрд╛рддреНрдордХ рд╕рдВрдмрдВрдз рд╣реИ, рддреЛ рдпрд╣
рдЖрд░рдкреАрд╕реА (рджреВрд░рд╕реНрде рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЙрд▓) рдкрд░реНрдпрд╛рд╡рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рдХрд╛рд░рдг рд╣реИред
рдЕрдкрд╛рдЪреЗ рдбрдмреНрдмреВ рдПрдХ рдЙрдЪреНрдЪ-рдкреНрд░рджрд░реНрд╢рди, рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рдЬрд╛рд╡рд╛-рдЖрдзрд╛рд░рд┐рдд
рдЖрд░рдкреАрд╕реА (рджреВрд░рд╕реНрде рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЙрд▓) рд╡рд╛рддрд╛рд╡рд░рдг рд╣реИред рдХрдИ рдЖрд░рдкреАрд╕реА рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде, рдбрдмрдмреЛ рдЙрди рддрд░реАрдХреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реЗрд╡рд╛ рдмрдирд╛рдиреЗ рдХреЗ рд╡рд┐рдЪрд╛рд░ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рдЬрд┐рдиреНрд╣реЗрдВ рдЕрдкрдиреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рджреВрд░рд╕реНрде рд░реВрдк рд╕реЗ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рд╡рд╛рдкрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рдкрд░, рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЙрд▓реНрд╕ рдХреЛ рдкреНрд░реЛрд╕реЗрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрдмрдмреЛ рд╕рд░реНрд╡рд░ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд╛рдЗрдб рдкрд░ рдПрдХ рд╕реНрдЯрдм рд╣реИ рдЬреЛ рд╕рд░реНрд╡рд░ рдХреЗ рд╕рдорд╛рди рддрд░реАрдХреЗ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдбрдмреНрдмреВ рддреАрди рдкреНрд░рдореБрдЦ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдлреНрд░рдВрдЯ-рдПрдВрдб рд░рд┐рдореЛрдЯ рдХреЙрд▓рд┐рдВрдЧ, рдлреЙрд▓реНрдЯ рдЯреЙрд▓рд░реЗрдВрд╕ рдФрд░ рд▓реЛрдб рдмреИрд▓реЗрдВрд╕рд┐рдВрдЧ, рд╕рд╛рде рд╣реА рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкрдВрдЬреАрдХрд░рдг рдФрд░ рд╕реЗрд╡рд╛рдУрдВ рдХреА рдЦреЛрдЬ рд╢рд╛рдорд┐рд▓ рд╣реИред
рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП рдЪрд░рдгреЛрдВ рдХрд╛ рдХреНрд░рдо рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдЕрдзрд┐рдХ рд╕рдордп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ:
- рдЧрд┐рдЯрд╣рдм рдХреЗ рд╕рд╛рде рдЕрдкрд╛рдЪреЗ рдбрдмреНрдмреВ рдорд┐рд▓рд╛;
- рдореИрдВрдиреЗ рдЬрд╛рд╡рд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдФрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╢реБрд░реВ рдХрд┐рдпрд╛;
- рдореБрдЭреЗ рдПрдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдкреНрд░рд╛рдкреНрдд рд╣реБрдИ, рдЗрд╕рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдпрд╛ рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рдорд╛рдорд▓реЛрдВ рдкрд░ рдкреНрд░рдХрд╛рд╢ рдбрд╛рд▓рд╛ред
рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рдкрд░рд┐рдгрд╛рдо: рдЙрдЪреНрдЪ рдФрд░ рдордзреНрдпрдо рдЖрддреНрдорд╡рд┐рд╢реНрд╡рд╛рд╕ рдХреЗ рд╕реНрддрд░ (рдХреНрд░рдорд╢рдГ рдФрд░ 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()) {
IsPreferIPV6Address рд╡рд┐рдзрд┐ред
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])) {
If-else-if рдХреА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдПрдХ
"*" рдЪреЗрдХ рд╣реЛрддрд╛ рд╣реИ
ред рдмрд░рд╛рдмрд░ (рдореБрдЦреМрдЯрд╛ [i]) || рдореБрдЦреМрдЯрд╛ [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; } ....
рд╕рдВрджреЗрд╢ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдирд╛
! = 302 рд▓рд╛рдЗрди рдкрд░
Null && message.length> 0 рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред рдЪреЗрдХ рд╕реЗ рдкрд╣рд▓реЗ, рд▓рд╛рдЗрди 302 рдЪреЗрдХ:
if (message == null || message.length == 0) { return NEED_MORE_INPUT; }
рдпрджрд┐ рд╕рддреНрдпрд╛рдкрди рдХреА рд╢рд░реНрдд рдкреВрд░реА рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рддреЛ рд╣рдореЗрдВ рдкрддрд╛ рдЪрд▓ рдЬрд╛рдПрдЧрд╛ рдХрд┐
рд╕рдВрджреЗрд╢ рд╢реВрдиреНрдп рдирд╣реАрдВ рд╣реИ рдФрд░ рдЗрд╕рдХреА рд▓рдВрдмрд╛рдИ 0. рдирд╣реАрдВ рд╣реИред рдпрд╣ рдЗрд╕ рдЬрд╛рдирдХрд╛рд░реА рд╕реЗ рд╣реИ рдХрд┐ рдЗрд╕рдХреА рд▓рдВрдмрд╛рдИ рд╢реВрдиреНрдп рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ (рдХреНрдпреЛрдВрдХрд┐ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА
рд▓рдВрдмрд╛рдИ рдПрдХ рдЛрдгрд╛рддреНрдордХ рд╕рдВрдЦреНрдпрд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИ)ред рд▓рд╛рдЗрди 302 рд╕реЗ рдкрд╣рд▓реЗ рдХреЗ рд╕реНрдерд╛рдиреАрдп рдЪрд░
рд╕рдВрджреЗрд╢ рдХреЛ рдХреЛрдИ рдорд╛рди рдирд╣реАрдВ рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд▓рд╛рдЗрди 302 рдореЗрдВ
рд╕рдВрджреЗрд╢ рдЪрд░ рдХрд╛ рдореВрд▓реНрдп рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рджрд┐рдП рдЧрдП рдХреЛрдб рдореЗрдВ рд╣реИред рдЗрд╕ рд╕рдм рд╕реЗ рд╣рдо рдпрд╣ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐
рд╕рдВрджреЗрд╢! = Null && message.length> 0 рд╣рдореЗрд╢рд╛
рд╕рддреНрдп рд╣реЛрдЧрд╛ , рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐
рдЕрдиреНрдп рдмреНрд▓реЙрдХ рдореЗрдВ рдХреЛрдб рдХрднреА рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
рдПрдХ рдЕрд╕рдВрд╡реИрдзрд╛рдирд┐рдХ рд╕рдВрджрд░реНрдн рдлрд╝реАрд▓реНрдб рдХрд╛ рдорд╛рди рд╕реЗрдЯ рдХрд░рдирд╛
V6007 рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ '! ShouldExport ()' рд╣рдореЗрд╢рд╛ рдЭреВрдареА рд╣реЛрддреА рд╣реИред ServiceConfig.java (371)
public synchronized void export() { checkAndUpdateSubConfigs(); if (!shouldExport()) {
ServiceConfig рд╡рд░реНрдЧ рдХреА
shouldExport рд╡рд┐рдзрд┐
getExport рд╡рд┐рдзрд┐ рдХреЛ рдЙрд╕реА рдХрдХреНрд╖рд╛ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреА рд╣реИред
private boolean shouldExport() { Boolean export = getExport();
GetExport рд╡рд┐рдзрд┐,
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 Method,
AbstractServiceConfig рдХреНрд▓рд╛рд╕ рдХреЛ
рдПрдХреНрд╕рдЯреЗрдВрдб рдХрд░рдиреЗ рд╡рд╛рд▓рд╛
рд╣рдореЗрд╢рд╛ рд╕реБрд╕реНрдд рд░рд╣реЗрдЧрд╛ред рд▓реМрдЯрд╛рдпрд╛ рдЧрдпрд╛ рдореВрд▓реНрдп
ServiceConfig рд╡рд░реНрдЧ рдХреЗ
shouldExport рд╡рд┐рдзрд┐ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП
shouldExport рд╡рд┐рдзрд┐ рд╣рдореЗрд╢рд╛
рд╕рд╣реА рд▓реМрдЯреЗрдЧреАред рд╕рдЪ рд▓реМрдЯрдиреЗ рдХреЗ рдХрд╛рд░рдг, рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдореВрд▓реНрдп
! 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('/'));
LastIndexOf рдлрд╝рдВрдХреНрд╢рди рдХрд╛
рдкрд░рд┐рдгрд╛рдо рджреВрд╕рд░реЗ рдкреИрд░рд╛рдореАрдЯрд░ рджреНрд╡рд╛рд░рд╛
рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдлрд╝рдВрдХреНрд╢рди рдХреЛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рджреВрд╕рд░рд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдПрдХ рдирдХрд╛рд░рд╛рддреНрдордХ рд╕рдВрдЦреНрдпрд╛ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рд╣рд╛рд▓рд╛рдВрдХрд┐
lastIndexOf -1 рдХреЛ рд╡рд╛рдкрд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рдпрд╣ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдорд╛рди рдирд╣реАрдВ рдкрд╛рддрд╛ рд╣реИред рдпрджрд┐
рд╕рдмрд╕реНрдЯреНрд░рд┐рдВрдЧ рд╡рд┐рдзрд┐ рдХрд╛ рджреВрд╕рд░рд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╣рд▓реЗ (-1 <0) рд╕реЗ рдХрдо рд╣реИ, рддреЛ рдПрдХ
StringIndexOutOfBoundsException рдХреЛ
рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рддреНрд░реБрдЯрд┐ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ
lastIndexOf рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдП рдЧрдП рдкрд░рд┐рдгрд╛рдо рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдпрд╣ рд╕рд╣реА рд╣реИ (рдХрдо рд╕реЗ рдХрдо рдирдХрд╛рд░рд╛рддреНрдордХ рдирд╣реАрдВ), рддреЛ рдЗрд╕реЗ
рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдкрд╛рд╕ рдХрд░реЗрдВред
рдЕрдкреНрд░рдпреБрдХреНрдд рдЪрдХреНрд░ рдХрд╛рдЙрдВрдЯрд░
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 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рд╢рд╛рдпрдж рдпрд╣ рд╕рд░рдгреА рдХреЗ рддрддреНрд╡реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реВрдЪрдХрд╛рдВрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдерд╛, рд▓реЗрдХрд┐рди рд╡реЗ рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЕрдирджреЗрдЦреА рдирд╣реАрдВ рдХреА рдереАред
рдЕрд░реНрдерд╣реАрди рдХрд░рддреЗ-рдХрд░рддреЗ
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 рдХреЗ рд▓рд┐рдП рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдирд┐рд╖реНрдХрд░реНрд╖
рдЬрд╛рд╡рд╛ рдореЗрдВ
рдЖрд░рдкреАрд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рд╡реНрдпрдХреНрддрд┐ рдиреЗ рд╢рд╛рдпрдж рдЕрдкрд╛рдЪреЗ рдбрдмреНрдмреВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реБрдирд╛ рд╣реИред рдпрд╣ рдПрдХ рд▓реЛрдХрдкреНрд░рд┐рдп рдУрдкрди рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХрдИ рдбреЗрд╡рд▓рдкрд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд▓рдВрдмрд╛ рдЗрддрд┐рд╣рд╛рд╕ рдФрд░ рдХреЛрдб рд╣реИред рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдЙрддреНрдХреГрд╖реНрдЯ рдЧреБрдгрд╡рддреНрддрд╛ рдХрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХрдИ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛ред рдЗрд╕рд╕реЗ рд╣рдо рдпрд╣ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдордзреНрдпрдо рдФрд░ рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рднрд▓реЗ рд╣реА рдЖрдкрдХрд╛ рдХреЛрдб рдХрд┐рддрдирд╛ рд╕рд╣реА рд╣реЛред
рдиреЛрдЯред рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдмрд╛рд░ рдХреЗ рдЪреЗрдХ рдПрдХ рд╕реНрдерд┐рд░ рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЧрд▓рдд рддрд░реАрдХрд╛ рд╣реИред рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдХреЛ
рдпрд╣рд╛рдВ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛
рд╣реИ ред рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд╛ рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ!
рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдорд╣рд╛рди рдЙрдкрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЕрдкрд╛рдЪреЗ рдбрдмреНрдмреВ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рд▓реЗрдЦ рдЖрдкрдХреЛ рдХреЛрдб рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ред рд▓реЗрдЦ рдХреЛрдб рдХреЗ рд╕рднреА рд╕рдВрджрд┐рдЧреНрдз рд╡рд░реНрдЧреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдпрд╣ рдмреЗрд╣рддрд░ рд╣реИ рдХрд┐ рд╡реЗ рдЕрдкрдиреЗ рджрдо рдкрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ рдФрд░ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░реЗрдВред

рдпрджрд┐ рдЖрдк рдЗрд╕ рд▓реЗрдЦ рдХреЛ рдЕрдВрдЧреНрд░реЗрдЬреА рдмреЛрд▓рдиреЗ рд╡рд╛рд▓реЗ рджрд░реНрд╢рдХреЛрдВ рдХреЗ рд╕рд╛рде рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рдЕрдиреБрд╡рд╛рдж рдХреЗ рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ: рд╡рд╛рд▓реЗрд░реА рдХреЛрдорд╛рд░реЛрд╡ред
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕реНрдЯреЗрдЯрд┐рдХ рдХреЛрдб рдПрдирд╛рд▓рд╛рдЗрдЬрд░ рджреНрд╡рд╛рд░рд╛ рдЕрдкрд╛рдЪреЗ рдбрдмреНрдмреЛ рдЖрд░рдкреАрд╕реА рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг ред