Serve para aplicações disponibilizarem e executarem ações de recuperação em caso de erros de monitoramento do PHM.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 1c1f80bf2db1ProcedênciaPerguntas em aberto (2)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
Serve para aplicações disponibilizarem e executarem ações de recuperação em caso de erros de monitoramento do PHM.
A classe abstrata ara::phm::RecoveryAction permite que as aplicações disponibilizem ações de recuperação específicas da aplicação para o Platform Health Management [SWS_PHM_01141]. Após a instanciação, a chamada de Offer() habilita a prontidão de recepção para o daemon do Phm, de modo que, ao serem detectados erros de monitoramento, o método sobrescrito RecoveryHandler é chamado [SWS_PHM_01143]. Se o erro não puder ser corrigido pela aplicação, o sistema escala disparando o watchdog. As operações de cópia e movimentação são totalmente impedidas por motivos de segurança, e chamadas de gerenciamento como Offer() não são thread-safe.
Contexto
A classe ara::phm::RecoveryAction é uma classe base abstrata no módulo Platform Health Management (PHM) da AUTOSAR Adaptive Platform. Ela serve como interface padronizada para aplicações funcionais a fim de fornecer ações específicas de recuperação e tratamento de erros, que são acionadas pelo PHM em caso de detecção de erros de monitoramento.
Entre os principais parceiros de interação estão:
O componente de aplicação derivado: Interpretação: este deve estar tipicamente localizado no State Management, visto que este é responsável por reações coordenadas do sistema e é nomeado diretamente no contexto de erro. Pergunta Q-714ff81a33aa3e92 (aberta) A aplicação implementa a correção de erro específica da aplicação sobrescrevendo o método RecoveryHandler[SWS_PHM_01142].
O daemon do Phm: gerencia o registro de ações de recuperação por meio de Offer[SWS_PHM_01143] e controla a chamada do tratador registrado [SWS_PHM_01142] quando são identificados erros.
O watchdog: se a recuperação pela aplicação não puder ser realizada com sucesso, o PHM assume o tratamento posterior do erro e dispara o watchdog por segurança [SWS_PHM_01142].
A vinculação lógica com o modelo AUTOSAR ocorre na instanciação por meio de um ara::core::InstanceSpecifier, que deve apontar para um PPortPrototype de uma interface PhmRecoveryAction[SWS_PHM_01141].
Ciclo de vida
Uma instância é criada por meio do construtor explícito, fornecendo o especificador de instância apropriado [SWS_PHM_01141]. Este construtor é thread-safe (thread-safe) e seguro contra exceções (noexcept).
Como uma RecoveryAction é rigidamente vinculada a uma porta específica, as operações de cópia e de movimentação são totalmente impedidas: tanto o construtor de cópia [SWS_PHM_01150] quanto o operador de atribuição por cópia [SWS_PHM_01152] foram excluídos (= delete). Da mesma forma, o construtor de movimento [SWS_PHM_01149] e o operador de atribuição por movimento [SWS_PHM_01151] foram excluídos. A especificação justifica isso afirmando que uma movimentação após a disponibilização da instância poderia levar a que o RecoveryHandler fosse chamado antes da construção completa da classe derivada, o que causaria comportamento indefinido ou exceções não tratadas e comprometeria a segurança do sistema [SWS_PHM_01149], [SWS_PHM_01151].
O ciclo de vida abrange dois estados distintos:
Não disponibilizado: imediatamente após a construção, bem como após a chamada de StopOffer[SWS_PHM_01144], a instância está inativa. Chamadas de RecoveryHandler são impedidas.
Disponibilizado: por meio da chamada de Offer()[SWS_PHM_01143], a ação é ativada no daemon do Phm e liberada para chamadas do tratador.
O objeto é liberado por meio do destrutor virtual [SWS_PHM_01145]. No que diz respeito à concorrência, o construtor e o RecoveryHandler são especificados como thread-safe, ao passo que Offer(), StopOffer() e o destrutor não são thread-safe (not thread-safe) [SWS_PHM_01141], [SWS_PHM_01142], [SWS_PHM_01143], [SWS_PHM_01144], [SWS_PHM_01145]. Interpretação: na prática, StopOffer() provavelmente deve ser sempre chamado antes da destruição de uma instância para excluir com segurança chamadas assíncronas do tratador durante a desmontagem do objeto. Pergunta Q-a1f47898bed925fd (aberta)
O uso típico organiza-se em uma sequência fixa de chamadas:
Definição de uma classe derivada que implementa a função membro puramente virtual RecoveryHandler[SWS_PHM_01142].
Instanciação do objeto derivado, informando o especificador de instância [SWS_PHM_01141].
Chamada de Offer() para disponibilizar a ação de recuperação no daemon do Phm [SWS_PHM_01143].
Reação a erros: se o PHM detectar um erro, chamará RecoveryHandler(executionError, supervision)[SWS_PHM_01142]. O método retorna um ara::core::Future<void>, por meio do qual é reportado o resultado da correção do erro.
Chamada de StopOffer() assim que a instância não precisar mais atender a ações de recuperação [SWS_PHM_01144].
No âmbito da configuração do modelo e da operação, devem ser consideradas condições de erro específicas:
Violações de modelo e de validação na construção [SWS_PHM_01141]:
AraNotInitializedViolation: O ambiente de execução ARA não foi inicializado antes da instanciação.
InstanceSpecifierMappingIntegrityViolation: O especificador de instância não pode ser resolvido no modelo ou não referencia um PortPrototype.
PortInterfaceMappingViolation: O protótipo de porta referenciado via RecoveryNotificationToPPortPrototypeMapping não está tipado por um PhmSupervisionRecoveryNotificationInterface.
ProcessMappingViolation: Em tempo de execução, não existe nenhum processo modelado de forma correspondente para a referência de instância.
InstanceSpecifierAlreadyInUseViolation: O especificador de instância já está sendo usado dentro do processo atual.
Erro de comunicação ao oferecer [SWS_PHM_01143]:
Se a comunicação com o daemon Phm falhar, Offer() fornece um resultado com o código de erro PhmErrc::kOfferFailed.
Erros irrecuperáveis na recuperação [SWS_PHM_01142]:
Se o State Management não conseguir resolver o erro reportado, o Future retornado por RecoveryHandler devolve o erro PhmErrc::kSMCanNotHandleRecovery. Em seguida, o Platform Health Management intervém e aciona o watchdog.
Este guia de classe foi gerado por um assistente de curadoria de IA com base na especificação AUTOSAR R25-11.
The move assignment operator for the RecoveryAction shall not be used. Rationale: Using the move assignment after a RecoveryAction instance has been offered may result in premature invocation of RecoveryHandler before the derived class is fully constructed. This can lead to undefined behavior or unhandled exceptions, compromising system stability and safety.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: e0343e0b39c4Procedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
O método sem parâmetros Offer pertence à classe ara::phm::RecoveryAction e é incluído através do ficheiro de cabeçalho ara/phm/recovery_action.h[SWS_PHM_01143]. A sua finalidade é a disponibilização do serviço perante o Platform Health Management (PHM), a fim de viabilizar chamadas posteriores do RecoveryHandler[SWS_PHM_01143]. A chamada ocorre de forma síncrona e não recebe quaisquer parâmetros [SWS_PHM_01143].
O resultado da execução é retornado como ara::core::Result<void>[SWS_PHM_01143]. No estado sem erros, este Result está vazio. Se a comunicação com o daemon do PHM falhar, o serviço não pode ser oferecido e a função retorna o código de erro PhmErrc::kOfferFailed com semântica de rollback [SWS_PHM_01143].
No que respeita à segurança de execução, o método está especificado como noexcept e seguro contra exceções (exception safe) [SWS_PHM_01143]. No entanto, está explicitamente definido como não seguro para threads (not thread-safe) [SWS_PHM_01143].
No conjunto do sistema existe um acoplamento direto com o tratamento de erros: o RecoveryHandler da classe ara::phm::RecoveryAction serve para reagir a erros de execução (ara::exec::ExecutionErrorEvent) e erros de monitorização (TypeOfSupervision) [SWS_PHM_01142]. O PHM só pode chamar este handler depois de a ativação ter sido previamente habilitada de forma explícita através de RecoveryAction::Offer[SWS_PHM_01142].
Esta nota de utilização foi gerada automaticamente com base na especificação.
AraNotInitialized- Violation message that is sent in case a constructor or function Violation checks for an initialized ara and identifies that ara is not initialized. InstanceSpeci- InstanceSpecifier either cannot be resolved in the model in the fierMappingIn- context of your executable, or it refers to a model element other tegrityViolation than a PortPrototype. PortInterfaceMap- A PortPrototype that is referenced by a pingViolation RecoveryNotificationToPPortPrototypeMapping needs to be typed by a PhmSupervisionRecoveryNotificationInterface. ProcessMappingVio- Matching InstanceRef exists, but no matching (modelled) Process lation found that matches the (runtime) process. InstanceSpecifier- Violation message that is sent in case a constructor in the ara AlreadyInUseViola- framework was called with an InstanceSpecifier already in use in tion this process.
Parameter (in)
Parameter
Beschreibung
instance
instance specifier to the PPortPrototype of a PhmRecoveryAction Interface
Request a governed re-review of this record. The record is not changed immediately.
The move constructor operator for the RecoveryAction shall not be used. Rationale: Using the move constructor after a RecoveryAction instance has been offered may result in premature invocation of RecoveryHandler before the derived class is fully constructed. This can lead to undefined behavior or unhandled exceptions, compromising system stability and safety
RecoveryHandler to be invoked by PHM. The handler invocation needs to be enabled before by a call of RecoveryAction::Offer.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 4d5e12f6a819Procedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
O método virtual puro RecoveryHandler em ara::phm::RecoveryAction serve como um callback assíncrono que é chamado pelo Platform Health Management (PHM) assim que um monitoramento falha [SWS_PHM_01142]. Na chamada, o PHM passa o evento de erro executionError com informações detalhadas para a recuperação, bem como o tipo de monitoramento elementar que falhou por meio do parâmetro supervision[SWS_PHM_01142].
Para o uso e o ciclo de vida aplicam-se condições fixas de ordem e de concorrência:
Ativação: As chamadas do handler devem ser previamente habilitadas de forma explícita via RecoveryAction::Offer[SWS_PHM_01142], [SWS_PHM_01143]. Elas podem ser novamente desativadas via StopOffer[SWS_PHM_01144].
Integridade do objeto: Tanto o construtor de movimento quanto o operador de atribuição por movimento de RecoveryAction são excluídos (=delete), a fim de evitar que, após a disponibilização da ação, chamadas prematuras de handlers sejam executadas em classes derivadas ainda incompletamente construídas [SWS_PHM_01149], [SWS_PHM_01151].
Segurança de thread: O método em si é especificado como thread-safe e seguro contra exceções [SWS_PHM_01142], ao passo que Offer e StopOffer não são thread-safe [SWS_PHM_01143], [SWS_PHM_01144].
O retorno ocorre de forma assíncrona por meio de um ara::core::Future<void>[SWS_PHM_01142]. Se a recuperação tiver sido bem-sucedida, a future é satisfeita com void. Se o State Management não puder realizar a recuperação, a future falha com o código de erro PhmErrc::kSMCanNotHandleRecovery; neste caso, o Platform Health Management intervém e dispara o watchdog [SWS_PHM_01142].
Este texto foi gerado por uma IA com base na especificação AUTOSAR R25-11.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 8cdc07a00e3fProcedênciaPerguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
O método StopOffer da classe ara::phm::RecoveryAction serve para desativar a execução do RecoveryHandler associado [SWS_PHM_01144]. Ele é declarado no cabeçalho ara/phm/recovery_action.h[SWS_PHM_01144].
Utilização e semântica
A função possui a assinatura void StopOffer() noexcept;, não recebe parâmetros e não retorna nenhum valor [SWS_PHM_01144]. Por meio da chamada, a aplicação sinaliza ao Platform Health Management (PHM) que não devem mais ocorrer chamadas ao handler [SWS_PHM_01144]. A chamada ocorre de forma síncrona; presume-se que instâncias de handlers em execução sejam concluídas antes ou durante a desativação (interpretação). Pergunta Q-a333b1e2f0634ed1 (aberta)
Tratamento de erros e simultaneidade
Segurança contra exceções: A operação é declarada como noexcept e considerada totalmente exception safe; não existem códigos de erro ou exceções [SWS_PHM_01144].
Segurança de thread: O método é explicitamente especificado como not thread-safe[SWS_PHM_01144]. Uma chamada concorrente na mesma instância de RecoveryAction requer, portanto, uma sincronização externa pelo chamador.
Este texto foi elaborado por uma IA e baseia-se na especificação AUTOSAR Adaptive R25-11.
The move assignment operator for the RecoveryAction shall not be used. Rationale: Using the move assignment after a RecoveryAction instance has been offered may result in premature invocation of RecoveryHandler before the derived class is fully constructed. This can lead to undefined behavior or unhandled exceptions, compromising system stability and safety.
gemini-3.8-flash-low· 2026-10-13 · Original em alemão