If you are using BeanShell Pre-Processor so it will be triggered only for the samplers.
I'm supposing that While Controller wasn't been executed, because BeanShell Pre-Processor (or even Post-Processor) will not be triggered until a Sampler is executed. That's why when you add a Debug Sampler before the While Controller it works. Use an User Defined Variables configuration element to initialize "DONE_UPLOAD" 's value or a BeanShell Sampler.
