Enabled CSM with the modded BIOS and I lost all access to the UEFI setup

System

Motherboard: Asus X99-S
BIOS Version: 4101
GPU: AMD Radeon 5700 XT
[] CSM is turned off
[X] 4G decoding is enabled (had to mod)
[X] UEFIPatch is applied (see Using UEFIPatch for more information). On some motherboards DSDT Patching is also needed
[X] I have read Common issues (and fixes)

Description
So I flashed the modded BIOS according to your instructions and it works all well under Windows. However, I wanted to boot a non-uefi formatted USB drive and had to enable CSM. Now it boots directly into Windows, showing a Windows 7-esque loading screen and completely skipping GRUB, which is my preferred boot option. It's just a blank screen, then a text message saying something like "Booting the operating system" and then the Windows loading screen.
I can't get into the setup either via DEL key or from Windows.
Is there anything I can do besides clearing CMOS (which may not work) or reflashing?
Thanks!

You can use setup_var tool to edit bios settings, you can boot USB devices from windows 10 advanced startup
Or just reset cmos

Was this the expected behavior for enabling CSM?
Seems like it didn't like the reset cmos... Now I get a D4 boot code. I guess I'll have to reflash again

@gmiranda yes it is even on stock bios, csm is incompatible with 4g decoding

@xCuri0 I meant this weird boot behavior where I can't enter the UEFI setup?
I almost pooed. I could no longer boot with my 5700XT plugged in ever after flashing back the non-patched BIOS. I had to plug in a GT 610 (with no uefi support) and then I was able to go back to the 5700XT.
There's one thing I didn't mention: I enabled CSM in the first place to boot with the GT610 as a 2nd GPU. It must have been related to this.
Thanks!

Yes 4g decoding is incompatible with CSM


Traits Functions are not supported at level 2 diagnostic

It will be great if method will be found from traits declaration. Till now phpstan cannot recognize it.

@Bolkun can you provide an example where this is failing so that I can write a specific test

PHPstan skips analyzing traits when those traits are not in the analysis scope. I experimented with various ways of running phpstan, and after some diving into its internals with a debugger I managed to realize that this was the cause of why I got different results inside a vagrant guest and outside of it;
Since our custom code is not under drupal/web in the repo, I used symlinks to replicate the expected directory structure as a "virtual drupal root", which I passed to phpstan. Of course the real paths to those traits would not match the paths given to phpstan, so the traits would get skipped. (This should probably be filed as a bug against phpstan.)
For now my solution is to use rsync for setting up the directory structure for running from the command line.
With VS Code extension PHP Static Analysis I however do get the expected results using symlinks for the "virtual drupal root" and pointing phpstan.neon at it.

For all intents and purposes this seems to be working fine. I'm closing


Overload CDB_Overviews(), CDB_DropOverviews() to accept a (text) table name

So that the caller of these functions can use them on tables that do not exist (e.g. having just been deleted).
CDB_DropOverviews(text) should delete remnant overview tables if they exist after having deleted the base table.
CDB_Overviews(text) should return an empy list of overviews for tables that do not exist.

Never gonna happen


fix IPVS destination stats attribute

Signed-off-by: Andrew Sy Kim<EMAIL_ADDRESS>Co-authored-by: kwanhur<EMAIL_ADDRESS>

Ah looks like filed originally in https://github.com/moby/ipvs/pull/12
LGTM


attempt example infra destroy, see what needs fixing

double check all resources are destroyed (including networks + firewall + etc, not just compute engine)

seems to work ok w/ omgd infra destroy once everything's up


Issues run flask tutorial

Hi,
I follow readme in tutorial.
set FLASK_APP=flaskr
set FLASK_ENV=development
flask run
But i got
Error: Failed to find application in module "flaskr". Are you sure it contains a Flask application? Maybe you wrapped it in a WSGI middleware or you are using a factory function.
I try to read many fixed issues about that and follow carefully http://flask.pocoo.org/docs/0.12/ but :(

Are you sure you have the correct version of Flask installed ?
The docs you are refering too are for version 0.12 but the latest version is 1.0.2.
See here : https://pypi.org/project/Flask/#description

I know the tutorial works as written, so please carefully review that you followed all the steps. Ensure you have Flask 1.0.2 installed.
Please use Stack Overflow for questions about your own code. This tracker is for issues related to the project itself. Be sure to include a minimal, complete, and verifiable example.


clearly not finished

will finish in the couple next days

👍

@rhumbert1 Little hint: You can also publish PRs as a draft :-)

Serious question: Why PR before it's done? @rhumbert1


Duplicate Trends PR #292

https://github.com/UTDNebula/utd-trends/pull/292 makes changes that should be copied over to Skedge

@George-Zhang5246 , any interest in working on this issue? If not, I can handle it.


add-snackbar with npm audit fix

This branch is created from the branch 'add-snackbar', and npm audit fix was executed in the main folder and the client/ folder.

LGTM


Feature: extension support

This a tracking bug and "design doc" for the next mayor update that will be about extension support.
Requirement:

Users should be able extend the app without rebuilding the application

app restart after a new extension install is acceptable
"extending the app" mean business logic changes on both server and client-side
extensions should also support at least some UI modifications

Extensions should be configurable (should show in the settings)
There should be a repository where users can easily download extensions from. Preferably integrated in the app.

Design ideas
Extension will live in their own folder, next to the config.json file. config folder is by default writable from the docker setup, so it should be easy to add there more files.
It will be written in Javascript (I hope its not a question :) ).
server side extension
Creating a server side extension is the easy part. The app will assume a presence of an server.js that has a function init(app) function. App will call the init function of all extensions on startup.
If the folder has package.json, the app will run an npm isntall so that the extension developers can use external libraries (like if someone wants to develop an extension to support bmp files).
The appobject in the init function will represent an interface to the app, where extension developers can subscribe to certain events of the app. These events will be, like: before directory scanning or after directory scanning. With this developers can override the input and the output of the directory scanning event. (So things like also indexing doc files or skipping files that start with _ can be added).
Furthermore app object will also export low level api. Low level API will be less stable than the exported events, but with that developers can override any aspect of the app without restriction.
app object will also export the currently used config.
client side extensions
This is the tricky one as the client side is built and minified and localized AOT with webpack. Therefore there is one build app for all language. Exposing the full client app to the extension is not an option as its is not possible to know in extension development time how webapck will minify the function names.
I also could not find a way to add new angular component to the app after compile. Eg.: So I do not see a way to add UI for supporting docx files on UI through extensions.
I was thinking about exposing callback for the client extension, where developers can add icons or buttons in a very restrictive way to the app. And also here could the developer inject some business logic to the client.
repository
I do not want to host a custom repository. I think I will just "hack" it into a readme file. Developers will maintain extensions on github and add a link to their repo to to a readme file in the repository. This way the app will be able to auto discover the list of extensions.
Future work
Security can be implemented in the future where the app makes it explicit what resources an extension uses. Like it changes the config or touches low-level APIs.
Open questions
I don't really know how to solve the client side extension support properly
Sub tasks

[ ] #753
[ ] Create extension repo
[ ] Create settings panel to add extensions
[ ] Create client side extension API

I like this idea a lot, and I think it has a lot of potential to serve as a bridge between what you're developing pigallery2 for (as you lay out in #738) and what other users are wanting.
As far as I can tell, the biggest philosophical difference I have is with this concept in #738:

Source of truth is the disk: DB is only a cache

In my particular case, there is an additional source of truth: the DigiKam DB.  This is where I mark individual directories to be "Public" (i.e. displayed on pigallery2), and where I manually select directory covers/previews/thumbnails/highlights.
Allowing me to code up a custom extension that intervenes in the "Directory Scanning" and "Preview Filling" jobs would be pretty much a perfect solution.

Added backend extension support (in alpha version). So far the app looks for extension subfolders in the /extensions folder.
to add an extension you can:
<pigallery src root>/extensions/package.js <- this is optional. You can add extra npm packages here
<pigallery src root>/extensions/server.js <- this is needed

sample server js:
/* eslint-disable @typescript-eslint/no-inferrable-types */
import {IExtensionObject} from '../../src/backend/model/extension/IExtension';
import {PhotoMetadata} from '../../src/common/entities/PhotoDTO';
import {Column, Entity, Index, PrimaryGeneratedColumn} from 'typeorm';
import {SubConfigClass} from 'typeconfig/src/decorators/class/SubConfigClass';
import {ConfigProperty} from 'typeconfig/src/decorators/property/ConfigPropoerty';
@Entity()
class TestLoggerEntity {
  @Index()
  @PrimaryGeneratedColumn({unsigned: true})
  id: number;

  @Column()
  text: string;
}

@SubConfigClass({softReadonly: true})
export class TestConfig {
  @ConfigProperty({
    tags: {
      name: `Test config value`,
    },
    description: `This is just a description`,
  })
  cleanUpUnusedTables: boolean = true;
}

export const init = async (extension: IExtensionObject<TestConfig>): Promise<void> => {
  extension.Logger.debug('Setting up');

// override metadata loader example
  extension.events.gallery.MetadataLoader
    .loadPhotoMetadata.before(async (input, event) => {
    extension.Logger.debug('skipping');
    event.stopPropagation = true;
    return {
      size: {width: 1, height: 1},
      fileSize: 1,
      creationDate: 0
    } as PhotoMetadata;
  });
  extension.config.setTemplate(TestConfig);
  console.log(JSON.stringify(extension._app.config.Extensions));

  // add new res API example
  extension.RESTApi.get.jsonResponse(['/hw'], null, async () => {
    const conn = await extension.db.getSQLConnection();
    conn.getRepository(TestLoggerEntity).save({text: 'logger entry' + Date.now()});

    return await conn.getRepository(TestLoggerEntity).find();
  });

// set own tables
  await extension.db.setExtensionTables([TestLoggerEntity]);

  // add messenger example
  extension.messengers.addMessenger('loggerMsg',
    [{
      id: 'text',
      type: 'string',
      name: 'just a text',
      description: 'nothing to mention here',
      defaultValue: 'I hand picked these photos just for you:',
    }],
    {
      sendMedia: async (c, m) => {
        console.log(m);
      }
    });
};

export const cleanUp = async (extension: IExtensionObject<TestConfig>): Promise<void> => {
  extension.Logger.debug('Cleaning up');
};

See https://github.com/bpatrik/pigallery2/blob/master/src/backend/model/extension/IExtension.ts for full extension API

a more in depth documentation and easier usage comes later

Kudos @bpatrik for this extensive new feature, I am loving it. Thank you for staying innovative!

Documentation for extensions is available here: https://github.com/bpatrik/pigallery2/tree/master/extension
Added sample extension here: https://github.com/bpatrik/pigallery2-sample-extension

This is great, thanks so much!
I've written a 'DigiKam Connector' plugin that (mostly) suits my needs: https://github.com/mblythe86/pigallery2-extension-digikam-connector
I'm relatively inexperienced at JavaScript/TypeScript development (my day job mostly uses shell/ruby/perl).  If you would be willing, I'd really appreciate it if you could take a look over my code and give me some feedback.  Am I following good TypeScript conventions?  Do you think I'm using the extension API in a sane way? etc...
While creating this extension, I did hit a few speedbumps.  I'll file separate issues (or pull requests) for the places where I think pigallery2 extension support could be improved, and with a question I have.
Thanks again!

Had a quick look, this is very impressive @mblythe86! When I was creating the extension, I was not thinking about calling an external DB and doing decisions in the app :)
I think the code looks good. Probably I would have had the same approach. (In my work I also do not user Typescript, so 🤷♂)
To answer you readme, the plan is to have a nice config surface (also unified one with the jobs/messenger), but that I run into some issues.
I'm curious hear about you dev exp. here or in an other bug.

Thanks for taking a look!

the plan is to have a nice config surface (also unified one with the jobs/messenger), but that I run into some issues.

Yeah, implementing that sounds tedious.  It's definitely something that I'd put off.
An quick-and-dirty improvement might be to just have the JSON pretty-printed in the text box, and have the text box auto-scale to the contents.

I'm curious hear about you dev exp

Overall, it was good!
I really like the before/after hooks that you have in the extension API.  It makes it very convenient to either replace the implementation of the wrapped function (as I did with getCoverForDirectory), or just tweak the return value of the function a little without re-implementing the whole thing (as I did with scanDirectory).
There are a couple ways that the dev experience could improve, but none are showstoppers:

Extension re-loading

I found myself restarting my docker container over & over as I made gradual tweaks to my extension.  It would be nice if there was a 'reload extensions' button on the admin panel.  Or better yet, if it could auto-detect changes to extension files, and automatically re-load the extension (probably only in NODE_ENV=debug mode to avoid a performance impact)

Backtraces

When my code errored out, the backtrace was kind of cryptic due to the TypeScript -> JavaScript transpile:
at Array.<anonymous> (/app/data/config/extensions/sample-extension/server.js:324:14)
I think that the *.js.map file is supposed to allow for debuggers to map back to the original TypeScript code location.  It would be nice if the backtrace mechanism could use that.

Backtraces

Source file support is a good idea. Added js.map files to the release. Using them is disabled by default as random google searches suggests that it would slow down the app in prod: https://github.com/nodejs/node/issues/41541, https://nodejs.org/docs/latest-v18.x/api/cli.html#--enable-source-maps
It can be enabled with env NODE_OPTIONS=--enable-source-maps

Hi!
Is the status of this feature up-to-date? Looking around, it looks like most of it is now implemented. Or are there still remaining blocking points before issuing a new release?

Repository and frontend extension support is still not ready.
On Sun, Jun 23, 2024 at 11:57 AM Tofe @.***> wrote:

Hi!
Is the status of this feature up-to-date? Looking around, it looks like
most of it is now implemented. Or are there still remaining blocking points
before issuing a new release?
—
Reply to this email directly, view it on GitHub
https://github.com/bpatrik/pigallery2/issues/743#issuecomment-2184927014,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABZKA5UGWMN6OCP6PA5O4I3ZI2LYNAVCNFSM6AAAAABJYHDPPGVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCOBUHEZDOMBRGQ
.
You are receiving this because you were mentioned.Message ID:
@.***>


Adding Square One information to the Ecosystem home page

Hello,
We noticed that the https://substrate.io/ecosystem/ page is missing information on Square One program (https://substrate.io/ecosystem/square-one/).
could we put information about it with the link under Substrate Builders Program?

Hi @midegdugarova thanks for submitting this request. You are correct, at the moment the Square One page is accessible only via the main navigation and not via the Ecosystem page.

Are you able to provide content for this new call to action?
Would you prefer if we create a pull request for you to review?
There is a feature section for the Substrate Builders Program, should the requested call to action for Square One take this form?

hi @jonnysmillie !
Thank you for your response.
I am fine if you make a pull request for a review, the content is basically one line, I was thinking of “Start your journey.
The Square One program provides steering recommendations to teams at every stage of the building process. ”
".
I can't provide the picture though.
Yes, we would like to have the same call to action as in theSubstrate Builders Program section - "Learn More", which would link to this page https://substrate.io/ecosystem/square-one/.
Thank you!

Hi @midegdugarova I made a PR here: https://github.com/paritytech/substrate-website/pull/299
You should be able to access a preview of the website (and the ecosystem page) with a new section that links to Square One.
We now need to make sure that the content is acceptable. I suggested some text from the existing Square One page but we do need to source an image.
Let me know if you have any further thoughts or suggestions and once we are happy we can have this reviewed and merge it. Thanks again!

@jonnysmillie ,
I would change the "wealth of resources available to the builders" to "opportunities and initiatives available in the ecosystem", otherwise it sounds too similar to what is written under the Substrate Builders Program.
Otherwise, looks good, thanks!

Just to update on this issue:
I proposed using the Square One animation or a still of the animation in this new section but we feel it does not fit well with the rest of the page so I have requested that Michel look at providing a new image.
cc. @midegdugarova @rmnprkrl

This has now been published on the live website.


Enable https configuration is not clear

Code between http and https is duplicated. It doesn't undestand

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: c6133901-f087-25a1-77e6-ab37e2d1bcf6
Version Independent ID: dcf239d3-4a85-00ed-b8ad-8f9a8e8ac983
Content: Configuring WCF Services in Code
Content Source: docs/framework/wcf/configuring-wcf-services-in-code.md
Product: dotnet-framework
Technology: dotnet-wcf
GitHub Login: @HongGit
Microsoft Alias: wcfsrvt

@jaivsa Thanks for pointing this out. Fix is in progress.


Move from Aptible to Heroku

Since we aren't using any HIPAA-covered data in the Somerville teacher tool, there is no compliance benefit to deploying on Aptible.
Other school organizations are deploying their work to Heroku without red flags or other difficuilties.
Heroku is much more widely used and easy to set up than Aptible, so switching to Heroku will make it easier for others to deploy the tool.
Let's move from Aptible to Heroku.

Up on Heroku: https://somerville-teacher-tool.herokuapp.com/

ToDo:

[ ] Custom domain


Quantum

[Quantum technology cannot be created in this way. There is completely wrong information here.]

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 61f9eb7a-972a-7fdd-9503-138ba8a3a08a
Version Independent ID: 1e1396e2-7ba0-b1c5-8cf1-3b7654bba86e
Content: Get started with the Quantum Development Kit (QDK) - Azure Quantum
Content Source: articles/install-get-started-qdk.md
Service: azure-quantum
Sub-service: qdk
GitHub Login: @Bradben
Microsoft Alias: v-benbra

Hello @ahmedbinrafiq.
The Quantum Development Kit is a SDK for Q#, a programming language designed specifically for quantum applications than you can run in various environments.  When you compile and run the program, it creates an instance of the quantum simulator and passes the Q# code to it.  Isolating the Q# code in the simulator ensures that the algorithms follow the laws of quantum physics and can run correctly on quantum computers.
You can run Q# programs on an actual quantum computer with Azure Quantum, but the quantum simulators provided with the QDK provide accurate and reliable results.
You can find more information about Q# and Azure Quantum in our Documentation.


Add unit tests for HashingContext

This is part of issue #43440.
The unit tests should cover the basic use cases of  HashingContext.
I thought about making tests for invalid input as well (e.g. call to update with an empty PackedByteArray), but all these cases are already handled with proper asserts, so I omitted them (as they would pollute the output with ERROR messages).
Ps.: This is my first contribution. So any feedback/critic is very welcome!

but all these cases are already handled with proper asserts, so I omitted them (as they would pollute the output with ERROR messages).

You can surround the "invalid" code with ERR_PRINT_OFF; and ERR_PRINT_ON;. This disables error reporting but still runs the code.

Oh, ok. That's good to know, thanks!
I will add further test cases then.

I have added more tests that should cover the invalid use of  HashingContext.

Made an update to current master to solve conflicts.

Need to bump year to 2021 in headers: https://github.com/godotengine/godot/pull/43459/checks?check_run_id=1993702277.

Yeah just recognized it, thx!
Should be fine now.

I'm with you.
I'll update the tests so they aren't repetitive with the one's of the String class.

The actual hashes are now used for comparison instead of the String hash functions.
So the tests should be independent from the one's in the String class.
Hope this makes more sense now :)


ngf-drop not working

Browser: Chrome Version 52.0.2743.82 (64-bit)
included_files:
<script src="plugins/file-upload/ng-file-upload-shim.min.js"></script>
<script src="plugins/file-upload/ng-file-upload.min.js"></script>
<script src="plugins/file-upload/ng-file-upload-all.min.js"></script>

code:
 <div ngf-drop ng-model="files">Drop</div>

You don't need to include all.min.js
Create a jsfiddle. The demo and samples are working.`


replace deprecated calls to FetchContent_Populate

Fixes: #568
The single argument signature for FetchContent_Populate is deprecated with CMake 3.30.
It was used in order to call add_subdirectory manually with the EXCLUDE_FROM_ALL and SYSTEM flags.
These have been added to FetchContent_Declare with 3.25 and 3.28.
Calling FetchContent_MakeAvailable will then internally call add_subdirectory with EXCLUDE_FROM_ALL and SYSTEM. There is therefore no need to call this manually anymore.
This discussion explains the problem better: https://discourse.cmake.org/t/rfc-deprecating-direct-calls-to-fetchcontent-populate/8161
Have tested this on a few internal projects, and didn't notice any issues.

This does not seem to properly forward OPTIONS passed to CPMFindPackage

This is a quick fix:
diff --git a/cmake/cpm.cmake b/cmake/cpm.cmake
index 558a76b..30cceed 100644
--- a/cmake/cpm.cmake
+++ b/cmake/cpm.cmake
@@ -873,6 +873,14 @@ function(CPMAddPackage)
       if(${CPM_ARGS_SYSTEM})
         list(APPEND fetchContentDeclareExtraArgs SYSTEM)
       endif()
+
+      if(CPM_ARGS_OPTIONS)
+        foreach(OPTION ${CPM_ARGS_OPTIONS})
+          cpm_parse_option("${OPTION}")
+          set(${OPTION_KEY} "${OPTION_VALUE}")
+        endforeach()
+      endif()
+
       cpm_declare_fetch(
         "${CPM_ARGS_NAME}"
         ${fetchContentDeclareExtraArgs}

@TheLartians Sorry for the ping, but could we get a new release with this PR merged? The original issue's been open for quite some time now and it would greatly reduce the warning spam on our projects at work (and we could move away from using a patched CPM script) :)

Still looking into it. There are some issues I don't fully understand yet, when adding a local package and when passing the SOURCE_SUBDIR flag.
Got some fixes locally but the code looks horrendous. :D

Ok... this took a bit longer than expected, the devil is in the details...
Anyway, in addition to EXCLUDE and SYSTEM, SOURCE_SUBDIR also needs to be specified in FetchContent_Declare.
The DOWNLOAD_ONLY option is also affected by this change. Unfortunately, I couldn't find an elegant solution for it. *_MakeAvailable will implicitly call add_subdirectory (if a CMakeLists.txt is present in the root folder of the dependency), which is not what we want. This is why the EnTT example failed to build.
The only workaround I found was to call *_Populate and specify exactly where to put the source. This approach essentially replicates the old code-path but uses a function signature that isn't deprecated. For some reason, I also had to include the GIT_REPOSITORY and other arguments otherwise, CMake would throw errors that these are required. I expected that the earlier *_Declare call would be sufficient, but apparently, it is ignored in this case.
I'd like to hear your feedback on the DOWNLOAD_ONLY issue.
I don't like it :D, but I haven't found another way of doing it.

I'm a bit new to cmake, but the only way I found to use something similar to the DOWNLOAD_ONLY option was to use ExternalProject_Add instead of FetchContent_Declare + FetchContent_MakeAvailable.
Example:
include(ExternalProject)
ExternalProject_Add(
  my_lib
  GIT_REPOSITORY https://github.com/bob/lib.git
  GIT_TAG v1.0.0
  CONFIGURE_COMMAND ""
  BUILD_COMMAND ""
  INSTALL_COMMAND ""
)
ExternalProject_Get_Property(my_lib SOURCE_DIR)
set(my_lib_SOURCE_DIR ${SOURCE_DIR})

@Crayon2000 We can't use ExternalProject_Add here. ExternalProject_Add only runs during the build process (including the download, configuration, etc.). You cannot reference libraries, variables, or other elements defined in the dependencies' CMakeLists during the configuration phase of the main project.
This is why FetchContent is preferred in almost all use cases.
If we add add_executable(main main.cpp) and target_link_library(main PRIVATE my_lib)  to your example, CMake would fail with an error complaining library my_lib is not defined (or something similar).

In the CMake discussion it seemed like any populate calls with explicit arguments are not planned to be deprecated or removed any time soon - Maybe we can make use of that to fix this issue with minimal changes and without version specific code?

Just figured out we can't rely on *_Populate only. FetchContent_Populate
FIND_PACKAGE_ARGS and OVERRIDE_FIND_PACKAGE are not supported this way. FIND_PACKAGE_ARGS specifically is what I use regularly.
Further, I realized that DOWNLOAD_ONLY and FIND_PACKAGE_ARGS are incompatible with each other. DOWNLOAD_ONLY requires us to use the full *_Populate signature, while FIND_PACKAGE_ARGS is only supported with *_Declare.
This call for example is not valid:
CPMAddPackage(
  NAME Eigen
  VERSION 3.2.8
  URL https://gitlab.com/libeigen/eigen/-/archive/3.2.8/eigen-3.2.8.tar.gz
  # Eigen's CMakelists are not intended for library use
  DOWNLOAD_ONLY YES
  FIND_PACKAGE_ARGS NAME libEigen
)

@TheLartians

It's not immediately obvious to me what is responsible for the error, could it be we are specifying the SOURCE_DIR twice through ARGN?

No, it seems the problem is that when a dependency is added via *_Populate, it isn't cached or saved internally. When you subsequently call *_Declare and *_MakeAvailable on the same dependency, as shown in this test, *_MakeAvailable tries to add the same source directory again, causing the error. The CMake documentation states that *_Populate is an isolated call. This might be what they mean by that.
Unfortunately, I can't think of a way to work around this problem that doesn't end up at something similar to what we had before (6f2cf67).

We previously only used *_Populate(name) (single argument), and now *_Populate(name, subdir, ...) (multi argument). I think we have to see these as completely different functions, despite having the same name.
When using *_Populate(name)  it was necessary to call *_Declare beforehand. This however is not required and ignored when calling *_Populate(name, subdir, ...).

@Avus-c thanks for the explanation. Given the unexpected complexity of this switch and the relative urgency, I suggest we rollback to 6f2cf67, as it at least satisfied all test cases. Perhaps we can drop support for legacy CMake versions at some point and loose the version-dependent behaviour at some point in the future.

@TheLartians Reverted the commit that attempted to use FetchContent_Populate (multi args) only, as suggested.
I thought about it over the weekend and couldn't come up with any alternative solutions.
I would have liked it if my first contribution had gone a bit smoother :D.

The fix is now live in v0.40.1 🎉


Change Verk application to not start Verk.Supervisor

All the users will need to change their supervision trees to add Verk.Supervisor.
I'm glad we are not on 1.0.0 yet :)
It closes https://github.com/edgurgel/verk/issues/58

Changes Unknown when pulling 9ba846f7127925424ace3c5145cfd7bdb277dced on change-verk-start into ** on master**.


ExceptionInInitializerError when using spring with profile

Framework version: 1.3
Implementations: Spring & Spring Boot

Scenario
At first I was using spring boot with spring profile, and I found that the application has a high possibility to launch twice.
The first launch is fast, and as soon as the log prints out START RequestId：..., the second launch starts.
It may happen at any time during the first launch. The farthest place the first launch can reach from my observation is to print out o.s.j.e.a.AnnotationMBeanExporter : Registering beans for JMX exposure on startup.
In 10 times of cold start, this issue happens like 8 times. (Yes some times the application do launch once only)
If the application only launches once, it takes ~10s. But for twice, it takes ~40s. The refreshing context for the second launch takes ~10s.
What I mean "launch twice" is that the static init block of SpringBootLambdaContainerHandler was entered twice.
I also tried to declare SpringBootLambdaContainerHandler as a member attribute of MyStreamLambdaHandler, and init it in the constructor. It shows that the constructor was also entered twice.
I thought this can only happen when there's multiple class loaders. So I print out the loader and it's ancestors in the static init block like this:
public class MyStreamLambdaHandler implements RequestStreamHandler {
    private static SpringBootLambdaContainerHandler<AwsProxyRequest, AwsProxyResponse> handler;
    private static final ClassLoader loader;

    static {
        try {
            loader = Thread.currentThread().getContextClassLoader();
            while (loader != null) {
                log.info("loader: {}", loader);
                loader = loader.getParent();
            }

            handler = SpringBootLambdaContainerHandler.getAwsProxyHandler(App.class, "develop");
        } catch (ContainerInitializationException e) {
            // if we fail here. We re-throw the exception to force another cold start
            throw new RuntimeException("Could not initialize Spring Boot application", e);
        }
    }
    ...
}

The result is here:
First launch:
07:54:33.069 INFO --- [ main] c.w.c.h.c.MyStreamLambdaHandler : loader: java.net.URLClassLoader@5d099f62
07:54:33.070 INFO --- [ main] c.w.c.h.c.MyStreamLambdaHandler : loader: sun.misc.Launcher$AppClassLoader@33909752
07:54:33.070 INFO --- [ main] c.w.c.h.c.MyStreamLambdaHandler : loader: sun.misc.Launcher$ExtClassLoader@66480dd7

Second luanch:
07:54:44.903 INFO --- [ main] c.w.c.h.c.MyStreamLambdaHandler : loader: java.net.URLClassLoader@1d56ce6a
07:54:44.903 INFO --- [ main] c.w.c.h.c.MyStreamLambdaHandler : loader: sun.misc.Launcher$AppClassLoader@33909752
07:54:44.903 INFO --- [ main] c.w.c.h.c.MyStreamLambdaHandler : loader: sun.misc.Launcher$ExtClassLoader@5383967b

As you can see, it's super weird that the same AppClassLoader has different ExtClassLoader as parent...
I also tried to "lazy init" the handler as introduced at #201.
By this way, the application only launches once in handleRequest, but it takes ~30s (~10s for refresh context).
I then tried not to use profile, nothing changed.
I tried to reduced the dependecy and make the application almost the same to demo. The issue still exists.
Finally I found that as long as I'm using spring boot, this issue always happens.
BTW, I found someone who encountered the similar problem at here:
https://forum.serverless.com/t/aws-lambda-coldstart-springboot-booting-2-times/5850
Next, I removed all spring-boot dependecies and used spring only (with profile).
By this way, I got ExceptionInInitializerError directly. The log is here:
07:19:45.637 INFO --- [ main] c.a.s.p.internal.LambdaContainerHandler : Starting Lambda Container Handler
07:19:47.484 INFO --- [ main] c.a.s.p.i.servlet.AwsServletContext : Initializing Spring DispatcherServlet 'aws-servless-java-container'
07:19:47.485 INFO --- [ main] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'aws-servless-java-container'
07:19:47.486 INFO --- [ main] o.s.web.servlet.DispatcherServlet : Completed initialization in 0 ms
07:19:47.487 INFO --- [ main] c.a.s.p.i.servlet.AwsServletContext : Initializing Spring root WebApplicationContext
07:19:47.487 INFO --- [ main] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization started
07:19:47.487 INFO --- [ main] o.s.web.context.ContextLoader : Root WebApplicationContext initialized in 0 ms
07:19:47.777 INFO --- [ main] c.a.s.p.i.servlet.AwsServletContext : Initializing Spring DispatcherServlet 'aws-servless-java-container'
07:19:47.777 INFO --- [ main] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'aws-servless-java-container'
07:19:47.777 INFO --- [ main] o.s.web.servlet.DispatcherServlet : Completed initialization in 0 ms
START RequestId: 7b44e995-1bae-4031-bd24-c2b4c7e6cc31 Version: $LATEST
Error loading class xx.MyStreamLambdaHandler: java.lang.ExceptionInInitializerError
java.lang.ExceptionInInitializerError
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
Caused by: java.lang.IllegalStateException: Cannot initialize context because there is already a root application context present - check whether you have multiple ContextLoader* definitions in your web.xml!
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:262)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:103)
at com.amazonaws.serverless.proxy.spring.LambdaSpringApplicationInitializer.notifyStartListeners(LambdaSpringApplicationInitializer.java:176)
at com.amazonaws.serverless.proxy.spring.LambdaSpringApplicationInitializer.onStartup(LambdaSpringApplicationInitializer.java:170)
at com.amazonaws.serverless.proxy.spring.SpringLambdaContainerHandler.initialize(SpringLambdaContainerHandler.java:192)
at com.amazonaws.serverless.proxy.spring.SpringLambdaContainerHandler.getAwsProxyHandler(SpringLambdaContainerHandler.java:98)
at xx.MyStreamLambdaHandler.<clinit>(MyStreamLambdaHandler.java:22)
... 2 more

END RequestId: 7b44e995-1bae-4031-bd24-c2b4c7e6cc31
REPORT RequestId: 7b44e995-1bae-4031-bd24-c2b4c7e6cc31	Duration: 71.95 ms	Billed Duration: 100 ms Memory Size: 1024 MB	Max Memory Used: 98 MB
Error loading class xx.MyStreamLambdaHandler
java.lang.ExceptionInInitializerError
07:19:49.209 INFO --- [ main] c.a.s.p.internal.LambdaContainerHandler : Starting Lambda Container Handler
07:19:51.081 INFO --- [ main] c.a.s.p.i.servlet.AwsServletContext : Initializing Spring DispatcherServlet 'aws-servless-java-container'
07:19:51.082 INFO --- [ main] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'aws-servless-java-container'
07:19:51.083 INFO --- [ main] o.s.web.servlet.DispatcherServlet : Completed initialization in 0 ms
07:19:51.096 INFO --- [ main] c.a.s.p.i.servlet.AwsServletContext : Initializing Spring root WebApplicationContext
07:19:51.096 INFO --- [ main] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization started
07:19:51.096 INFO --- [ main] o.s.web.context.ContextLoader : Root WebApplicationContext initialized in 0 ms
07:19:51.458 INFO --- [ main] c.a.s.p.i.servlet.AwsServletContext : Initializing Spring DispatcherServlet 'aws-servless-java-container'
07:19:51.458 INFO --- [ main] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'aws-servless-java-container'
07:19:51.458 INFO --- [ main] o.s.web.servlet.DispatcherServlet : Completed initialization in 0 ms

But if I get rid of profile, the application launches once only.
I looked into the codes, and found that initilizer.onStartup was called twice at newHandler.activateSpringProfiles(profiles) and newHandler.initialize().
I tried to remove L98 and the issue then disappers.
I'm not sure if this fix is correct... Any help is appreciated. I still want to use spring boot with profile but I need to reduced the cold start time.
=============== update
Just confirmed that remove L98 doesn't fix the issue. It happened again.
But this time the stack trace changes:
10:24:49.129 INFO --- [ main] c.a.s.p.internal.LambdaContainerHandler : Starting Lambda Container Handler
10:24:51.107 INFO --- [ main] o.h.validator.internal.util.Version : HV000001: Hibernate Validator 6.0.13.Final
10:24:51.529 INFO --- [ main] c.a.s.p.i.servlet.AwsServletContext : Initializing Spring DispatcherServlet 'aws-servless-java-container'
10:24:51.530 INFO --- [ main] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'aws-servless-java-container'
10:24:51.532 INFO --- [ main] o.s.web.servlet.DispatcherServlet : Completed initialization in 1 ms
10:24:51.532 INFO --- [ main] c.a.s.p.i.servlet.AwsServletContext : Initializing Spring root WebApplicationContext
10:24:51.532 INFO --- [ main] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization started
10:24:51.533 INFO --- [ main] o.s.web.context.ContextLoader : Root WebApplicationContext initialized in 1 ms
START RequestId: 4121d608-9438-4edc-9da9-47a5f90eea70 Version: $LATEST
10:24:52.368 INFO --- [ main] c.a.s.p.i.servlet.AwsServletContext : Initializing Spring DispatcherServlet 'aws-servless-java-container'
10:24:52.369 INFO --- [ main] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'aws-servless-java-container'
10:24:52.369 INFO --- [ main] o.s.web.servlet.DispatcherServlet : Completed initialization in 0 ms
10:24:52.371 ERROR --- [ main] c.a.s.p.internal.LambdaContainerHandler : Error while handling request
java.lang.IllegalStateException: Cannot initialize context because there is already a root application context present - check whether you have multiple ContextLoader* definitions in your web.xml!
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:262)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:103)
at xx.LambdaSpringApplicationInitializer.notifyStartListeners(LambdaSpringApplicationInitializer.java:184)
at xx.LambdaSpringApplicationInitializer.onStartup(LambdaSpringApplicationInitializer.java:178)
at xx.SpringLambdaContainerHandler.initialize(SpringLambdaContainerHandler.java:197)
at xx.SpringLambdaContainerHandler.handleRequest(SpringLambdaContainerHandler.java:180)
at xx.SpringLambdaContainerHandler.handleRequest(SpringLambdaContainerHandler.java:47)
at com.amazonaws.serverless.proxy.internal.LambdaContainerHandler.proxy(LambdaContainerHandler.java:177)
at com.amazonaws.serverless.proxy.internal.LambdaContainerHandler.proxyStream(LambdaContainerHandler.java:209)
at xx.MyStreamLambdaHandler.handleRequest(MyStreamLambdaHandler.java:32)
at lambdainternal.EventHandlerLoader$2.call(EventHandlerLoader.java:888)
at lambdainternal.AWSLambda.startRuntime(AWSLambda.java:293)
at lambdainternal.AWSLambda.<clinit>(AWSLambda.java:64)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at lambdainternal.LambdaRTEntry.main(LambdaRTEntry.java:104)
10:24:52.371 ERROR --- [ main] c.a.s.proxy.AwsProxyExceptionHandler : Called exception handler for:
java.lang.IllegalStateException: Cannot initialize context because there is already a root application context present - check whether you have multiple ContextLoader* definitions in your web.xml!
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:262)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:103)
at xx.LambdaSpringApplicationInitializer.notifyStartListeners(LambdaSpringApplicationInitializer.java:184)
at xx.LambdaSpringApplicationInitializer.onStartup(LambdaSpringApplicationInitializer.java:178)
at xx.SpringLambdaContainerHandler.initialize(SpringLambdaContainerHandler.java:197)
at xx.SpringLambdaContainerHandler.handleRequest(SpringLambdaContainerHandler.java:180)
at xx.SpringLambdaContainerHandler.handleRequest(SpringLambdaContainerHandler.java:47)
at com.amazonaws.serverless.proxy.internal.LambdaContainerHandler.proxy(LambdaContainerHandler.java:177)
at com.amazonaws.serverless.proxy.internal.LambdaContainerHandler.proxyStream(LambdaContainerHandler.java:209)
at xx.MyStreamLambdaHandler.handleRequest(MyStreamLambdaHandler.java:32)
at lambdainternal.EventHandlerLoader$2.call(EventHandlerLoader.java:888)
at lambdainternal.AWSLambda.startRuntime(AWSLambda.java:293)
at lambdainternal.AWSLambda.<clinit>(AWSLambda.java:64)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at lambdainternal.LambdaRTEntry.main(LambdaRTEntry.java:104)
java.lang.IllegalStateException: Cannot initialize context because there is already a root application context present - check whether you have multiple ContextLoader* definitions in your web.xml!
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:262)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:103)
at xx.LambdaSpringApplicationInitializer.notifyStartListeners(LambdaSpringApplicationInitializer.java:184)
at xx.LambdaSpringApplicationInitializer.onStartup(LambdaSpringApplicationInitializer.java:178)
at xx.SpringLambdaContainerHandler.initialize(SpringLambdaContainerHandler.java:197)
at xx.SpringLambdaContainerHandler.handleRequest(SpringLambdaContainerHandler.java:180)
at xx.SpringLambdaContainerHandler.handleRequest(SpringLambdaContainerHandler.java:47)
at com.amazonaws.serverless.proxy.internal.LambdaContainerHandler.proxy(LambdaContainerHandler.java:177)
at com.amazonaws.serverless.proxy.internal.LambdaContainerHandler.proxyStream(LambdaContainerHandler.java:209)
at xx.MyStreamLambdaHandler.handleRequest(MyStreamLambdaHandler.java:32)
at lambdainternal.EventHandlerLoader$2.call(EventHandlerLoader.java:888)
at lambdainternal.AWSLambda.startRuntime(AWSLambda.java:293)
at lambdainternal.AWSLambda.<clinit>(AWSLambda.java:64)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at lambdainternal.LambdaRTEntry.main(LambdaRTEntry.java:104)
END RequestId: 4121d608-9438-4edc-9da9-47a5f90eea70
REPORT RequestId: 4121d608-9438-4edc-9da9-47a5f90eea70	Duration: 882.54 ms	Billed Duration: 900 ms Memory Size: 1024 MB	Max Memory Used: 112 MB

BTW, I printed the stack trace in the static init block. It's the same for both launches:
07:54:44.880 INFO --- [ main] c.w.c.h.c.MyStreamLambdaHandler : trace: [java.lang.Thread.getStackTrace(Thread.java:1559), xx.MyStreamLambdaHandler.<clinit>(MyStreamLambdaHandler.java:35), java.lang.Class.forName0(Native Method), java.lang.Class.forName(Class.java:348), lambdainternal.HandlerInfo.fromString(HandlerInfo.java:31), lambdainternal.AWSLambda.findUserMethods(AWSLambda.java:93), lambdainternal.AWSLambda.startRuntime(AWSLambda.java:286), lambdainternal.AWSLambda.<clinit>(AWSLambda.java:64), java.lang.Class.forName0(Native Method), java.lang.Class.forName(Class.java:348), lambdainternal.LambdaRTEntry.main(LambdaRTEntry.java:104)]

=============== update
Also needs to  initialized = true after initializer.setSpringProfiles(getServletContext(), profiles)
Now the problem disappears again. But it's kinda hard for me to confirm the fix since it's a random issue...
=============== update
If the app is really small (like the demo), then the possibility the issue happens is greatly reduced.
For example, I tried to cold start >10 times, and only get 1 time of problem like this:
03:16:55.234 INFO --- [ main] c.a.s.p.internal.LambdaContainerHandler : Starting Lambda Container Handler
03:16:55.674 INFO --- [ main] c.a.s.p.i.servlet.AwsServletContext : 1 Spring WebApplicationInitializers detected on classpath

. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.0.6.RELEASE)

03:16:57.643 INFO 1 --- [ main] xx.MyApp : Starting MyApp on ip-10-128-123-138.ap-southeast-1.compute.internal with PID 1 (/var/task started by sbx_user1060 in /)
03:16:57.645 INFO 1 --- [ main] xx.MyApp : The following profiles are active: develop
03:17:00.626 INFO 1 --- [ main] c.a.s.p.i.servlet.AwsServletContext : Initializing Spring embedded WebApplicationContext
03:17:00.626 INFO 1 --- [ main] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 2751 ms
03:17:01.367 INFO 1 --- [ main] o.s.b.w.servlet.ServletRegistrationBean : Servlet dispatcherServlet mapped to [/]
03:17:01.369 INFO 1 --- [ main] c.a.s.p.i.servlet.AwsServletContext : Initializing Spring DispatcherServlet 'dispatcherServlet'
03:17:01.369 INFO 1 --- [ main] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
03:17:03.221 INFO 1 --- [ main] o.s.web.servlet.DispatcherServlet : Completed initialization in 1821 ms
03:17:03.226 INFO 1 --- [ main] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'characterEncodingFilter' to: [/*]
03:17:03.226 INFO 1 --- [ main] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'errorPageFilter' to: [/*]
03:17:03.227 INFO 1 --- [ main] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'hiddenHttpMethodFilter' to: [/*]
03:17:03.227 INFO 1 --- [ main] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'httpPutFormContentFilter' to: [/*]
03:17:03.227 INFO 1 --- [ main] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'requestContextFilter' to: [/*]
START RequestId: 730e90c9-816b-4dc2-a78e-929e0fd19499 Version: $LATEST
03:17:06.004 INFO --- [ main] c.a.s.p.internal.LambdaContainerHandler : Starting Lambda Container Handler
03:17:06.737 INFO --- [ main] c.a.s.p.i.servlet.AwsServletContext : 1 Spring WebApplicationInitializers detected on classpath

. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.0.6.RELEASE)

03:17:09.799 INFO 1 --- [ main] xx.MyApp : Starting MyApp on ip-10-128-123-138.ap-southeast-1.compute.internal with PID 1 (/var/task started by sbx_user1060 in /)
03:17:09.813 INFO 1 --- [ main] xx.MyApp : The following profiles are active: develop
03:17:14.163 INFO 1 --- [ main] c.a.s.p.i.servlet.AwsServletContext : Initializing Spring embedded WebApplicationContext
03:17:14.164 INFO 1 --- [ main] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 4200 ms
03:17:15.277 INFO 1 --- [ main] o.s.b.w.servlet.ServletRegistrationBean : Servlet dispatcherServlet mapped to [/]
03:17:15.278 INFO 1 --- [ main] c.a.s.p.i.servlet.AwsServletContext : Initializing Spring DispatcherServlet 'dispatcherServlet'
03:17:15.278 INFO 1 --- [ main] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
03:17:18.022 INFO 1 --- [ main] o.s.web.servlet.DispatcherServlet : Completed initialization in 2744 ms
03:17:18.025 INFO 1 --- [ main] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'characterEncodingFilter' to: [/*]
03:17:18.041 INFO 1 --- [ main] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'errorPageFilter' to: [/*]
03:17:18.041 INFO 1 --- [ main] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'hiddenHttpMethodFilter' to: [/*]
03:17:18.041 INFO 1 --- [ main] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'httpPutFormContentFilter' to: [/*]
03:17:18.042 INFO 1 --- [ main] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'requestContextFilter' to: [/*]
03:17:19.238 INFO 1 --- [ main] xx.MyApp : Started MyApp in 11.666 seconds (JVM running for 15.354)
03:17:19.481 INFO 1 --- [ main] c.a.s.p.internal.LambdaContainerHandler : <IP_ADDRESS> - [02/02/2019:03:16:53Z] "GET /contacts/v1/hello HTTP/1.1" 200 11 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36" combined
END RequestId: 730e90c9-816b-4dc2-a78e-929e0fd19499
REPORT RequestId: 730e90c9-816b-4dc2-a78e-929e0fd19499	Duration: 15336.28 ms	Billed Duration: 15400 ms Memory Size: 1024 MB	Max Memory Used: 145 MB
START RequestId: 86f22afe-131c-4ae1-8afa-3cccc0234f24 Version: $LATEST
03:26:40.498 INFO 1 --- [ main] c.a.s.p.internal.LambdaContainerHandler : <IP_ADDRESS> - [02/02/2019:03:26:40Z] "GET /contacts/v1/hello HTTP/1.1" 200 11 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36" combined
END RequestId: 86f22afe-131c-4ae1-8afa-3cccc0234f24
REPORT RequestId: 86f22afe-131c-4ae1-8afa-3cccc0234f24	Duration: 35.07 ms	Billed Duration: 100 ms Memory Size: 1024 MB	Max Memory Used: 150 MB

Thanks for the report. We have seen this before and we are trying to isolate the root cause. In the meanwhile, a good suggestion to get around the issue came up in #210 - take a look here.

I think the class loader is a red herring. Since you got the log output twice, it means the static code was executed twice, which in turn means you were running in a new instance of the function. Each instance is completely isolated so you would have a different instance of the class loader.
I'm trying to replicate the issue in a unit test but I'm having little luck. I'll keep you posted.

Any chance you can share your source code @shuangy92?

@sapessi I tested with this project and attached some logs.
I used StaticGenarator to manipulate the boot time.
From my observation, when the DIVIDER is large, the app has a large chance to boot once, and vice versa. I guess this issue might somehow be related with boot time?

I changed the lambda memory size from 1G to 2G, now the app can boot once with DIVIDEND = 10 in 9s.

thanks @shuangy92 I'll keep testing and trying to replicate. I'll have to push this out to a future release because I want to get 1.3.1 out sooner rather than later.

Make sure your static init code runs less than 10 seconds otherwise you will get a dual-init problem. Put the init in the handler callback with a null check like this:
public class StreamLambdaHandler implements RequestStreamHandler {
    private SpringBootLambdaContainerHandler<AwsProxyRequest, AwsProxyResponse> handler;

    public void handleRequest(InputStream inputStream, OutputStream outputStream, Context context)
            throws IOException {
        if (handler == null) {
            try {
                handler = SpringBootLambdaContainerHandler.getAwsProxyHandler(Application.class);
            } catch (ContainerInitializationException e) {
                e.printStackTrace();
                throw new RuntimeException("Could not initialize Spring Boot application", e);
            }
        }
        handler.proxyStream(inputStream, outputStream, context);
    }
}

@Noisyfox I tried this way, but it doesn't reduce my cold start time much. See my quote below.

I also tried to "lazy init" the handler as introduced at #201.
By this way, the application only launches once in handleRequest, but it takes ~30s (~10s for refresh context).
I finally changed the lambda memory size to 3008M (which is the upper limit). Now it works fine.

Well just checked the logs. 3008M memory only helps a little. Looks like once the issue happens, then it happens continuously, and vice versa.
One of my lambda (size 72.7M) is now continuously booting twice, but 5 hours ago it was continuously booting once...

One of my lambda (size 72.7M) is now continuously booting twice, but 5 hours ago it was continuously booting once...

Even with the lazy-init approch?

Hey @Noisyfox, @shuangy92
There is indeed a 10 seconds limit to the init time. If your class takes longer than 10 seconds to instantiate during the Lambda function init it will be automatically restarted.
I see two ways around this. First a radical way:

Drop Spring/SpringBoot: It is just too slow at starting large applications. If you are looking for performance my recommendation would be to explore Spark with Dagger2. This is not necessarily a criticism of Spring - the framework was built for runtime performance on a stateful machine rather than the fast boot required for Lambda.

Next, something that we could experiment with (I have not tried this myself so it's completely untested at the moment, just an idea off the top of my head):

Instead of using a static block to initialize the handler and Spring application, use the constructor. From the constructor, spawn a separate thread that performs the initialization of the app. In the constructor itself, wait for a few seconds (<10 seconds) so that you still take advantage of the performance boost. Then, use a latch to have the handleRequest method wait until the initialization of the framework in the separate thread completes before making the first proxy call.

I will implement solution #2, using a separate thread to make the most of the 10 seconds of initialization time, releasing the initialization latch when the ten seconds are over to allow Lambda to continue and use a second latch to hold the handler until the Spring application is initialized. I will make this an optional feature.

That sounds very promising!

This is on its way in release 1.4. See my last comment on #210

Release 1.4 is out on maven central. The release notes include a list of all the changes. Closing this issue.


[native_toolchain_c] Add a callback param for CBuilder.run

For who want to build with custom command, we could add a callback function in cbuilder.dart, something like:
  @override
  Future<void> run({
    required BuildConfig buildConfig,
    required BuildOutput buildOutput,
    required Logger? logger,
    BuilderFunction? callback,
  }) async {

    if (!buildConfig.dryRun) {
      final task = RunCBuilder(
        buildConfig: buildConfig,
        logger: logger,
        sources: sources,
        dynamicLibrary:
            _type == _CBuilderType.library && linkMode == LinkMode.dynamic
                ? libUri
                : null,
        staticLibrary:
            _type == _CBuilderType.library && linkMode == LinkMode.static
                ? libUri
                : null,
        executable: _type == _CBuilderType.executable ? exeUri : null,
        installName: installName,
      );
      await callback == null ? task.run() : callback(task);
    }

and use it in build.dart in package:
  await cbuilder.run(
    buildConfig: buildConfig,
    buildOutput: buildOutput,
    logger: Logger('')..onRecord.listen((record) => print(record.message)),
    callback: (task) {
      await Process.run('make', task.dynamicLibrary);
    },
  );

this could avoid writing redundant code about BuildOutput

Yeah it would be nice to somehow make some logic reusable.
Maybe adding a builder function is not completely the right thing to do. Instead maybe we should introduce some AbstractBuilder class with a bunch of facilities that CBuilder extends for example.

finished in native_assets_builder-v0.6.0


"Connection reset by peer" on certain SELECT and CALL statements

11/03/2020 Update: I was having this problem yesterday, after a couple more run attempts it just started working. No code/server/configuration changes. Now it is back to throwing the error again.

I have a relatively complex SELECT statement (35 lines; some UNIONs in a subquery) that is hanging for about 20 seconds before the following error:
CodecError { IO error: `Connection reset by peer (os error 104)' }

Here is my truncated code:
let pool = {
    let options = OptsBuilder::new()
        .ip_or_hostname(Some(&self.config.database.host))
        .tcp_port(self.config.database.port)
        .db_name(Some(&self.config.database.db_name))
        .user(Some(&self.config.database.user))
        .pass(Some(&self.config.database.pass));

    Pool::new(options)?
};

// ...

#[derive(Clone, Debug, Serialize)]
pub struct Account {
    pub zoho_id: String,
    pub corporate_group: String,
    pub corporate_group_number: usize,
    pub total_insureds: i64,
}

impl mysql::prelude::FromRow for Account {
    fn from_row_opt(row: mysql::Row) -> Result<Self, mysql::FromRowError> {
        let zoho_id = row.get_opt(0).unwrap().map_err(|_| mysql::FromRowError(row.clone()))?;
        let corporate_group = row.get_opt(1).unwrap().map_err(|_| mysql::FromRowError(row.clone()))?;
        let corporate_group_number = row.get_opt(2).unwrap().map_err(|_| mysql::FromRowError(row.clone()))?;
        let total_insureds = row.get_opt(3).unwrap().map_err(|_| mysql::FromRowError(row.clone()))?;

        Ok(Self {
            zoho_id,
            corporate_group,
            corporate_group_number,
            total_insureds,
        })
    }
}

// ...

let sql = "CALL getAccountsChurn()";
let accounts = pool.get_conn()?.query_map(sql, |account: Account| account)?;

26 records of 4 columns are to be returned, so I don't think it is a size issue. I can run the same statement in my interactive client (HeidiSQL), the command line, and a separate PHP app just fine. The queries takes about 1-2 seconds to complete.
I moved the select statements into simple stored procedures (with just the select statement), and a couple of the queries started working, but not all of them.
When I run SHOW PROCESSLIST while it's hanging, all pooled connections are sleeping.
I'm using MariaDB 10.3.8 on Windows Server 2016. Here are my SQL timeout settings:
interactive_timeout = 28800
net_read_timeout = 28800
net_write_timeout = 28800
thread_pool_idle_timeout = 60
wait_timeout = 28800

The only MariaDB error message I get is this one at the time I receive the os error 104 in my client:
[Warning] Aborted connection 34 to db: 'db_name' user: 'root' host: '<IP_ADDRESS>' (Got an error reading communication packets)

I'm really not sure what to blame. But I figure I'll put in this report, just in case there is a weird edge bug to be found.

Hi. Thanks for report.
Regarding your database instance - is it on local or remote host?

Hello! The database is remote (and connected through a VPN). I am also using WSL 2 (Debian) locally under Windows 10.
I just compiled for Windows and it works both locally (through Windows) and remote. So it might be a WSL 2 issue.
In case this helps, here are my build targets (couldn't get windows-msvc to compile debug):
Local: x86_64-unknown-linux-gnu (debug) [broken]
Local: x86_64-pc-windows-msvc (release) [works]
Remote: x86_64-pc-windows-msvc (release) [works]


1.20.1

I believe this code could do the trick, wish I could properly test it but best I can do is inverse the boolean to get an 'override when not in VR' deal.

I am back at home with my VR setup, I have tested and confirmed that the mod works. It also re-enables the combat mod whenever a hotswap to desktop occurs.

Okay okay, hear me out, we all make mistakes, I've done a lot of testing only to come to the conclusion that the method of checking if the user is in VR doesn't really matter. but bettercombat doesn't enable by itself. ( what a surprise). I can (with confidence) conclude this to be the working version!

Hotswapping!? Finally I won't have to restart the game to enable VR! Thanks for the PR :D


V 0.7.5

All Submissions Basics:

[x] Have you followed the guidelines in our Contributing document?
[x] Have you checked to ensure there aren't other open Pull Requests for the same update/change?
[x] Have you checked all Issues to tie the PR to a specific one?

All Submissions Cores:

[x] Have you added an explanation of what your changes do and why you'd like us to include them?
[x] Have you written new tests for your core changes, as applicable?
[x] Have you successfully ran tests with your changes locally?
[x] Does your submission pass tests, including CircleCI, Travis CI, and AppVeyor?
[x] Does your submission have appropriate code coverage? The cutoff threshold is 95% by Coversall.

New Model Submissions:

[ ] Have you created a .py in ~/pyod/models/?
[ ] Have you created a _example.py in ~/examples/?
[ ] Have you created a test_.py in ~/pyod/test/?
[ ] Have you lint your code locally prior to submission?

Pull Request Test Coverage Report for Build 1154

22 of 43 (51.16%)  changed or added relevant lines in 4 files are covered.
2 unchanged lines in 2 files lost coverage.
Overall coverage decreased (-0.5%) to 95.216%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

pyod/models/knn.py
2
3
66.67%

pyod/models/lscp.py
3
7
42.86%

pyod/test/test_lscp.py
14
20
70.0%

pyod/models/sod.py
3
13
23.08%

Files with Coverage Reduction
New Missed Lines
%

pyod/models/lscp.py
1
88.5%

pyod/models/sklearn_base.py
1
73.81%

Totals

Change from base Build 1051:
-0.5%

Covered Lines:
7981

Relevant Lines:
8382

💛  - Coveralls


share to other invest is saved incorrectly

One can specify a "shareToOtherEffect" in flixOpt. Thevalues can differ for invest and operation.
In weh results, only one result gets saved. the naming is also inconsistent.
Lets investigate

First investigation:
Value for share is Correctly assigned in the calculation. Results are correct aswell.
In flixPost, only "'specificShareToOtherEffect_costs' is saved. The postfix "_invest" or _operation" is missing
Further investigation results creation. Most likely the value get overwritten

Closed with #53


can not access the service by url ip:8000 and ip:9999 return errors

After the following commands:
docker pull jupyter/minimal
export TOKEN=$( head -c 30 /dev/urandom | xxd -p )
docker run --net=host -d -e CONFIGPROXY_AUTH_TOKEN=$TOKEN --name=proxy jupyter/configurable-http-proxy --default-target http://<IP_ADDRESS>:9999
docker run --net=host -d -e CONFIGPROXY_AUTH_TOKEN=$TOKEN --name=tmpnb -v /var/run/docker.sock:/docker.sock jupyter/tmpnb

I try to access the service by web browser:
ip:8000

server time out, and I tried
ip:9999

and get the following errors from:
docker logs tmpnb

what did I do wrong, how should I fix?
ubuntu@ip-172-31-16-130:~$ docker logs tmpnb
[W 150805 13:44:39 dockworker:100] [u'Your kernel does not support swap limit capabilities, memory limited without swap.']
[I 150805 13:44:39 dockworker:103] Created container 0a8a46bf732bab89a7e372628aabb9e03fa9b40e661332bfbe821227fca82c37
[W 150805 13:44:39 dockworker:100] [u'Your kernel does not support swap limit capabilities, memory limited without swap.']
[I 150805 13:44:39 dockworker:103] Created container 0c6b651d94716791443e648556e2dd0eddf192bba428ed25149e4dc4c8b86657
[W 150805 13:44:39 dockworker:100] [u'Your kernel does not support swap limit capabilities, memory limited without swap.']
[I 150805 13:44:39 dockworker:103] Created container 0b063984aff60177ac92e1b34caee34eda3d7a4738f1f5bb358c4a34dc3a493a
[W 150805 13:44:39 dockworker:100] [u'Your kernel does not support swap limit capabilities, memory limited without swap.']
[I 150805 13:44:39 dockworker:103] Created container 34db21999e54c5eb99aeaa656c0d847d02834c7652ea8f1bb90f66f0f10db708
[W 150805 13:44:39 dockworker:100] [u'Your kernel does not support swap limit capabilities, memory limited without swap.']
[I 150805 13:44:39 dockworker:103] Created container 76dd6b7e4ae93077367b91b520bc2a006077e35954698519401b8065ac1dc54b
[W 150805 13:44:39 dockworker:100] [u'Your kernel does not support swap limit capabilities, memory limited without swap.']
[I 150805 13:44:39 dockworker:103] Created container 78bd8b451e148184118f10ec74f89f3fbaa32ac0986c6803363e97f737b8aadc
[W 150805 13:44:39 dockworker:100] [u'Your kernel does not support swap limit capabilities, memory limited without swap.']
[I 150805 13:44:39 dockworker:103] Created container 36df7f81805c6cab03fd481f80690c264ffa66d62df44a1d7cd76f06f23def73
[W 150805 13:44:39 dockworker:100] [u'Your kernel does not support swap limit capabilities, memory limited without swap.']
[I 150805 13:44:39 dockworker:103] Created container aec3df9e62233f1401abdc61ce48f5c9124452c3b7a3feb9148f75e1980e1b6b
[W 150805 13:44:39 dockworker:100] [u'Your kernel does not support swap limit capabilities, memory limited without swap.']
[I 150805 13:44:39 dockworker:103] Created container dbe4c2bf79c40d3a9ba3c973827f00a24222ff7b86571852bac159e251f7191e
[W 150805 13:44:40 dockworker:100] [u'Your kernel does not support swap limit capabilities, memory limited without swap.']
[I 150805 13:44:40 dockworker:103] Created container 9c4edf718ba4309112288002572e7140c296f9a6e46ae4880d0e9ea721f59831
[I 150805 13:44:41 spawnpool:266] Waiting for a container to launch at [<IP_ADDRESS>:32768].
[I 150805 13:44:41 spawnpool:266] Waiting for a container to launch at [<IP_ADDRESS>:32770].
[I 150805 13:44:41 spawnpool:266] Waiting for a container to launch at [<IP_ADDRESS>:32769].
[I 150805 13:44:41 spawnpool:266] Waiting for a container to launch at [<IP_ADDRESS>:32771].
[I 150805 13:44:41 spawnpool:266] Waiting for a container to launch at [<IP_ADDRESS>:32772].
[I 150805 13:44:41 spawnpool:266] Waiting for a container to launch at [<IP_ADDRESS>:32773].
[I 150805 13:44:41 spawnpool:266] Waiting for a container to launch at [<IP_ADDRESS>:32775].
[I 150805 13:44:41 spawnpool:266] Waiting for a container to launch at [<IP_ADDRESS>:32774].
[I 150805 13:44:41 spawnpool:266] Waiting for a container to launch at [<IP_ADDRESS>:32777].
[I 150805 13:44:41 spawnpool:266] Waiting for a container to launch at [<IP_ADDRESS>:32776].
[I 150805 13:44:42 spawnpool:298] Booting server at [user/hDijPj6zWUlk], getting HTTP status [599]
[I 150805 13:44:42 spawnpool:298] Booting server at [user/HU8Vqyg6GOve], getting HTTP status [599]
[I 150805 13:44:42 spawnpool:298] Booting server at [user/7TFOBKF4hnTW], getting HTTP status [599]
[I 150805 13:44:42 spawnpool:298] Booting server at [user/DdHHKz14dmXO], getting HTTP status [599]
[I 150805 13:44:42 spawnpool:298] Booting server at [user/oYQYdfVC9wUX], getting HTTP status [599]
[I 150805 13:44:42 spawnpool:298] Booting server at [user/e36QQJTuvid0], getting HTTP status [599]
[I 150805 13:44:42 spawnpool:298] Booting server at [user/bdusgpw23a9V], getting HTTP status [599]
[I 150805 13:44:42 spawnpool:298] Booting server at [user/hDijPj6zWUlk], getting HTTP status [599]
[I 150805 13:44:42 spawnpool:298] Booting server at [user/hgjf3SR6gr2s], getting HTTP status [599]
[I 150805 13:44:42 spawnpool:298] Booting server at [user/LclFLAIsxW4r], getting HTTP status [599]
[I 150805 13:44:42 spawnpool:298] Booting server at [user/QUUmeMf4OsOh], getting HTTP status [599]
[I 150805 13:44:42 spawnpool:298] Booting server at [user/HU8Vqyg6GOve], getting HTTP status [599]
[I 150805 13:44:42 spawnpool:298] Booting server at [user/7TFOBKF4hnTW], getting HTTP status [599]
[I 150805 13:44:42 spawnpool:298] Booting server at [user/DdHHKz14dmXO], getting HTTP status [599]
[I 150805 13:44:42 spawnpool:298] Booting server at [user/oYQYdfVC9wUX], getting HTTP status [599]
[I 150805 13:44:42 spawnpool:298] Booting server at [user/e36QQJTuvid0], getting HTTP status [599]
[I 150805 13:44:42 spawnpool:298] Booting server at [user/bdusgpw23a9V], getting HTTP status [599]
[I 150805 13:44:42 spawnpool:298] Booting server at [user/hgjf3SR6gr2s], getting HTTP status [599]
[I 150805 13:44:42 spawnpool:298] Booting server at [user/hDijPj6zWUlk], getting HTTP status [599]
[I 150805 13:44:42 spawnpool:298] Booting server at [user/QUUmeMf4OsOh], getting HTTP status [599]
[I 150805 13:44:42 spawnpool:298] Booting server at [user/LclFLAIsxW4r], getting HTTP status [599]
[I 150805 13:44:42 spawnpool:298] Booting server at [user/HU8Vqyg6GOve], getting HTTP status [599]
[I 150805 13:44:42 spawnpool:298] Booting server at [user/7TFOBKF4hnTW], getting HTTP status [599]
[I 150805 13:44:42 spawnpool:298] Booting server at [user/DdHHKz14dmXO], getting HTTP status [599]
[I 150805 13:44:42 spawnpool:298] Booting server at [user/oYQYdfVC9wUX], getting HTTP status [599]
[I 150805 13:44:42 spawnpool:298] Booting server at [user/e36QQJTuvid0], getting HTTP status [599]
[I 150805 13:44:42 spawnpool:298] Booting server at [user/bdusgpw23a9V], getting HTTP status [599]
[I 150805 13:44:42 spawnpool:298] Booting server at [user/hDijPj6zWUlk], getting HTTP status [599]
[I 150805 13:44:42 spawnpool:298] Booting server at [user/hgjf3SR6gr2s], getting HTTP status [599]
[I 150805 13:44:42 spawnpool:298] Booting server at [user/QUUmeMf4OsOh], getting HTTP status [599]
[I 150805 13:44:42 spawnpool:298] Booting server at [user/HU8Vqyg6GOve], getting HTTP status [599]
[I 150805 13:44:42 spawnpool:298] Booting server at [user/LclFLAIsxW4r], getting HTTP status [599]
[I 150805 13:44:42 spawnpool:298] Booting server at [user/7TFOBKF4hnTW], getting HTTP status [599]
[I 150805 13:44:42 spawnpool:298] Booting server at [user/DdHHKz14dmXO], getting HTTP status [599]
[I 150805 13:44:43 spawnpool:298] Booting server at [user/oYQYdfVC9wUX], getting HTTP status [599]
[I 150805 13:44:43 spawnpool:298] Booting server at [user/e36QQJTuvid0], getting HTTP status [599]
[I 150805 13:44:43 spawnpool:298] Booting server at [user/bdusgpw23a9V], getting HTTP status [599]
[I 150805 13:44:43 spawnpool:298] Booting server at [user/hgjf3SR6gr2s], getting HTTP status [599]
[I 150805 13:44:43 spawnpool:298] Booting server at [user/hDijPj6zWUlk], getting HTTP status [599]
[I 150805 13:44:43 spawnpool:298] Booting server at [user/QUUmeMf4OsOh], getting HTTP status [599]
[I 150805 13:44:43 spawnpool:298] Booting server at [user/LclFLAIsxW4r], getting HTTP status [599]
[I 150805 13:44:43 spawnpool:298] Booting server at [user/HU8Vqyg6GOve], getting HTTP status [599]
[I 150805 13:44:43 spawnpool:298] Booting server at [user/7TFOBKF4hnTW], getting HTTP status [599]
[I 150805 13:44:43 spawnpool:298] Booting server at [user/DdHHKz14dmXO], getting HTTP status [599]
[I 150805 13:44:43 spawnpool:298] Booting server at [user/oYQYdfVC9wUX], getting HTTP status [599]
[I 150805 13:44:43 spawnpool:298] Booting server at [user/e36QQJTuvid0], getting HTTP status [599]
[I 150805 13:44:43 spawnpool:298] Booting server at [user/bdusgpw23a9V], getting HTTP status [599]
[I 150805 13:44:43 spawnpool:298] Booting server at [user/hDijPj6zWUlk], getting HTTP status [599]
[I 150805 13:44:43 spawnpool:298] Booting server at [user/hgjf3SR6gr2s], getting HTTP status [599]
[I 150805 13:44:43 spawnpool:298] Booting server at [user/QUUmeMf4OsOh], getting HTTP status [599]
[I 150805 13:44:43 spawnpool:298] Booting server at [user/HU8Vqyg6GOve], getting HTTP status [599]
[I 150805 13:44:43 spawnpool:298] Booting server at [user/LclFLAIsxW4r], getting HTTP status [599]
[I 150805 13:44:43 spawnpool:298] Booting server at [user/7TFOBKF4hnTW], getting HTTP status [599]
[I 150805 13:44:43 spawnpool:298] Booting server at [user/DdHHKz14dmXO], getting HTTP status [599]
[I 150805 13:44:43 spawnpool:298] Booting server at [user/oYQYdfVC9wUX], getting HTTP status [599]
[I 150805 13:44:43 spawnpool:298] Booting server at [user/e36QQJTuvid0], getting HTTP status [599]
[I 150805 13:44:43 spawnpool:298] Booting server at [user/bdusgpw23a9V], getting HTTP status [599]
[I 150805 13:44:43 spawnpool:298] Booting server at [user/hDijPj6zWUlk], getting HTTP status [599]
[I 150805 13:44:43 spawnpool:298] Booting server at [user/hgjf3SR6gr2s], getting HTTP status [599]
[I 150805 13:44:43 spawnpool:298] Booting server at [user/QUUmeMf4OsOh], getting HTTP status [599]
[I 150805 13:44:43 spawnpool:298] Booting server at [user/LclFLAIsxW4r], getting HTTP status [599]
[I 150805 13:44:43 spawnpool:298] Booting server at [user/HU8Vqyg6GOve], getting HTTP status [599]
[I 150805 13:44:43 spawnpool:298] Booting server at [user/7TFOBKF4hnTW], getting HTTP status [599]
[I 150805 13:44:43 spawnpool:298] Booting server at [user/DdHHKz14dmXO], getting HTTP status [599]
[I 150805 13:44:43 spawnpool:298] Booting server at [user/oYQYdfVC9wUX], getting HTTP status [599]
[I 150805 13:44:43 spawnpool:298] Booting server at [user/e36QQJTuvid0], getting HTTP status [599]
[I 150805 13:44:43 spawnpool:298] Booting server at [user/bdusgpw23a9V], getting HTTP status [599]
[I 150805 13:44:43 spawnpool:298] Booting server at [user/hDijPj6zWUlk], getting HTTP status [599]
[I 150805 13:44:43 spawnpool:298] Booting server at [user/hgjf3SR6gr2s], getting HTTP status [599]
[I 150805 13:44:43 spawnpool:298] Booting server at [user/HU8Vqyg6GOve], getting HTTP status [599]
[I 150805 13:44:43 spawnpool:298] Booting server at [user/LclFLAIsxW4r], getting HTTP status [599]
[I 150805 13:44:43 spawnpool:298] Booting server at [user/QUUmeMf4OsOh], getting HTTP status [599]
[I 150805 13:44:43 spawnpool:298] Booting server at [user/7TFOBKF4hnTW], getting HTTP status [599]
[I 150805 13:44:43 spawnpool:298] Booting server at [user/DdHHKz14dmXO], getting HTTP status [599]
[I 150805 13:44:43 spawnpool:298] Booting server at [user/oYQYdfVC9wUX], getting HTTP status [599]
[I 150805 13:44:43 spawnpool:298] Booting server at [user/e36QQJTuvid0], getting HTTP status [599]
[I 150805 13:44:43 spawnpool:298] Booting server at [user/bdusgpw23a9V], getting HTTP status [599]
[I 150805 13:44:43 spawnpool:298] Booting server at [user/hDijPj6zWUlk], getting HTTP status [599]
[I 150805 13:44:44 spawnpool:298] Booting server at [user/hgjf3SR6gr2s], getting HTTP status [599]
[I 150805 13:44:44 spawnpool:298] Booting server at [user/QUUmeMf4OsOh], getting HTTP status [599]
[I 150805 13:44:44 spawnpool:298] Booting server at [user/LclFLAIsxW4r], getting HTTP status [599]
[I 150805 13:44:44 spawnpool:298] Booting server at [user/HU8Vqyg6GOve], getting HTTP status [599]
[I 150805 13:44:44 spawnpool:298] Booting server at [user/7TFOBKF4hnTW], getting HTTP status [599]
[I 150805 13:44:44 spawnpool:298] Booting server at [user/DdHHKz14dmXO], getting HTTP status [599]
[I 150805 13:44:44 spawnpool:298] Booting server at [user/oYQYdfVC9wUX], getting HTTP status [599]
[I 150805 13:44:44 spawnpool:298] Booting server at [user/e36QQJTuvid0], getting HTTP status [599]
[I 150805 13:44:44 spawnpool:298] Booting server at [user/bdusgpw23a9V], getting HTTP status [599]
[I 150805 13:44:44 spawnpool:298] Booting server at [user/hDijPj6zWUlk], getting HTTP status [599]
[I 150805 13:44:44 spawnpool:298] Booting server at [user/hgjf3SR6gr2s], getting HTTP status [599]
[I 150805 13:44:44 spawnpool:298] Booting server at [user/HU8Vqyg6GOve], getting HTTP status [599]
[I 150805 13:44:44 spawnpool:298] Booting server at [user/LclFLAIsxW4r], getting HTTP status [599]
[I 150805 13:44:44 spawnpool:298] Booting server at [user/QUUmeMf4OsOh], getting HTTP status [599]
[I 150805 13:44:44 spawnpool:298] Booting server at [user/7TFOBKF4hnTW], getting HTTP status [599]
[I 150805 13:44:44 spawnpool:298] Booting server at [user/DdHHKz14dmXO], getting HTTP status [599]
[I 150805 13:44:44 spawnpool:298] Booting server at [user/oYQYdfVC9wUX], getting HTTP status [599]
[I 150805 13:44:44 spawnpool:298] Booting server at [user/e36QQJTuvid0], getting HTTP status [599]
[I 150805 13:44:44 spawnpool:298] Booting server at [user/bdusgpw23a9V], getting HTTP status [599]
[I 150805 13:44:44 spawnpool:298] Booting server at [user/hDijPj6zWUlk], getting HTTP status [599]
[I 150805 13:44:44 spawnpool:298] Booting server at [user/hgjf3SR6gr2s], getting HTTP status [599]
[I 150805 13:44:44 spawnpool:298] Booting server at [user/LclFLAIsxW4r], getting HTTP status [599]
[I 150805 13:44:44 spawnpool:298] Booting server at [user/HU8Vqyg6GOve], getting HTTP status [599]
[I 150805 13:44:44 spawnpool:298] Booting server at [user/QUUmeMf4OsOh], getting HTTP status [599]
[I 150805 13:44:44 spawnpool:298] Booting server at [user/7TFOBKF4hnTW], getting HTTP status [599]
[I 150805 13:44:44 spawnpool:298] Booting server at [user/DdHHKz14dmXO], getting HTTP status [599]
[I 150805 13:44:44 spawnpool:298] Booting server at [user/oYQYdfVC9wUX], getting HTTP status [599]
[I 150805 13:44:44 spawnpool:298] Booting server at [user/e36QQJTuvid0], getting HTTP status [599]
[I 150805 13:44:44 spawnpool:298] Booting server at [user/bdusgpw23a9V], getting HTTP status [599]
[I 150805 13:44:44 spawnpool:298] Booting server at [user/hDijPj6zWUlk], getting HTTP status [599]
[I 150805 13:44:44 spawnpool:298] Booting server at [user/hgjf3SR6gr2s], getting HTTP status [599]
[I 150805 13:44:44 spawnpool:298] Booting server at [user/HU8Vqyg6GOve], getting HTTP status [599]
[I 150805 13:44:44 spawnpool:298] Booting server at [user/LclFLAIsxW4r], getting HTTP status [599]
[I 150805 13:44:44 spawnpool:298] Booting server at [user/7TFOBKF4hnTW], getting HTTP status [599]
[I 150805 13:44:44 spawnpool:298] Booting server at [user/QUUmeMf4OsOh], getting HTTP status [599]
[I 150805 13:44:44 spawnpool:298] Booting server at [user/DdHHKz14dmXO], getting HTTP status [599]
[I 150805 13:44:44 spawnpool:298] Booting server at [user/oYQYdfVC9wUX], getting HTTP status [599]
[I 150805 13:44:44 spawnpool:298] Booting server at [user/e36QQJTuvid0], getting HTTP status [599]
[I 150805 13:44:44 spawnpool:298] Booting server at [user/bdusgpw23a9V], getting HTTP status [599]
[I 150805 13:44:44 spawnpool:298] Booting server at [user/hDijPj6zWUlk], getting HTTP status [599]
[I 150805 13:44:44 spawnpool:298] Booting server at [user/hgjf3SR6gr2s], getting HTTP status [599]
[I 150805 13:44:44 spawnpool:298] Booting server at [user/LclFLAIsxW4r], getting HTTP status [599]
[I 150805 13:44:44 spawnpool:298] Booting server at [user/HU8Vqyg6GOve], getting HTTP status [599]
[I 150805 13:44:44 spawnpool:298] Booting server at [user/QUUmeMf4OsOh], getting HTTP status [599]
[I 150805 13:44:44 spawnpool:298] Booting server at [user/7TFOBKF4hnTW], getting HTTP status [599]
[I 150805 13:44:44 spawnpool:298] Booting server at [user/DdHHKz14dmXO], getting HTTP status [599]
[I 150805 13:44:45 spawnpool:298] Booting server at [user/oYQYdfVC9wUX], getting HTTP status [599]
[I 150805 13:44:45 spawnpool:298] Booting server at [user/e36QQJTuvid0], getting HTTP status [599]
[I 150805 13:44:45 spawnpool:298] Booting server at [user/bdusgpw23a9V], getting HTTP status [599]
[I 150805 13:44:45 spawnpool:298] Booting server at [user/hDijPj6zWUlk], getting HTTP status [599]
[I 150805 13:44:45 spawnpool:298] Booting server at [user/hgjf3SR6gr2s], getting HTTP status [599]
[I 150805 13:44:45 spawnpool:298] Booting server at [user/LclFLAIsxW4r], getting HTTP status [599]
[I 150805 13:44:45 spawnpool:298] Booting server at [user/HU8Vqyg6GOve], getting HTTP status [599]
[I 150805 13:44:45 spawnpool:298] Booting server at [user/7TFOBKF4hnTW], getting HTTP status [599]
[I 150805 13:44:45 spawnpool:298] Booting server at [user/QUUmeMf4OsOh], getting HTTP status [599]
[I 150805 13:44:45 spawnpool:298] Booting server at [user/DdHHKz14dmXO], getting HTTP status [599]
[I 150805 13:44:45 spawnpool:298] Booting server at [user/oYQYdfVC9wUX], getting HTTP status [599]
[I 150805 13:44:45 spawnpool:298] Booting server at [user/e36QQJTuvid0], getting HTTP status [599]
[I 150805 13:44:45 spawnpool:298] Booting server at [user/bdusgpw23a9V], getting HTTP status [599]
[I 150805 13:44:45 spawnpool:298] Booting server at [user/hDijPj6zWUlk], getting HTTP status [599]
[I 150805 13:44:45 spawnpool:298] Booting server at [user/hgjf3SR6gr2s], getting HTTP status [599]
[I 150805 13:44:45 spawnpool:298] Booting server at [user/LclFLAIsxW4r], getting HTTP status [599]
[I 150805 13:44:45 spawnpool:298] Booting server at [user/HU8Vqyg6GOve], getting HTTP status [599]
[I 150805 13:44:45 spawnpool:298] Booting server at [user/QUUmeMf4OsOh], getting HTTP status [599]
[I 150805 13:44:45 spawnpool:298] Booting server at [user/7TFOBKF4hnTW], getting HTTP status [599]
[I 150805 13:44:45 spawnpool:298] Booting server at [user/DdHHKz14dmXO], getting HTTP status [599]
[I 150805 13:44:45 spawnpool:298] Booting server at [user/oYQYdfVC9wUX], getting HTTP status [599]
[I 150805 13:44:45 spawnpool:298] Booting server at [user/e36QQJTuvid0], getting HTTP status [599]
[I 150805 13:44:45 spawnpool:298] Booting server at [user/bdusgpw23a9V], getting HTTP status [599]
[I 150805 13:44:45 spawnpool:298] Booting server at [user/hDijPj6zWUlk], getting HTTP status [599]
[I 150805 13:44:45 spawnpool:298] Booting server at [user/hgjf3SR6gr2s], getting HTTP status [599]
[I 150805 13:44:45 spawnpool:298] Booting server at [user/LclFLAIsxW4r], getting HTTP status [599]
[I 150805 13:44:45 spawnpool:298] Booting server at [user/HU8Vqyg6GOve], getting HTTP status [599]
[I 150805 13:44:45 spawnpool:298] Booting server at [user/7TFOBKF4hnTW], getting HTTP status [599]
[I 150805 13:44:45 spawnpool:298] Booting server at [user/QUUmeMf4OsOh], getting HTTP status [599]
[I 150805 13:44:45 spawnpool:298] Booting server at [user/DdHHKz14dmXO], getting HTTP status [599]
[I 150805 13:44:45 spawnpool:298] Booting server at [user/oYQYdfVC9wUX], getting HTTP status [599]
[I 150805 13:44:45 spawnpool:298] Booting server at [user/e36QQJTuvid0], getting HTTP status [599]
[I 150805 13:44:45 spawnpool:298] Booting server at [user/bdusgpw23a9V], getting HTTP status [599]
[I 150805 13:44:45 spawnpool:298] Booting server at [user/hDijPj6zWUlk], getting HTTP status [599]
[I 150805 13:44:45 spawnpool:298] Booting server at [user/hgjf3SR6gr2s], getting HTTP status [599]
[I 150805 13:44:45 spawnpool:298] Booting server at [user/LclFLAIsxW4r], getting HTTP status [599]
[I 150805 13:44:45 spawnpool:298] Booting server at [user/HU8Vqyg6GOve], getting HTTP status [599]
[I 150805 13:44:45 spawnpool:298] Booting server at [user/QUUmeMf4OsOh], getting HTTP status [599]
[I 150805 13:44:45 spawnpool:298] Booting server at [user/7TFOBKF4hnTW], getting HTTP status [599]
[I 150805 13:44:45 spawnpool:298] Booting server at [user/DdHHKz14dmXO], getting HTTP status [599]
[I 150805 13:44:45 spawnpool:298] Booting server at [user/oYQYdfVC9wUX], getting HTTP status [599]
[I 150805 13:44:45 spawnpool:298] Booting server at [user/e36QQJTuvid0], getting HTTP status [599]
[I 150805 13:44:45 spawnpool:298] Booting server at [user/bdusgpw23a9V], getting HTTP status [599]
[I 150805 13:44:45 spawnpool:298] Booting server at [user/hDijPj6zWUlk], getting HTTP status [599]
[I 150805 13:44:45 spawnpool:298] Booting server at [user/hgjf3SR6gr2s], getting HTTP status [599]
[I 150805 13:44:46 spawnpool:298] Booting server at [user/LclFLAIsxW4r], getting HTTP status [599]
[I 150805 13:44:46 spawnpool:298] Booting server at [user/HU8Vqyg6GOve], getting HTTP status [599]
[I 150805 13:44:46 spawnpool:298] Booting server at [user/7TFOBKF4hnTW], getting HTTP status [599]
[I 150805 13:44:46 spawnpool:298] Booting server at [user/QUUmeMf4OsOh], getting HTTP status [599]
[I 150805 13:44:46 spawnpool:298] Booting server at [user/DdHHKz14dmXO], getting HTTP status [599]
[I 150805 13:44:46 spawnpool:298] Booting server at [user/oYQYdfVC9wUX], getting HTTP status [599]
[I 150805 13:44:46 spawnpool:298] Booting server at [user/e36QQJTuvid0], getting HTTP status [599]
[I 150805 13:44:46 spawnpool:298] Booting server at [user/bdusgpw23a9V], getting HTTP status [599]
[I 150805 13:44:46 spawnpool:298] Booting server at [user/hgjf3SR6gr2s], getting HTTP status [599]
[I 150805 13:44:46 spawnpool:298] Booting server at [user/LclFLAIsxW4r], getting HTTP status [599]
[I 150805 13:44:46 spawnpool:298] Booting server at [user/HU8Vqyg6GOve], getting HTTP status [599]
[I 150805 13:44:46 spawnpool:298] Booting server at [user/QUUmeMf4OsOh], getting HTTP status [599]
[I 150805 13:44:46 spawnpool:298] Booting server at [user/7TFOBKF4hnTW], getting HTTP status [599]
[I 150805 13:44:46 spawnpool:298] Booting server at [user/DdHHKz14dmXO], getting HTTP status [599]
[I 150805 13:44:46 spawnpool:298] Booting server at [user/oYQYdfVC9wUX], getting HTTP status [599]
[I 150805 13:44:46 spawnpool:298] Booting server at [user/e36QQJTuvid0], getting HTTP status [599]
[I 150805 13:44:46 spawnpool:298] Booting server at [user/bdusgpw23a9V], getting HTTP status [599]
[I 150805 13:44:46 spawnpool:298] Booting server at [user/hgjf3SR6gr2s], getting HTTP status [599]
[I 150805 13:44:46 spawnpool:298] Booting server at [user/LclFLAIsxW4r], getting HTTP status [599]
[I 150805 13:44:46 spawnpool:298] Booting server at [user/HU8Vqyg6GOve], getting HTTP status [599]
[I 150805 13:44:46 spawnpool:298] Booting server at [user/7TFOBKF4hnTW], getting HTTP status [599]
[I 150805 13:44:46 spawnpool:298] Booting server at [user/QUUmeMf4OsOh], getting HTTP status [599]
[I 150805 13:44:46 spawnpool:298] Booting server at [user/DdHHKz14dmXO], getting HTTP status [599]
[I 150805 13:44:46 spawnpool:298] Booting server at [user/oYQYdfVC9wUX], getting HTTP status [599]
[I 150805 13:44:46 spawnpool:298] Booting server at [user/e36QQJTuvid0], getting HTTP status [599]
[I 150805 13:44:46 spawnpool:298] Booting server at [user/bdusgpw23a9V], getting HTTP status [599]
[I 150805 13:44:46 spawnpool:298] Booting server at [user/hgjf3SR6gr2s], getting HTTP status [599]
[I 150805 13:44:46 spawnpool:298] Booting server at [user/LclFLAIsxW4r], getting HTTP status [599]
[I 150805 13:44:46 spawnpool:298] Booting server at [user/HU8Vqyg6GOve], getting HTTP status [599]
[I 150805 13:44:46 spawnpool:298] Booting server at [user/QUUmeMf4OsOh], getting HTTP status [599]
[I 150805 13:44:46 spawnpool:298] Booting server at [user/7TFOBKF4hnTW], getting HTTP status [599]
[I 150805 13:44:46 spawnpool:304] Server [user/hDijPj6zWUlk] at address [<IP_ADDRESS>:32768] has booted! Have at it.
[I 150805 13:44:46 spawnpool:298] Booting server at [user/DdHHKz14dmXO], getting HTTP status [599]
[I 150805 13:44:46 spawnpool:298] Booting server at [user/oYQYdfVC9wUX], getting HTTP status [599]
[I 150805 13:44:46 spawnpool:251] Proxied path [user/hDijPj6zWUlk] to port [32768].
[I 150805 13:44:46 spawnpool:257] Adding container [PooledContainer(id=u'0a8a46bf732bab89a7e372628aabb9e03fa9b40e661332bfbe821227fca82c37', path='user/hDijPj6zWUlk')] to the pool.
[I 150805 13:44:46 spawnpool:298] Booting server at [user/e36QQJTuvid0], getting HTTP status [599]
[I 150805 13:44:46 spawnpool:298] Booting server at [user/bdusgpw23a9V], getting HTTP status [599]
[I 150805 13:44:46 spawnpool:298] Booting server at [user/hgjf3SR6gr2s], getting HTTP status [599]
[I 150805 13:44:46 spawnpool:298] Booting server at [user/LclFLAIsxW4r], getting HTTP status [599]
[I 150805 13:44:46 spawnpool:298] Booting server at [user/HU8Vqyg6GOve], getting HTTP status [599]
[I 150805 13:44:46 spawnpool:298] Booting server at [user/QUUmeMf4OsOh], getting HTTP status [599]
[I 150805 13:44:46 spawnpool:298] Booting server at [user/DdHHKz14dmXO], getting HTTP status [599]
[I 150805 13:44:46 spawnpool:298] Booting server at [user/oYQYdfVC9wUX], getting HTTP status [599]
[I 150805 13:44:46 spawnpool:298] Booting server at [user/e36QQJTuvid0], getting HTTP status [599]
[I 150805 13:44:47 spawnpool:298] Booting server at [user/bdusgpw23a9V], getting HTTP status [599]
[I 150805 13:44:47 spawnpool:298] Booting server at [user/hgjf3SR6gr2s], getting HTTP status [599]
[I 150805 13:44:47 spawnpool:298] Booting server at [user/LclFLAIsxW4r], getting HTTP status [599]
[I 150805 13:44:47 spawnpool:298] Booting server at [user/QUUmeMf4OsOh], getting HTTP status [599]
[I 150805 13:44:47 spawnpool:298] Booting server at [user/DdHHKz14dmXO], getting HTTP status [599]
[I 150805 13:44:47 spawnpool:298] Booting server at [user/oYQYdfVC9wUX], getting HTTP status [599]
[I 150805 13:44:47 spawnpool:298] Booting server at [user/e36QQJTuvid0], getting HTTP status [599]
[I 150805 13:44:47 spawnpool:298] Booting server at [user/bdusgpw23a9V], getting HTTP status [599]
[I 150805 13:44:47 spawnpool:298] Booting server at [user/hgjf3SR6gr2s], getting HTTP status [599]
[I 150805 13:44:47 spawnpool:298] Booting server at [user/LclFLAIsxW4r], getting HTTP status [599]
[I 150805 13:44:47 spawnpool:304] Server [user/7TFOBKF4hnTW] at address [<IP_ADDRESS>:32769] has booted! Have at it.
[I 150805 13:44:47 spawnpool:298] Booting server at [user/QUUmeMf4OsOh], getting HTTP status [599]
[I 150805 13:44:47 spawnpool:251] Proxied path [user/7TFOBKF4hnTW] to port [32769].
[I 150805 13:44:47 spawnpool:257] Adding container [PooledContainer(id=u'0c6b651d94716791443e648556e2dd0eddf192bba428ed25149e4dc4c8b86657', path='user/7TFOBKF4hnTW')] to the pool.
[I 150805 13:44:47 spawnpool:298] Booting server at [user/e36QQJTuvid0], getting HTTP status [599]
[I 150805 13:44:47 spawnpool:298] Booting server at [user/bdusgpw23a9V], getting HTTP status [599]
[I 150805 13:44:47 spawnpool:298] Booting server at [user/hgjf3SR6gr2s], getting HTTP status [599]
[I 150805 13:44:47 spawnpool:298] Booting server at [user/LclFLAIsxW4r], getting HTTP status [599]
[I 150805 13:44:47 spawnpool:298] Booting server at [user/QUUmeMf4OsOh], getting HTTP status [599]
[I 150805 13:44:47 spawnpool:304] Server [user/HU8Vqyg6GOve] at address [<IP_ADDRESS>:32770] has booted! Have at it.
[I 150805 13:44:47 spawnpool:251] Proxied path [user/HU8Vqyg6GOve] to port [32770].
[I 150805 13:44:47 spawnpool:257] Adding container [PooledContainer(id=u'0b063984aff60177ac92e1b34caee34eda3d7a4738f1f5bb358c4a34dc3a493a', path='user/HU8Vqyg6GOve')] to the pool.
[I 150805 13:44:47 spawnpool:304] Server [user/DdHHKz14dmXO] at address [<IP_ADDRESS>:32771] has booted! Have at it.
[I 150805 13:44:47 spawnpool:304] Server [user/oYQYdfVC9wUX] at address [<IP_ADDRESS>:32772] has booted! Have at it.
[I 150805 13:44:47 spawnpool:251] Proxied path [user/DdHHKz14dmXO] to port [32771].
[I 150805 13:44:47 spawnpool:257] Adding container [PooledContainer(id=u'34db21999e54c5eb99aeaa656c0d847d02834c7652ea8f1bb90f66f0f10db708', path='user/DdHHKz14dmXO')] to the pool.
[I 150805 13:44:47 spawnpool:251] Proxied path [user/oYQYdfVC9wUX] to port [32772].
[I 150805 13:44:47 spawnpool:257] Adding container [PooledContainer(id=u'76dd6b7e4ae93077367b91b520bc2a006077e35954698519401b8065ac1dc54b', path='user/oYQYdfVC9wUX')] to the pool.
[I 150805 13:44:47 spawnpool:304] Server [user/e36QQJTuvid0] at address [<IP_ADDRESS>:32773] has booted! Have at it.
[I 150805 13:44:47 spawnpool:304] Server [user/hgjf3SR6gr2s] at address [<IP_ADDRESS>:32774] has booted! Have at it.
[I 150805 13:44:47 spawnpool:304] Server [user/bdusgpw23a9V] at address [<IP_ADDRESS>:32775] has booted! Have at it.
[I 150805 13:44:47 spawnpool:251] Proxied path [user/bdusgpw23a9V] to port [32775].
[I 150805 13:44:47 spawnpool:257] Adding container [PooledContainer(id=u'aec3df9e62233f1401abdc61ce48f5c9124452c3b7a3feb9148f75e1980e1b6b', path='user/bdusgpw23a9V')] to the pool.
[I 150805 13:44:47 spawnpool:251] Proxied path [user/e36QQJTuvid0] to port [32773].
[I 150805 13:44:47 spawnpool:257] Adding container [PooledContainer(id=u'78bd8b451e148184118f10ec74f89f3fbaa32ac0986c6803363e97f737b8aadc', path='user/e36QQJTuvid0')] to the pool.
[I 150805 13:44:47 spawnpool:304] Server [user/LclFLAIsxW4r] at address [<IP_ADDRESS>:32776] has booted! Have at it.
[I 150805 13:44:47 spawnpool:304] Server [user/QUUmeMf4OsOh] at address [<IP_ADDRESS>:32777] has booted! Have at it.
[I 150805 13:44:47 spawnpool:251] Proxied path [user/hgjf3SR6gr2s] to port [32774].
[I 150805 13:44:47 spawnpool:257] Adding container [PooledContainer(id=u'36df7f81805c6cab03fd481f80690c264ffa66d62df44a1d7cd76f06f23def73', path='user/hgjf3SR6gr2s')] to the pool.
[I 150805 13:44:47 spawnpool:251] Proxied path [user/LclFLAIsxW4r] to port [32776].
[I 150805 13:44:47 spawnpool:257] Adding container [PooledContainer(id=u'dbe4c2bf79c40d3a9ba3c973827f00a24222ff7b86571852bac159e251f7191e', path='user/LclFLAIsxW4r')] to the pool.
[I 150805 13:44:47 spawnpool:251] Proxied path [user/QUUmeMf4OsOh] to port [32777].
[I 150805 13:44:47 spawnpool:257] Adding container [PooledContainer(id=u'9c4edf718ba4309112288002572e7140c296f9a6e46ae4880d0e9ea721f59831', path='user/QUUmeMf4OsOh')] to the pool.
[I 150805 13:44:47 spawnpool:194] Removed [9] stopped containers.
[I 150805 13:44:47 spawnpool:194] Launched [10] new containers.
[I 150805 13:44:47 orchestrate:267] Culling containers unused for 3600 seconds every 600 seconds.
[I 150805 13:44:47 orchestrate:271] Listening on *:9999
[I 150805 13:44:49 web:1811] 304 GET / (<IP_ADDRESS>) 2.92ms
[I 150805 13:44:50 orchestrate:66] Allocated [user/QUUmeMf4OsOh] from the pool.
[I 150805 13:44:50 web:1811] 302 GET /spawn/ (<IP_ADDRESS>) 0.51ms
[I 150805 13:44:50 web:1811] 200 GET /user/QUUmeMf4OsOh/tree (<IP_ADDRESS>) 0.90ms
[I 150805 13:44:50 spawnpool:108] Releasing container [PooledContainer(id=u'dbe4c2bf79c40d3a9ba3c973827f00a24222ff7b86571852bac159e251f7191e', path='user/LclFLAIsxW4r')].
[E 150805 13:45:00 dockworker:168] Encountered a Docker error with method (5 retries remain): 409 Client Error: Conflict ("Conflict. The name "tmp.jupyterminimal.QUUmeMf4OsOh" is already in use by container 9c4edf718ba4. You have to delete (or rename) that container to be able to reuse that name.")
[E 150805 13:45:00 dockworker:168] Encountered a Docker error with method (4 retries remain): 409 Client Error: Conflict ("Conflict. The name "tmp.jupyterminimal.QUUmeMf4OsOh" is already in use by container 9c4edf718ba4. You have to delete (or rename) that container to be able to reuse that name.")
[E 150805 13:45:00 dockworker:168] Encountered a Docker error with method (3 retries remain): 409 Client Error: Conflict ("Conflict. The name "tmp.jupyterminimal.QUUmeMf4OsOh" is already in use by container 9c4edf718ba4. You have to delete (or rename) that container to be able to reuse that name.")
[E 150805 13:45:00 dockworker:168] Encountered a Docker error with method (2 retries remain): 409 Client Error: Conflict ("Conflict. The name "tmp.jupyterminimal.QUUmeMf4OsOh" is already in use by container 9c4edf718ba4. You have to delete (or rename) that container to be able to reuse that name.")
[E 150805 13:45:00 dockworker:168] Encountered a Docker error with method (1 retries remain): 409 Client Error: Conflict ("Conflict. The name "tmp.jupyterminimal.QUUmeMf4OsOh" is already in use by container 9c4edf718ba4. You have to delete (or rename) that container to be able to reuse that name.")
[E 150805 13:45:00 dockworker:168] Encountered a Docker error with method (0 retries remain): 409 Client Error: Conflict ("Conflict. The name "tmp.jupyterminimal.QUUmeMf4OsOh" is already in use by container 9c4edf718ba4. You have to delete (or rename) that container to be able to reuse that name.")

Generally I think this falls under #135, detecting when the userland container fails to boot properly.