Re: ArrayIndexOutOfBoundsException in ContentField.activate(...)
Serge Huber <[email protected]>
| Newsgroups | gmane.comp.cms.jahia.devel |
|---|---|
| Message-ID | <[email protected]> |
Hi Benjamin, No, not really. Unless maybe an operation failed or Tomcat was shutdown during an operation and it was tried later or something like that. Regards, Serge Huber. [email protected] wrote: > > Hi Serge, > > yes, it solves the problem. Do you have an idea why those duplicates > could happen? > > Greetings, > Benjamin Papez > > System Architect > *************************************************** > COMMARO mobile trading systems GmbH > Lakeside B04 > A-9020 Klagenfurt - Austria/Europe > > phone: +43 (463) 298505-38 > fax: +43 (463) 298505-22 > *************************************************** > > > *Serge Huber <[email protected]>* > > 08.06.2005 12:00 > Please respond to > <[email protected]> > > > > To > [email protected] > cc > > Subject > Re: ArrayIndexOutOfBoundsException in ContentField.activate(...) > > > > > > > > > > > Hi Benjamin, > > Indeed those duplicates are sure to cause problems. I would recommend > shutting down Jahia, purging the duplicates and relaunching, to see if > it solves the problem. > > Regards, > Serge Huber. > > [email protected] wrote: > > > > > Hi Serge! > > > > Finally I could reproduce the exception I was mentioning a month ago. > > It somehow happens that for some fields there are two same entries in > > the database. Here is an excerpt of our JAHIA_FIELDS_DATA table. > > *ID_JAHIA_FIELDS_DATA* *JAHIAID_JAHIA_FIELDS_DATA* > > *PAGEID_JAHIA_FIELDS_DATA* *CTNID_JAHIA_FIELDS_DATA* > > *FIELDDEFID_JAHIA_FIELDS_DATA* > *TYPE_JAHIA_FIELDS_DATA* > > *CONNECTTYPE_JAHIA_FIELDS_DATA* > *VALUE_JAHIA_FIELDS_DATA* > > *RANK_JAHIA_FIELDS_DATA* *RIGHTS_JAHIA_FIELDS_DATA* > *VERSION_ID* > > *WORKFLOW_STATE* *LANGUAGE_CODE* > > 10263 1 1 10043 > 10041 1 0 > 100 0 11685 0 > 2 shared > > 10263 1 1 10043 > 10041 1 0 > 100 0 11685 0 > 2 shared > > 10264 1 1 10043 > 10042 20 0 > > > 0 11686 0 > 2 shared > > 10264 1 1 10043 > 10042 20 0 > > > 0 11686 0 > 2 shared > > 10265 1 1 10043 > 10043 20 0 > > > 0 11687 0 > 2 shared > > 10265 1 1 10043 > 10043 20 0 > > > 0 11687 0 > 2 shared > > 10266 1 1 10043 > 10039 2 0 > test 0 11688 0 > 2 de > > 10267 1 1 10043 > 10040 20 0 > > > 0 11689 0 > 2 shared > > > > > > > > For those fields, which have two entries, we get the mentioned > > exceptions. How come, that there are two same entries? I guess it is > > not a normal behaviour and how can we prevent this exception, which > > blocks the workflow as a page cannot be activated anymore? > > > > Greetings, > > Benjamin > > > > Serge wrote on Fri, 13 May 2005 02:17:07 -0700 > > > > Hi Benjamin, > > > > Do you have a reliable way of reproducing this so that we may test it > > ? We haven't be able to reproduce it here during our testing. Also > > which JVM are you using ? > > > > Regards, > > Serge Huber. > > > > Benjamin wrote on Wed, 11 May 2005 03:09:32 -0700 : > > > > We are still using Jahia 4.0.5, but on heavy testing we encounter that > > the workflow process is quite unstable sometimes. When looking in the > > LOG files, I for instance can see an ArrayIndexOutOfBoundsException in > > the ContentField.acivate(...) method. > > > > In this loop we get this exception in the line > > activeAndStagingEntryStates.remove (i);, because i has the value -1. > > It seem strange anyway that the removing from the > > activeAndStagingEntryStates collection is happening in the inner loop > > and not in the outer loop. As you haven't changed the code in the 4.1 > > version it seems to work for everybody else, or could it be that there > > is a bug? > > > > // we backup all active entries that will be replaced > > for (int i = 0; i < activeAndStagingEntryStates.size (); i++) { > > ContentObjectEntryState actEntryState = (ContentObjectEntryState) > > activeAndStagingEntryStates.get ( > > i); > > if (actEntryState.isActive ()) { > > for (int j = 0; j < stagedEntries.size (); j++) { > > ContentObjectEntryState staEntryState = (ContentObjectEntryState) > > stagedEntries.get ( > > j); > > if (actEntryState.getLanguageCode ().equals ( > > staEntryState.getLanguageCode ())) { > > // ok appollo, we catched an active entry here! we handle this.. > > if (versioningEnabled) { > > > > ContentObjectEntryState backupEntryState = ContentFieldDB.getInstance > > ().backupDBValue ( > > this, actEntryState); // we backup the active version > > // ok we backuped an entry of the field > > if (backupEntryState != null) { > > // if the entry state list is loaded, let's update it > > if (versioningEntryStates != null) { > > versioningEntryStates.add (backupEntryState); > > } > > // also we must call the changeEntryState because, like, we changed > > the version or > > // something hehe.. > > this.changeEntryState (actEntryState, backupEntryState, > > jParams, stateModifContext); > > } > > } else { > > // if versioning is not enabled, we delete the old value content! > > this.deleteEntry (actEntryState); > > } > > // we then delete the active entry > > ContentFieldDB.getInstance ().deleteDBValue (this, actEntryState); > > activeAndStagingEntryStates.remove (i); > > i -= 1; > > } > > } > > } > > } > > > > Greetings, > > Benjamin Papez > >