isis-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Dan Haywood <...@haywood-associates.co.uk>
Subject Re: DomainService fails when invoked via Quartz
Date Sat, 27 Jan 2018 08:47:07 GMT
Hi Jorg,

don't raise a JIRA issue yet, I'm not certain that there's an issue here to
be solved.

Quartz is gonna run the same job over and over, according to what ever
schedule you set up.  We tend to use quartz to run background commands
every 10 seconds, for example.

If you want to do some seeding, then using a SeedService's @PostConstruct
init() method is the way to go, because this will only be invoked once.

HTH
Dan

On Fri, 19 Jan 2018 at 14:56 Rade, Joerg / Kuehne + Nagel / Ham GI-DP <
Joerg.Rade@kuehne-nagel.com> wrote:

> Hi,
>
> I checked again and get the same error even with:
>
>         <name>RunBackgroundJobsEvery10Minutes</name>
>         <job-name>RunBackgroundJobs</job-name>
>         <job-group>DemoApp</job-group>
>         <cron-expression>0 0/10 * * * ?</cron-expression>
>
> Luckily I found [1] ;-) which solved the issue with initial loading.
> And since updating is only required before an action is called via Jenkins
> I'll simply extend this action.
>
> My immediate problem is solved. Should I raise a Jira issue anyway?
>
> Best regards
> Jörg
>
> [1]
> https://isis.apache.org/guides/htg.html#_dg_hints-and-tips_how-run-fixtures-on-app-startup
>
> -----Ursprüngliche Nachricht-----
> Von: Rade, Joerg / Kuehne + Nagel / Ham GI-DP [mailto:
> Joerg.Rade@Kuehne-Nagel.com]
> Gesendet: Freitag, 19. Januar 2018 13:35
> An: users@isis.apache.org
> Betreff: AW: DomainService fails when invoked via Quartz
>
> Hi Dan,
>
> thanks - hat is very likely the culprit. I intended 10 minutes ...
>
> -j
> -----Ursprüngliche Nachricht-----
> Von: Dan Haywood [mailto:dan@haywood-associates.co.uk]
> Gesendet: Freitag, 19. Januar 2018 13:33
> An: users@isis.apache.org
> Betreff: Re: DomainService fails when invoked via Quartz
>
> Hi Jorg,
>
> It's a bit difficult to say from your mail ... I'm not exactly sure what
> you're attempting to do.
>
> The quartz job will be run multiple times, depending on what's in
> quartz-config.xml, eg every 10 seconds..  Therefore those "init" methods
> will be attempting to creating objects every 10 secs too.  If the code you
> are running is not idempotent, then I could quite imagine you getting the
> duplicate key exceptions that you are seeing.
>
> HTH
> Dan
>
> On Tue, 16 Jan 2018 at 15:44 Rade, Joerg / Kuehne + Nagel / Ham GI-DP <
> Joerg.Rade@kuehne-nagel.com> wrote:
>
> > Hi,
> >
> > I've setup isisaddons (command, quartz) in order to check for changed
> > files and to create objects accordingly.
> >
> > When I execute the import via FixtureScripts everything works as
> > expected, but via Quartz I get the following stacktrace:
> >
> > 16:17:03,904  [Datastore            SchedulerQuartzConfigXml_Worker-1
> > ERROR]  Add request failed : INSERT INTO "RELEASES_PROVIDEDSERVICES"
> > ("RELEASE_ID","PROVIDESSERVICE_ID") VALUES (?,?)
> > org.datanucleus.store.rdbms.exceptions.MappedDatastoreException:
> > INSERT INTO "RELEASES_PROVIDEDSERVICES"
> > ("RELEASE_ID","PROVIDESSERVICE_ID") VALUES
> > (?,?)
> >                at
> >
> org.datanucleus.store.rdbms.scostore.JoinSetStore.doInternalAdd(JoinSetStore.java:715)
> >                at
> >
> org.datanucleus.store.rdbms.scostore.JoinSetStore.add(JoinSetStore.java:297)
> >                at
> > org.datanucleus.store.types.wrappers.backed.TreeSet.add(TreeSet.java:674)
> >                at
> >
> org.datanucleus.store.types.SCOUtils.updateCollectionWithCollection(SCOUtils.java:870)
> >                at
> >
> org.datanucleus.store.types.wrappers.backed.TreeSet.initialise(TreeSet.java:148)
> >                at
> >
> org.datanucleus.store.types.wrappers.backed.TreeSet.initialise(TreeSet.java:68)
> >                at
> >
> org.datanucleus.store.types.SCOUtils.wrapAndReplaceSCOField(SCOUtils.java:176)
> >                at
> >
> org.datanucleus.state.StateManagerImpl.setObjectField(StateManagerImpl.java:1804)
> >                at ife.dep.Release.dnSetcapabilities(Release.java)
> >                at ife.dep.Release.setCapabilities(Release.java:93)
> >                at
> > ife.util.ApplicationReader.handleRelease(ApplicationReader.java:136)
> >                at
> > ife.util.ApplicationReader.handleReleases(ApplicationReader.java:120)
> >                at
> > ife.util.ApplicationReader.handleApplication(ApplicationReader.java:109)
> >                at
> > ife.util.ApplicationReader.init(ApplicationReader.java:90)
> >                at
> > ife.util.MasterDataUpdateCommand.execute(MasterDataUpdateCommand.java:32)
> >                at
> >
> ife.util.MasterDataBackgroundCommandsJob.execute(MasterDataBackgroundCommandsJob.java:26)
> >                at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
> >                at
> > org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.ja
> > va:573) Caused by: java.sql.SQLIntegrityConstraintViolationException:
> > integrity constraint violation: unique constraint or index violation;
> > "RELEASES_PROVIDEDSERVICES_PK" table: "RELEASES_PROVIDEDSERVICES"
> >                at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
> >                at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
> >                at
> > org.hsqldb.jdbc.JDBCPreparedStatement.fetchResult(Unknown Source)
> >                at
> > org.hsqldb.jdbc.JDBCPreparedStatement.executeUpdate(Unknown Source)
> >                at
> >
> com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeUpdate(NewProxyPreparedStatement.java:105)
> >                at
> >
> org.datanucleus.store.rdbms.ParamLoggingPreparedStatement.executeUpdate(ParamLoggingPreparedStatement.java:393)
> >                at
> >
> org.datanucleus.store.rdbms.SQLController.executeStatementUpdate(SQLController.java:431)
> >                at
> >
> org.datanucleus.store.rdbms.scostore.JoinSetStore.doInternalAdd(JoinSetStore.java:694)
> >                ... 17 more
> > Caused by: org.hsqldb.HsqlException: integrity constraint violation:
> > unique constraint or index violation; "RELEASES_PROVIDEDSERVICES_PK"
> table:
> > "RELEASES_PROVIDEDSERVICES"
> >                at org.hsqldb.error.Error.error(Unknown Source)
> >                at org.hsqldb.Constraint.getException(Unknown Source)
> >                at org.hsqldb.index.IndexAVLMemory.insert(Unknown Source)
> >                at org.hsqldb.persist.RowStoreAVL.indexRow(Unknown Source)
> >                at
> > org.hsqldb.TransactionManager2PL.addInsertAction(Unknown
> > Source)
> >                at org.hsqldb.Session.addInsertAction(Unknown Source)
> >                at org.hsqldb.Table.insertSingleRow(Unknown Source)
> >                at org.hsqldb.StatementDML.insertSingleRow(Unknown Source)
> >                at org.hsqldb.StatementInsert.getResult(Unknown Source)
> >                at org.hsqldb.StatementDMQL.execute(Unknown Source)
> >                at org.hsqldb.Session.executeCompiledStatement(Unknown
> > Source)
> >                at org.hsqldb.Session.execute(Unknown Source)
> >                ... 23 more
> >
> > The relation Release-RequiredService is m:n. My Job class:
> >
> > package ife.util;
> >
> > import
> > org.apache.isis.core.commons.authentication.AuthenticationSession;
> > import
> > org.apache.isis.core.runtime.sessiontemplate.AbstractIsisSessionTempla
> > te; import
> > org.apache.isis.core.runtime.system.persistence.PersistenceSession;
> >
> > import ife.env.RuntimeEnvironments;
> >
> > public class MasterDataUpdateCommand extends AbstractIsisSessionTemplate
> {
> >     @javax.inject.Inject
> >     private ApplicationReader applicationReader;
> >     @javax.inject.Inject
> >     private Properties properties;
> >     @javax.inject.Inject
> >     private RuntimeEnvironments runtimeEnvironments;
> >
> >     @Override
> >     public void execute(AuthenticationSession authSession, Object
> > context) {
> >         try {
> >             this.getIsisSessionFactory().openSession(authSession);
> >             PersistenceSession persistenceSession =
> > this.getPersistenceSession();
> >
> > persistenceSession.getServicesInjector().injectServicesInto(this);
> >
> >             properties.init();  // simple objects without relation -> OK
> >             applicationReader.init();  // m:n relation breaks
> >             runtimeEnvironments.init();
> >         } finally {
> >             this.getIsisSessionFactory().closeSession();
> >         }
> >     }
> >
> > }
> >
> >
> >
> > ApplicationReader is in the same package as MasterDataUpdateCommand
> > and is annotated with
> >
> > @DomainService(nature = NatureOfService.DOMAIN)
> >
> > 1.16.0 and 1.15.1 behave the same.
> >
> > Am I doing something wrong?
> >
> > Thanks in advance
> > Jörg
> >
> >
> > Kühne + Nagel (AG & Co.) KG
> > Rechtsform: Kommanditgesellschaft, Bremen HRA 21928, USt-IdNr.: DE
> > 812773878.
> > Geschäftsleitung Kühne + Nagel (AG & Co.) KG: Dr. Hansjörg Rodi (Vors.
> > ), Martin Brinkmann, Holger Ketz, Jan-Hendrik Köstergarten, Nicholas
> > Minde, Michael Nebel, Lars Wedel, Matthias Weiner.
> > Persönlich haftende Gesellschafterin: Kühne & Nagel A.G., Rechtsform:
> > Aktiengesellschaft nach luxemburgischem Recht, HR-Nr.: B 18745,
> > Geschäftsführendes Verwaltungsratsmitglied: Karl Gernandt.
> > Geschäftsleitung Region Zentral- und Osteuropa: Dr. Hansjörg Rodi
> > (Vors.), Dominic Edmonds, Thierry Held, Uwe Hött, Richard Huhn, Holger
> > Ketz, Jan-Hendrik Köstergarten, Jan Kunze, Michael Nebel, Mustafa Sener.
> >
> > Wir arbeiten ausschließlich auf Grundlage der Allgemeinen Deutschen
> > Spediteurbedingungen 2017 (ADSp 2017). Hinweis: Die ADSp 2017 weichen
> > in Ziffer 23 hinsichtlich des Haftungshöchstbetrages für Güterschäden
> > (§ 431
> > HGB) vom Gesetz ab, indem sie die Haftung bei multimodalen Transporten
> > unter Einschluss einer Seebeförderung und bei unbekanntem Schadenort
> > auf 2 SZR/kg und im Übrigen die Regelhaftung von 8,33 SZR/kg
> > zusätzlich auf 1,25 Millionen Euro je Schadenfall sowie 2,5 Millionen
> > Euro je Schadenereignis, mindestens aber 2 SZR/kg, beschränken. Die
> > ADSp sind auf unserer Webseite als Download erhältlich. Auf Anfrage
> senden wir Ihnen diese auch gerne zu.
> >
>
> Kühne + Nagel (AG & Co.) KG
> Rechtsform: Kommanditgesellschaft, Bremen HRA 21928, USt-IdNr.: DE
> 812773878.
> Geschäftsleitung Kühne + Nagel (AG & Co.) KG: Dr. Hansjörg Rodi (Vors. ),
> Martin Brinkmann, Holger Ketz, Jan-Hendrik Köstergarten, Nicholas Minde,
> Michael Nebel, Lars Wedel, Matthias Weiner.
> Persönlich haftende Gesellschafterin: Kühne & Nagel A.G., Rechtsform:
> Aktiengesellschaft nach luxemburgischem Recht, HR-Nr.: B 18745,
> Geschäftsführendes Verwaltungsratsmitglied: Karl Gernandt.
> Geschäftsleitung Region Zentral- und Osteuropa: Dr. Hansjörg Rodi (Vors.),
> Dominic Edmonds, Thierry Held, Uwe Hött, Richard Huhn, Holger Ketz,
> Jan-Hendrik Köstergarten, Jan Kunze, Michael Nebel, Mustafa Sener.
>
> Wir arbeiten ausschließlich auf Grundlage der Allgemeinen Deutschen
> Spediteurbedingungen 2017 (ADSp 2017). Hinweis: Die ADSp 2017 weichen in
> Ziffer 23 hinsichtlich des Haftungshöchstbetrages für Güterschäden (§ 431
> HGB) vom Gesetz ab, indem sie die Haftung bei multimodalen Transporten
> unter Einschluss einer Seebeförderung und bei unbekanntem Schadenort auf 2
> SZR/kg und im Übrigen die Regelhaftung von 8,33 SZR/kg zusätzlich auf 1,25
> Millionen Euro je Schadenfall sowie 2,5 Millionen Euro je Schadenereignis,
> mindestens aber 2 SZR/kg, beschränken. Die ADSp sind auf unserer Webseite
> als Download erhältlich. Auf Anfrage senden wir Ihnen diese auch gerne zu.
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message