# The form data below was edited by tom_tyler
# Perforce Workshop Jobs
#
# Job: The job name. 'new' generates a sequenced job number.
#
# Status: Job status; required field. There is no enforced or
# promoted workflow for transition of jobs from one
# status to another, just a set of job status values
# for users to apply as they see fit. Possible values:
#
# open - Issue is available to be worked on.
#
# inprogress - Active development is in progress.
#
# blocked - Issue cannot be implemented for some reason.
#
# fixed - Fixed, optional status to use before closed.
#
# closed - Issue has been dealt with definitively.
#
# punted - Decision made not to address the issue,
# possibly not ever.
#
# suspended - Decision made not to address the issue
# in the immediate future, but noting that it may
# have some merit and may be revisited later.
#
# duplicate - Duplicate of another issue that.
#
# obsolete - The need behind the request has become
# overcome by events.
#
# Project: The project this job is for. Required.
#
# Severity: [A/B/C] (A is highest) Required.
#
# ReportedBy The user who created the job. Can be changed.
#
# ReportedDate: The date the job was created. Automatic.
#
# ModifiedBy: The user who last modified this job. Automatic.
#
# ModifiedDate: The date this job was last modified. Automatic.
#
# OwnedBy: The owner, responsible for doing the job. Optional.
#
# Description: Description of the job. Required.
#
# DevNotes: Developer's comments. Optional. Can be used to
# explain a status, e.g. for blocked, punted,
# obsolete or duplicate jobs. May also provide
# additional information such as the earliest release
# in which a bug is known to exist.
#
# Component: Projects may use this optional field to indicate
# which component of the project a given job is associated
# with.
#
# For the SDP, the list of components is defined in:
# //guest/perforce_software/sdp/tools/components.txt
#
# Type: Type of job [Bug/Doc/Feature/Problem]. Required.
#
# Bug: is a problem that is fairly well understood,
# e.g. one for which there is a reproduction or clear
# articulation of the problem.
#
# Doc: A Documentation fix.
#
# Feature: An enhancement request, perhaps adding
# a new product features, improving maintainability,
# essentially any new software improvement other than
# a fix to something broken.
#
# Problem: a suspected bug, or one without a clear
# understanding of exactly what is broken.
#
# Release: Release in which job is intended to be fixed.
Job: SDP-883
Status: open
Project: perforce-software-sdp
Severity: C
ReportedBy: tom_tyler
ReportedDate: 2023/02/22 16:59:53
ModifiedBy: tom_tyler
ModifiedDate: 2023/02/22 16:59:53
OwnedBy: tom_tyler
Description:
On Windows, sync_replica does not reliably clean old journals.
=== BEGIN LOG ===
Observed on a customer replica's sync.log:
Start Sync Replica
Wed 02/22/2023
04:00 AM
xcopy /D /I \\P4DServer-04\F$\p4\1\checkpoints\*.* c:\p4\1\checkpoints\*.*
\\P4DServer-04\F$\p4\1\checkpoints\p4_1.ckp.936.gz
\\P4DServer-04\F$\p4\1\checkpoints\p4_1.ckp.936.gz.md5
2 File(s) copied
Determining current journal counter with 'p4 counter journal'.
Journal counter 936 found.
ATTRIB -r c:\p4\1\checkpoints\*.925.* <-- The *.925.* does not
del c:\p4\1\checkpoints\*.925.* catch the jnl file, so
c:\p4\1\checkpoints\p4_1.jnl.925 the ATTRIB -r is not done.
Access is denied. <-- The "Access is denied." is
del c:\p4\1\offline_db\db.* because the ATTRIB is not done.
c:\p4\1\bin\p4d.exe -r c:\p4\1\offline_db -jr -z c:\p4\1\checkpoints\p4_1.ckp.936.gz
Perforce db files in 'c:\p4\1\offline_db' will be created if missing...
Recovering from c:\p4\1\checkpoints\p4_1.ckp.936.gz...
End Sync Replica
Wed 02/22/2023
04:04 AM
=== END LOG ===
A possible solution is to change the 'DEL' command to 'DEL /F/Q', making the 'ATTRIB -R'
unnecessary.
Here are sample manual commands and outputs illustrating first change to the
wildcard handling to make the ATTRIB apply to the journal, and then trying 'DEL'
with the '/F/Q' options (thus no need for 'ATTRIB').
C:\p4\1\checkpoints>ATTRIB p4_1.jnl.225
A R C:\p4\1\checkpoints\p4_1.jnl.225
C:\p4\1\checkpoints>ATTRIB *.226.*
A R C:\p4\1\checkpoints\p4_1.ckp.226.gz
A R C:\p4\1\checkpoints\p4_1.ckp.226.gz.md5
C:\p4\1\checkpoints>ATTRIB *.jnl.226
A R C:\p4\1\checkpoints\p4_1.jnl.226
C:\p4\1\checkpoints>ATTRIB -r *.226.*
C:\p4\1\checkpoints>ATTRIB -r *.jnl.226
C:\p4\1\checkpoints>ATTRIB *.226.*
A C:\p4\1\checkpoints\p4_1.ckp.226.gz
A C:\p4\1\checkpoints\p4_1.ckp.226.gz.md5
C:\p4\1\checkpoints>ATTRIB *.jnl.226
A C:\p4\1\checkpoints\p4_1.jnl.226
C:\p4\1\checkpoints>DEL *.226.* *.jnl.226
C:\p4\1\checkpoints>DEL /F /Q *.227.* *.jnl.227
Component: core-win
Type: Bug