Hello,

I attended the Tungsten-related presentations at Spark Summit (by Josh
Rosen) and at Big Data Scala (by Matei Zaharia). Needless to say, this
project holds great promise for major performance improvements.

At Josh's talk, I heard about the use of sun.misc.Unsafe as a way of
achieving some of these optimizations (e.g. slides 11-17 of Josh's
presentation:
http://www.slideshare.net/SparkSummit/deep-dive-into-project-tungsten-josh-rosen).
I have no problems with the use of Unsafe in the code itself (I've done it
before myself, too), however I think there is a considerable risk
associated with beginning the use of Unsafe now, because Oracle is
determined to limit access to APIs such as Unsafe starting in Java 9.

JEP 260 <http://openjdk.java.net/jeps/260> was filed specifically to limit
access to internal JDK APIs that were "never intended for external use,
including "sun.misc.*" The JEP does say that the functionality of
sun.misc.Unsafe is to remain available even as other internal APIs are
blocked for non-JDK use, however, it also says that "the functionality of
many methods of this class is now available via *variable handles (JEP 193
<http://openjdk.java.net/jeps/193>).*" If the direct access to
sun.misc.Unsafe is blocked and only the variable handles access remains,
this may mean more than just a need for code refactoring - functionality
such as doing "malloc" from Spark core may be restricted.

JEP 260 has evolved quite a bit over time and the wording available now
(after the Aug. 4, 2015) seems more reasonable than before. Nevertheless,
Hazelcast and other companies whose technologies depend on the availability
of Unsafe started a Google doc here
<https://docs.google.com/document/d/1GDm_cAxYInmoHMor-AkStzWvwE9pw6tnz_CebJQxuUE/edit#heading=h.brct71tr6e13>
.

I doubt that Oracle would want to make life difficult for everyone. In
addition to Spark's code base, projects such as Akka, Cassandra, Hibernate,
Netty, Neo4j and Spring (among many others) depend on Unsafe. Still, there
are tons of posts about this issue in the Java community (e.g. here
<https://jaxenter.com/hazelcast-on-java-unsafe-class-119286.html>'s a
Hazelcast interview, also from Aug. 3, the day before the latest update to
JEP 260). There are tons of concerned posts on the blogosphere, too (e.g.
here
<http://blog.dripstat.com/removal-of-sun-misc-unsafe-a-disaster-in-the-making/>
).

Have the leaders of the Spark community been following these Unsafe-related
developments and if so, what's Spark's plan of handling whatever Oracle
throws our way?

Marek

Reply via email to