Giter Club home page Giter Club logo

specs2-concurrent-boom-boom's Introduction

specs2 concurrency boom boom

specs2, in versions 3.8.7 and up, introduces some changes in how it concurrently runs specs. These specs seem to expose some issues with how sbt sets up the thread's current context classloader for subprojects. This project attempts to present a minimal test case that shows these issues.

The simplest example:

$ sbt
sbt> project1/test
// should work
sbt> project2/test
// *may* fail
sbt> all project1/test project2/test
// will fail

The classes DoTheBoom and DoTheBoom2 both attempt to load a class in the thread's current context classloader. Each one attempts to load a class from its respective project. Running them together shows that sbt will run both projects with the same thread context classloader, leading to failure to load the specified class in one of the classloaders.

Additionally, running them individually will sometimes (possibly reproducibly) run one project with the other's classloader as the thread context classloader.

There seems to be no issue before specs2 3.8.7, but there also seems to be nothing classloader-related in the specs2 3.8.7 release. You can confirm this by bumping the specs2 version down to 3.8.6 and running:

sbt> all project1/test project2/test

This should pass.

specs2-concurrent-boom-boom's People

Contributors

shadowfiend avatar

Stargazers

 avatar

Watchers

 avatar  avatar

Forkers

plumpmath

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.