/**
  * Go through all products that need to be cleaned and clean them.
  * @return $this object
  */
 public function cleanAllProducts()
 {
     // Get all products that need cleaning - due to loose comparison of column
     // values by the collection, any products that do not include an 'is_clean'
     // column will be included.
     $productsToClean = $this->_products->getItemsByColumnValue('is_clean', false);
     $logData = ['total_products' => count($productsToClean)];
     $logMessage = 'Cleaning {total_products} products.';
     $this->_logger->info($logMessage, $this->_context->getMetaData(__CLASS__, $logData));
     foreach ($productsToClean as $product) {
         $this->cleanProduct($product);
     }
     // save all the products that may have been modified while cleaning products
     $this->_helper->saveCollectionStubIndexer($this->_products);
     return $this;
 }