2021-gpu-is-mine icon indicating copy to clipboard operation
2021-gpu-is-mine copied to clipboard

서버 상태 확인 로직을 추가한다.

Open ecsimsw opened this issue 3 years ago • 6 comments

이슈 설명

현재 서버의 상태를 확인할 수 있는 방법으로 GpuServer.isOn을 사용하고 있으나, GM에서 상태 체크가 만료되었을 시 isOn의 값을 수정하진 않고 있습니다. 즉 한번 isOn = true로 업데이트를 했다면, 실제 서버의 상태와 상관없이 isOn 의 값은 유지됩니다.

GpuServer의 lastResponse가 마지막 응답 확인으로 서버의 상태 체크 시간을 비교하기 위해 존재하는 것으로 생각됩니다. 이를 이용한 로직을 추가하는 방식으로 서버의 상태 확인, 더 정확히는 체크 시간이 만료된 서버의 isOn 값을 업데이트하면 어떨까합니다.

ecsimsw avatar Oct 28 '21 07:10 ecsimsw

요 부분 작업 진행할 때, Job 등록 시 server가 켜져 있는지 검증하는 로직을 구현하고 진행했으면 좋겠음!

밀접하게 연관되어 있다 생각하고, 이 기능을 테스트하기 위해서는 위 검증 로직이 필요하다는 생각입니다!

wannte avatar Nov 03 '21 04:11 wannte

lastResponse는 GM의 요청을 통해 업데이트되고 isOn은 Client의 요청을 통해 업데이트 되는 구조가 되는건가요?

sjpark-dev avatar Nov 04 '21 01:11 sjpark-dev

@sjpark-dev 제가 이해하기로는 Worker에서 @PutMapping("gpus/{serverId}/status") 요청이 왔을 때, 둘다 변경되는 걸로 알고 있어요! user가 등록하면 isOn 은 False로 등록되고요! https://github.com/woowacourse-teams/2021-gpu-is-mine/blob/db1f6f5d8e5cc64accdbcc3b910f9caf1da8441d/back-end/src/main/java/mine/is/gpu/worker/application/WorkerService.java#L90-L95

wannte avatar Nov 04 '21 02:11 wannte

제가 말한 Client의 요청은 GpuServer Rest Controller의 findById 와 findAllInLab 이었어요. 이 요청이 들어올 때 현재 시간과 LastResponse를 비교한후 isOn 값을 업데이트합니다. 그리고 업데이트한 결과 값을 응답으로 보내줍니다. Worker의 @PutMapping("gpus/{serverId}/status")은 isOn을 true로 만들 수 있지만 구조적으로 false로는 만들 수 없습니다. Worker가 죽었다면 업데이트 요청을 보낼 수 없기 떄문이죠.

sjpark-dev avatar Nov 04 '21 03:11 sjpark-dev

아아 지금의 구조가 아니라 앞으로의 구조가 어떻게 바뀔 것인지에 대한 이야기 였군요!

isOn이라는 column을 삭제하고, 사용할 때 lastResponse 값을 비교하는 로직으로 수정될 것이라 생각해요!

wannte avatar Nov 04 '21 03:11 wannte

굳굳!!

ecsimsw avatar Nov 04 '21 04:11 ecsimsw