PVS-Studio рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЗ рд╕рд╛рде Apache Dubbo рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ RPC рд╕реНрд░реЛрдд рдХреЛрдб рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг

рдЪрд┐рддреНрд░ 2

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) { // <= endKey[i] = (byte) (endKey[i] + 1); return ByteSequence.from(Arrays.copyOf(endKey, i + 1)); } } return ByteSequence.from(NO_PREFIX_END); } 

рдкреНрд░рдХрд╛рд░ рдмрд╛рдЗрдЯ рдХрд╛ рдорд╛рди (-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()) { // <= return Optional.ofNullable(normalizeV6Address(v6Address)); } } if (isValidV4Address(address)) { return Optional.of(address); } return Optional.empty(); } 

IsPreferIPV6Address рд╡рд┐рдзрд┐ред

 static boolean isPreferIPV6Address() { boolean preferIpv6 = Boolean.getBoolean("java.net.preferIPv6Addresses"); if (!preferIpv6) { return false; // <= } 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])) { // <= return false; } } return true; } 

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; } .... //   message  ! .... if (....) { String value = history.get(index); if (value != null) { byte[] b1 = value.getBytes(); if (message != null && message.length > 0) { // <= byte[] b2 = new byte[b1.length + message.length]; System.arraycopy(b1, 0, b2, 0, b1.length); System.arraycopy(message, 0, b2, b1.length, message.length); message = b2; } else { message = b1; } } } .... } 

рд╕рдВрджреЗрд╢ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдирд╛ ! = 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()) { // <= return; } if (shouldDelay()) { .... } else { doExport(); } 

ServiceConfig рд╡рд░реНрдЧ рдХреА shouldExport рд╡рд┐рдзрд┐ getExport рд╡рд┐рдзрд┐ рдХреЛ рдЙрд╕реА рдХрдХреНрд╖рд╛ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреА рд╣реИред

 private boolean shouldExport() { Boolean export = getExport(); // default value is true return export == null ? true : export; } .... @Override public Boolean getExport() { return (export == null && provider != null) ? provider.getExport() : export; } 

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('/')); // <= if (!checkExists(grandfather)) { this.doCreatePersistent(grandfather); } } } } 

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]); // <= } return parameterTypes; } return invocation.getParameterTypes(); } 

рдкреНрд░рдХрд╛рд░ рд╕рд░рдгреА рдХреЗ рддрддреНрд╡ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реВрдк рдирд┐рд░рдВрддрд░ рдЗрдВрдбреЗрдХреНрд╕ 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: // <= sb.append("\t- waiting on " + threadInfo.getLockInfo()); // <= sb.append('\n'); // <= break; // <= case TIMED_WAITING: // <= sb.append("\t- waiting on " + threadInfo.getLockInfo()); // <= sb.append('\n'); // <= break; // <= default: } } .... } 

WAITING рдФрд░ TIMED_WAITING рдХреЗ рд╕реНрд╡рд┐рдЪ рдХреЛрдб рдореЗрдВ рдПрдХ рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рдХреЛрдб рд╣реЛрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдорд╛рди рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдк WAITING рдХреЗ рд▓рд┐рдП рдХреЗрд╕ рдмреНрд▓реЙрдХ рдореЗрдВ рдореМрдЬреВрдж рд╕рд╛рдордЧреНрд░рд┐рдпреЛрдВ рдХреЛ рд╣рдЯрд╛рдХрд░ рдХреЛрдб рдХреЛ рд╕рд░рд▓ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдПрдХ рд╣реА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдореЗрдВ рджрд░реНрдЬ рдХрд┐рдП рдЧрдП рд╕рдорд╛рди рдХреЛрдб рдХреЛ WAITING рдФрд░ TIMED_WAITING рдХреЗ рд▓рд┐рдП рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдирд┐рд╖реНрдХрд░реНрд╖


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

рдиреЛрдЯред рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдмрд╛рд░ рдХреЗ рдЪреЗрдХ рдПрдХ рд╕реНрдерд┐рд░ рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЧрд▓рдд рддрд░реАрдХрд╛ рд╣реИред рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдХреЛ рдпрд╣рд╛рдВ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ред рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд╛ рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ!

рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдорд╣рд╛рди рдЙрдкрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЕрдкрд╛рдЪреЗ рдбрдмреНрдмреВ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рд▓реЗрдЦ рдЖрдкрдХреЛ рдХреЛрдб рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ред рд▓реЗрдЦ рдХреЛрдб рдХреЗ рд╕рднреА рд╕рдВрджрд┐рдЧреНрдз рд╡рд░реНрдЧреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдпрд╣ рдмреЗрд╣рддрд░ рд╣реИ рдХрд┐ рд╡реЗ рдЕрдкрдиреЗ рджрдо рдкрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ рдФрд░ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░реЗрдВред



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

Source: https://habr.com/ru/post/hi465431/


All Articles