add_filter() inside another add_filter()

I would use do_action instead of add_filter. While similar, you are hooking into an action verse filtering a function. close, but different.

 function custom_get_availability( $availability, $_product ) {
   global $product, $bar, $progress;
   $stock = $product->get_total_stock();
   $progress = 100-$stock;   
   $bar = do_shortcode('[wp_progress_bar text="Tickets Sold - " pc=".$progress."]');

   if ( $_product->is_in_stock() ) {
     $availability['availability'] = __($bar, 'woocommerce');
   }
   if ( !$_product->is_in_stock() ) {
     do_action( 'woocommerce_short_description', single_product_short_description' );
   }
   return $availability;
   }



 function single_product_short_description( $post_excerpt )
  {
     global $product;
     remove_action( 'woocommerce_short_description', single_product_short_description' );


     $product_id = method_exists( $product, 'get_id' ) ? $product->get_id() : $product->id;

     if ( is_single( $product_id ) )
        $post_excerpt="<p class="some-class">" . __( "Out of stock short desc here", "woocommerce" ) . '</p>';


return $post_excerpt;
 }

Good article on the subject:
https://wpsmith.net/2011/the-difference-between-do_action-add_action-and-add_filter/