Ignition 8.0.4-SNAPSHOT -- AuditLogSplitter" type doesn't exist anymore?

I have a module for audit working for 7.9 and it was ok for Ignition 8.0.2.

With Ignition 8.0.4-SNAPSHOT 22/08/2019
I have the error the “AuditLogSplitter” type doesn’t exist anymore ?
in the SDK javadoc 8.0.1, the function still exist

The following constructor
AuditProfileType::AuditProfileType​(java.lang.String typeId,
java.lang.String name,
java.lang.String description)
doesn’t exist in 8.0.4 ??

Is there another constructor to use ?

public class AuditLogSplitterType extends AuditProfileType {

    // transient pour ne pas serializer
	private transient Logger logger = LoggerFactory.getLogger(getClass());

	public AuditLogSplitterType() {
		super("AuditLogSplitter", "AuditLogSplitterSettings.Name", "AuditLogSplitterSettings.Desc");
	}
...

generate an error :

ModuleManager	22Aug2019 15:54:11	Module "com.bouyguesenergiesservices.audit" threw exception during setup()
java.lang.NoSuchMethodError: com.inductiveautomation.ignition.gateway.audit.AuditProfileType: method (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V not found

at com.bouyguesenergiesservices.ignition.gateway.audit.AuditLogSplitterType.(AuditLogSplitterType.java:20)

at com.bouyguesenergiesservices.ignition.gateway.audit.GatewayHook.setup(GatewayHook.java:68)

at com.inductiveautomation.ignition.gateway.modules.ModuleManagerImpl$LoadedModule.setup(ModuleManagerImpl.java:2327)

at com.inductiveautomation.ignition.gateway.modules.ModuleManagerImpl.startupModule(ModuleManagerImpl.java:1165)

at com.inductiveautomation.ignition.gateway.modules.ModuleManagerImpl$2.call(ModuleManagerImpl.java:733)

at com.inductiveautomation.ignition.gateway.modules.ModuleManagerImpl.executeModuleOperation(ModuleManagerImpl.java:905)

at com.inductiveautomation.ignition.gateway.modules.ModuleManagerImpl.installModuleInternal(ModuleManagerImpl.java:695)

at com.inductiveautomation.ignition.gateway.modules.ModuleManagerImpl$InstallCommand.execute(ModuleManagerImpl.java:1851)

at com.inductiveautomation.ignition.gateway.modules.ModuleManagerImpl$Receiver.receiveCall(ModuleManagerImpl.java:1801)

at com.inductiveautomation.ignition.gateway.redundancy.QueueableMessageReceiver.receiveCall(QueueableMessageReceiver.java:47)

at com.inductiveautomation.ignition.gateway.redundancy.RedundancyManagerImpl.dispatchMessage(RedundancyManagerImpl.java:852)

at com.inductiveautomation.ignition.gateway.redundancy.RedundancyManagerImpl$ExecuteTask.run(RedundancyManagerImpl.java:924)

at com.inductiveautomation.ignition.common.execution.impl.BasicExecutionEngine$ThrowableCatchingRunnable.run(BasicExecutionEngine.java:518)

at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)

at java.base/java.util.concurrent.FutureTask.run(Unknown Source)

at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)

at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)

at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

at java.base/java.lang.Thread.run(Unknown Source)

Hmm, it looks like someone removed that constructor from AuditProfileType. Let me see if there was a valid reason or if it should be restored.

ok I stay tuned

PR is up to fix, should be correct in the next nightly. Thanks for letting us know - it was unused in our codebase, which is why I originally removed it, but I’ve added a comment so we know not to do so again.

1 Like

@PGriffith,

I have retested with the last 8.0.4-nightly and I have strange behavior.

In 7.9.12: I have 2 Audit Type

In 8.0.4-nightly:

and the following erreur:

Unable to audit record [DefaultAuditRecord[action=“login”, actionTarget="", actionValue="", actor=“admin”, actorHost=“TVG-GTC02”, context=“2”, system=“project=STVG_GTC”, status=“AuditStatus[0x00000000, Severity=Good, Subcode=NotSpecified]”, timestamp=“Thu Aug 29 17:22:05 CEST 2019”]], there is not audit profile type “AuditLogSplitter”

In my module the gateway hook

@Override
public void setup(GatewayContext gatewayContext) {
	try {
        logger.info("setup() - {}",Constantes.MODULE_ID);
		this.context = gatewayContext;
        this.context.getSchemaUpdater().updatePersistentRecords(AuditLogSplitterSettings.META);
        this.gatewayScriptModule = new GatewayScriptModule(this.context);

		type = new AuditLogSplitterType();
        this.context.getAuditManager().addAuditProfileType(type); 

If I restart the module, I have no error for the setup/startup

and then I have only the new audit type ???

If I create a new audit profil “audit_test”, the type in the config database is wrong… TYPE = DATABASE

It seems that there was something wrong in 8.0.4 for creating a new audit profil type ???

I’m looking into this now - it looks like you’re running into this due to a change I made to the way the Audit Manager re-initializes its internal map of profiles.

1 Like

Hi @PGriffith,
Is the fix in the last 8.0.5-Nightly ?

It’s in the 8.0.4 release branch, it will get merged back into 8.0.5 nightly soon.

1 Like

Hi @Kevin.Herron,
is the fix in the last 8.0.5-nightly ?

Should be.

thanks, I would test again as soon as possible

Hi @Kevin.Herron, @PGriffith
With the last 8.0.5-nighly, and a module adding a new audit log source, when I create a new audit profile in the gateway web page, the new audit profile is proposed but the standart “Database” profile is gone.
The new audit profil added seem to work fine now.

In 7.9, the 2 profile were listed in the gateway web page.
I think there is still something wrong with the audit profile management.

in 8.0

in 7.9
image

@PGriffith

is the auditLogSplitter module available for download? or there is any way to link 2 audit profile to the same project?

this is a custom module for sending audit logs to multiple DB connections.