Appendix 4 - FAQ & Troubleshooting

What's the required Java version to execute the Batch Acquirer?

The Batch Acquirer is built with Java 1.8 compatibility. However we test and actively support only Java 11 so we encourage to adopt a JRE version 11.

What are the requirements to build the Batch Acquirer executable from source?

To build the Batch Acquirer from source code the only requirements are a JDK 1.8+ and Maven. We strongly encourage however to use a JDK 11 since we test and actively support only Java 11.

It is possible to run the Batch Acquirer behind a HTTP proxy?

Yes, see the relevant HPAN_SERVICE_PROXY_* options in the Set environment variables section.

Are there any example files?

Under ops_resources/example_files there are example for an input, panlist and output files, all without encryption, and under the configuration expected when calling the remote services (transactions with clear pan, and a pan list with the hashing already applied), the output is also defined without encryption, please refer to the guideline for further details on how to manage the input/output possibilities.

Permission errors while reading/writing a file

Those kind of errors occur when the Batch Acquirer attempts to read/write to a file that is placed in a location for which the process does not have permissions.

Double-check that the paths defined with the following variables are existent and writable by the process:

  • ACQ_BATCH_TRX_INPUT_PATH

  • ACQ_BATCH_OUTPUT_PATH

  • ACQ_BATCH_TRX_LOGS_PATH

  • ACQ_BATCH_HPAN_INPUT_PATH

  • ACQ_BATCH_SENDER_ADEACK_OUTPUT_PATH

What the SkipLimitExceededException exception means?

org.springframework.batch.core.step.skip.SkipLimitExceededException: Skip limit of 'N' exceeded

This error occurs when an error is encountered, while processing the transaction records, that exceeds the configuration for the process fault tolerance, defined by the following property:

batchConfiguration.TransactionFilterBatch.transactionFilter.skipLimit

The stack-trace following the exception indicates the cause of the error that exceeded the defined limit.

BIN validation error

bin: must match "([0-9]{6}|[0-9]{8})"

This occurs when inserting a Bank Identification Number that does not match the expected length (the standard value is 8, but 6 is at the moment also allowed). In cases where the value has fewer characters, the value must be juxtaposed with zero-padding. See the Standard PagoPA file - Transactions.

Missing datasource

Error creating bean with name 'scopedTarget.dataSource' defined in class path resource [org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Hikari.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.zaxxer.hikari.HikariDataSource]: Factory method 'dataSource' threw exception; nested exception is java.lang.IllegalStateException: Cannot load driver class: org.postgresql.Driver

This error occurs when defining a configuration for the datasource for a database that is not the default in-memory one (HBSQL). In the standard release the drivers for any specific vendor has to be included when starting the Batch Acquirer process.

Logback DBAppender error on Oracle

at java.sql.SQLException: Invalid argument(s) in call at oracle.jdbc.driver.AutoKeyInfo.getNewSql(AutoKeyInfo.java:187) at oracle.jdbc.driver.PhysicalConnection.prepareStatement(PhysicalConnection.java:4342) at ch.qos.logback.core.db.DBAppenderBase.append(DBAppenderBase.java:97) at ch.qos.logback.core.UnsynchronizedAppenderBase.doAppend(UnsynchronizedAppenderBase.java:84) at ch.qos.logback.core.spi.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:51) at ch.qos.logback.classic.Logger.appendLoopOnAppenders(Logger.java:270) at ch.qos.logback.classic.Logger.callAppenders(Logger.java:257) at ch.qos.logback.classic.Logger.buildLoggingEventAndAppend(Logger.java:421) at ch.qos.logback.classic.Logger.filterAndLog_0_Or3Plus(Logger.java:383) at ch.qos.logback.classic.Logger.log(Logger.java:765) at org.apache.commons.logging.LogAdapter$Slf4jLocationAwareLog.info(LogAdapter.java:454)

This error occurs when using an Oracle Database, and it's related to the usage of a driver version that does not match the one required for the database and java versions. Check the list of available drivers, and refer to the Logback Appenders Documentation.

Oracle error ORA-08177

java.sql.SQLException: ORA-08177: can't serialize access for this transaction

This is a known issue for the Spring Batch Framework. Refer to the note in the Database connection paragraph, and the official Issue Thread.

Cron expression rule error

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionFilterBatch' defined in URL [jar:file:/app/spe/CAE/semafori/batch-transaction-filter.jar!/BOOT-INF/lib/rtd-ms-transaction-filter-api-batch-1.0-SNAPSHOT.jar!/it/gov/pagopa/rtd/transaction_filter/batch/TransactionFilterBatch.class]: Initialization of bean failed;nested exception is java.lang.IllegalStateException: Encountered invalid @Scheduled method 'launchJob': Cron expression must consist of 6 fields (found 1 in "0")

This error occurs when configuring a scheduled execution, with an invalid cron expression. Refer to the related Oracle Guidelines to create a valid expression.

Validation error


APPLICATION FAILED TO START


Description:

The bean 'jobLauncher', defined in class path resource [it/gov/pagopa/rtd/transaction_filter/batch/TransactionFilterBatch.class], could not be registered. A bean with that name has already been defined in class path resource [org/springframework/batch/core/configuration/annotation/SimpleBatchConfiguration.class] and overriding is disabled.

Action:

Consider renaming one of the beans or enabling overriding by setting spring.main.allow-bean-definition-overriding=true

This error occurs when the default configuration is overwritten, without introducing some of the properties required to execute the process. The following properties are required:

spring.batch.job.enabled: false spring.batch.job.web-application-type: none spring.batch.job.allow-bean-definition-overriding: true

Please refer to the example in ops_resources/example_config

Where can be found the instructions regarding the generation of the SSL certificates?

All the necessary information can be found in the Appendix 3 - Acquirer Services Authentication.

Where can be found the instructions regarding the generation of the subscription key?

All the necessary information can be found in the Appendix 2 - Acquirer Services Authorization.

PAN List validation error

Recovered PAN list exceeding a day

When encountering this message, there is a failure in the validation process for the downloaded PAN list, indicating that the file has a creation date that the daily procedure to update the file has not been executed.

Feign error: read timeout

This error occurs generally during the download phase when calling the endpoint to recover the hpan list. due to the file volume it's expected to wait a substantial amount of time, and both the application ad eventual proxies need to tolerate this wait. For the batch application, the read timeout can be configured with the property feign.client.config.hpan-service.readTimeout.

Out of memory errors

The error occurs when trying to process the hpan files without enough space reserved for the Java process. Try to raise the allocated heap space defined by the variable JAVA_TOOL_OPTIONS (see Set environment variables).

JDBC error: unable to acquire JDBC connection

The error occurs when using a connection pool that is undersized for the operations to be executed inside the database. In case this error occurs, the suggested action is to extend the connection pool, using the config property spring.datasource.hikari.maximumPoolSize.

Last updated