Skip to content
Snippets Groups Projects
  • Josh Rosen's avatar
    11e5c372
    [SPARK-8962] Add Scalastyle rule to ban direct use of Class.forName; fix existing uses · 11e5c372
    Josh Rosen authored
    This pull request adds a Scalastyle regex rule which fails the style check if `Class.forName` is used directly.  `Class.forName` always loads classes from the default / system classloader, but in a majority of cases, we should be using Spark's own `Utils.classForName` instead, which tries to load classes from the current thread's context classloader and falls back to the classloader which loaded Spark when the context classloader is not defined.
    
    <!-- Reviewable:start -->
    [<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/apache/spark/7350)
    <!-- Reviewable:end -->
    
    Author: Josh Rosen <joshrosen@databricks.com>
    
    Closes #7350 from JoshRosen/ban-Class.forName and squashes the following commits:
    
    e3e96f7 [Josh Rosen] Merge remote-tracking branch 'origin/master' into ban-Class.forName
    c0b7885 [Josh Rosen] Hopefully fix the last two cases
    d707ba7 [Josh Rosen] Fix uses of Class.forName that I missed in my first cleanup pass
    046470d [Josh Rosen] Merge remote-tracking branch 'origin/master' into ban-Class.forName
    62882ee [Josh Rosen] Fix uses of Class.forName or add exclusion.
    d9abade [Josh Rosen] Add stylechecker rule to ban uses of Class.forName
    11e5c372
    History
    [SPARK-8962] Add Scalastyle rule to ban direct use of Class.forName; fix existing uses
    Josh Rosen authored
    This pull request adds a Scalastyle regex rule which fails the style check if `Class.forName` is used directly.  `Class.forName` always loads classes from the default / system classloader, but in a majority of cases, we should be using Spark's own `Utils.classForName` instead, which tries to load classes from the current thread's context classloader and falls back to the classloader which loaded Spark when the context classloader is not defined.
    
    <!-- Reviewable:start -->
    [<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/apache/spark/7350)
    <!-- Reviewable:end -->
    
    Author: Josh Rosen <joshrosen@databricks.com>
    
    Closes #7350 from JoshRosen/ban-Class.forName and squashes the following commits:
    
    e3e96f7 [Josh Rosen] Merge remote-tracking branch 'origin/master' into ban-Class.forName
    c0b7885 [Josh Rosen] Hopefully fix the last two cases
    d707ba7 [Josh Rosen] Fix uses of Class.forName that I missed in my first cleanup pass
    046470d [Josh Rosen] Merge remote-tracking branch 'origin/master' into ban-Class.forName
    62882ee [Josh Rosen] Fix uses of Class.forName or add exclusion.
    d9abade [Josh Rosen] Add stylechecker rule to ban uses of Class.forName