I did give the other pipeline a try. I haven't looked at this much further, but did not figure it out. Whats frustrating is I have not been able to attach a debugger to see what is going on. That might indicate the CLR has been unloaded, but that seems unlikely to me. It seems the stall may be due to the process still trying to read in all the SQL rows. I come to this conclusion as it only stalls when loading very large tables- when I interrupt a transfer of a smaller table the stall is short.
Using the ETL package for this particular case was overkill, so I've worked around it. Occasionally curiousity causes me to take another look though. On Mar 24, 12:23 pm, miles <[email protected]> wrote: > Hi, > > I haven't had a problem with rhino-etl stalling at all,and I've been > using it for some time. > > Have you tried using SingleThreadedNonCachedPipelineExecuter as the > pipeline executer? This is the simplest pipeline, as it just passes > the rows on to the next operation, so it might give some insight into > what is happening. > > The SingleThreadedExecuter you are using still has caching between > each of the operations, so the enumerable can be enumerated multiple > times. I wonder if that is swallowing your yield break somewhere? > > Miles > > On Mar 18, 1:36 am, fschwiet <[email protected]> wrote: > > > > > > > > > I have a simple ETL setup to read some data and write to a file in > > JSON. It works until I added an abstractoperation to interrupt on > > keypress. Now, when I press a key then execution does stop, but > > execution seems to stall rather than stop. Does anyone recognize why > > this may not work? The code is below, when I add BreakOnConsoleIn, > > then the call to Execute.Process() does not return. What I expect is > > for execution to finish without processing any data after the > > keypress. > > > Here is the abstract operation which causes a stall: > > > public class BreakOnConsoleIn : AbstractOperation > > { > > public override IEnumerable<Row> Execute(IEnumerable<Row> > > rows) > > { > > foreach(var row in rows) > > { > > if (Console.KeyAvailable) > > { > > yield break; > > } > > > yield return row; > > } > > } > > } > > > Here is the code where I run the operations: > > > EtlProcess etlProcess = new EmptyProcess(); > > etlProcess.PipelineExecuter = new > > SingleThreadedPipelineExecuter(); > > > etlProcess.Register(new > > ConventionInputCommandOperation(config) > > { > > Command = "SELECT * FROM " + TableName + " ORDER > > BY " + IdColumn > > }); > > etlProcess.RegisterLast(new BreakOnConsoleIn()); > > etlProcess.RegisterLast(new > > WriteAsJsonArray(GetSelectedOutputWriter())); > > > etlProcess.Execute(); -- You received this message because you are subscribed to the Google Groups "Rhino Tools Dev" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/rhino-tools-dev?hl=en.
