Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

TEST: Fix test failure due to unsupported reflection operation on JDK 12+ #692

Merged
merged 1 commit into from
Nov 30, 2023

Conversation

uhm0311
Copy link
Collaborator

@uhm0311 uhm0311 commented Nov 30, 2023

https://github.com/jam2in/arcus-works/issues/470

위 이슈를 해결하는 PR 입니다.

@@ -43,10 +42,6 @@ private Queue<Operation> getQueue(String queueFieldName, TCPMemcachedNodeImpl no
Field queueField = TCPMemcachedNodeImpl.class.getDeclaredField(queueFieldName);
queueField.setAccessible(true);

Field modifiersField = Field.class.getDeclaredField("modifiers");
modifiersField.setAccessible(true);
modifiersField.setInt(queueField, queueField.getModifiers() & ~Modifier.FINAL);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

우선 궁금한 점은 아래와 같습니다.

  1. Field라는 클래스의 field로 존재하는 modifiers는 final 키워드가 붙어 있지 않아서 setAccessible을 호출하는게 의미가 없지 않나요?
  2. setInt() 메서드를 호출하는 의미가 무엇인지 설명 부탁드립니다.

Copy link
Collaborator Author

@uhm0311 uhm0311 Nov 30, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Field.class.getDeclaredField("modifiers")는 필드의 Modifier를 가져오는 것입니다.
private final String a; 라는 필드가 있다면, int 값으로 priavte에 해당하는 플래그와 final에 해당하는 플래그가 bit or 연산자로 합쳐져 반환됩니다.

Field.setAccessible(true);는 private으로 선언된 필드를 public으로 전환하여 자유롭게 접근하겠다는 의미입니다.

modifiersField.setInt()는 int 플래그를 재설정하는 것으로, 위 코드에서는 기존 Modifier에서 final에 해당하는 플래그를 제거하는 것입니다.

@jhpark816
Copy link
Collaborator

@uhm0311

commit 메세지로 어떤 것에 의한 실패를 수정한 것인지 구체적으로 나타낼 수 있나요?

TEST: Fix test failure due to ....   on JDK 12+

@uhm0311 uhm0311 changed the title TEST: Fix test failure on JDK 12+ TEST: Fix test failure due to unsupported reflection operation on JDK 12+ Nov 30, 2023
@uhm0311
Copy link
Collaborator Author

uhm0311 commented Nov 30, 2023

@jhpark816

커밋 메세지 수정했습니다.

@jhpark816 jhpark816 merged commit c11e912 into naver:develop Nov 30, 2023
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants