You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@samza.apache.org by "Chris Riccomini (JIRA)" <ji...@apache.org> on 2014/10/15 19:57:34 UTC

[jira] [Updated] (SAMZA-432) Throw a better exception when developers send to an undefined system

     [ https://issues.apache.org/jira/browse/SAMZA-432?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Chris Riccomini updated SAMZA-432:
----------------------------------
    Attachment: SAMZA-432-0.patch

Attaching patch.

> Throw a better exception when developers send to an undefined system
> --------------------------------------------------------------------
>
>                 Key: SAMZA-432
>                 URL: https://issues.apache.org/jira/browse/SAMZA-432
>             Project: Samza
>          Issue Type: Bug
>          Components: container
>    Affects Versions: 0.8.0
>            Reporter: Chris Riccomini
>              Labels: newbie
>         Attachments: SAMZA-432-0.patch
>
>
> In SystemProducers.send, we currently do this:
> {code}
>       producers(envelope.getSystemStream.getSystem).send(source, bytesEnvelope.get)
> {code}
> If a developer calls collector.send() with a system that's not defined in their job's config, they get:
> {noformat}
> Exception in thread "main" java.util.NoSuchElementException: key not found: undefined-stream
> 	at scala.collection.MapLike$class.default(MapLike.scala:228)
> 	at scala.collection.AbstractMap.default(Map.scala:58)
> 	at scala.collection.MapLike$class.apply(MapLike.scala:141)
> 	at scala.collection.AbstractMap.apply(Map.scala:58)
> 	at org.apache.samza.system.SystemProducers.send(SystemProducers.scala:65)
> 	at org.apache.samza.container.TaskInstance$$anonfun$send$2.apply(TaskInstance.scala:170)
> 	at org.apache.samza.container.TaskInstance$$anonfun$send$2.apply(TaskInstance.scala:170)
> 	at scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
> 	at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:47)
> 	at org.apache.samza.container.TaskInstance.send(TaskInstance.scala:170)
> 	at org.apache.samza.container.RunLoop$$anonfun$send$2.apply(RunLoop.scala:116)
> 	at org.apache.samza.container.RunLoop$$anonfun$send$2.apply(RunLoop.scala:116)
> 	at scala.collection.Iterator$class.foreach(Iterator.scala:727)
> 	at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
> 	at scala.collection.MapLike$DefaultValuesIterable.foreach(MapLike.scala:206)
> 	at org.apache.samza.container.RunLoop.send(RunLoop.scala:116)
> 	at org.apache.samza.container.RunLoop.run(RunLoop.scala:59)
> 	at org.apache.samza.container.SamzaContainer.run(SamzaContainer.scala:504)
> 	at org.apache.samza.container.SamzaContainer$.main(SamzaContainer.scala:81)
> 	at org.apache.samza.container.SamzaContainer.main(SamzaContainer.scala)
> {noformat}
> _NOTE: this stack trace is from an 0.7.0 job, but it's basically the same on master_
> We should update the SystemProducers.send method to do a .getOrElse, and throw a SamzaException with a more clear warning.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)