Sometimes, there may be an issue loading the JDBC Drivers for a certain stage. This is usually seen as a pipeline that had previously been working will now fail with a JDBC_00 or JDBC_06 error. In these cases, it may be that the pipeline was previously running and after for example an SDC restart, some pipelines using a specific driver will work correctly, and others, using the same JDBC driver will fail.
Currently, there is an idea that there is a problem in the JVM's underlying JDBC driver management code. It seems that in programs that use multiple classloaders sometimes the JDBC drivers fail to load, depending on the sequence in which they are used. It also seems that in this case, not all of the drivers are available in every classloader. Sometimes, the drivers will be available for one JDBC stage and may not be available in other JDBC stages in other pipelines. In the first case, you would see the driver listed in the sdc.log when the pipeline is starting and you search for the "Registered Drivers" in the sdc.log. This issue seems to occur intermittently and can be verified by comparing the
Registered Drivers" portion of the sdc.log with other instanced of "Registered Drivers" trace.
The Registered Drivers trace is generated each time a pipeline is started. If you see a case where the list of drivers is different, and the pipeline does not start - you can use a workaround for this issue, by pre-loading the drivers at SDC start up time, so they are available for every pipeline, in every classloader, by making a configuration change to the sdc.properties file.
By updating the stage.conf_com.streamsets.pipeline.stage.jdbc.drivers.load=
line in sdc.properties Data Collector will preload the specifically mentioned drivers.
An example might be:
stage.conf_com.streamsets.pipeline.stage.jdbc.drivers.load=org.postgresql.Driver,com.microsoft.sqlserver.jdbc.SQLServerDriver,com.mysql.jdbc.Driver,com.cloudera.impala.jdbc4.Driver
After changing the configuration, remember to restart SDC.