Community
Participate
Working Groups
Build Identifier: 3.7 Using CDO/Dawn-Tutorial in combination with PostgreSQL 8.4 DB produces errors (see stacktrace below) Errordescription can be found at http://www.eclipse.org/forums/index.php/t/218330/ org.eclipse.core.commands.ExecutionException: While executing the operation, an exception occurred at org.eclipse.core.commands.operations.DefaultOperationHistory.execute(DefaultOperationHistory.java:521) at org.eclipse.emf.cdo.dawn.examples.acore.diagram.part.DawnAcoreDiagramEditorUtil.createDiagram(DawnAcoreDiagramEditorUtil.java:157) at org.eclipse.emf.cdo.dawn.examples.acore.diagram.part.DawnAcoreCreationWizard$1.execute(DawnAcoreCreationWizard.java:64) at org.eclipse.ui.actions.WorkspaceModifyOperation$1.run(WorkspaceModifyOperation.java:106) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2344) at org.eclipse.ui.actions.WorkspaceModifyOperation.run(WorkspaceModifyOperation.java:118) at org.eclipse.jface.operation.ModalContext.runInCurrentThread(ModalContext.java:464) at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:372) at org.eclipse.jface.wizard.WizardDialog.run(WizardDialog.java:1029) at org.eclipse.emf.cdo.dawn.examples.acore.diagram.part.DawnAcoreCreationWizard.performFinish(DawnAcoreCreationWizard.java:82) at org.eclipse.jface.wizard.WizardDialog.finishPressed(WizardDialog.java:827) at org.eclipse.jface.wizard.WizardDialog.buttonPressed(WizardDialog.java:432) at org.eclipse.jface.dialogs.Dialog$2.widgetSelected(Dialog.java:624) at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:240) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4165) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3754) at org.eclipse.jface.window.Window.runEventLoop(Window.java:825) at org.eclipse.jface.window.Window.open(Window.java:801) at org.eclipse.ui.internal.handlers.WizardHandler$New.executeHandler(WizardHandler.java:257) at org.eclipse.ui.internal.handlers.WizardHandler.execute(WizardHandler.java:277) at org.eclipse.ui.internal.handlers.HandlerProxy.execute(HandlerProxy.java:293) at org.eclipse.core.commands.Command.executeWithChecks(Command.java:476) at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:508) at org.eclipse.ui.internal.handlers.HandlerService.executeCommand(HandlerService.java:169) at org.eclipse.ui.internal.handlers.SlaveHandlerService.executeCommand(SlaveHandlerService.java:241) at org.eclipse.ui.internal.actions.CommandAction.runWithEvent(CommandAction.java:157) at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:584) at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:501) at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:411) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4165) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3754) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2696) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2660) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2494) at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:674) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:667) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:123) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:344) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:622) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577) at org.eclipse.equinox.launcher.Main.run(Main.java:1410) Caused by: org.eclipse.net4j.util.transaction.TransactionException: org.eclipse.emf.cdo.util.CommitException: Rollback in DBStore: java.lang.IllegalStateException: No type mapping factory found for Image.data: ecore.EByteArray --> DBType.VARBINARY at org.eclipse.emf.cdo.server.internal.db.mapping.TypeMappingRegistry.createTypeMapping(TypeMappingRegistry.java:266) at org.eclipse.emf.cdo.server.internal.db.mapping.AbstractMappingStrategy.createValueMapping(AbstractMappingStrategy.java:616) at org.eclipse.emf.cdo.server.internal.db.mapping.horizontal.AbstractHorizontalClassMapping.createValueMappings(AbstractHorizontalClassMapping.java:188) at org.eclipse.emf.cdo.server.internal.db.mapping.horizontal.AbstractHorizontalClassMapping.initFeatures(AbstractHorizontalClassMapping.java:156) at org.eclipse.emf.cdo.server.internal.db.mapping.horizontal.AbstractHorizontalClassMapping.<init>(AbstractHorizontalClassMapping.java:105) at org.eclipse.emf.cdo.server.internal.db.mapping.horizontal.HorizontalAuditClassMapping.<init>(HorizontalAuditClassMapping.java:93) at org.eclipse.emf.cdo.server.internal.db.mapping.horizontal.HorizontalAuditMappingStrategy.doCreateClassMapping(HorizontalAuditMappingStrategy.java:49) at org.eclipse.emf.cdo.server.internal.db.mapping.AbstractMappingStrategy.createClassMapping(AbstractMappingStrategy.java:506) at org.eclipse.emf.cdo.server.internal.db.mapping.AbstractMappingStrategy.mapClasses(AbstractMappingStrategy.java:492) at org.eclipse.emf.cdo.server.internal.db.mapping.AbstractMappingStrategy.mapPackageInfos(AbstractMappingStrategy.java:470) at org.eclipse.emf.cdo.server.internal.db.mapping.AbstractMappingStrategy.mapPackageUnits(AbstractMappingStrategy.java:457) at org.eclipse.emf.cdo.server.internal.db.mapping.AbstractMappingStrategy.createMapping(AbstractMappingStrategy.java:430) at org.eclipse.emf.cdo.server.internal.db.mapping.horizontal.HorizontalMappingStrategy.createMapping(HorizontalMappingStrategy.java:144) at org.eclipse.emf.cdo.server.internal.db.DBStoreAccessor.writePackageUnits(DBStoreAccessor.java:822) at org.eclipse.emf.cdo.spi.server.StoreAccessor.doWrite(StoreAccessor.java:75) at org.eclipse.emf.cdo.spi.server.StoreAccessorBase.write(StoreAccessorBase.java:149) at org.eclipse.emf.cdo.internal.server.TransactionCommitContext.write(TransactionCommitContext.java:425) at org.eclipse.emf.cdo.spi.server.InternalCommitContext$1.runLoop(InternalCommitContext.java:42) at org.eclipse.emf.cdo.spi.server.InternalCommitContext$1.runLoop(InternalCommitContext.java:1) at org.eclipse.net4j.util.om.monitor.ProgressDistributor.run(ProgressDistributor.java:96) at org.eclipse.emf.cdo.server.internal.net4j.protocol.CommitTransactionIndication.indicatingCommit(CommitTransactionIndication.java:244) at org.eclipse.emf.cdo.server.internal.net4j.protocol.CommitTransactionIndication.indicating(CommitTransactionIndication.java:92) at org.eclipse.emf.cdo.server.internal.net4j.protocol.CDOServerIndicationWithMonitoring.indicating(CDOServerIndicationWithMonitoring.java:109) at org.eclipse.net4j.signal.IndicationWithMonitoring.indicating(IndicationWithMonitoring.java:84) at org.eclipse.net4j.signal.IndicationWithResponse.doExtendedInput(IndicationWithResponse.java:90) at org.eclipse.net4j.signal.Signal.doInput(Signal.java:326) at org.eclipse.net4j.signal.IndicationWithResponse.execute(IndicationWithResponse.java:63) at org.eclipse.net4j.signal.IndicationWithMonitoring.execute(IndicationWithMonitoring.java:63) at org.eclipse.net4j.signal.Signal.runSync(Signal.java:251) at org.eclipse.net4j.signal.Signal.run(Signal.java:147) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) at org.eclipse.emf.cdo.eresource.impl.CDOResourceImpl.save(CDOResourceImpl.java:959) at org.eclipse.emf.cdo.dawn.examples.acore.diagram.part.DawnAcoreDiagramEditorUtil$1.doExecuteWithResult(DawnAcoreDiagramEditorUtil.java:144) at org.eclipse.gmf.runtime.emf.commands.core.command.AbstractTransactionalCommand.doExecute(AbstractTransactionalCommand.java:247) at org.eclipse.emf.workspace.AbstractEMFOperation.execute(AbstractEMFOperation.java:150) at org.eclipse.core.commands.operations.DefaultOperationHistory.execute(DefaultOperationHistory.java:513) ... 54 more Caused by: org.eclipse.emf.cdo.util.CommitException: Rollback in DBStore: java.lang.IllegalStateException: No type mapping factory found for Image.data: ecore.EByteArray --> DBType.VARBINARY at org.eclipse.emf.cdo.server.internal.db.mapping.TypeMappingRegistry.createTypeMapping(TypeMappingRegistry.java:266) at org.eclipse.emf.cdo.server.internal.db.mapping.AbstractMappingStrategy.createValueMapping(AbstractMappingStrategy.java:616) at org.eclipse.emf.cdo.server.internal.db.mapping.horizontal.AbstractHorizontalClassMapping.createValueMappings(AbstractHorizontalClassMapping.java:188) at org.eclipse.emf.cdo.server.internal.db.mapping.horizontal.AbstractHorizontalClassMapping.initFeatures(AbstractHorizontalClassMapping.java:156) at org.eclipse.emf.cdo.server.internal.db.mapping.horizontal.AbstractHorizontalClassMapping.<init>(AbstractHorizontalClassMapping.java:105) at org.eclipse.emf.cdo.server.internal.db.mapping.horizontal.HorizontalAuditClassMapping.<init>(HorizontalAuditClassMapping.java:93) at org.eclipse.emf.cdo.server.internal.db.mapping.horizontal.HorizontalAuditMappingStrategy.doCreateClassMapping(HorizontalAuditMappingStrategy.java:49) at org.eclipse.emf.cdo.server.internal.db.mapping.AbstractMappingStrategy.createClassMapping(AbstractMappingStrategy.java:506) at org.eclipse.emf.cdo.server.internal.db.mapping.AbstractMappingStrategy.mapClasses(AbstractMappingStrategy.java:492) at org.eclipse.emf.cdo.server.internal.db.mapping.AbstractMappingStrategy.mapPackageInfos(AbstractMappingStrategy.java:470) at org.eclipse.emf.cdo.server.internal.db.mapping.AbstractMappingStrategy.mapPackageUnits(AbstractMappingStrategy.java:457) at org.eclipse.emf.cdo.server.internal.db.mapping.AbstractMappingStrategy.createMapping(AbstractMappingStrategy.java:430) at org.eclipse.emf.cdo.server.internal.db.mapping.horizontal.HorizontalMappingStrategy.createMapping(HorizontalMappingStrategy.java:144) at org.eclipse.emf.cdo.server.internal.db.DBStoreAccessor.writePackageUnits(DBStoreAccessor.java:822) at org.eclipse.emf.cdo.spi.server.StoreAccessor.doWrite(StoreAccessor.java:75) at org.eclipse.emf.cdo.spi.server.StoreAccessorBase.write(StoreAccessorBase.java:149) at org.eclipse.emf.cdo.internal.server.TransactionCommitContext.write(TransactionCommitContext.java:425) at org.eclipse.emf.cdo.spi.server.InternalCommitContext$1.runLoop(InternalCommitContext.java:42) at org.eclipse.emf.cdo.spi.server.InternalCommitContext$1.runLoop(InternalCommitContext.java:1) at org.eclipse.net4j.util.om.monitor.ProgressDistributor.run(ProgressDistributor.java:96) at org.eclipse.emf.cdo.server.internal.net4j.protocol.CommitTransactionIndication.indicatingCommit(CommitTransactionIndication.java:244) at org.eclipse.emf.cdo.server.internal.net4j.protocol.CommitTransactionIndication.indicating(CommitTransactionIndication.java:92) at org.eclipse.emf.cdo.server.internal.net4j.protocol.CDOServerIndicationWithMonitoring.indicating(CDOServerIndicationWithMonitoring.java:109) at org.eclipse.net4j.signal.IndicationWithMonitoring.indicating(IndicationWithMonitoring.java:84) at org.eclipse.net4j.signal.IndicationWithResponse.doExtendedInput(IndicationWithResponse.java:90) at org.eclipse.net4j.signal.Signal.doInput(Signal.java:326) at org.eclipse.net4j.signal.IndicationWithResponse.execute(IndicationWithResponse.java:63) at org.eclipse.net4j.signal.IndicationWithMonitoring.execute(IndicationWithMonitoring.java:63) at org.eclipse.net4j.signal.Signal.runSync(Signal.java:251) at org.eclipse.net4j.signal.Signal.run(Signal.java:147) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) at org.eclipse.emf.internal.cdo.transaction.CDOSingleTransactionStrategyImpl.commit(CDOSingleTransactionStrategyImpl.java:94) at org.eclipse.emf.internal.cdo.transaction.CDOTransactionImpl.commit(CDOTransactionImpl.java:1058) at org.eclipse.emf.cdo.eresource.impl.CDOResourceImpl.save(CDOResourceImpl.java:955) ... 58 more Reproducible: Always Steps to Reproduce: 1.setup eclipse as described in cdo/dawn-tutorials 2.setup PostgreSQL and create empty DB 3.change dbadapter in cdo-server.xml to PostgreSQL 4.start cdo-server 5.try to create dawn acore diagram 6.creation of *.acore_diagram (2.step in creation wizard) fails
Hi Stefan, could you have a quick look at the exception? I think the problem is more db then dawn related. Would you agree?
Yes, absolutely. It is a missing TypeMapping which is specific to the PostgreSQL database.
(In reply to comment #2) > Yes, absolutely. > > It is a missing TypeMapping which is specific to the PostgreSQL database. Hi Stefan, Eike, Could you please give a hint to fix that issue ? With your support, I can test a patch.I tried to use a DBStore annotation to point to BLOB or VARBINARY but that failed. Anyway, is there a chance to get it fixed for Juno release train ? Regards, Stephane.
Stephane, I have created a feature branch for this bug and tried to add the missing type mapping. I also did some adjustments. I have no time to do the manual test right now (i.e. executing the Dawn tutorial), but basic tests in the testsuite that use binary data now succeed (they have failed before). So there's a good chance of the solution to work. Could you please checkout the branch bugs/352062 and report back how it works? Here's the commit for reference: commit a09f9d10aeeab79ed9c8cb9c49dc926457f69d17 Author: Stefan Winkler <stefan@winklerweb.net> 2012-05-04 08:40:59 Committer: Stefan Winkler <stefan@winklerweb.net> 2012-05-04 08:40:59 Parent: 442b3dee3931d65fba39842912584ef8cb0215f9 ([369646] [DB] ClassCastException after setBranch when server cache contains partially loaded collections https://bugs.eclipse.org/bugs/show_bug.cgi?id=369646) Branches: origin/bugs/352062, bugs/352062 [352062] [DB] Dawn PostgreSQL Issue: IllegalStateException: No type mapping factory found EByteArray --> VARBINARY https://bugs.eclipse.org/bugs/show_bug.cgi?id=352062 - added the missing type mapping - adjusted the db adapter - removed the skipConfig for BLOB-attribute-tests the basic testcases seem to run
What about DBType.LONGVARBINARY, should that be handled, too, in analogy to LONGVARCHAR?
commit eb6c15bb3dba2b28b74274a7d309b208c2117a54
Hi Stefan, Sorry for the delay. I successfully tested your fix on my use case: where I store many bitmaps in a repository backed by PostgreSQL 8.3 and it works perfectly now. Stephane. (In reply to comment #4) > Stephane, > > I have created a feature branch for this bug and tried to add the missing type > mapping. > I also did some adjustments. I have no time to do the manual test right now > (i.e. executing the Dawn tutorial), but basic tests in the testsuite that use > binary data now succeed (they have failed before). So there's a good chance of > the solution to work. > > Could you please checkout the branch bugs/352062 and report back how it works? > > Here's the commit for reference: > > commit a09f9d10aeeab79ed9c8cb9c49dc926457f69d17 > Author: Stefan Winkler <stefan@winklerweb.net> 2012-05-04 08:40:59 > Committer: Stefan Winkler <stefan@winklerweb.net> 2012-05-04 08:40:59 > Parent: 442b3dee3931d65fba39842912584ef8cb0215f9 ([369646] [DB] > ClassCastException after setBranch when server cache contains partially loaded > collections https://bugs.eclipse.org/bugs/show_bug.cgi?id=369646) > Branches: origin/bugs/352062, bugs/352062 > > [352062] [DB] Dawn PostgreSQL Issue: IllegalStateException: No type > mapping factory found EByteArray --> VARBINARY > https://bugs.eclipse.org/bugs/show_bug.cgi?id=352062 > > - added the missing type mapping > - adjusted the db adapter > - removed the skipConfig for BLOB-attribute-tests > > the basic testcases seem to run
Closing.