Error in persistenceWeaving check in KcConfigVerifier

3 views
Skip to first unread message

Denne,Chris

unread,
Jan 8, 2019, 3:52:13 PM1/8/19
to kc.techni...@kuali.org

Hi All

Here at CSCU we are upgrading to 1812 code & are now getting this new error related to additional configuration checking added back in November to KcConfigVerifier.java. The new  KcConfigVerifier.verifyWeaving() seems to indicate that Unit among other classes aren’t bytecode weaved.

The method comment block for verifyWeaving claims:

"If JPA weaving is enabled then all annotated classes should implement an interface called PersistenceObject and sometimes PersistenceEntity"

But, Unit class does ultimately extend BusinessObjectBase, which does indeed implement methods for both PersistenceEntity & PersistenceObject

however something in the KcConfigVerifier.findNotWeaved is flagging it as not weaved. I haven't gone through the whole list of classes shown in the error below, but each one from that list comes from the findNotWeaved code that is a stream of all non-weaved classes in org.kuali and co.kuali packages ... at least from my reading of both the code and comment.

 

I don’t get this error in my local development environment, rather, only in our deployed test environments. I don’t see any configuration that specifies enabling JPA weaving. Is it some build time flag? Also, it doesn’t seem there is any conditional check to optionally run this verifyWeaving when afterPropertiesSet() is called.

 

 

 

Caused by: java.lang.RuntimeException: Found a class(es) which are not bytecode weaved: [class org.kuali.coeus.common.framework.unit.Unit, class org.kuali.coeus.common.budget.framework.personnel.TbnPerson, class org.kuali.coeus.propdev.impl.keyword.PropScienceKeyword, class org.kuali.coeus.common.budget.framework.period.BudgetPeriodType, class org.kuali.kra.award.home.AwardType, class org.kuali.coeus.common.framework.type.ActivityType, class org.kuali.coeus.common.budget.framework.core.category.BudgetCategoryType, class org.kuali.coeus.common.framework.org.audit.OrganizationAuditAcceptedType, class org.kuali.coeus.common.budget.framework.core.category.BudgetCategory, class org.kuali.coeus.common.framework.type.ProposalType, class org.kuali.coeus.common.budget.framework.rate.FormulatedType, class org.kuali.coeus.common.budget.framework.core.CostElement, class org.kuali.coeus.common.framework.org.OrganizationIndirectcost, class org.kuali.coeus.propdev.impl.ynq.ProposalYnq, class org.kuali.kra.bo.DocumentNextvalue, class org.kuali.coeus.common.budget.framework.core.Budget, class org.kuali.coeus.common.budget.framework.distribution.BudgetUnrecoveredFandA, class org.kuali.coeus.common.budget.framework.rate.BudgetLaRate, class org.kuali.coeus.common.budget.framework.rate.RateClassType, class org.kuali.coeus.propdev.impl.s2s.S2sProvider, class org.kuali.coeus.propdev.impl.core.DevelopmentProposal, class org.kuali.coeus.common.budget.framework.income.BudgetProjectIncome, class org.kuali.coeus.propdev.impl.person.ProposalInvestigatorCertification, class org.kuali.coeus.propdev.impl.s2s.S2sUserAttachedFormAttFile, class org.kuali.coeus.common.framework.custom.attr.CustomAttributeDataType, class org.kuali.coeus.award.finance.AwardPosts, class org.kuali.coeus.common.framework.ynq.YnqExplanation, class org.kuali.coeus.common.framework.auth.docperm.DocumentAccess, class org.kuali.coeus.propdev.impl.editable.ProposalChangedData, class org.kuali.coeus.common.framework.unit.admin.UnitAdministratorType, class org.kuali.kra.bo.CostShareType, class org.kuali.coeus.propdev.impl.location.CongressionalDistrict, class org.kuali.coeus.propdev.impl.person.attachment.ProposalPersonBiographyAttachment, class org.kuali.coeus.common.budget.framework.personnel.BudgetPersonnelRateAndBase, class org.kuali.coeus.propdev.impl.s2s.S2sRevisionType, class org.kuali.coeus.propdev.impl.state.ProposalState, class org.kuali.coeus.propdev.impl.s2s.override.S2sOverrideApplicationData, class org.kuali.coeus.propdev.impl.s2s.S2sError, class org.kuali.kra.bo.NsfCode, class org.kuali.coeus.common.api.document.DocumentWorkloadDetails, class org.kuali.coeus.propdev.impl.s2s.S2sAppAttachments, class org.kuali.coeus.propdev.impl.budget.BudgetStatus, class org.kuali.coeus.common.framework.org.type.OrganizationType, class org.kuali.coeus.propdev.impl.s2s.override.S2sOverrideAttachment, class org.kuali.coeus.common.budget.framework.rate.RateClass, class org.kuali.coeus.common.framework.compliance.exemption.ExemptionType, class org.kuali.coeus.propdev.impl.abstrct.ProposalAbstract, class org.kuali.coeus.common.framework.rolodex.Rolodex, class org.kuali.coeus.common.framework.custom.attr.CustomAttribute, class org.kuali.coeus.common.budget.framework.nonpersonnel.BudgetLineItemCalculatedAmount, class org.kuali.coeus.common.framework.ynq.Ynq, class org.kuali.coeus.common.budget.framework.nonpersonnel.BudgetFormulatedCostDetail, class org.kuali.coeus.common.framework.org.Organization, class org.kuali.coeus.propdev.impl.sponsor.ProposalCfda, class org.kuali.coeus.propdev.impl.budget.subaward.BudgetSubAwardPeriodDetail, class org.kuali.coeus.propdev.impl.person.ProposalPersonDegree, class org.kuali.coeus.common.budget.framework.rate.BudgetRate, class org.kuali.coeus.propdev.impl.attachment.ValidNarrForms, class org.kuali.coeus.propdev.impl.budget.modular.BudgetModular, class org.kuali.coeus.common.budget.framework.personnel.BudgetPersonnelCalculatedAmount, class org.kuali.coeus.common.framework.person.PropAwardPersonRole, class org.kuali.coeus.common.framework.person.attr.CitizenshipType, class org.kuali.coeus.propdev.impl.person.ProposalPersonUnit, class org.kuali.coeus.common.budget.framework.rate.ValidCeRateType, class org.kuali.coeus.propdev.impl.location.ProposalSite, class org.kuali.coeus.common.budget.framework.personnel.BudgetPersonSalaryDetails, class org.kuali.coeus.propdev.impl.s2s.S2sApplication, class org.kuali.coeus.propdev.impl.budget.subaward.BudgetSubAwards, class org.kuali.coeus.common.budget.framework.distribution.BudgetCostShare, class org.kuali.coeus.common.framework.person.attr.KcPersonExtendedAttributes, class org.kuali.coeus.propdev.impl.specialreview.ProposalSpecialReview, class org.kuali.coeus.common.budget.framework.nonpersonnel.BudgetLineItem, class org.kuali.coeus.propdev.impl.specialreview.ProposalSpecialReviewExemption, class org.kuali.coeus.propdev.impl.budget.editable.BudgetChangedData, class org.kuali.coeus.common.framework.unit.admin.UnitAdministrator, class org.kuali.kra.web.krad.homepage.HomePageMenuItem, class org.kuali.coeus.propdev.impl.person.creditsplit.ProposalUnitCreditSplit, class org.kuali.coeus.common.budget.framework.rate.RateType, class org.kuali.coeus.propdev.impl.core.ParentDevelopmentProposal, class org.kuali.coeus.propdev.impl.s2s.S2sOpportunity, class org.kuali.coeus.common.framework.compliance.core.SpecialReviewType, class org.kuali.coeus.common.framework.sponsor.SponsorType, class org.kuali.coeus.common.framework.keyword.ScienceKeyword, class org.kuali.coeus.propdev.impl.s2s.S2sAppSubmission, class org.kuali.coeus.propdev.impl.attachment.NarrativeStatus, class org.kuali.coeus.common.budget.framework.nonpersonnel.BudgetRateAndBase, class org.kuali.coeus.propdev.impl.attachment.NarrativeUserRights, class org.kuali.coeus.propdev.impl.person.ProposalPersonCertificationDetails, class org.kuali.coeus.propdev.impl.specialreview.ProposalSpecialReviewAttachment, class org.kuali.coeus.award.finance.timeAndMoney.TimeAndMoneyPosts, class org.kuali.coeus.propdev.impl.location.ProposalSite$ProposalSiteId, class org.kuali.coeus.common.budget.framework.personnel.BudgetPerson, class org.kuali.coeus.propdev.impl.budget.ProposalDevelopmentBudgetExt, class org.kuali.coeus.propdev.impl.s2s.S2sOppForms, class org.kuali.coeus.propdev.impl.person.ProposalPerson, class org.kuali.coeus.common.budget.framework.personnel.BudgetPersonnelDetails, class org.kuali.coeus.award.finance.AwardAccount, class org.kuali.coeus.propdev.impl.attachment.NarrativeType, class org.kuali.coeus.propdev.impl.person.attachment.PropPerDocType, class org.kuali.coeus.common.budget.framework.version.BudgetVersionOverview, class org.kuali.coeus.propdev.impl.s2s.override.S2sOverride, class org.kuali.coeus.propdev.impl.s2s.S2sOpportunityCfda, class org.kuali.coeus.propdev.impl.budget.subaward.BudgetSubAwardFiles, class org.kuali.coeus.propdev.impl.s2s.S2sUserAttachedFormFile, class org.kuali.coeus.propdev.impl.core.ProposalDevelopmentDocument, class org.kuali.coeus.common.framework.org.type.OrganizationTypeList, class org.kuali.coeus.propdev.impl.person.attachment.ProposalPersonBiography, class org.kuali.coeus.common.budget.framework.personnel.JobCode, class org.kuali.coeus.propdev.impl.attachment.NarrativeAttachment, class org.kuali.coeus.common.framework.org.OrganizationYnq, class org.kuali.coeus.common.framework.ynq.YnqExplanationType, class org.kuali.coeus.common.framework.noo.NoticeOfOpportunity, class org.kuali.coeus.propdev.impl.attachment.Narrative, class org.kuali.coeus.common.framework.org.audit.OrganizationAudit, class org.kuali.coeus.propdev.impl.budget.modular.BudgetModularIdc, class org.kuali.coeus.propdev.impl.s2s.S2sFormConfiguration, class org.kuali.coeus.propdev.impl.s2s.S2sSubmissionType, class org.kuali.coeus.propdev.impl.budget.subaward.BudgetSubAwardAttachment, class org.kuali.coeus.common.framework.type.InvestigatorCreditType, class org.kuali.coeus.propdev.impl.s2s.S2sOppForms$S2sOppFormsId, class org.kuali.coeus.propdev.impl.s2s.S2sUserAttachedFormAtt, class org.kuali.coeus.common.framework.custom.attr.CustomAttributeDocValue, class org.kuali.coeus.common.framework.sponsor.Sponsor, class org.kuali.coeus.common.framework.person.attr.DegreeType, class org.kuali.coeus.propdev.impl.s2s.S2sUserAttachedForm, class org.kuali.coeus.sys.impl.controller.rest.audit.RestAuditLogDataObject, class org.kuali.coeus.propdev.impl.person.creditsplit.ProposalPersonCreditSplit, class org.kuali.coeus.common.budget.framework.period.BudgetPeriod, class org.kuali.coeus.common.budget.framework.personnel.AppointmentType, class org.kuali.coeus.propdev.impl.abstrct.AbstractType, class org.kuali.coeus.common.api.document.DocumentWorkflowUserDetails, class org.kuali.coeus.propdev.impl.editable.ProposalColumnsToAlter, class org.kuali.coeus.propdev.impl.person.ProposalPersonYnq, class org.kuali.coeus.common.framework.type.DeadlineType, class org.kuali.coeus.common.framework.compliance.core.SpecialReviewApprovalType, class org.kuali.coeus.propdev.impl.budget.editable.BudgetColumnsToAlter]. This indicates a misconfiguration.

      at org.kuali.coeus.sys.impl.KcConfigVerifier.verifyWeaving(KcConfigVerifier.java:119)

 

 

Ken Geis

unread,
Jan 8, 2019, 4:51:56 PM1/8/19
to Denne,Chris, kc.techni...@kuali.org
Is the code still shareable (i.e. under AGPL3)? If you post the 1812 code somewhere, I'd be happy to give you a second set of eyes on it.


Ken
--
You received this message because you are subscribed to the Google Groups "KC Technical User Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email to kc.technical.co...@kuali.org.


Ken Geis

unread,
Jan 9, 2019, 11:44:08 PM1/9/19
to Denne,Chris, kc.techni...@kuali.org
Well, you probably can't share the source. (An ex-colleague of mine once said, "You haven't lived until you fix a bug without having the source code," to which another colleague replied, "May I never live.")

I'm wondering if the project does class weaving at runtime. If so, however you are launching your local dev (running Maven?) might enable the weaving agent, and maybe your other environments (Tomcat?) don't. I would look at How to Disable or Enable Weaving in a Java SE Environment.


Ken


Denne,Chris

unread,
Jan 10, 2019, 1:54:02 PM1/10/19
to kc.techni...@kuali.org

Hi Everyone,

So, after a bit of close checking into our deployed tomcat configuration (we are still running tomcat7) we found that we were using an older jar version for TomcatInstrumentableClassLoader that apparently didn’t support Dynamic weaving. The older configs were using spring-instrument-tomcat-3.2.13.RELEASE.jar or org.springframework.instrument.tomcat-3.0.4.RELEASE.jar (in the tomcat lib directory). After updating to spring-instrument-tomcat-4.3.10.RELEASE.jar the verifyWeaving check in KcConfigVerifier succeeded.

 

FWIW, I believe those on tomcat 8.5 shouldn’t experience this issue as the explicit inclusion of that jar unnecessary in 8.5.

 

Shout out to tscheeb for his sharp eyes.

 

Thanks - Chris

Reply all
Reply to author
Forward
0 new messages