본문 바로가기

시스템/Perforce P4

[Perforce P4] Replica 복제 서버 만들기[3] (master journal 순환, open for read: journal.N: 지정된 파일을 찾을 수 없습니다.)

반응형

Replica 복제서버 만들기[1] : Master 설정

https://ploz.tistory.com/entry/Perforce-P4-Replica-%EB%B3%B5%EC%A0%9C-%EC%84%9C%EB%B2%84-%EB%A7%8C%EB%93%A4%EA%B8%B0

 

[Perforce P4] Replica 복제 서버 만들기[1]

P4는 크게 Metedata를 보관하는 DB와 Transation Log 역할을 하는 Journal, 그리고 아카이브파일을 저장하는 Versioned File Content로 총 3부분으로 이루어져 있다. SCM의 경우 백업이 매우 중요시 되는데 P4의 Cold

ploz.tistory.com

 

 

Replica 복제서버 만들기[1] : Replica 설정

https://ploz.tistory.com/entry/Perforce-P4-Replica-%EB%B3%B5%EC%A0%9C-%EC%84%9C%EB%B2%84-%EB%A7%8C%EB%93%A4%EA%B8%B02

 

[Perforce P4] Replica 복제 서버 만들기[2]

1편 참조 : https://ploz.tistory.com/entry/Perforce-P4-Replica-%EB%B3%B5%EC%A0%9C-%EC%84%9C%EB%B2%84-%EB%A7%8C%EB%93%A4%EA%B8%B0 Replica 설정 1. hosts 파일에 master, replica 등록 172.16.10.103hiss 172.16.10.121gabriel 2. Perforce 서비스 중지

ploz.tistory.com

 

 

 

개요 및 에러 발생

Master 서버에서 비대해지는 Journal의 순환을 위하여 Checkpoint를 생성할때 Replica 서버에서도 Journal 순환을 하게된다.

 

Master설정에서 gabriel(Replica server) server "journalPrefix=D:\PerforceServer\checkpoints\journal_backup" 설정을 참조하여 이경로에 Replica Server의 Journal을 backup 한다. 

 

이때 Replica에서 Journal 순환시에 아래와 같은 에러가 발생 할 수 있다.

Perforce server error:
	2024/01/08 15:47:00 pid 5532 service@1666 background [p4d/2021.1/NTX64/2156517] 'pull -i 1'
	Startup command failed: client-Message
	open for read: journal.3: 지정된 파일을 찾을 수 없습니다.

 

이는 Replica가 Journal 순환시에 Master서버의 백업된 Journal.N(N은 시퀀스) 파일을 참조해야하는데 이를 찾을 수 없어 발생하는 에러이다.

 

기본적으로 Master에 journalPrefix 가 설정되어 있지 않다면 P4ROOT에 순환된 Checkpoint, Journal 파일이 저장된다.

만약 journalPrefix 설정이 되어 있다면 설정된 경로에 파일이 저장된다.

단 P4ROOT에 저장되는 경우에는 파일이름이 checkpoint.N, Journal.N 형식이고 journalPrefix에 저장되는 경우는 <Filename>.ckp.N, <filename>.jnl.N 형식을 취한다.

 

> p4 -u <super id> -P <super pass> configure show
P4ROOT=C:\PerforceServer\ (set -S)
P4PORT=1666 (set -S)
P4JOURNAL=journal (set -S)
P4NAME=Perforce (services registry)
P4LOG=log (set -S)
journalPrefix=C:\PerforceServer-Backup\backup (configure)
server: 1 (P4DEBUG)

 

 

따라서 Replica는 Master의 journalPrefix 를 참조하여 설정이 없다면 P4ROOT에서 Journal.N을, 설정이 있다면 설정된 경로에 <filename>.jnl.N 을 찾는다.

 

 

에러 해결

Replica에서 위와같은 에러가 발생한다면 Master에서 P4ROOT에 Journal.3파일을 이동시키면 잠시후 Journal 순환이 완료된다.

진행은 아래와 같이 확인 할 수 있다.

> p4 -u <super id> -P <super pass> pull -l -j
Current replica journal state is:       Journal 2,      Sequence 547.
Current master journal state is:        Journal 2,      Sequence 732.
Current master journal state is:        Journal 3,      Sequence 739.
The statefile was last modified at:     2024/01/08 15:50:02.
The replica server time is currently:   2024/01/08 15:53:02 +0900

...

> p4 -u <super id> -P <super pass> pull -l -j
Current replica journal state is:       Journal 3,      Sequence 739.
Current master journal state is:        Journal 3,      Sequence 739.
The statefile was last modified at:     2024/01/08 15:53:53.
The replica server time is currently:   2024/01/08 15:53:53 +0900

 

 

checkpoint 생성

참고로 Master에서 Journal 은 아래와 같은 명령어로 checkpoint를 생성할 수 있으며 스케줄러를 이용하여 주기적으로 수행 할 수 있다. 

이때 Perforce P4는 정지하는 것이 좋다.

p4d -jc -r <P4ROOT>

 

 

 

참고

command line으로 작업시 아래와 같은 오류가 나면

Unicode server permits only unicode enable clients.

 

아래와 같이 설정

p4 set P4CHARSET=auto

 

반응형