Elimine um processo Perforce com segurança

Atualizar Deve-se notar que matar um processo Perforce, em particular um submit, geralmente não é recomendado. Use apenas quando outras alternativas (como interromper o envio no lado do cliente) ou o monitor p4 encerrar <pid> não for uma opção ou não funcionar.

É quase meio-dia e as pessoas estão reclamando que o serviço Perforce é lento. Você faz um ps -ef no servidor e percebe que um único processo p4d está consumindo quase toda a memória e está processando um envio monstruoso.

Sim, é verdade – um novo usuário submeteu o conteúdo de sua estação de trabalho porque definiu a raiz do cliente como C: e não se preocupou em alterar a Visualização. Pior, ele está fora do local e você não tem acesso à máquina dele.

O que fazer? Você ousa matar o processo Perforce? Você não pode deixar o envio continuar, o servidor está batendo. Mas você não quer passar a noite restaurando de seu ponto de verificação e arquivo de diário, o que é uma possibilidade se o envio estiver em um estado de atualização de banco de dados quando você o encerrar.

Não temas. Você tem outras opções.

Primeiro, descubra qual é o PID do processo infrator. Você pode obter isso de ferramentas como ps no Linux / Unix. Ou se você tiver o monitoramento habilitado em seu serviço Perforce, um monitor p4 show all mostrará o comando ofensivo e seu PID.

Observe que o seguinte comando é para Linux / Unix / Mac. Veja mais abaixo para uma possível solução do Windows.

Assim que tiver o PID, tente o seguinte:

p4d -c “matar <PID>”

Qual é a diferença entre fazer isso e simplesmente encerrar o processo? Quando você encerra o processo diretamente (usando kill), há uma grande chance de que você deixe o banco de dados Perforce em um estado inconsistente, exigindo uma restauração de ponto de verificação para corrigi-lo.

Usar ‘p4d -c’ força o comando que o segue a ser executado somente quando o banco de dados está em um estado consistente.

No Windows, a situação é mais sombria. Como o p4s executa comandos em threads de execução separados, você não pode confiar em ‘p4d -c’ porque desligar o PID irá desligar o próprio servidor.

Em vez disso, tente usar o monitor p4 para terminar <PID> depois de observar o PID do monitor p4 mostrar tudo . O comando p4 monitor terminate instrui o processo ofensivo a se encerrar, o que pode demorar um pouco mais do que p4d -c, mas também deve acontecer de maneira segura.

Independentemente de como você interrompe o envio ou outro comando, sempre deve seguir com um p4d -r <P4ROOT> -xv para certificar-se de que o banco de dados é realmente consistente.

De preferência em tempo de inatividade. Com o usuário ofensivo emendando o cabo cat5 para lhe fazer companhia.