I believe the mystery is solved and I’m sad to say that (as usual) it was something silly but crucial. In a custom source component you must create a new PipelineBuffer in order to write your rows out. SSIS has provided a way for us to let the engine know when we are done adding rows with a simple method “SetEndOfRowset”. The name says it all and even the MSDN documentation is clear that you must call this. In addition, your error logs if you don’t call this method will say something like:
The PrimeOutput method on <your component> returned success, but did not report an end of the rowset.
You would think that this error message would be enough to warn any developer that they were missing a key line of code but sadly that wasn’t the case. In my case I had actually allocated 2 buffers, 1 for data rows and 1 for error rows. I set a breakpoint on my SetEndOfRowset call and watched it execute so I just knew this wasn’t my problem. But I forgot the second buffer! So just a note to all you brave souls commanding bits on the SSIS battlefield. Call SetEndOfRowset for EACH buffer you allocate. Good Luck!