As a Technical Support Engineer (TSE), most of my blogs come from experiences encountered by our customer base. PRBs are never nice, but they do offer great opportunities for blog posts. One in particular is KB0639042, which is causing some issues while running transforms after upgrading to Jakarta.

 

The tricky part about this PRB is that the import set only reports a java.lang.NullPointerException, so we need to dig into the log file to determine the underlying issue.

 

Looking in the system logs, we get a better idea of where the exception happened:

 

SEVERE *** ERROR *** com.glide.system_import_set.ImportSetTransformerWorker

java.lang.NullPointerException

        at java.util.Calendar.setTime(Calendar.java:1770)

        at java.text.SimpleDateFormat.format(SimpleDateFormat.java:943)

        at java.text.SimpleDateFormat.format(SimpleDateFormat.java:936)

        at java.text.DateFormat.format(DateFormat.java:345)

        at com.glide.db.impex.transformer.TransformEntry.getDateString(TransformEntry.java:126)

        at com.glide.db.impex.transformer.TransformerField.getSourceValue(TransformerField.java:116)

        at com.glide.db.impex.transformer.TransformerField.transformField(TransformerField.java:88)

        at com.glide.db.impex.transformer.TransformRow.transformCurrent(TransformRow.java:100)

        at com.glide.db.impex.transformer.TransformRow.transform(TransformRow.java:69)

        at com.glide.db.impex.transformer.Transformer.transformBatch(Transformer.java:154)

        at com.glide.db.impex.transformer.Transformer.transform(Transformer.java:79)

        at com.glide.system_import_set.ImportSetTransformerImpl.transformEach(ImportSetTransformerImpl.java:239)

        at com.glide.system_import_set.ImportSetTransformerImpl.transformAllMaps(ImportSetTransformerImpl.java:91)

        at com.glide.system_import_set.ImportSetTransformerWorker.startWork(ImportSetTransformerWorker.java:40)

        at com.glide.worker.AbstractProgressWorker.startAndWait(AbstractProgressWorker.java:116)

        at com.glide.worker.ProgressWorker.startAndWait(ProgressWorker.java:52)

        at com.glide.worker.BackgroundProgressJob.execute(BackgroundProgressJob.java:54)

        at com.glide.schedule.JobExecutor.executeJob(JobExecutor.java:103)

        at com.glide.schedule.JobExecutor.execute(JobExecutor.java:89)

        at com.glide.schedule.GlideScheduleWorker.executeJob(GlideScheduleWorker.java:219)

        at com.glide.schedule.GlideScheduleWorker.lambda$process$48(GlideScheduleWorker.java:161)

        at com.glide.schedule.GlideScheduleWorker$$Lambda$30/3401850.run(Unknown Source)

        at com.glide.worker.TransactionalWorkerThread.executeInTransaction(TransactionalWorkerThread.java:35)

        at com.glide.schedule.GlideScheduleWorker.process(GlideScheduleWorker.java:161)

        at com.glide.schedule.GlideScheduleWorker.run(GlideScheduleWorker.java:72)

 

From the error stack, we can see that we are dealing with a date/time column.

 

Underlying causes of transform issues after upgrading to Jakarta

 

There are two specific PRBs that we have identified as the source of these data load and transform issues.

  • KB0639042: Transforming a "Basic Date/Time" to "Date/Time" field creates null pointer exception has been identified as the underlying issue.

    This PRB is specific to Jakarta, and as the short description indicates, when the import set (staging) table has a column with a data type of "Basic date/time", we encounter this exception.

    The workaround for this PRB is to modify the import set table and change all of the data types from "Basic date/time" to "Date/Time" (or "String"). This fix has been incorporated into Jakarta Patch 5 and Kingston.

 

MID Server reported error: java.lang.NullPointerException

at java.util.Calendar.setTime(Calendar.java:1770)

at java.text.SimpleDateFormat.format(SimpleDateFormat.java:943)

at java.text.SimpleDateFormat.format(SimpleDateFormat.java:936)

at java.text.DateFormat.format(DateFormat.java:345)

at com.service_now.monitor.jdbc.JDBCRowSet.next(JDBCRowSet.java:181)

at com.service_now.monitor.jdbc.JDBCMultiRowSet.next(JDBCMultiRowSet.java:19)

at com.service_now.mid.probe.JDBCProbe.doSelect(JDBCProbe.java:319)

at com.service_now.mid.probe.JDBCProbe.doQuery(JDBCProbe.java:198)

at com.service_now.mid.probe.JDBCProbe.probe(JDBCProbe.java:123)

at com.service_now.mid.probe.AProbe.process(AProbe.java:81)

at com.service_now.mid.queue_worker.AWorker.runWorker(AWorker.java:119)

at com.service_now.mid.queue_worker.AWorkerThread.run(AWorkerThread.java:20)

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)

at java.lang.Thread.run(Thread.java:745)

 

This PRB has been fixed in Jakarta Patch 2 Hot Fix 1, Jakarta Patch 3 (and all subsequent Jakarta patches), and Kingston.

 

So, when you upgrade to Jakarta, you can either examine all of your import set row tables, checking for Basic date/time data types, or simply upgrade to Jakarta Patch 5 and avoid these issues altogether!