Revision: 6898 Author: [email protected] Date: Fri Nov 13 15:37:33 2009 Log: Fix generators being interleaved between threads, since most generators are not thread-safe.
Patch by: jat Review by: spoon (desk), scottb (TBR), bobv(TBR) http://code.google.com/p/google-web-toolkit/source/detail?r=6898 Modified: /trunk/dev/core/src/com/google/gwt/dev/shell/ShellModuleSpaceHost.java ======================================= --- /trunk/dev/core/src/com/google/gwt/dev/shell/ShellModuleSpaceHost.java Tue Nov 10 20:42:30 2009 +++ /trunk/dev/core/src/com/google/gwt/dev/shell/ShellModuleSpaceHost.java Fri Nov 13 15:37:33 2009 @@ -31,6 +31,9 @@ */ public class ShellModuleSpaceHost implements ModuleSpaceHost { + // TODO(jat): hack to try and serialize rebinds + private static final Object rebindLock = new Object[0]; + protected final CompilationState compilationState; protected final File genDir; @@ -111,13 +114,15 @@ public String rebind(TreeLogger logger, String sourceTypeName) throws UnableToCompleteException { - checkForModuleSpace(); - return rebindOracle.rebind(logger, sourceTypeName, new ArtifactAcceptor() { - public void accept(TreeLogger logger, ArtifactSet newlyGeneratedArtifacts) - throws UnableToCompleteException { - artifactAcceptor.accept(logger, newlyGeneratedArtifacts); - } - }); + synchronized (rebindLock) { + checkForModuleSpace(); + return rebindOracle.rebind(logger, sourceTypeName, new ArtifactAcceptor() { + public void accept(TreeLogger logger, ArtifactSet newlyGeneratedArtifacts) + throws UnableToCompleteException { + artifactAcceptor.accept(logger, newlyGeneratedArtifacts); + } + }); + } } private void checkForModuleSpace() { -- http://groups.google.com/group/Google-Web-Toolkit-Contributors
