Cannot specify empty upper bound
Reported by Ben Hood | November 3rd, 2011 @ 03:02 PM | in 1.0 (closed)
When you specify a null upper bound (and I presume the same is relevant for lower bounds), e.g.
<range-category name="bizDate" data-type="date" lower="2009-10-01" max-granularity="individual"/>
the agent fails to apply the configuration with this error:
15:00:01.751 [akka:event-driven:dispatcher:global-9] ERROR PairActor:362 - Failed to difference pair diffa/Staging7
java.lang.NullPointerException: null
at org.joda.time.format.DateTimeFormatterBuilder$CharacterLiteral.parseInto(DateTimeFormatterBuilder.java:1202) ~[joda-time-2.0.jar:2.0]
at org.joda.time.format.DateTimeFormatterBuilder$Composite.parseInto(DateTimeFormatterBuilder.java:2689) ~[joda-time-2.0.jar:2.0]
at org.joda.time.format.DateTimeFormatterBuilder$MatchingParser.parseInto(DateTimeFormatterBuilder.java:2787) ~[joda-time-2.0.jar:2.0]
at org.joda.time.format.DateTimeFormatter.parseDateTime(DateTimeFormatter.java:846) ~[joda-time-2.0.jar:2.0]
at net.lshift.diffa.kernel.config.RangeCategoryParser$.parseDateTime(RangeCategoryParser.scala:35) ~[diffa-kernel-0.9-SNAPSHOT.jar:na]
at net.lshift.diffa.kernel.config.RangeCategoryParser$.parseDate(RangeCategoryParser.scala:36) ~[diffa-kernel-0.9-SNAPSHOT.jar:na]
at net.lshift.diffa.kernel.config.RangeCategoryParser$.buildConstraint(RangeCategoryParser.scala:64) ~[diffa-kernel-0.9-SNAPSHOT.jar:na]
at net.lshift.diffa.kernel.util.CategoryUtil$$anonfun$initialConstraintsFor$1.apply(CategoryUtil.scala:86) ~[diffa-kernel-0.9-SNAPSHOT.jar:na]
at net.lshift.diffa.kernel.util.CategoryUtil$$anonfun$initialConstraintsFor$1.apply(CategoryUtil.scala:76) ~[diffa-kernel-0.9-SNAPSHOT.jar:na]
at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:200) ~[scala-library-2.9.0-1.jar:na]
at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:200) ~[scala-library-2.9.0-1.jar:na]
at scala.collection.immutable.Map$Map3.foreach(Map.scala:163) ~[scala-library-2.9.0-1.jar:na]
at scala.collection.TraversableLike$class.flatMap(TraversableLike.scala:200) ~[scala-library-2.9.0-1.jar:na]
at scala.collection.immutable.Map$Map3.flatMap(Map.scala:143) ~[scala-library-2.9.0-1.jar:na]
at net.lshift.diffa.kernel.util.CategoryUtil$.initialConstraintsFor(CategoryUtil.scala:76) ~[diffa-kernel-0.9-SNAPSHOT.jar:na]
at net.lshift.diffa.kernel.config.Endpoint.initialConstraints(DomainConfigStore.scala:148) ~[diffa-kernel-0.9-SNAPSHOT.jar:na]
at net.lshift.diffa.kernel.util.StoreSynchronizationUtils$.replayCorrelationStore(StoreSynchronizationUtils.scala:45) ~[diffa-kernel-0.9-SNAPSHOT.jar:na]
at net.lshift.diffa.kernel.actors.PairActor.handleDifferenceMessage(PairActor.scala:358) [diffa-kernel-0.9-SNAPSHOT.jar:na]
at net.lshift.diffa.kernel.actors.PairActor$$anonfun$receive$1.apply(PairActor.scala:205) [diffa-kernel-0.9-SNAPSHOT.jar:na]
at net.lshift.diffa.kernel.actors.PairActor$$anonfun$receive$1.apply(PairActor.scala:197) [diffa-kernel-0.9-SNAPSHOT.jar:na]
at akka.actor.Actor$class.apply(Actor.scala:545) [akka-actor-1.2.jar:na]
at net.lshift.diffa.kernel.actors.PairActor.apply(PairActor.scala:39) [diffa-kernel-0.9-SNAPSHOT.jar:na]
at akka.actor.LocalActorRef.invoke(ActorRef.scala:905) [akka-actor-1.2.jar:na]
at akka.dispatch.MessageInvocation.invoke(MessageHandling.scala:25) [akka-actor-1.2.jar:na]
at akka.dispatch.ExecutableMailbox$class.processMailbox(ExecutorBasedEventDrivenDispatcher.scala:216) [akka-actor-1.2.jar:na]
at akka.dispatch.ExecutorBasedEventDrivenDispatcher$$anon$4.processMailbox(ExecutorBasedEventDrivenDispatcher.scala:122) [akka-actor-1.2.jar:na]
at akka.dispatch.ExecutableMailbox$class.run(ExecutorBasedEventDrivenDispatcher.scala:188) [akka-actor-1.2.jar:na]
at akka.dispatch.ExecutorBasedEventDrivenDispatcher$$anon$4.run(ExecutorBasedEventDrivenDispatcher.scala:122) [akka-actor-1.2.jar:na]
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [na:1.6.0_16]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [na:1.6.0_16]
at java.lang.Thread.run(Thread.java:619) [na:1.6.0_16]
at akka.dispatch.MonitorableThread.run(ThreadPoolBuilder.scala:184) [akka-actor-1.2.jar:na]
Comments and changes to this ticket
-

Ben Hood November 3rd, 2011 @ 03:23 PM
- Title changed from NPE during config application to Cannot specify empty upper bound
-

Ben Hood November 3rd, 2011 @ 03:24 PM
- Assigned user set to Paul Jones
- Milestone set to 1.0
- Milestone order changed from 141 to 0
-

Ben Hood November 4th, 2011 @ 07:55 AM
(from [c87b743a166c1e47b48a4bed5eaa8879f5f64af8]) [#408] Don't NPE on null time range constraints. https://github.com/lshift/diffa/commit/c87b743a166c1e47b48a4bed5eaa...
-

Paul Jones November 4th, 2011 @ 07:56 AM
- Assigned user changed from Paul Jones to Ben Hood
- State changed from new to resolved
Ready for QA. Raised as pull request 103.
-

Ben Hood November 4th, 2011 @ 11:17 AM
- Assigned user changed from Ben Hood to Paul Jones
- State changed from resolved to open
I'm having trouble understanding the connection between the intent of the ticket and the patch - I'm probably missing a trick here here - so could you walk me through this please?
-

Ben Hood November 4th, 2011 @ 01:38 PM
(from [dff9369cb58dc483f5050aeeeef2d6bc3f039c8f]) [#408] Added some tests to verify half open bounds for range constraints https://github.com/lshift/diffa/commit/dff9369cb58dc483f5050aeeeef2...
-

Ben Hood November 4th, 2011 @ 01:41 PM
- State changed from open to closed
I've added a few tests to verify the behavior of open range constraints, so this patch is good to go -> QA+
-

Ben Hood November 4th, 2011 @ 01:46 PM
See #410 for a follow up to build a test suite to catch this kind of thing from a config perspective.
-

Ben Hood November 4th, 2011 @ 01:47 PM
(from [7de2b4a1cccb553e466896540cac1dbb96022c86]) Merge pull request #103 from lshift/408
[#408] Don't NPE on null time range constraints. https://github.com/lshift/diffa/commit/7de2b4a1cccb553e466896540cac...
Please Sign in or create a free account to add a new ticket.
With your very own profile, you can contribute to projects, track your activity, watch tickets, receive and update tickets through your email and much more.
Create your profile
Help contribute to this project by taking a few moments to create your personal profile. Create your profile ยป
A Real Time Differencing Tool.
People watching this ticket
Tags
Referenced by
-
410
Integration test for config application
Shorthand configurations, e.g. when bounds are left half ...