Overview

Line ref

  • L4121-L4132: Backend 구조체를 생성한다.
  • L4134-L4163: Random cancel key 를 생성하는 등의 Backend 구조체를 초기화한다.
  • L4165-L4168: fork() 로 backend process 를 fork 한다.
    • 4166: 여기의 backend_forkexec() 은 Windows 운영체제에는 fork() syscall 이 없기 때문에 해당 기능을 수행해 주는 함수라고 생각하면 된다.
  • L4169-L4193: fork() 된 child process (즉, pid0) 에서의 logic 이다.
    • 4168-4177: Backend 는 postmaster 와 별개의 process 이기 때문에 postmaster 가 사용하던 자원들을 정리해 준다
    • 4179-4192: Backend initiation 작업을 해주고 BackendRun 으로 backend 를 시작한다.
  • L4196-L4209: fork() 한 parent process 에서의 logic 인데, fork() 를 실패했을 때의 logic 이다 (즉, pid 가 음수).
    • 여기서는 뭐 error message 를 출력하고 STATUS_ERROR 를 return 하는 것으로 끝난다.
  • L4211-L4229: 여기는 parent process 에서 fork() 에 성공했을 때의 logic 이다 (즉, pid 가 양수).
    • 4211-4214: Log message 출력
    • 4216-4222: 4121 번째 줄에서 생성한 Backend 구조체의 값들을 설정해주고
    • 4224-4227: 그 구조체를 array 에 추가한다.
      • 이것은 모든 Backend processPostmaster process 에서 관리하기 위함이다.
      • Postmaster 는 이 주소공간을 통해 문제가 생긴 backend process 를 정리해주는 작업을 하되,
      • 정상적인 경우에는 이 주소공간을 절대 건드리지 않는다.