The intent of the Register... API is that all audit loggers that may be
used should have been registered from the very beginning, because custom
loggers can possibly be custom implementations which need to be compiled
and built into the application binary. So I think the correct way to run
your test is to register both "foo" and "bar" at the beginning of all test
cases. Let me know if there is any problem with that.
Best,
Luwei
On Friday, July 11, 2025 at 7:16:33 PM UTC-7 Rameshreddy Mudhireddy wrote:
> Test case is:
>
> If the server is setup with the following config:
>
> "audit_logging_options": {
> "audit_condition": "ON_DENY_AND_ALLOW",
> "audit_loggers": [
> {
> "name": "foo"
> }
> ]
> }
>
> Any subsequent grpc service restarts will run into assert. That can be
> worked-around by applications by maintaining last registered "name" handle
> and only call into it if there is any update but that is not ideal. If the
> config is changing to
>
> "audit_logging_options": {
> "audit_condition": "ON_DENY",
> "audit_loggers": [
> {
> "name": "bar"
> }
> ]
> }
>
> then there is no way to avoid the assert. May be I am missing something?
>
> Thanks,
> Ramesh
>
> On Saturday, July 12, 2025 at 6:46:44 AM UTC+5:30 Rameshreddy Mudhireddy
> wrote:
>
>> Hi Luwei,
>>
>> "Are you restarting the gRPC server within your process?"
>> Yes
>>
>> "need to call RegisterAuditLoggerFactory again"
>> Yes, did call RegisterAuditLoggerFactory again and it is running into the
>> above mentioned grpc assert.
>>
>> Thank you for your attention on this.
>>
>> On Friday, July 11, 2025 at 11:52:40 PM UTC+5:30 Luwei Ge wrote:
>>
>>> Hi Ramesh,
>>>
>>> I am not sure if I fully understand your problem. Are you restarting the
>>> gRPC server within your process? If so, I think you need to call
>>> RegisterAuditLoggerFactory again, if you didn't.
>>>
>>> Best,
>>> Luwei
>>> On Sunday, July 6, 2025 at 5:24:32 PM UTC-7 Rameshreddy Mudhireddy wrote:
>>>
>>>> Hi grpc-team,
>>>>
>>>> we support hitless restart of the grpc service for any configuration
>>>> changes and policy audit logging interface has the following comment.
>>>>
>>>> // Registers an audit logger factory. This
>>>> *should only be called during // initialization*.
>>>> void RegisterAuditLoggerFactory(std::unique_ptr<AuditLoggerFactory>
>>>> factory);
>>>>
>>>> Hitless restart of the service for any changes in the policy audit
>>>> logging name is running into an assert and requires a process restart.
>>>>
>>>> Init sequence:
>>>> RegisterAuditLoggerFactory(...)
>>>> server_data = new ::pi::server::ServerData();
>>>>
>>>> server_data->builder.experimental().SetAuthorizationPolicyProvider(provider);
>>>> server_data->builder.BuildAndStart();
>>>>
>>>> shutdown sequence:
>>>> server_data->server->Shutdown(<5 sec deadline>);
>>>> delete server_data;
>>>>
>>>> Issue:
>>>> E0706 17:12:26.951911933 385451 audit_logging.cc:57]
>>>> ASSERTION FAILED: registry->logger_factories_map_.emplace(name,
>>>> std::move(factory)).second
>>>>
>>>> Is there any way to avoid process restart for any of the policy audit
>>>> logging config changes? Appreciate your input.
>>>>
>>>> Thank you,
>>>> Ramesh
>>>>
>>>
--
You received this message because you are subscribed to the Google Groups
"grpc.io" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion visit
https://groups.google.com/d/msgid/grpc-io/1cde667d-68bc-4c52-b13d-981879a3c67en%40googlegroups.com.