[JBoss JIRA] (JBRULES-3611) Benchmark doesn't work with Joda datetime API
by Marcin Skiba (JIRA)
Marcin Skiba created JBRULES-3611:
-------------------------------------
Summary: Benchmark doesn't work with Joda datetime API
Key: JBRULES-3611
URL: https://issues.jboss.org/browse/JBRULES-3611
Project: Drools
Issue Type: Bug
Security Level: Public (Everyone can see)
Components: drools-planner
Affects Versions: 5.4.0.Final
Environment: Ubuntu 12.04, Eclipse Juno
Reporter: Marcin Skiba
Assignee: Geoffrey De Smet
My problem's domain uses Joda's DateTime and Duration classes. After starting a benchmark I'm getting an exception. See below:
Code running the benchmark:
{quote}
XmlPlannerBenchmarkFactory plannerBenchmarkFactory = new XmlPlannerBenchmarkFactory();
plannerBenchmarkFactory.configure("/pl/mskiba/dancingCobra/domain/BenchmarkConfig.xml");
PlannerBenchmark plannerBenchmark = plannerBenchmarkFactory.buildPlannerBenchmark();
plannerBenchmark.benchmark();
{quote}
BenchmarkConfig.xml:
{quote}
<?xml version="1.0" encoding="UTF-8"?>
<plannerBenchmark>
<benchmarkDirectory>/home/marcin/benchmark</benchmarkDirectory>
<warmUpSecondsSpend>30</warmUpSecondsSpend>
<inheritedSolverBenchmark>
<problemBenchmarks>
<xstreamAnnotatedClass>pl.mskiba.dancingCobra.domain.Schedule</xstreamAnnotatedClass>
<inputSolutionFile>/home/marcin/workspace/DancingCobra/src/main/resources/pl/mskiba/dancingCobra/domain/testProblems/Problem.xml</inputSolutionFile>
<problemStatisticType>BEST_SOLUTION_CHANGED</problemStatisticType>
</problemBenchmarks>
<solver>
<solutionClass>pl.mskiba.dancingCobra.domain.Schedule</solutionClass>
<planningEntityClass>pl.mskiba.dancingCobra.domain.TaskAssignment</planningEntityClass>
<scoreDirectorFactory>
<scoreDefinitionType>HARD_AND_SOFT</scoreDefinitionType>
<scoreDrl>/pl/mskiba/dancingCobra/domain/score/scoreRules.drl</scoreDrl>
</scoreDirectorFactory>
<termination>
<scoreAttained>0hard/0soft</scoreAttained>
<maximumHoursSpend>1</maximumHoursSpend>
</termination>
</solver>
</inheritedSolverBenchmark>
<solverBenchmark>
<name>First Benchmark</name>
<solver>
<localSearch>
<selector>
<selector>
<moveFactoryClass>pl.mskiba.dancingCobra.domain.move.AssignedMoveFactory</moveFactoryClass>
</selector>
<selector>
<moveFactoryClass>pl.mskiba.dancingCobra.domain.move.UnassignedMoveFactory</moveFactoryClass>
</selector>
</selector>
<acceptor>
<undoMoveTabuSize>5</undoMoveTabuSize>
<moveTabuSize>5</moveTabuSize>
</acceptor>
<forager>
<minimalAcceptedSelection>1000</minimalAcceptedSelection>
<pickEarlyType>FIRST_BEST_SCORE_IMPROVING</pickEarlyType>
</forager>
</localSearch>
</solver>
</solverBenchmark>
</plannerBenchmark>
{quote}
After running this code I'm getting:
{quote}
0 [main] INFO org.drools.planner.benchmark.core.DefaultPlannerBenchmark - Benchmarking started: solverBenchmarkList size (1).
1 [main] INFO org.drools.planner.benchmark.core.DefaultPlannerBenchmark - ================================================================================
1 [main] INFO org.drools.planner.benchmark.core.DefaultPlannerBenchmark - Warming up
1 [main] INFO org.drools.planner.benchmark.core.DefaultPlannerBenchmark - ================================================================================
{quote}
And an Exception:
{quote}
java.lang.IllegalArgumentException: Problem reading inputSolutionFile: /home/marcin/workspace/DancingCobra/src/main/resources/pl/mskiba/dancingCobra/domain/testProblems/Problem.xml
at org.drools.planner.benchmark.core.XStreamProblemIO.read(XStreamProblemIO.java:64)
at org.drools.planner.benchmark.core.ProblemBenchmark.readPlanningProblem(ProblemBenchmark.java:161)
at org.drools.planner.benchmark.core.ProblemBenchmark.warmUp(ProblemBenchmark.java:147)
at org.drools.planner.benchmark.core.DefaultPlannerBenchmark.warmUp(DefaultPlannerBenchmark.java:191)
at org.drools.planner.benchmark.core.DefaultPlannerBenchmark.benchmark(DefaultPlannerBenchmark.java:131)
at pl.mskiba.dancingCobra.scheduleTest.BenchmarkTest.test(BenchmarkTest.java:17)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: com.thoughtworks.xstream.converters.ConversionException: Cannot create org.joda.time.chrono.ISOChronology$Stub by JDK serialization : null : Cannot create org.joda.time.chrono.ISOChronology$Stub by JDK serialization : null
---- Debugging information ----
message : Cannot create org.joda.time.chrono.ISOChronology$Stub by JDK serialization : null
cause-exception : com.thoughtworks.xstream.converters.reflection.ObjectAccessException
cause-message : Cannot create org.joda.time.chrono.ISOChronology$Stub by JDK serialization : null
class : org.joda.time.chrono.ISOChronology$Stub
required-type : org.joda.time.chrono.ISOChronology$Stub
converter-type : com.thoughtworks.xstream.converters.reflection.SerializableConverter
line number : 13
class[1] : org.joda.time.DateTime
converter-type[1] : com.thoughtworks.xstream.converters.reflection.ReflectionConverter
class[2] : pl.mskiba.dancingCobra.domain.utils.TimePeriod
class[3] : java.util.ArrayList
converter-type[2] : com.thoughtworks.xstream.converters.collections.CollectionConverter
class[4] : pl.mskiba.dancingCobra.domain.Worker
class[5] : pl.mskiba.dancingCobra.domain.Schedule
version : null
-------------------------------
at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:79)
at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:65)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshallField(AbstractReflectionConverter.java:355)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:306)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:234)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72)
at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:65)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshallField(AbstractReflectionConverter.java:355)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:306)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:234)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72)
at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:65)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:50)
at com.thoughtworks.xstream.converters.collections.AbstractCollectionConverter.readItem(AbstractCollectionConverter.java:71)
at com.thoughtworks.xstream.converters.collections.CollectionConverter.addCurrentElementToCollection(CollectionConverter.java:79)
at com.thoughtworks.xstream.converters.collections.CollectionConverter.populateCollection(CollectionConverter.java:72)
at com.thoughtworks.xstream.converters.collections.CollectionConverter.populateCollection(CollectionConverter.java:66)
at com.thoughtworks.xstream.converters.collections.CollectionConverter.unmarshal(CollectionConverter.java:61)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72)
at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:65)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshallField(AbstractReflectionConverter.java:355)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:306)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:234)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72)
at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:65)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:50)
at com.thoughtworks.xstream.converters.collections.AbstractCollectionConverter.readItem(AbstractCollectionConverter.java:71)
at com.thoughtworks.xstream.converters.collections.CollectionConverter.addCurrentElementToCollection(CollectionConverter.java:79)
at com.thoughtworks.xstream.converters.collections.CollectionConverter.populateCollection(CollectionConverter.java:72)
at com.thoughtworks.xstream.converters.collections.CollectionConverter.populateCollection(CollectionConverter.java:66)
at com.thoughtworks.xstream.converters.collections.CollectionConverter.unmarshal(CollectionConverter.java:61)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72)
at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:65)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshallField(AbstractReflectionConverter.java:355)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:306)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:234)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72)
at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:65)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:50)
at com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:134)
at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.unmarshal(AbstractTreeMarshallingStrategy.java:32)
at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1058)
at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1042)
at com.thoughtworks.xstream.XStream.fromXML(XStream.java:913)
at org.drools.planner.benchmark.core.XStreamProblemIO.read(XStreamProblemIO.java:62)
... 28 more
Caused by: com.thoughtworks.xstream.converters.reflection.ObjectAccessException: Cannot create org.joda.time.chrono.ISOChronology$Stub by JDK serialization : null
at com.thoughtworks.xstream.converters.reflection.PureJavaReflectionProvider.instantiateUsingSerialization(PureJavaReflectionProvider.java:119)
at com.thoughtworks.xstream.converters.reflection.PureJavaReflectionProvider.newInstance(PureJavaReflectionProvider.java:69)
at com.thoughtworks.xstream.converters.reflection.ReflectionProviderWrapper.newInstance(ReflectionProviderWrapper.java:42)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.instantiateNewInstance(AbstractReflectionConverter.java:426)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:233)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72)
... 79 more
Caused by: java.io.EOFException
at java.io.ObjectInputStream$BlockDataInputStream.peekByte(ObjectInputStream.java:2553)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1296)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:350)
at org.joda.time.chrono.ISOChronology$Stub.readObject(ISOChronology.java:231)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:969)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1848)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1752)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:350)
at com.thoughtworks.xstream.converters.reflection.PureJavaReflectionProvider.instantiateUsingSerialization(PureJavaReflectionProvider.java:116)
... 84 more
{quote}
I can see that there is a problem with org.joda.time.chrono.ISOChronology.
In addition - if I run the following code:
{quote}
XStream xStream = new XStream();
Schedule problem = (Schedule) xStream.fromXML(new FileReader("/home/marcin/workspace/DancingCobra/src/main/resources/pl/mskiba/dancingCobra/domain/testProblems/Problem.xml"));
SolverFactory solverFactory = new XmlSolverFactory("/pl/mskiba/dancingCobra/domain/scheduleSolverConfig.xml");
Solver solver = solverFactory.buildSolver();
solver.setPlanningProblem(problem);
solver.solve();
{quote}
Everything works fine! Same problem, same XML file, same configuration, but with Drools Benchmarker it simply doesn't work.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira
13 years, 8 months
[JBoss JIRA] (AS7-4880) modcluster subsystem operations(stop*/enable*/disable*-context) on http instance stop working after/with mod_cluster_manager use
by Simeon Pinder (JIRA)
Simeon Pinder created AS7-4880:
----------------------------------
Summary: modcluster subsystem operations(stop*/enable*/disable*-context) on http instance stop working after/with mod_cluster_manager use
Key: AS7-4880
URL: https://issues.jboss.org/browse/AS7-4880
Project: Application Server 7
Issue Type: Bug
Components: CLI
Affects Versions: 7.1.2.Final (EAP)
Environment: ER8
Reporter: Simeon Pinder
Assignee: Alexey Loubyansky
With a modcluster setup if you are using the cli subsystem (stop*/enable*/disable* -context) operations to modify contexts successfully and then you or anyone else uses the http://<ip address>:<port>/mod_cluster_manager to enable/disable any contexts then continued operations by cli stop working. The only fix in this situation is to restart the http instance which is pretty bad.
It appears that the two mechanism to communicate with the http modcluster manager clobber each other in some way with the cli subsystem loosing the ability to make changes.
Additionally we should add something to the release notes suggesting to disable/deprecate the usage of mod_cluster_manager. However this should be resolved more completely because as7 subsystem commands from a completely valid setup simply won't work with no feedback.
Note: mod_cluster_manager commands and operations continue happily.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira
13 years, 8 months