isis-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Stephen Cameron <steve.cameron...@gmail.com>
Subject Re: datanucleus issue, maybe
Date Sun, 02 Aug 2015 23:00:24 GMT
Hi,

I tried adding the isis.persistor.datanucleus.RegisterEntities.packagePrefix

key in isis.properties and in persistor_datanucleus.properties (where is
was already, but not set to the correct value).

Strangely this has not fixed the problem.

Is is possible for you take a look? I've created a release v0.0.1 in github
for the project, using Isis 1.9. I want to use 1.9 but till I get this one
sorted I am staying with 1.8.

https://github.com/Stephen-Cameron-Data-Services/isis-chats/releases

To see the issue just try creating a new Volunteer from the menu, it will
hang after you submit the new person's names. In contrast creatning a new
Participant, basically the same thing works fine.

Thx
Steve



On Sat, Aug 1, 2015 at 11:23 AM, Stephen Cameron <steve.cameron.62@gmail.com
> wrote:

> That warning is for 1.9 obviously.
>
> On Sat, Aug 1, 2015 at 9:49 AM, Stephen Cameron <
> steve.cameron.62@gmail.com> wrote:
>
>> Hi Dan
>>
>> Thanks for the feedback, I was going to try using 1.8 again today and
>> will do so.
>>
>> If I do a clean install on the whole project now I get an warning on the
>> webapp project:
>> [WARNING] The POM for
>> org.apache.isis.core:isis-core-viewer-restfulobjects-rendering:jar:1.9.0-20150731.110526-139
>> is missing, no dependency information available.
>>
>> Will provide more info once I test the suggestions.
>>
>>
>>
>>
>> On Sat, Aug 1, 2015 at 12:45 AM, Dan Haywood <
>> dan@haywood-associates.co.uk> wrote:
>>
>>> Hi Steve,
>>>
>>> funny, hit almost the same issue just today while implementing ISIS-1182
>>> [1].  It's fixed on 1.9.0-SNAPSHOT but might also work fine on 1.8.0.
>>>
>>> As you've discovered, DN can sometimes trip up if we rely on it to lazily
>>> build its metamodel.  In the past we've seen issues this occur with it
>>> submitting invalid SQL (when it only knows about a superclass table but
>>> not
>>> yet any of the subclasses), and we've also seen deadlocks on HSQLDB when
>>> DDL is intermingled with DML.  I think you are seeing this second case
>>> yourself.
>>>
>>> The fix - that works on 1.9.0-SNAPSHOT at least - is to use specify the
>>>
>>>           isis.persistor.datanucleus.RegisterEntities.packagePrefix
>>>
>>> key in isis.properties.  This causes Isis to go searching for and
>>> registering all domain entities.
>>>
>>> We introduced this key a good while back, but I also recall that in one
>>> of
>>> the more recent versions (1.7.0, 1.8.0?) it got broken again.  Anyway,
>>> I've
>>> added some migration notes for 1.8.0 because with ISIS-1182 it seems to
>>> be
>>> more critical again to get it right.
>>>
>>> Let me know how you get on.
>>>
>>> Thx
>>> Dan
>>>
>>>
>>> [1] https://issues.apache.org/jira/browse/ISIS-1182
>>> [2]
>>>
>>> http://isis.apache.org/migration-notes.html#_migration-notes_1.8.0-to-1.9.0_specify-all-dom-packages
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> On 31 July 2015 at 14:35, Stephen Cameron <steve.cameron.62@gmail.com>
>>> wrote:
>>>
>>> > More info, yes it seems the Volunteer table is not created at the same
>>> time
>>> > as the other tables, until I actually try to add an entry, Isis seems
>>> to
>>> > check for it, finds it missing and creates it.I am doing almost
>>> exactly the
>>> > same procedure successfully with another table that is already created,
>>> > participant.
>>> >
>>> > Here is the current striped down Volunteer class defintion:
>>> > package au.com.scds.chats.dom.modules.volunteer;
>>> >
>>> > import javax.jdo.annotations.Column;
>>> > import javax.jdo.annotations.IdentityType;
>>> >
>>> > import org.apache.isis.applib.DomainObjectContainer;
>>> > import org.apache.isis.applib.annotation.MemberOrder;
>>> >
>>> > import au.com.scds.chats.dom.modules.general.Person;
>>> >
>>> >
>>> > @javax.jdo.annotations.PersistenceCapable(identityType =
>>> > IdentityType.DATASTORE)
>>> > @javax.jdo.annotations.DatastoreIdentity(strategy =
>>> > javax.jdo.annotations.IdGeneratorStrategy.IDENTITY, column = "id")
>>> > public class Volunteer {
>>> >
>>> >     // {{ Person (property)
>>> >     private Person person;
>>> >
>>> >     @Column(allowsNull="false")
>>> >     @MemberOrder(sequence = "1")
>>> >     public Person getPerson() {
>>> >         return person;
>>> >     }
>>> >
>>> >     public void setPerson(final Person person) {
>>> >         this.person = person;
>>> >     }
>>> >
>>> >     // }}
>>> >
>>> >     @javax.inject.Inject
>>> >     @SuppressWarnings("unused")
>>> >     private DomainObjectContainer container;
>>> >
>>> >     // endregion
>>> > }
>>> >
>>> >
>>> >
>>> > On Fri, Jul 31, 2015 at 10:38 PM, Stephen Cameron <
>>> > steve.cameron.62@gmail.com> wrote:
>>> >
>>> > > Hi folks
>>> > >
>>> > > I have a problem that I cannot solve and hoping someone might have
>>> seen
>>> > > similar.
>>> > >
>>> > > When I create a new entity the server freezes, its just the one kind
>>> of
>>> > > entity.
>>> > >
>>> > > In the server console I see the following output.
>>> > >
>>> > > 22:13:26,989  [Schema               455726379@qtp-1318209130-0
>>> DEBUG]
>>> > > ALTER TABLE "Activity" ADD CONSTRAINT "Activity_FK2" FOREIGN KEY
>>> > > ("activities_id_OID") REFERENCES "Participant" ("id")
>>> > > 22:13:26,991  [Schema               455726379@qtp-1318209130-0
>>> DEBUG]
>>> > > Execution Time = 2 ms
>>> > > 22:13:26,991  [Schema               455726379@qtp-1318209130-0
>>> DEBUG]
>>> > > Creating foreign key constraint : "Activity_FK1" in catalog ""
>>> schema ""
>>> > > 22:13:26,991  [Schema               455726379@qtp-1318209130-0
>>> DEBUG]
>>> > > ALTER TABLE "Activity" ADD CONSTRAINT "Activity_FK1" FOREIGN KEY
>>> > > ("provider_id_OID") REFERENCES "Provider" ("id")
>>> > > 22:13:26,992  [Schema               455726379@qtp-1318209130-0
>>> DEBUG]
>>> > > Execution Time = 1 ms
>>> > > 22:13:26,993  [Schema               455726379@qtp-1318209130-0
>>> DEBUG]
>>> > > Creating index "Activity_N49" in catalog "" schema ""
>>> > > 22:13:26,993  [Schema               455726379@qtp-1318209130-0
>>> DEBUG]
>>> > > CREATE INDEX "Activity_N49" ON "Activity" ("provider_id_OID")
>>> > > 22:13:26,993  [Schema               455726379@qtp-1318209130-0
>>> DEBUG]
>>> > > Execution Time = 0 ms
>>> > > 22:13:26,994  [Schema               455726379@qtp-1318209130-0
>>> DEBUG]
>>> > > Schema Transaction committing with connection
>>> > >
>>> >
>>> "org.datanucleus.store.rdbms.datasource.dbcp.PoolingDataSource$PoolGuardConnectionWrapper@587ed84a
>>> > > "
>>> > > 22:13:26,994  [Schema               455726379@qtp-1318209130-0
>>> DEBUG]
>>> > > Schema Transaction closing with connection
>>> > >
>>> >
>>> "org.datanucleus.store.rdbms.datasource.dbcp.PoolingDataSource$PoolGuardConnectionWrapper@587ed84a
>>> > > "
>>> > > 22:13:33,718  [PropertiesFactory    455726379@qtp-1318209130-0 INFO
>>> ]
>>> > > Loading properties files from
>>> > >
>>> >
>>> jar:file:/C:/Users/stevec/.m2/repository/org/apache/wicket/wicket-extensions/6.17.0/wicket-extensions-6.17.0.jar!/org/apache/wicket/extensions/Initializer.properties
>>> > > with loader
>>> > > org.apache.wicket.resource.IsoPropertiesFilePropertiesLoader@723b0f4d
>>> > > 22:13:55,556  [PropertiesFactory    455726379@qtp-1318209130-0 INFO
>>> ]
>>> > > Loading properties files from
>>> > >
>>> >
>>> jar:file:/C:/Users/stevec/.m2/repository/org/apache/isis/viewer/isis-viewer-wicket-ui/1.9.0-SNAPSHOT/isis-viewer-wicket-ui-1.9.0-SNAPSHOT.jar!/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersFormPanel.properties
>>> > > with loader
>>> > > org.apache.wicket.resource.IsoPropertiesFilePropertiesLoader@723b0f4d
>>> > > 1
>>> > > 2
>>> > > 3
>>> > > 22:14:05,008  [Schema               455726379@qtp-1318209130-0
>>> DEBUG]
>>> > > Column ""Volunteer"."id"" added to internal representation of table.
>>> > > 22:14:05,008  [Schema               455726379@qtp-1318209130-0
>>> DEBUG]
>>> > > Field [DATASTORE_ID] -> Column(s) ["Volunteer"."id"] using mapping
of
>>> > type
>>> > > "org.datanucleus.store.rdbms.mapping.java.DatastoreIdMapping"
>>> > > (org.datanucleus.store.rdbms.mapping.datastore.BigIntRDBMSMapping)
>>> > > 22:14:05,009  [Schema               455726379@qtp-1318209130-0
>>> DEBUG]
>>> > > Table "Volunteer" will manage the persistence of the fields for class
>>> > > au.com.scds.chats.dom.modules.volunteer.Volunteer (inheritance
>>> > > strategy="new-table")
>>> > > 22:14:05,009  [Schema               455726379@qtp-1318209130-0
>>> DEBUG]
>>> > > Column ""Volunteer"."person_id_OID"" added to internal
>>> representation of
>>> > > table.
>>> > > 22:14:05,009  [Schema               455726379@qtp-1318209130-0
>>> DEBUG]
>>> > > Field [au.com.scds.chats.dom.modules.volunteer.Volunteer.person] ->
>>> > > Column(s) ["Volunteer"."person_id_OID"] using mapping of type
>>> > > "org.datanucleus.store.rdbms.mapping.java.PersistableMapping"
>>> > > (org.datanucleus.store.rdbms.mapping.datastore.BigIntRDBMSMapping)
>>> > > 22:14:05,009  [Schema               455726379@qtp-1318209130-0
>>> DEBUG]
>>> > > Column ""Volunteer"."status"" added to internal representation of
>>> table.
>>> > > 22:14:05,010  [Schema               455726379@qtp-1318209130-0
>>> DEBUG]
>>> > > Field [au.com.scds.chats.dom.modules.volunteer.Volunteer.status] ->
>>> > > Column(s) ["Volunteer"."status"] using mapping of type
>>> > > "org.datanucleus.store.rdbms.mapping.java.EnumMapping"
>>> > > (org.datanucleus.store.rdbms.mapping.datastore.VarCharRDBMSMapping)
>>> > > 22:14:05,010  [Schema               455726379@qtp-1318209130-0
>>> DEBUG]
>>> > > Table/View "Volunteer" has been initialised
>>> > > 22:14:05,010  [Schema               455726379@qtp-1318209130-0
>>> DEBUG]
>>> > > Schema Transaction started with connection
>>> > >
>>> >
>>> "org.datanucleus.store.rdbms.datasource.dbcp.PoolingDataSource$PoolGuardConnectionWrapper@1855dae
>>> > "
>>> > > with isolation "serializable"
>>> > > 22:14:05,015  [Schema               455726379@qtp-1318209130-0
>>> DEBUG]
>>> > > Check of existence of "Volunteer" returned no table
>>> > > 22:14:05,015  [Schema               455726379@qtp-1318209130-0
>>> DEBUG]
>>> > > Creating table "Volunteer"
>>> > > 22:14:05,015  [Schema               455726379@qtp-1318209130-0
>>> DEBUG]
>>> > > CREATE TABLE "Volunteer"
>>> > > (
>>> > >     "id" BIGINT GENERATED BY DEFAULT AS IDENTITY,
>>> > >     "person_id_OID" BIGINT NULL,
>>> > >     "status" NVARCHAR(255) NOT NULL,
>>> > >     CONSTRAINT "Volunteer_PK" PRIMARY KEY ("id")
>>> > > )
>>> > > 22:14:05,016  [Schema               455726379@qtp-1318209130-0
>>> DEBUG]
>>> > > Execution Time = 1 ms
>>> > > 22:14:05,020  [Schema               455726379@qtp-1318209130-0
>>> DEBUG]
>>> > > Creating foreign key constraint : "Volunteer_FK1" in catalog ""
>>> schema ""
>>> > > 22:14:05,021  [Schema               455726379@qtp-1318209130-0
>>> DEBUG]
>>> > > ALTER TABLE "Volunteer" ADD CONSTRAINT "Volunteer_FK1" FOREIGN KEY
>>> > > ("person_id_OID") REFERENCES "Person" ("id")
>>> > >
>>> > > I'm still no debugging properly yet, so the 1,2,3 are from the
>>> following
>>> > > routine
>>> > >
>>> > >     public Volunteer create(
>>> > >             final @ParameterLayout(named = "First name") String
>>> > firstname,
>>> > >             final @ParameterLayout(named = "Middle name(s)") String
>>> > > middlename,
>>> > >             final @ParameterLayout(named = "Surname") String
>>> surname) {
>>> > > System.out.println("1");
>>> > >         final Volunteer volunteer = container
>>> > >                 .newTransientInstance(Volunteer.class);
>>> > >         final Person person =
>>> > container.newTransientInstance(Person.class);
>>> > >         person.setFirstname(firstname);
>>> > >         person.setMiddlename(middlename);
>>> > >         person.setSurname(surname);
>>> > >         container.persistIfNotAlready(person);
>>> > > System.out.println("2");
>>> > >         volunteer.setPerson(person);
>>> > >         container.persistIfNotAlready(volunteer);
>>> > > System.out.println("3");
>>> > >         return volunteer;
>>> > >     }
>>> > >
>>> > > What seems strange in the output is that the table Volunteer doesn't
>>> seem
>>> > > to be created in the same way as other tables. In fact its after a
>>> > > transaction is committed:
>>> > >
>>> > > DEBUG]  Schema Transaction closing with connection
>>> > >
>>> >
>>> "org.datanucleus.store.rdbms.datasource.dbcp.PoolingDataSource$PoolGuardConnectionWrapper@587ed84a
>>> > > "
>>> > >
>>> > > Also, that Volunteer table is created after the calls to add an
>>> entry in
>>> > > the create method.
>>> > >
>>> > > HFH
>>> > > Steve
>>> > >
>>> > >
>>> >
>>>
>>
>>
>

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