1

I'm using rhino ETL for the first time in a project, and I'm very impressed by its capabilities. I use a join-operation to match two datasources.

Sometimes there might be missing data, so I override LeftOrphanRow to "log" the error. So I though I would throw an exception and then at the end of the process collect all occured exceptions using GetAllErrors().

But as it seems the process is being aborted with the first exception. Is that intentionally? What would be the best way to deal with OrphanRows (especially when I would like to have a summary of all orphan rows for all operations at the end of the process)?

nyn3x
  • 909
  • 1
  • 11
  • 28

1 Answers1

0

Seems to me that the problem is that you're trying to use exceptions to report a non-exceptional event. That's not really what exceptions are for, and certainly when you're expecting the exception to pass through a third-party library, you shouldn't rely on that library to behave in any specific way with respect to that exception.

Can you just keep a list of orphan rows somewhere, e.g. globally, and add to it whenever you encounter one in any of your join operations? Then after your EtlProcess is finished, just print the list out. You might also consider using log4net to accomplish this. Or even simply raising an event, that you subscribe to elsewhere and do whatever seems appropriate.

Greg Fleming
  • 502
  • 4
  • 6
  • @greg-fleming I actually do believe that this is an error in the implementation of the join-operation. In the meatime I looked at the source-code of Rhino.ETL and noticed, that other operations are adding exceptions to an internal exception list. The join-operation is behaiving slightly differnt. I already created a fix and pushed that to the github repository (https://github.com/ayende/rhino-etl/pull/4). – nyn3x Apr 15 '11 at 07:39