As far as I understood, you can use the locale so that DIH saves the last index 
time for  the given time zone and not for UTC. So if you set the locale 
according to the timezone of your DB you don't need to convert dates for 
comparison.

But for me it's not working because every time I include settings for the 
propertyWriter (concrete data doesn't matter - I tried a lot),  the null 
pointer exception appears. So I had to find a workaround and convert now the 
time saved by the DIH from UTC to the timezone of my DB when comparing for 
delta imports. But it's an ugly workaround I don't like. 

So, if anyone has an idea why this NPE occurs it would be great. Do I perhaps 
have to add something to solrconfig.xml?

Thanks,
Birgit



-----Original Message-----
From: Jamie Jackson [mailto:jamieja...@gmail.com] 
Sent: Tuesday, September 19, 2017 6:54 PM
To: solr-user@lucene.apache.org
Subject: [bulk]: Re: [bulk]: Dates and DataImportHandler

FWIW, I know mine worked, so maybe try:

<propertyWriter dateFormat="yyyy-MM-dd HH:mm:ss"
type="SimplePropertiesWriter" />

I can't conceive of what the locale would possibly do when a dateFormat is 
specified, so I omitted the attribute. (Maybe one can specify dateFormat *or 
*locale--it seems like specifying both would cause a clash.) For what it's 
worth, the format you're trying to write seems identical to the default*, so 
I'm not sure what benefit you're getting by using that propertyWriter.

*It's identical to *my* default, anyway. Maybe the default changes based on 
one's system configuration, I don't know. This stuff isn't very well documented.

On Tue, Sep 19, 2017 at 7:22 AM, Mannott, Birgit <b.mann...@klopotek.de>
wrote:

> Hi,
>
> I have a similar problem. I try to change the timezone for the 
> last_index_time by setting
>
>         <propertyWriter dateFormat="yyyy-MM-dd HH:mm:ss"
> type="SimplePropertiesWriter" locale="en_US" />
>
> in the <dataConfig> section of my data-config.xml file.
>
> But when doing this I always get a NullPointerException on Delta Import:
>
> 2017-09-15 14:04:00.825 INFO  (Thread-2938) [   x:mex_prd_dev1100-ap]
> o.a.s.h.d.DataImporter Starting Delta Import
> 2017-09-15 14:04:00.827 ERROR (Thread-2938) [   x:mex_prd_dev1100-ap]
> o.a.s.h.d.DataImporter Delta Import Failed
> org.apache.solr.handler.dataimport.DataImportHandlerException: Unable 
> to PropertyWriter implementation:SimplePropertiesWriter
>             at org.apache.solr.handler.dataimport.DataImporter.
> createPropertyWriter(DataImporter.java:330)
>             at org.apache.solr.handler.dataimport.DataImporter.
> doDeltaImport(DataImporter.java:439)
>             at org.apache.solr.handler.dataimport.DataImporter.
> runCmd(DataImporter.java:476)
>             at org.apache.solr.handler.dataimport.DataImporter.
> lambda$runAsync$0(DataImporter.java:457)
>             at java.lang.Thread.run(Thread.java:745)
> Caused by: java.lang.NullPointerException
>             at java.text.SimpleDateFormat.<init>(SimpleDateFormat.java:
> 598)
>             at org.apache.solr.handler.dataimport.
> SimplePropertiesWriter.init(SimplePropertiesWriter.java:100)
>             at org.apache.solr.handler.dataimport.DataImporter.
> createPropertyWriter(DataImporter.java:328)
>             ... 4 more
>
> Has anyone an idea what is wrong or missing?
>
> Thanks,
> Birgit
>
>
>
> -----Original Message-----
> From: Jamie Jackson [mailto:jamieja...@gmail.com]
> Sent: Tuesday, September 19, 2017 3:42 AM
> To: solr-user@lucene.apache.org
> Subject: [bulk]: Dates and DataImportHandler
>
> Hi folks,
>
> My DB server is on America/Chicago time. Solr (on Docker) is running 
> on UTC. Dates coming from my (MariaDB) data source seem to get 
> translated properly into the Solr index without me doing anything special.
>
> However when doing delta imports using last_index_time ( 
> http://wiki.apache.org/solr/DataImportHandlerDeltaQueryViaFullImport 
> ), I can't seem to get the date, which Solr provides, to be understood 
> by the DB as being UTC (and translated back, accordingly). In other 
> words, the DB thinks the Solr UTC date is local, so it thinks the date 
> is ahead by six hours.
>
> '${dataimporter.request.clean}' != 'false'
>
> or dt > '${dataimporter.last_index_time}'
>
> I came up with this workaround, which seems to work:
>
> '${dataimporter.request.clean}' != 'false'
>
> /* ${user.timezone} is UTC, and the 
> ${custom.dataimporter.datasource.tz}
> property is set to America/Chicago */
>
> or dt > CONVERT_TZ('${dataimporter.last_index_time}','${user.
> timezone}','${
> custom.dataimporter.datasource.tz}')
>
> However, isn't there a way for this translation to happen more naturally?
>
> I thought maybe I could do something like this:
>
> <propertyWriter
>
> dateFormat="yyyy-MM-dd HH:mm:ssZ"
>
> type="SimplePropertiesWriter"
>
> />
>
> The above did set the property as expected (with a trailiing `+0000`), 
> but that didn't seem to help the DB understand/translate the date.
>
> Thanks,
> Jamie
>

Reply via email to