Jump to start of a block without collapse/expand

Jump to start of a block without collapse/expand code:
For example: look at the js function below:
function foo()
{//begin
 let f = () =>
  {//begin f
    return Math.random();
  };//end f
  let r = f();
}//end

With the Ctrl+Shift+[ the code of current block is collapsed, but, how about put the cursor at begin or end of the current block where the cursor is?
For the function above, if that was implemented I press some shortcut and with the cursor inside some block {...}, the cursor will alternate beetwen the start or end of block:
Example of use:
1-press the shotcut
3-cursor go to right of char begin block
4-press again and cursor go the right of char end block
In the example, just one shotcut for this function, that may be start move to begin if the cursor is in position <= middle of block, and start to begin if the cursor position > middle of block.
What do you think about this? Interesting? Bad? Why?

This feature request is now a candidate for our backlog. The community has 60 days to upvote the issue. If it receives 20 upvotes we will move it to our backlog. If not, we will close it. To learn more about how we handle feature requests, please see our documentation.
Happy Coding!

This feature request has not yet received the 20 community upvotes it takes to make to our backlog. 10 days to go. To learn more about how we handle feature requests, please see our documentation.
Happy Coding!

:slightly_frowning_face: In the last 60 days, this feature request has received less than 20 community upvotes and we closed it. Still a big Thank You to you for taking the time to create this issue! To learn more about how we handle feature requests, please see our documentation.
Happy Coding!


Add Time searching capabilites for each database chart

Add functionality to allow a time frame to be selected for each database time series chart.

Shown during the demo


Update grammar files

Generated new grammar files to fix/alleviate numerous highlighting issues.
Examples with new grammar from multiple issues:
#1080

#1061

#1004

Upstream changes for decorator highlighting:
Microsoft/TypeScript-TmLanguage#329

This is great and long overdue! The problem I had last time when trying to do this was that:

My Atom theme aggressively colored every identifier red
The .tsx grammar was broken

Can you please make sure it still works with .tsx files?

It looks great right now with the monokai theme. I think there might need to be some tweaks with some selectors.
It doesn't parse at all 😭

Looks like the big issue is that the file generated for .tsx is truncated. I'll take a look at the script and see what's going on there.

I loaded the last fuller grammar file defined. This seems to play nicer. I'm not that familiar with .tsx syntax, but it seems to be able to parse html tags wherever you place them with this grammar. Looks generally okay.

Looking into why that file is so short. Maybe they're combining the two to make the other files so we would have to do the same.

It looks like to me that the truncated grammar file only contains JSX related bits and not the whole Typescript grammar, so I think we're expected to reference or include it in the main Typescript grammar to generate a .tsx grammar. Perhaps creating a copy of the Typescript grammar, appending all of the grammar expressions from the JSX one and then adding { include: "#jsx" } to the expression patterns would do the trick.

Yep figured it would be that. I'll look into implementing that later today when I'm not swamped with work.

I just had some limited success with it, but it will definitely need some tweaking and automation:

Btw, I had to remove the cast pattern as it's not valid in a .tsx file.

Yep I'll load in those xml files and swap out the yaml parser for an xml parser. I'll give that a go later tonight and see the results.

@admosity I had some time to do it today and it seems to work ok. I'll open a PR in a sec.

Shucks, I'll have to look elsewhere for my hacktoberfest submission. 😆

Haha, sorry, this has been on my mind for a while now 😄
Feel free to pick anything from the issue tracker here 😉


Suggestion to keep setting up a server instead of specifically Apache

Might be more relevant to explain what a web server it is and why is it important and maybe use Apache as an example. Nginx is very much preffered compared to Apache webserver for various reasons that you can check: https://www.digitalocean.com/community/tutorials/apache-vs-nginx-practical-considerations

#152


Help the IDEs to infer the correct types on Closure parameters

Fixes #27077
Issue #27077 describes the situation pretty well, but the issue in a nutshell:
We don't annotate our Closure parameters well. This causes the it parameter's type to not be inferred by the IDE. This is a suboptimal IDE experience.
Work being done by this PR
This PR should mitigate and prevent such cases in the future:
Mitigation should be done by simply supplying the annotation for our current use cases.

Actual code (i.e. Closure parameters) are the simplest: we should add the annotation
Code generation should be fixed so the Closure methods generated from an Action parameter are correctly annotated.

Prevention:

An ArchUnit rule should be made so no Closure methods could be introduced without the proper annotations

This is still relevant.

This change is still relevant.

Still planned!


Add view to see text message send & receive history

Initial version done and deployed. Will clean up and expand in later iteration.


Standalone vue-devtools depends on vulnerable version of Electron

Vue devtools version
6.5.1
Link to minimal reproduction
https://stackblitz.com/edit/vitejs-vite-hdegy7?file=package.json
Steps to reproduce & screenshots
Open stackblitz terminal and run npm audit
Or on local machine:

Install standalone vue-devtools: npm install --save-dev @vue/devtools
Run npm audit

What is expected?
The package should not include known vulnerable dependencies.
What is actually happening?
Running npm audit results in:
❯ npm audit
# npm audit report

electron  <=22.3.24
Severity: high
Depends on vulnerable versions of @electron/get
Electron vulnerable to out-of-package code execution when launched with arbitrary cwd - https://github.com/advisories/GHSA-7x97-j373-85x5
Electron context isolation bypass via nested unserializable return value - https://github.com/advisories/GHSA-p7v2-p9m8-qqg7
Electron affected by libvpx's heap buffer overflow in vp8 encoding - https://github.com/advisories/GHSA-qqvq-6xgj-jw8g
No fix available
node_modules/electron
  @vue/devtools  *
  Depends on vulnerable versions of electron
  node_modules/@vue/devtools

got  <11.8.5
Severity: moderate
Got allows a redirect to a UNIX socket - https://github.com/advisories/GHSA-pfrx-2q88-qq97
No fix available
node_modules/got
  @electron/get  <=1.14.1
  Depends on vulnerable versions of got
  node_modules/@electron/get

4 vulnerabilities (3 moderate, 1 high)

Some issues need review, and may require choosing
a different dependency.

System Info
System:
  OS: Linux 3.10 CentOS Linux 7 (Core)
  CPU: (28) x64 Intel(R) Xeon(R) CPU E5-2683 v3 @ 2.00GHz
  Memory: 11.52 GB / 62.66 GB
  Container: Yes
  Shell: 4.2.46 - /bin/bash
Binaries:
  Node: 16.20.0 - /usr/local/bin/node
  npm: 8.19.4 - /usr/local/bin/npm
npmPackages:
  vue: ^3.3.4 => 3.3.4

Any additional comments?
No response

add overrides  to your package.json
"overrides": {
    "electron": "^28.1.0"
  },


DockPanel Z order in main form

Hi - experienced issue adding DockPanel to form during Initialization. Top margin of DockPanel was hidden behind other controls that had already been added using designer (eg toolbar) so the top of all DockContent panels to be hidden too.
Discovered that DockPanel must be first control in main form, so if adding DockPanel in code to form with existing controls, then need to specify Index such as this.Controls.SetChildIndex(m_dockPanel, 0)
Would be helpful to other new-comers if this could be clarified in User Documentation.

Thanks for sharing the tip.


Remove extra fields from get_transaction

Using the /api/v1/transactions/<txid> Web API @TimDaub noticed that assignee and assignment_timestamp are returned for some calls.
After further investigation I noticed this behavior happens only when the transaction is in the backlog table. This PR is to fix this misbehavior.
[somehow related: https://github.com/rethinkdb/rethinkdb/issues/3381]

Current coverage is 95.71% (diff: 100%)

Merging #646 into master will decrease coverage by 0.15%

@@             master       #646   diff @@
==========================================
  Files            23         23
  Lines          1308       1308
  Methods           0          0
  Messages          0          0
  Branches          0          0
==========================================
- Hits           1254       1252     -2
- Misses           54         56     +2
  Partials          0          0

Powered by Codecov. Last update 434797c...c59bda6


zerostor builder [development_zstor]

Implement j.builder....
remarks

call j.builders.golang.install()
build the server & client
implement some tests
call the client

Finished build, install.
Currently working on start/stop using startup_cmds()

Finished start,stop, clean, uninstall, and test
https://github.com/threefoldtech/jumpscaleX/commit/77f9b20792de97515e67c3a54ab18aec3f520764

Added dependencies (zdb, etcd) in install, startup_cmds, and sandbox
https://github.com/threefoldtech/jumpscaleX/commit/e7e6d031d6a6dc72c79ab5972d841eb67fa65ae6

verifying that the following builders working

build
install
stop
start
sandbox and flist
startup


Not seeing correlation IDs on deployment errors with az group deployment create

Description
Outline the issue here:
This might be pebkac, but we're stumped trying to figure out why correlation IDs are seemingly not being returned on failed deployments using ARM templates.
We're using the following command to create deployments with ARM templates:
	az group deployment create \
		--name "${DEPLOYMENT_NAME}" \
		--resource-group "${RESOURCE_GROUP}" \
		--template-file "${OUTPUT}/azuredeploy.json" \
		--parameters<EMAIL_ADDRESS>
On some subscriptions, we see the correlation ID returned on errors, e.g.
/usr/local/bin/az
ERROR: At least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/arm-debug for usage details. {
  "status": "Failed",
  "error": {
    "code": "ResourceDeploymentFailure",
    "message": "The resource operation completed with terminal provisioning state 'Failed'.",
    "details": [
      {
        "code": "OSProvisioningTimedOut",
        "message": "OS Provisioning for VM 'k8s-master-26938380-0' did not finish in the allotted time. The VM may still finish provisioning successfully. Please check provisioning state later."
      }
    ]
  }
}  Correlation ID: cc3b6940-e73c-4853-8720-714960725a7e

On some newly created internal (Azure) subs, we're not seeing it:
/usr/local/bin/az
ERROR: Deployment failed. {
  "status": "Failed",
  "error": {
    "code": "ResourceDeploymentFailure",
    "message": "The resource operation completed with terminal provisioning state 'Failed'.",
    "details": [
      {
        "code": "OSProvisioningTimedOut",
        "message": "OS Provisioning for VM 'k8s-agentpri-18601064-1' did not finish in the allotted time. The VM may still finish provisioning successfully. Please check provisioning state later."
      }
    ]
  }
}

Environment summary
Install Method: How did you install the CLI? (e.g. pip, interactive script, apt-get, Docker, MSI, nightly)
Answer here: pip install --disable-pip-version-check --no-cache-dir azure-cli==2.0.10
CLI Version: What version of the CLI and modules are installed? (Use az --version)
Answer here: 2.0.10
OS Version: What OS and version are you using?
Answer here: Ubuntu
Shell Type: What shell are you using? (e.g. bash, cmd.exe, Bash on Windows)
Answer here: bash

If you run the command with --debug do you see the correlation anywhere inside the response object?

I see x-ms-correlation-request-id in the debug output, is that it?
https://gist.github.com/seanknox/a60cedc9a39a0c51ae5677367d57b371#file-azure-cli-debug-txt-L663

That should be it. We'll take a look at why this isn't being extracted.

Thanks. If helpful, can provide you a couple subs where this is happening (and subs where correlation is being output).


Fix #4015, #4557: Do not validate GRPC IP/Port/Protocol information i…

…n ServerHandler. Pass the responsibility of grpc port information validation to GRPCServer constructor. Both GRPCServer and ServerHandler are created during the construction of Application instance.

High Level Overview of Change

Context of Change
Based on suggestions from @ximinez , I implemented this code change. @cjcobb23  suggests an alternative solution to the same issue here
I welcome any other suggestions too. I felt this is a clean way to handle this problem without breaking backwards compatibility.

Type of Change

[x] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] Refactor (non-breaking change that only restructures code)
[ ] Tests (You added tests for code that already exists, or your new feature included in this PR)
[ ] Documentation Updates
[ ] Release

Test Plan
I prefer to add additional unit tests such that we do not observe any unexpected behavior from configuration settings. But I'm not sure if such cases are already being covered by other unit test suites

I agree that "port_grpc" should be defined as a constant, but it has been
used as a string all throughout the codebase.
If I were to define it as a constant, which file is appropriate ? Such a
file could accommodate many such constants pertaining to the config file.
Regards,
Keshava
On Tue, Jun 6, 2023 at 7:22 PM CJ Cobb @.***> wrote:

@.**** commented on this pull request.
In src/ripple/rpc/impl/ServerHandlerImp.cpp
https://urldefense.com/v3/__https://github.com/XRPLF/rippled/pull/4560*discussion_r1220719966__;Iw!!PZTMFYE!5tLyeqykJ7J9Kxm5vohhqQ96cYrzVUPClsqKwGJRM_5zXMhQR8VKNJBn7PLEPOc0Nxr8qhrf0ZZmqszmtoJek20ITQ$
:

@@ -1148,6 +1148,12 @@ parse_Ports(Config const& config, std::ostream& log)
log << "Missing section: [" << name << "]";
Throwstd::exception();
}

   // grpc ports are parsed by GRPCServer class. Do not validate

   // grpc port information in this file.

   if (name == "port_grpc")

port_grpc should probably be defined as a constant somewhere
—
Reply to this email directly, view it on GitHub
https://urldefense.com/v3/__https://github.com/XRPLF/rippled/pull/4560*pullrequestreview-1466475562__;Iw!!PZTMFYE!5tLyeqykJ7J9Kxm5vohhqQ96cYrzVUPClsqKwGJRM_5zXMhQR8VKNJBn7PLEPOc0Nxr8qhrf0ZZmqszmtoJxrrS0sQ$,
or unsubscribe
https://urldefense.com/v3/__https://github.com/notifications/unsubscribe-auth/AFB4TNP2AO54J5MLF2NBYGTXJ7QWNANCNFSM6AAAAAAY5DKYNA__;!!PZTMFYE!5tLyeqykJ7J9Kxm5vohhqQ96cYrzVUPClsqKwGJRM_5zXMhQR8VKNJBn7PLEPOc0Nxr8qhrf0ZZmqszmtoI2dUsetw$
.
You are receiving this because you authored the thread.Message ID:
@.***>

If I were to define it as a constant, which file is appropriate?

At the moment that file is probably src/ripple/core/ConfigSections.h.

Okay, thanks for the help @Scott Schurr @.***> !
Several subsections of the [server] section in the configuration file like
"port_peer", "port_ws" are being used as strings inside the codebase. I
think we should refactor such occurrences as global constants in this file.
Regards,
Keshava
On Wed, Jun 7, 2023 at 12:11 PM Scott Schurr @.***>
wrote:

If I were to define it as a constant, which file is appropriate?
At the moment that file is probably src/ripple/core/ConfigSections.h.

—
Reply to this email directly, view it on GitHub
https://urldefense.com/v3/__https://github.com/XRPLF/rippled/pull/4560*issuecomment-1581368119__;Iw!!PZTMFYE!6gByJrzaDBvW6kfjbH6T3pdgBC7foricbqOIFFBUXfhNuAnO7drbjetu2LGkmDya1X34hbsl94GSHn-YF7-DsDq7dg$,
or unsubscribe
https://urldefense.com/v3/__https://github.com/notifications/unsubscribe-auth/AFB4TNPRPJVAIUWBBQWHF6DXKDG6BANCNFSM6AAAAAAY5DKYNA__;!!PZTMFYE!6gByJrzaDBvW6kfjbH6T3pdgBC7foricbqOIFFBUXfhNuAnO7drbjetu2LGkmDya1X34hbsl94GSHn-YF79E8J_FRA$
.
You are receiving this because you authored the thread.Message ID:
@.***>

Okay, thanks for the help @scott Schurr @.***> ! Several subsections of the [server] section in the configuration file like "port_peer", "port_ws" are being used as strings inside the codebase. I think we should refactor such occurrences as global constants in this file. Regards, Keshava

"port_peer" and "port_ws" are only found in test code and the example config file. That's because the sections listed under [server] can actually be named anything that isn't already reserved. "port_peer" and "port_ws" are only examples / suggestions. I don't think that necessitates global constants, though maybe constants under test would be valuable.

@ximinez Okay, thanks. I didn't realise that. Do you have any suggestions
for the appropriate file to keep these constants? I thought test/jtx.h or
test/jtx/Env.h might be appropriate since they include many useful
functions.
@cjcobb
I've made the suggested changes to "port_grpc" constant. Do I still need to
change "port_grpc" to "grpc" in the documentation?
Regards,
Keshava
On Thu, Jun 8, 2023 at 3:30 PM Ed Hennis @.***> wrote:

Okay, thanks for the help @scott
https://urldefense.com/v3/__https://github.com/scott__;!!PZTMFYE!8TnzHmVw_70ckZ-YQNWoJnxOEC2uSfTSLxTc_34xRTb8NQNvbYjBxuMc9N5x7SkLNrze4-jJJzu12B8qVdob45QakA$
Schurr @.***> ! Several subsections of the [server] section in the
configuration file like "port_peer", "port_ws" are being used as strings
inside the codebase. I think we should refactor such occurrences as global
constants in this file. Regards, Keshava
"port_peer" and "port_ws" are only found in test code and the example
config file. That's because the sections listed under [server] can
actually be named anything that isn't already reserved. "port_peer" and
"port_ws" are only examples / suggestions. I don't think that necessitates
global constants, though maybe constants under test would be valuable.
—
Reply to this email directly, view it on GitHub
https://urldefense.com/v3/__https://github.com/XRPLF/rippled/pull/4560*issuecomment-1583480592__;Iw!!PZTMFYE!8TnzHmVw_70ckZ-YQNWoJnxOEC2uSfTSLxTc_34xRTb8NQNvbYjBxuMc9N5x7SkLNrze4-jJJzu12B8qVdpfntZUag$,
or unsubscribe
https://urldefense.com/v3/__https://github.com/notifications/unsubscribe-auth/AFB4TNMLIZVZ2TZXXPL75QTXKJHAXANCNFSM6AAAAAAY5DKYNA__;!!PZTMFYE!8TnzHmVw_70ckZ-YQNWoJnxOEC2uSfTSLxTc_34xRTb8NQNvbYjBxuMc9N5x7SkLNrze4-jJJzu12B8qVdoXct0MWQ$
.
You are receiving this because you authored the thread.Message ID:
@.***>

Okay, thanks. I didn't realise that. Do you have any suggestions for the appropriate file to keep these constants? I thought test/jtx.h or test/jtx/Env.h might be appropriate since they include many useful functions.

I'd suggest test/jtx/envconfig.h, since the "canonical" usage is in envconfig.cpp, and it's included in a bunch of places.

I've made the suggested changes to "port_grpc" constant. Do I still need to change "port_grpc" to "grpc" in the documentation?

Since you're not changing the name in the code, my vote is to not change the name in the documentation.

Okay.
Regards,
Keshava
On Fri, Jun 9, 2023 at 9:52 AM Ed Hennis @.***> wrote:

Okay, thanks. I didn't realise that. Do you have any suggestions for the
appropriate file to keep these constants? I thought test/jtx.h or
test/jtx/Env.h might be appropriate since they include many useful
functions.
I'd suggest test/jtx/envconfig.h, since the "canonical" usage is in
envconfig.cpp, and it's included in a bunch of places.
I've made the suggested changes to "port_grpc" constant. Do I still need
to change "port_grpc" to "grpc" in the documentation?
Since you're not changing the name in the code, my vote is to not change
the name in the documentation.
—
Reply to this email directly, view it on GitHub
https://urldefense.com/v3/__https://github.com/XRPLF/rippled/pull/4560*issuecomment-1584882498__;Iw!!PZTMFYE!_Y0S1c7mbI5ilaBNOvf5pBvHT8igCgrqUzNAz5MJYe1yzc_phR3nX7EYOXqmkhbfvYrlmJUXFGw7fhRCHSV5IcHPpA$,
or unsubscribe
https://urldefense.com/v3/__https://github.com/notifications/unsubscribe-auth/AFB4TNPJ6AZSC4Q2CV5BJLDXKNIDXANCNFSM6AAAAAAY5DKYNA__;!!PZTMFYE!_Y0S1c7mbI5ilaBNOvf5pBvHT8igCgrqUzNAz5MJYe1yzc_phR3nX7EYOXqmkhbfvYrlmJUXFGw7fhRCHSW0Tbc7JQ$
.
You are receiving this because you authored the thread.Message ID:
@.***>

This change prevents rippled from stopping with
2023-Jun-30 21:37:00.106206422 UTC Application:ERR Missing 'protocol' in [port_grpc]

But it doesn't log anything like the others do:
2023-Jun-30 21:37:58.017835087 UTC Server:NFO Opened 'port_rpc_admin_local' (ip=<IP_ADDRESS>:5005, admin nets:<IP_ADDRESS>/32, http)
2023-Jun-30 21:37:58.017934922 UTC Server:NFO Opened 'port_peer' (ip=<IP_ADDRESS>:51235, peer)
2023-Jun-30 21:37:58.017977815 UTC Server:NFO Opened 'port_ws_admin_local' (ip=<IP_ADDRESS>:6006, admin nets:<IP_ADDRESS>/32, ws)

so I can't really tell if its enabled or not when the [server] port_grpc is not provided but [port_grpc] is. Which, with this change behaves the same as before, i.e. it runs if you do not provide [server] port_grpc but do provide the [port_grpc] key.

@legleux - will you be able to have a look at this? See ckeshava's reply above.

I applied the patch file generated by github actions, but it doesn't modify any files :/
The patch file is not empty, I can see the diff suggestions!

I applied the patch file generated by github actions, but it doesn't modify any files :/ The patch file is not empty, I can see the diff suggestions!

Do you have anything set up to run clang-format automatically on your local repo? It may be overriding the changes from the patch file. If you have a pre-commit hook, you can skip it with git commit --no-verify.

thanks Ed, I might have added a pre-commit hook a few months ago.
I'm not getting to the commit step at all. git apply <patch-file> doesn't apply the contents of the patch file :(

@intelliot This PR is ready for merging into develop. The first few commits haven't been signed because I was not aware of the procedure for signing them.
Can I rebase/squash all the commits into one single signed commit with an appropriate commit message?

Can I rebase/squash all the commits into one single signed commit with an appropriate commit message?

Yes.

@intelliot I think I made a mistake with the push, I'm working on fixing the commits.

Apologies about the mess in this branch, I have cleaned up my work in this PR: https://github.com/XRPLF/rippled/pull/4728
Closing this PR


Capture how huggingface stores data, locally and on the hub

This mostly is well documented inside huggingface, but it is good for us to have local reference and comparison.

https://github.com/aifoundry-org/wiki/pull/14

https://github.com/aifoundry-org/wiki/pull/13


Is zve32d supported ?

The sec. 8.1 says
"The Zve32d and Zve64d extensions require the scalar processor to implement the D extension, and implement all vector floating-point instructions (Section Vector Floating-Point Instructions) for floating-point operands with EEW=32 or EEW=64 (including widening instructions and conversions between FP32 and FP64)."
but it is not included in the beginning list.

Zve32d is a typo - removing.


Add security policy doc

fixes https://github.com/open-cluster-management/backlog/issues/2494

/test e2e

/retest

/approve
/lgtm

/retest

Can we have this PR merged? it is blocking monitoring e2e testing. Thanks.

/lgtm


Finish tips&tricks notebook for gpflow 2

We need something similar to tips & tricks notebook for GPflow 2.0 like we had in GPflow 1.0. Here are topics (things) which we should cover in the notebook:

[ ] Add tips & tricks notebook

[ ] Explain how to share tf.Module objects between models (https://github.com/GPflow/GPflow/pull/1078)
[x] Model training, batching, gradient tapes
[x] How to copy parameters of a model to another one?

[x] add a link to the intro_to_gpflow2.ipynb from intro.ipynb

We also need to

[ ] add a link to the intro_to_gpflow2.ipynb from intro.ipynb

This isn't done yet, there are no open PRs for it either?

We ported all notebooks, and tracking other things is better here: https://github.com/GPflow/GPflow/projects/3. Could you close the issue, if you agree?

I'm happy to use the tracking board to track things. I just think it's useful leaving a clarifying comment when you close an issue (e.g. - issue only relates to no-longer-supported version, fixed in this or that pr, information in this issue moved to that other point), and to make sure we don't loose the information.
It might be useful to actually keep some issues (and simply link them to the notes in the project board) as space there is kinda limited, and it doesn't allow for any conversation... i.e., having the project board doesn't necessarily imply that it's not useful to have an issue that is redundant with a note.

Actually, I think the project boards work better when you're actually using issues instead of "just" notes.

@st--, of course, it is good to have an issue number with specifics and details attached to the task on the board. But, I don't think it is good to have an issue for the whole board.

Turned the one missing item into its own issue #1287


chore: update googleapis SHA circa 2023-09-05

This change is

@alevenberg I had to make one more change.  You may want to take another look.


Move GCP to a core extension

https://github.com/apache/incubator-druid/issues/6910
Special changes:

[x] Move google extension to a core extension
[x] Create aws-common and gcp-common. Put them in server
[x] Move ec2 autoscaler to its own extension
[ ] Fix up default extension inclusions
[ ] Fix up documentation

@drcrallen in extensions-core/google-extensions/pom.xml, the groupId's gotta be org.apache.druid.extensions

@drcrallen Just saw you push a commit; the groupId in extensions-core/google-extensions/pom.xml still needs adjustment to org.apache.druid.extensions.

@gianm green now

I still need to update the docs before merging

Related: https://github.com/apache/incubator-druid/pull/7218

Ping to keep open. need to resolve conflicts and change docs. Trying to get that done soon

Hi @drcrallen, I'm writing a draft of 0.15.0 release notes. Is there anything should be mentioned in the release notes other than that druid-google-extensions extension is now a core extension and bundled in the binary distribution by default?


⚠ Bofrost.at has degraded performance

In 1307221, Bofrost.at (https://www.bofrost.at) experienced degraded performance:

HTTP code: 200
Response time: 1545 ms

Resolved: Bofrost.at performance has improved in 5d33acb after 9 minutes.


AggregateCreationPolicy.ALWAYS returns an NPE if set on a non-constructor method

Hi,
I have modeled a Simple Aggregate and used the Always policy on a non-constructor method as follows.
@CommandHandler
 @CreationPolicy(AggregateCreationPolicy.ALWAYS)
 public void handle(SimpleCreateCommand cmd) {
     apply(new SimpleEventCreated(cmd.getCommandId(), cmd.getCommandData()));
 }

When I attempt to test this, returns a Null Pointer Exception,
java.lang.NullPointerException: null
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.axonframework.messaging.annotation.AnnotatedMessageHandlingMember.handle(AnnotatedMessageHandlingMember.java:133)
	at org.axonframework.messaging.annotation.WrappedMessageHandlingMember.handle(WrappedMessageHandlingMember.java:61)
	at org.axonframework.messaging.annotation.WrappedMessageHandlingMember.handle(WrappedMessageHandlingMember.java:61)
	at org.axonframework.modelling.command.AggregateAnnotationCommandHandler$AggregateConstructorCommandHandler.lambda$handle$0(AggregateAnnotationCommandHandler.java:377)
	at org.axonframework.messaging.Scope.executeWithResult(Scope.java:111)
	at org.axonframework.modelling.command.inspection.AnnotatedAggregate.registerRoot(AnnotatedAggregate.java:283)
	at org.axonframework.eventsourcing.EventSourcedAggregate.initialize(EventSourcedAggregate.java:120)
	at org.axonframework.eventsourcing.EventSourcingRepository.doCreateNewForLock(EventSourcingRepository.java:171)
	at org.axonframework.eventsourcing.EventSourcingRepository.doCreateNewForLock(EventSourcingRepository.java:52)
	at org.axonframework.modelling.command.LockingRepository.doCreateNew(LockingRepository.java:81)
	at org.axonframework.modelling.command.LockingRepository.doCreateNew(LockingRepository.java:52)
	at org.axonframework.modelling.command.AbstractRepository.newInstance(AbstractRepository.java:90)
	at org.axonframework.test.aggregate.AggregateTestFixture$IdentifierValidatingRepository.newInstance(AggregateTestFixture.java:699)
	at org.axonframework.modelling.command.AggregateAnnotationCommandHandler$AggregateConstructorCommandHandler.handle(AggregateAnnotationCommandHandler.java:377)
	at org.axonframework.modelling.command.AggregateAnnotationCommandHandler$AggregateConstructorCommandHandler.handle(AggregateAnnotationCommandHandler.java:364)
	at org.axonframework.modelling.command.AggregateAnnotationCommandHandler.handle(AggregateAnnotationCommandHandler.java:173)
	at org.axonframework.modelling.command.AggregateAnnotationCommandHandler.handle(AggregateAnnotationCommandHandler.java:59)

This is because as part of the default execution chain, the AggregateAnnotationCommandHandler assigns the AggregateConstructorCommandHandler as the handler instead of the AggregateCreateOrUpdateCommandHandler . So when the AggregateConstructorCommandHandler tries to handle the message by executing the handle() method on the delegate AnnotatedMessageHandlingMember it results in an NPE because it expects the executable to be of type method but since the target is null (set by the AggregateConstructorCommandHandler) it results in an NPE (AnnotatedMessageHandlingMember  -> Line 133)
Probably there exists a better way of fixing (e.g. a executable type name) or maybe I am doing something wrong ?

Firstly, sorry for the late reply/effort from our part on this bug. We've been somewhat scattered around the globe the last two weeks, imposing some strains on tracking stuff like this.
However, I have time now, so it'll be resolved!

Probably there exists a better way of fixing (e.g. a executable type name) or maybe I am doing something wrong ?

Yes, I do feel there is a cleaner way to resolve this. The if-else structure did give me an idea though. I have taken the liberty to create my own pull request to resolve the problem, as I had several adjustments in mind plus test cases. This, together with the desire to do a 4.3.1 (including this fix) ASAP, let me take this path.
I hope you do not mind @domaincomponents :bowing_man:

Due to the aforementioned, I will be closing this PR in favor of #1371. If you feel this should be tackled otherwise, please let us know @domaincomponents!


cutmix alpha argument in references/classification/transforms.py

I believe the alpha argument here should be cutmix_alpha not mixup_alpha:
https://github.com/pytorch/vision/blob/61d97f41bc209e1407dcfbd685d2ee2da9c1cdad/references/classification/transforms.py#L22
Same issue here as well:
https://github.com/pytorch/vision/blob/61d97f41bc209e1407dcfbd685d2ee2da9c1cdad/references/classification/transforms.py#L24
Just curious: were the pretrained models actually trained using this code? Any chance this might have affected the performance of the pretrained models in any way?

Great catch @eminorhan , thanks a lot for the report. Would you like to submit a PR to fix these 2 lines?


Targets All/Unhealthy buttons to be used as a refresh button

Proposal
To have the All and Unhealthy buttons on the Targets page act as a refresh button. I was looking at the #4599 issue that recently closed and thought that this could be a nice little feature. I have coded a fix that adds this feature, if this feature is desirable I can make a pull request.

That could be unexpected for users, as for example if I've a snapshot of a bad state I don't want it disappearing under me.

Understood, that's good point. I'll go ahead and close the issue.


Is Service Bus a relevant option for real-time ingestion?

Service Bus acts as Message Broker and can be used to ingest messages. Is there a reason why it has not been considered as an alternative in the comparison matrix?

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

ID: dc25fa01-4939-49b8-2e56-fb2cd8f0ccb1
Version Independent ID: c4815a00-938c-7f7b-67a5-c16a78871b4a
Content: Choosing a real-time message ingestion technology
Content Source: docs/data-guide/technology-choices/real-time-ingestion.md
Service: architecture-center
Sub-service: cloud-fundamentals
GitHub Login: @ZoinerTejada
Microsoft Alias: pnp

@MithunChopda Service Bus is designed to be a reliable message broker especially useful in enterprise and event-driven architectures.
This table covers the differences between Service Bus, Event Hubs and Event Grid. Here is the same for reference

Service
Purpose
Type
When to use

Event Grid
Reactive programming
Event distribution (discrete)
React to status changes

Event Hubs
Big data pipeline
Event streaming (series)
Telemetry and distributed data streaming

Service Bus
High-value enterprise messaging
Message
Order processing and financial transactions

Thank you for your response @PramodValavala
I had read this comparison earlier. My point was this article talks about "Message Ingestion". EventHubs by design are aimed at ingesting Events though they can be used for other scenarios. Whereas Service Bus being aimed at Message ingestion, it has been left out in this article.

I had the exact same thought when reading this article. In implementation scenarios I've seen more Service Buses than Event Hubs for no other reason than they are designed to be a reliable message service.

@MithunChopda @bytemech The Message Ingestion discussed in this document is for massive scales of data ingestion ranging in the 100K to millions of events. This is especially needed in scenarios involving IOT devices.
Service Bus has lots of additional features which are great for enterprise integration scenarios but when you need to ingest large volumes of data, services like Azure Events Hubs are the way to go.
Here are some benchmarks in the official docs for Azure Event Hubs Dedicated.

@MithunChopda @bytemech Just following up here... Hope my previous comment clears things up.

@MithunChopda @bytemech Since we have not heard back from you we will now proceed to close this thread. If there are further questions regarding this matter, please tag me in your reply. We will gladly continue the discussion and we will reopen the issue.

Thank you @PramodValavala-MSFT for the follow up and closing this.
I got the sense it was about scale. It would be great if the article clarifies this aspect probably using a Note section. Thanks again.


Entity Catalogue - Fix unit and e2e tests.

Most of the tests will be failing due to the entity catalogue being empty for tests.

Done.


Develop

Coverage increased (+0.003%) to 84.395% when pulling 1ebd04c5110ba5fa148ecf7d3e55f599ad317066 on develop into 387865d2e0f742399a62142986fb0527432a9efd on qa.


A scaling factor is needed to get correct plasma current

When trying to prescribe the electric field and set the plasma current, I noticed that I have to use a scaling factor to get the plasma current I need. For example I used to do it this way:
conductivity = do.other.fluid.conductivity.getData()
jj = (Ip0 * I_p_corr) / np.trapz(2 * np.pi * radialgrid * jprof, radialgrid)
efield=jj*jprof/conductivity[-1,:]

Here Ip0 contains the correct total plasma current, jprof is a normalized current density profile and I_p_corr is the needed scaling factor. In the case of my EU-DEMO simulations with 17.75 MA total plasma current, I used ~0.68 for this factor so that I would get the 17.75 MA from the DREAMOutput.

Thanks for reporting Feri! I've seen indications of this previously as well, but have not had time to dig deeper :P Normally, the test-particle collision operator of DREAM will underestimate the ohmic current by (very roughly) 0.5. Through simulations, however, it was found that the conductivity of kinetic simulations with the test-particle collision operator are related to the full Braams-Karney conductivity via the relatively simple expression
$$\sigma_{\rm kineq} = \left(1-\frac{1.406}{1.888+Z_{\rm eff}}\right)\sigma_0,$$
(see section 2.2.1 of the DREAM paper), which is therefore used to compensate for the missing current in the code when ds.eqsys.j_ohm.setCorrectedConductivity(JOhm.CORRECTED_CONDUCTIVITY_ENABLED) is used.
Despite all this, it seems that the corrected conductivity is not working as it should, since the total ohmic current now seems to be underestimated (i.e. for a given electric field, we compensate by too much). Could you perhaps try to disable the corrected conductivity mode and see what correction factor you would need?

I managed to find a workaround for kinetic simulations. I say it's a workaround but it's probably an intentional thing. I used the following code:
import numpy as np
from DREAM.DREAMSettings import DREAMSettings
import DREAM.Settings.Equations.OhmicCurrent as jOhm

radialgrid=np.linspace(0, a, Nr)

ds = DREAMSettings()
ds.eqsys.E_field.setType(Efield.TYPE_PRESCRIBED_OHMIC_CURRENT)
ds.eqsys.E_field.setBoundaryCondition()

ds.eqsys.j_ohm.setCurrentProfile(jprof, radius=radialgrid, Ip0=Ip0)
ds.eqsys.j_ohm.setConductivityMode(jOhm.CONDUCTIVITY_MODE_SAUTER_COLLISIONAL)
ds.eqsys.j_ohm.setCorrectedConductivity(jOhm.CORRECTED_CONDUCTIVITY_DISABLED)

Here jprof is a normalized current density profile, Ip0 is the correct total plasma current. This code correctly sets up the radial current profile and the total plasma current.
I will still check the other method with the disabled conductivity tomorrow and get back to this thread. What I can say presently regarding that issue is that WITH the corrected conductivity, I needed ~0.68 correction factor.

Okay so the simulation finished with DISABLED corrected conductivity and the correction factor I needed this way was 1.15945558

Interesting! What was the $Z_{\rm eff}$ in that simulation (and by extension, the conductivity correction factor, as written above)?

Thanks! But that must be a coincidence, right? Because the factor 0.68 is what you need when the corrected conductivity is used, while 0.6492 is the actual correction factor in that case (which gives a too high current density). Also the shaping should not matter. The desired behavior is that j = sigma*E is the same both in fluid and kinetic simulations (regardless of geometry), and since you use the "fluid" sigma to estimate E, you should get the correct current density in the kinetic simulation.
This is very strange and concerning... I will have to take a closer look (although it might take a while before I have time)

I would also think it's just a coincidence if some very banal swap didn't happen in the source code regarding the corrected and the not corrected conductivity modes, and I'm not suggesting it did. As far as I can see looking at the OhmicCurrent.py file's commit history this should indeed not be the case, but I'm not that familiar with the inner C++ code.
In the meantime that workaround I mentioned should work fine right?

I am pretty sure the corrected conductivity mode has worked correctly at some point in the past. Something must have happened in the C++ code which has made it no longer work...
For the workaround you suggested, does that work in the kinetic mode (i.e. with "FULLY_KINETIC" collisions)? It looks to me as you should get the correct ohmic current in fluid/isotropic mode, but the wrong ohmic current in fully kinetic mode. For the fully kinetic mode, your original workaround should probably be better (i.e. multiplying the electric field with a correcting factor), although it will still be flawed. Since in practice, we now seem to have an incorrect conductivity, the current decay and diffusion will be different... The only way to resolve that is to dig into the C++ code unfortunately :/

Sorry I got confused, my workaround works in the isotropic hottail case, not in the fully kinetic hottail case so that's not that relevant to this topic you're right.


Delete older than 180 days

EU GDPR demands to delete logs after 180 days when possible, therefor I suggest the default is 180 days.

Thank you for this PR, however I'm not going to merge it. This is a breaking change and not all logged activity contains personal information. So, I'm going to keep things as they are for now.

I think a better approach would be to allow delete-after values per channel and not only one value.
This would allow to configure the request channel to delete after 180days and the service channel to keep them for 365days and so on.
@freekmurze what do you think about it? I would add a second config key as array to prevent a BC.
So it would be array_get($channelDeleteCo fig, $channelName, $defaultDeleteConfig) in the delete command.

I'd like to keep the package nice an simple. I think the current behaviour is good enough. If there are some special deletion needs they should be handled in your own app.


Handle system headers differently on the command line for GCC

See https://github.com/gradle/gradle-native/issues/583
This adds support for specifying system header directories on the command line for GCC-compatible toolchains using "-isystem" rather than "-I"

@big-guy this is ready for another look when you get a chance.


several changes for applying new EO 0.28.14 release

#83
What's done:

list.each object didn't use while
some tests with list.sorted object were wrapped by nop object

@yegor256 Please, have a look

@rultor merge

@rultor merge

@yegor256 OK, I'll try to merge now. You can check the progress of the merge here

@rultor merge

@yegor256 Done! FYI, the full log is here (took me 5min)


Add configurable user agent prefix flag for mount-s3

Description of change
If mountpoint-s3 is run as part of a larger application, user/customer may want to configure a prefix for the user agent to indicate S3 requests came from that particular application.
This change adds a new --user-agent-prefix <PREFIX> flag to achieve this.
Relevant issues: #546
Does this change impact existing behavior?
No change to existing behaviour. Users can now add a prefix to the HTTP 'User-Agent' header.

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license and I agree to the terms of the Developer Certificate of Origin (DCO).

Tested this locally by pointing mount-s3 at a local HTTP server. Looks good.

This change should update the changelog: https://github.com/awslabs/mountpoint-s3/blob/main/mountpoint-s3/CHANGELOG.md
I'd like to update it before merging this.

This will conflict with #556. Prefer to merge in #556, rebase this, and merge.


More than a single candidate module for core-js/object/assign

webpack-isomorphic-tools/plugin] [error]  More than a single candidate module was found in webpack stats for require()d path "[object Object]"
[webpack-isomorphic-tools/plugin]   {
  "id": 304,
  "identifier": "/__redacted__/node_modules/babel-runtime/core-js/object/assign.js",
  "name": "./~/babel-runtime/core-js/object/assign.js",
  "index": 525,
  "index2": 525,
  "size": 94,
  "cacheable": true,
  "built": true,
  "optional": false,
  "prefetched": false,
  "chunks": [
    0
  ],
  "assets": [],
  "issuer": "/__redacted__/node_modules/babel-runtime/helpers/extends.js",
  "failed": false,
  "errors": 0,
  "warnings": 0,
  "reasons": [
    {
      "moduleId": 3,
      "moduleIdentifier": "/__redacted__/node_modules/babel-runtime/helpers/extends.js",
      "module": "./~/babel-runtime/helpers/extends.js",
      "moduleName": "./~/babel-runtime/helpers/extends.js",
      "type": "cjs require",
      "userRequest": "babel-runtime/core-js/object/assign",
      "loc": "3:21-67"
    },
    {
      "moduleId": 29,
      "moduleIdentifier": "/__redacted__/node_modules/react-bootstrap/lib/styleMaps.js",
      "module": "./~/react-bootstrap/lib/styleMaps.js",
      "moduleName": "./~/react-bootstrap/lib/styleMaps.js",
      "type": "cjs require",
      "userRequest": "babel-runtime/core-js/object/assign",
      "loc": "3:21-67"
    }
  ],
  "source": "module.exports = { \"default\": require(\"core-js/library/fn/object/assign\"), __esModule: true };"
}
[webpack-isomorphic-tools/plugin]   {
  "id": 838,
  "identifier": "/__redacted__/node_modules/isomorphic-style-loader/node_modules/babel-runtime/core-js/object/assign.js",
  "name": "./~/isomorphic-style-loader/~/babel-runtime/core-js/object/assign.js",
  "index": 734,
  "index2": 727,
  "size": 94,
  "cacheable": true,
  "built": true,
  "optional": false,
  "prefetched": false,
  "chunks": [
    0
  ],
  "assets": [],
  "issuer": "/__redacted__/node_modules/isomorphic-style-loader/lib/insertCss.js",
  "failed": false,
  "errors": 0,
  "warnings": 0,
  "reasons": [
    {
      "moduleId": 10,
      "moduleIdentifier": "/__redacted__/node_modules/isomorphic-style-loader/lib/insertCss.js",
      "module": "./~/isomorphic-style-loader/lib/insertCss.js",
      "moduleName": "./~/isomorphic-style-loader/lib/insertCss.js",
      "type": "cjs require",
      "userRequest": "babel-runtime/core-js/object/assign",
      "loc": "3:14-60"
    }
  ],
  "source": "module.exports = { \"default\": require(\"core-js/library/fn/object/assign\"), __esModule: true };"
}
/__redacted__/node_modules/webpack-isomorphic-tools/babel-transpiled-modules/plugin/write assets.js:369
			throw new Error('More than a single candidate module was found in webpack stats');
			^

Error: More than a single candidate module was found in webpack stats
    at /__redacted__/node_modules/webpack-isomorphic-tools/babel-transpiled-modules/plugin/write assets.js:369:10
    at resolver (/__redacted__/node_modules/webpack-isomorphic-tools/node_modules/require-hacker/babel-transpiled-modules/require hacker.js:131:17)
    at Function._module3.default._findPath (/__redacted__/node_modules/webpack-isomorphic-tools/node_modules/require-hacker/babel-transpiled-modules/require hacker.js:436:24)
    at Function.Module._resolveFilename (module.js:335:25)
    at Function._module3.default._resolveFilename (/__redacted__/node_modules/webpack-isomorphic-tools/node_modules/require-hacker/babel-transpiled-modules/require hacker.js:403:34)
    at Function.Module._load (module.js:287:25)
    at Module.require (module.js:366:17)
    at require (module.js:385:17)
    at Object.<anonymous> (!./../../node_modules/isomorphic-style-loader/lib/insertCss.js.webpack-module:4:15)
    at Module._compile (module.js:435:26)
    at Object._module3.default._extensions.(anonymous function) [as .webpack-module] (/__redacted__/node_modules/webpack-isomorphic-tools/node_modules/require-hacker/babel-transpiled-modules/require hacker.js:264:11)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:311:12)
    at Module.require (module.js:366:17)
    at require (module.js:385:17)
    at Object.<anonymous> (/__redacted__/src/sass/LoginSignupForm.scss.webpack-module:4:21)
    at Module._compile (module.js:435:26)
    at Object._module3.default._extensions.(anonymous function) [as .webpack-module] (/__redacted__/node_modules/webpack-isomorphic-tools/node_modules/require-hacker/babel-transpiled-modules/require hacker.js:264:11)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:311:12)
    at Module.require (module.js:366:17)
    at require (module.js:385:17)
    at populate_assets (/__redacted__/node_modules/webpack-isomorphic-tools/babel-transpiled-modules/plugin/write assets.js:395:31)
    at Object.write_assets [as default] (/__redacted__/node_modules/webpack-isomorphic-tools/babel-transpiled-modules/plugin/write assets.js:63:2)
    at Compiler.<anonymous> (/__redacted__/node_modules/webpack-isomorphic-tools/babel-transpiled-modules/plugin/plugin.js:175:27)
    at Compiler.applyPlugins (/__redacted__/node_modules/webpack/node_modules/tapable/lib/Tapable.js:26:37)
    at Compiler.<anonymous> (/__redacted__/node_modules/webpack/lib/Compiler.js:193:12)
    at Compiler.emitRecords (/__redacted__/node_modules/webpack/lib/Compiler.js:282:37)
    at Compiler.<anonymous> (/__redacted__/node_modules/webpack/lib/Compiler.js:187:11)
    at /__redacted__/node_modules/webpack/lib/Compiler.js:275:11

@halt-hammerzeit Any ideas how to fix or work around this issue would be highly appreciated! Thanks!

Enable debug flag and post the full log here again.

Also post your configuration

Sorry for the delay, I'll probably collect the debug log later. It's quite hard to extract the config though. I started with https://github.com/erikras/react-redux-universal-hot-example but evolved it to serve my project needs. I made a factory function that builds a webpack config based on the environment.
From the logs I posted above, it's quite obvious for me that several modules (react-bootstrap and isomorphic-style-loader) require the same module babel-runtime from different node_modules folders, which in turn requires core-js/object/assign. Looks like isomorphic-style-loader has got its own babel-runtime with its own core-js/object/assign.
The problem is I don't know why webpack-isomorphic-tools has such a guard against multiple candidates (why does it resolve some candidates, this should be the webpack's job), and what to do with that.

By saying configuration i mean webpack-isomorphic-tools.js or however it's called in your case

Oh, that's easy, I don't think I changed anything there compared to the boilerplate. Although there could be some conflict with the new isomorphic-style-loader I'm trying to integrate instead of the style-loader.
I forgot to mention that what fails is a production build.
var WebpackIsomorphicToolsPlugin = require('webpack-isomorphic-tools/plugin');

// see this link for more info on what all of this means
// https://github.com/halt-hammerzeit/webpack-isomorphic-tools
module.exports = {

  // when adding "js" extension to asset types
  // and then enabling debug mode, it may cause a weird error:
  //
  // [0] npm run start-prod exited with code 1
  // Sending SIGTERM to other processes..
  //
  // debug: true,

  assets: {
    images: {
      extensions: [
        'jpeg',
        'jpg',
        'png',
        'gif'
      ],
      parser: WebpackIsomorphicToolsPlugin.url_loader_parser
    },
    fonts: {
      extensions: [
        'woff',
        'woff2',
        'ttf',
        'eot'
      ],
      parser: WebpackIsomorphicToolsPlugin.url_loader_parser
    },
    svg: {
      extension: 'svg',
      // https://github.com/halt-hammerzeit/webpack-isomorphic-tools/issues/2#issuecomment-135360224
      parser: function (module, options) {
        if (module.source) {
          var regex = /module\.exports = "((.|\n)*)"/;
          var match = module.source.match(regex);
          var r = match ? match[1] : "";
          if (module.identifier.indexOf(require.resolve('svg-inline-loader') + '!') >= 0) {
            // Strip slashes.
            r = JSON.parse('"' + r + '"');
          }
          else if (module.identifier.indexOf(require.resolve('url-loader') + '!') >= 0) {
            r = decodeURI(r);
          }
          return r;
        }
      }
    },
    // this whole "bootstrap" asset type is only used once in development mode.
    // the only place it's used is the Html.js file
    // where a <style/> tag is created with the contents of the
    // './src/theme/bootstrap.config.js' file.
    // (the aforementioned <style/> tag can reduce the white flash
    //  when refreshing page in development mode)
    //
    // hooking into 'js' extension require()s isn't the best solution
    // and I'm leaving this comment here in case anyone finds a better idea.
    bootstrap: {
      extension: 'js',
      include: ['./src/theme/bootstrap.config.js'],
      filter: function(module, regex, options, log) {
        function is_bootstrap_style(name) {
          return name.indexOf('./src/theme/bootstrap.config.js') >= 0;
        }
        if (options.development) {
          return is_bootstrap_style(module.name) && WebpackIsomorphicToolsPlugin.style_loader_filter(module, regex, options, log);
        }
        // no need for it in production mode
      },
      // in development mode there's webpack "style-loader",
      // so the module.name is not equal to module.name
      path: WebpackIsomorphicToolsPlugin.style_loader_path_extractor,
      parser: WebpackIsomorphicToolsPlugin.css_loader_parser
    },
    style_modules: {
      extensions: ['less','scss'],
      filter: function(module, regex, options, log) {
        if (options.development) {
          // in development mode there's webpack "style-loader",
          // so the module.name is not equal to module.name
          return WebpackIsomorphicToolsPlugin.style_loader_filter(module, regex, options, log);
        } else {
          // in production mode there's no webpack "style-loader",
          // so the module.name will be equal to the asset path
          return regex.test(module.name);
        }
      },
      path: function(module, options, log) {
        if (options.development) {
          // in development mode there's webpack "style-loader",
          // so the module.name is not equal to module.name
          return WebpackIsomorphicToolsPlugin.style_loader_path_extractor(module, options, log);
        } else {
          // in production mode there's no webpack "style-loader",
          // so the module.name will be equal to the asset path
          return module.name;
        }
      },
      parser: function(module, options, log) {
        if (options.development) {
          return WebpackIsomorphicToolsPlugin.css_modules_loader_parser(module, options, log);
        } else {
          // in production mode there's Extract Text Loader which extracts CSS text away
          return module.source;
        }
      }
    }
  }
}

The part of the webpack config that is responsible for the isomorphic-style-loader:
// production
      { test: /\.less$/, loaders: [
        'isomorphic-style-loader',
        'css-loader?modules&importLoaders=2',
        'postcss-loader',
        'less-loader?outputStyle=expanded',
      ] },
      { test: /\.scss$/, loaders: [
        'isomorphic-style-loader',
        'css-loader?modules&importLoaders=2',
        'postcss-loader',
        'sass-loader?outputStyle=expanded',
      ] },

And there is also:
https://github.com/erikras/react-redux-universal-hot-example/blob/3dd1146b7f71e5949513e0196c96ff040f88d5b4/src/theme/bootstrap.config.prod.js
https://github.com/erikras/react-redux-universal-hot-example/blob/3dd1146b7f71e5949513e0196c96ff040f88d5b4/src/theme/font-awesome.config.prod.js
which are kept unchanged for now (I'm not sure how to change them to use isomorphic-style-loader).

Your webpack-isomorphic-tools.js seems ok.
The debug logs may shed some light then.

I've read the config again, and having "style-loader" all over the config looks wrong to me, but I don't know how to change it to handle isomorphic-style-loader instead.

// in production mode there's Extract Text Loader which extracts CSS text away

And I don't have ExtractTextPlugin anymore, except for the react-bootstrap and fontawesome (I'd like to remove it from these as well).

I've read the config again, and having "style-loader" all over the config looks wrong to me

What config are you talking about

The tools config I posted above -- it has style-loader all over the comments next to some style_loader_filter I have no Idea what it does.
Here's the debug log, sorry it's been redacted, but I kept everything in place: http://pastebin.com/iKuuDTPG

Well, there you have the answer:
[webpack-isomorphic-tools/plugin] [debug] compiling asset "./src/sass/LoginSignupForm.scss"
[webpack-isomorphic-tools/plugin] [debug] require()ing "/__redacted__/src/sass/LoginSignupForm.scss"
[webpack-isomorphic-tools/plugin] [debug]  found in parsed assets
[webpack-isomorphic-tools/plugin] [debug] require()ing "!!./../../node_modules/css-loader/index.js?modules&importLoaders=2!./../../node_modules/postcss-loader/index.js!./../../node_modules/sass-loader/index.js?outputStyle=expanded!./LoginSignupForm.scss"
[webpack-isomorphic-tools/plugin] [debug]  not found in parsed assets, searching in webpack stats
[webpack-isomorphic-tools/plugin] [debug]  found in webpack stats, module id 753
[webpack-isomorphic-tools/plugin] [debug] require()ing "./../../node_modules/css-loader/lib/css-base.js"
[webpack-isomorphic-tools/plugin] [debug]  not found in parsed assets, searching in webpack stats
[webpack-isomorphic-tools/plugin] [debug]  found in webpack stats, module id 9
[webpack-isomorphic-tools/plugin] [debug] require()ing "!./../../node_modules/isomorphic-style-loader/lib/insertCss.js"
[webpack-isomorphic-tools/plugin] [debug]  not found in parsed assets, searching in webpack stats
[webpack-isomorphic-tools/plugin] [debug]  found in webpack stats, module id 10
[webpack-isomorphic-tools/plugin] [debug] require()ing "babel-runtime/core-js/object/assign"
[webpack-isomorphic-tools/plugin] [debug]  not found in parsed assets, searching in webpack stats
[webpack-isomorphic-tools/plugin] [error]  More than a single candidate module was found in webpack stats for require()d path "[object Object]"

It's isomorphic-style-loader which in turn requires babel.
Use the default style-loader and the error should go away.

@sompylasar Also I may have fixed this bug in the newest<EMAIL_ADDRESS>so you may also try it out.

But I need isomorphic-style-loader, not the default one. How do I use webpack-isomorphic-tools with it? What should I change or remove from its config?
Please reopen, 2.2.38 didn't fix it. I'll post the debug log.

[webpack-isomorphic-tools/plugin] [debug] compiling asset "./src/sass/LoginSignupForm.scss"
[webpack-isomorphic-tools/plugin] [debug] require()ing "/__redacted__/src/sass/LoginSignupForm.scss"
[webpack-isomorphic-tools/plugin] [debug]  found in parsed assets
[webpack-isomorphic-tools/plugin] [debug] require()ing "!!./../../node_modules/css-loader/index.js?modules&importLoaders=2!./../../node_modules/postcss-loader/index.js!./../../node_modules/sass-loader/index.js?outputStyle=expanded!./LoginSignupForm.scss"
[webpack-isomorphic-tools/plugin] [debug]  not found in parsed assets, searching in webpack stats
[webpack-isomorphic-tools/plugin] [debug]  found in webpack stats, module id 753
[webpack-isomorphic-tools/plugin] [debug] require()ing "./../../node_modules/css-loader/lib/css-base.js"
[webpack-isomorphic-tools/plugin] [debug]  not found in parsed assets, searching in webpack stats
[webpack-isomorphic-tools/plugin] [debug]  found in webpack stats, module id 9
[webpack-isomorphic-tools/plugin] [debug] require()ing "!./../../node_modules/isomorphic-style-loader/lib/insertCss.js"
[webpack-isomorphic-tools/plugin] [debug]  not found in parsed assets, searching in webpack stats
[webpack-isomorphic-tools/plugin] [debug]  found in webpack stats, module id 10
[webpack-isomorphic-tools/plugin] [debug] require()ing "babel-runtime/core-js/object/assign"
[webpack-isomorphic-tools/plugin] [debug]  not found in parsed assets, searching in webpack stats
[webpack-isomorphic-tools/plugin] [error]  More than a single candidate module was found in webpack stats for require()d path "[object Object]"
[webpack-isomorphic-tools/plugin]   {
  "id": 304,
  "identifier": "/__redacted__/node_modules/babel-runtime/core-js/object/assign.js",
  "name": "./~/babel-runtime/core-js/object/assign.js",
  "index": 525,
  "index2": 525,
  "size": 94,
  "cacheable": true,
  "built": true,
  "optional": false,
  "prefetched": false,
  "chunks": [
    0
  ],
  "assets": [],
  "issuer": "/__redacted__/node_modules/babel-runtime/helpers/extends.js",
  "failed": false,
  "errors": 0,
  "warnings": 0,
  "reasons": [
    {
      "moduleId": 3,
      "moduleIdentifier": "/__redacted__/node_modules/babel-runtime/helpers/extends.js",
      "module": "./~/babel-runtime/helpers/extends.js",
      "moduleName": "./~/babel-runtime/helpers/extends.js",
      "type": "cjs require",
      "userRequest": "babel-runtime/core-js/object/assign",
      "loc": "3:21-67"
    },
    {
      "moduleId": 29,
      "moduleIdentifier": "/__redacted__/node_modules/react-bootstrap/lib/styleMaps.js",
      "module": "./~/react-bootstrap/lib/styleMaps.js",
      "moduleName": "./~/react-bootstrap/lib/styleMaps.js",
      "type": "cjs require",
      "userRequest": "babel-runtime/core-js/object/assign",
      "loc": "3:21-67"
    }
  ],
  "source": "module.exports = { \"default\": require(\"core-js/library/fn/object/assign\"), __esModule: true };"
}
[webpack-isomorphic-tools/plugin]   {
  "id": 838,
  "identifier": "/__redacted__/node_modules/isomorphic-style-loader/node_modules/babel-runtime/core-js/object/assign.js",
  "name": "./~/isomorphic-style-loader/~/babel-runtime/core-js/object/assign.js",
  "index": 734,
  "index2": 727,
  "size": 94,
  "cacheable": true,
  "built": true,
  "optional": false,
  "prefetched": false,
  "chunks": [
    0
  ],
  "assets": [],
  "issuer": "/__redacted__/node_modules/isomorphic-style-loader/lib/insertCss.js",
  "failed": false,
  "errors": 0,
  "warnings": 0,
  "reasons": [
    {
      "moduleId": 10,
      "moduleIdentifier": "/__redacted__/node_modules/isomorphic-style-loader/lib/insertCss.js",
      "module": "./~/isomorphic-style-loader/lib/insertCss.js",
      "moduleName": "./~/isomorphic-style-loader/lib/insertCss.js",
      "type": "cjs require",
      "userRequest": "babel-runtime/core-js/object/assign",
      "loc": "3:14-60"
    }
  ],
  "source": "module.exports = { \"default\": require(\"core-js/library/fn/object/assign\"), __esModule: true };"
}

Looks like there are some extra ! in the paths (require()ing "!./../../node_modules/isomorphic-style-loader/lib/insertCss.js" versus require()ing "./../../node_modules/css-loader/lib/css-base.js"), and the path "[object Object]" looks wrong to me.
BTW, it stopped working in dev mode with debug: true -- just drops out of the node process with non-zero exit code without any exception; it still works with no debug flag.

Try the new version<EMAIL_ADDRESS>

BTW, it stopped working in dev mode with debug: true
It should work.
Check again with the new version.

Or better try the new version<EMAIL_ADDRESS>

(production mode, removed webpack-assets.json or webpack-stats.json before start)
[webpack-isomorphic-tools/plugin] [debug] ------------------- Started -------------------
[webpack-isomorphic-tools/plugin] [debug] running write assets webpack plugin v2.2.40 with options {
  "debug": true,
  "assets": {
    "images": {
      "extensions": [
        "jpeg",
        "jpg",
        "png",
        "gif"
      ]
    },
    "fonts": {
      "extensions": [
        "woff",
        "woff2",
        "ttf",
        "eot"
      ]
    },
    "svg": {
      "extensions": [
        "svg"
      ]
    },
    "bootstrap": {
      "include": [
        "./src/theme/bootstrap.config.js"
      ],
      "extensions": [
        "js"
      ]
    },
    "style_modules": {
      "extensions": [
        "less",
        "scss"
      ]
    }
  },
  "project_path": "/__redacted__",
  "assets_base_url": "/dist/",
  "webpack_assets_path": "/__redacted__/webpack-assets.json",
  "webpack_stats_path": "/__redacted__/webpack-stats.json",
  "output": {
    "javascript": {},
    "styles": {},
    "assets": {}
  },
  "regular_expressions": {
    "images": {},
    "fonts": {},
    "svg": {},
    "bootstrap": {},
    "style_modules": {}
  },
  "webpack_stats": {
    "errors": [],
    "warnings": [],
    "version": "1.12.13",
    "hash": "7ba76a23a3ad8e65b9b6",
    "time": 25735,
    "publicPath": "/dist/",
    "assetsByChunkName": {
      "main": [
        "main-7ba76a23a3ad8e65b9b6.js",
        "main-26557350894bbdc88150.css"
      ]
    },
    "assets": [
      {
        "name": "00a371345a02da64f9767051cc1702f3.jpg",
        "size": 43742,
        "chunks": [],
        "chunkNames": [],
        "emitted": true
      },
      {
        "name": "32400f4e08932a94d8bfd2422702c446.eot",
        "size": 70807,
        "chunks": [],
        "chunkNames": [],
        "emitted": true
      },
      {
        "name": "a35720c2fed2c7f043bc7e4ffb45e073.woff",
        "size": 83588,
        "chunks": [],
        "chunkNames": [],
        "emitted": true
      },
      {
        "name": "a3de2170e4e9df77161ea5d3f31b2668.ttf",
        "size": 142072,
        "chunks": [],
        "chunkNames": [],
        "emitted": true
      },
      {
        "name": "f775f9cca88e21d45bebe185b27c0e5b.svg",
        "size": 365616,
        "chunks": [],
        "chunkNames": [],
        "emitted": true
      },
      {
        "name": "f4769f9bdb7466be65088239c12046d1.eot",
        "size": 20127,
        "chunks": [],
        "chunkNames": [],
        "emitted": true
      },
      {
        "name": "fa2772327f55d8198301fdb8bcfc8158.woff",
        "size": 23424,
        "chunks": [],
        "chunkNames": [],
        "emitted": true
      },
      {
        "name": "448c34a56d699c29117adc64c43affeb.woff2",
        "size": 18028,
        "chunks": [],
        "chunkNames": [],
        "emitted": true
      },
      {
        "name": "e18bbf611f2a2e43afc071aa2f4e1512.ttf",
        "size": 45404,
        "chunks": [],
        "chunkNames": [],
        "emitted": true
      },
      {
        "name": "89889688147bd7575d6327160d64e760.svg",
        "size": 108738,
        "chunks": [],
        "chunkNames": [],
        "emitted": true
      },
      {
        "name": "5da0355441a9aff937a004c3b001b538.jpg",
        "size": 43104,
        "chunks": [],
        "chunkNames": [],
        "emitted": true
      },
      {
        "name": "558eebc03918299c1daa54830cd95ed6.jpg",
        "size": 46488,
        "chunks": [],
        "chunkNames": [],
        "emitted": true
      },
      {
        "name": "e8255e944b84b2c5355947a99b722d28.jpg",
        "size": 45193,
        "chunks": [],
        "chunkNames": [],
        "emitted": true
      },
      {
        "name": "acef3365b4aaa073a63a8defc783881a.jpg",
        "size": 47125,
        "chunks": [],
        "chunkNames": [],
        "emitted": true
      },
      {
        "name": "cc58ae96b8dd0ee8514a2af5617d307d.jpg",
        "size": 52953,
        "chunks": [],
        "chunkNames": [],
        "emitted": true
      },
      {
        "name": "e2dd602bf26dc7c3fcb03cb8f91fd7b9.jpg",
        "size": 58893,
        "chunks": [],
        "chunkNames": [],
        "emitted": true
      },
      {
        "name": "45dec1fd1aeaa69e118c2dce821885ec.jpg",
        "size": 64591,
        "chunks": [],
        "chunkNames": [],
        "emitted": true
      },
      {
        "name": "454ba5771b02c985cf5cd063d07ae156.jpg",
        "size": 62428,
        "chunks": [],
        "chunkNames": [],
        "emitted": true
      },
      {
        "name": "10f9171313966e894a83ee3b01921a47.jpg",
        "size": 53993,
        "chunks": [],
        "chunkNames": [],
        "emitted": true
      },
      {
        "name": "1f0a00addbd23348f9e7b325e7561fb1.jpg",
        "size": 51431,
        "chunks": [],
        "chunkNames": [],
        "emitted": true
      },
      {
        "name": "69ca685808e010263e1276f373d72142.png",
        "size": 18324,
        "chunks": [],
        "chunkNames": [],
        "emitted": true
      },
      {
        "name": "77bfce5af128f32e4b0fcfb1f5dee7d0.jpg",
        "size": 84366,
        "chunks": [],
        "chunkNames": [],
        "emitted": true
      },
      {
        "name": "57126df1b5b458ff0bf4af3a96a82ed7.jpg",
        "size": 54622,
        "chunks": [],
        "chunkNames": [],
        "emitted": true
      },
      {
        "name": "eaa70675fad62ab9ded2a583b008af1e.jpg",
        "size": 51815,
        "chunks": [],
        "chunkNames": [],
        "emitted": true
      },
      {
        "name": "99885990bfb6ea6ba28ac868344e521e.jpg",
        "size": 64815,
        "chunks": [],
        "chunkNames": [],
        "emitted": true
      },
      {
        "name": "2cf55cb24d3ea125c15ecdc0d6226b75.jpg",
        "size": 60530,
        "chunks": [],
        "chunkNames": [],
        "emitted": true
      },
      {
        "name": "ef61455877f4fa700ed30354f2046925.jpg",
        "size": 48454,
        "chunks": [],
        "chunkNames": [],
        "emitted": true
      },
      {
        "name": "dcf9ef5239dc875ee6502b6d7da0e99f.jpg",
        "size": 38982,
        "chunks": [],
        "chunkNames": [],
        "emitted": true
      },
      {
        "name": "e1baa82f17cb22f1c2ff169d2314f848.jpg",
        "size": 42142,
        "chunks": [],
        "chunkNames": [],
        "emitted": true
      },
      {
        "name": "e685cdd066fa75f253fceb66f7b2a5c9.jpg",
        "size": 48054,
        "chunks": [],
        "chunkNames": [],
        "emitted": true
      },
      {
        "name": "854aaf592ea111e9fb0590850bcf2ed3.jpg",
        "size": 49925,
        "chunks": [],
        "chunkNames": [],
        "emitted": true
      },
      {
        "name": "eeff01ca86a254975c9da68dacf85cf0.jpg",
        "size": 45326,
        "chunks": [],
        "chunkNames": [],
        "emitted": true
      },
      {
        "name": "144cdad4c433519a5beb8fa5e086b544.jpg",
        "size": 47458,
        "chunks": [],
        "chunkNames": [],
        "emitted": true
      },
      {
        "name": "11233db3430a2ba5221ee34f342a9134.jpg",
        "size": 38931,
        "chunks": [],
        "chunkNames": [],
        "emitted": true
      },
      {
        "name": "4f5304add2c3989bf709fe401c6f4cea.jpg",
        "size": 56147,
        "chunks": [],
        "chunkNames": [],
        "emitted": true
      },
      {
        "name": "e1ef820bdb37e388d0381177e3d94c0c.jpg",
        "size": 40652,
        "chunks": [],
        "chunkNames": [],
        "emitted": true
      },
      {
        "name": "4377b1b3a7804f8ff6937e7323f9138d.jpg",
        "size": 50763,
        "chunks": [],
        "chunkNames": [],
        "emitted": true
      },
      {
        "name": "9e0d875ff17874a00f3d2c20d9412b73.jpg",
        "size": 59719,
        "chunks": [],
        "chunkNames": [],
        "emitted": true
      },
      {
        "name": "aad8a4c6ad286dfde625d031e5bec1c4.jpg",
        "size": 27382,
        "chunks": [],
        "chunkNames": [],
        "emitted": true
      },
      {
        "name": "a0e6956ab3d242d520e8c63d2fcedb19.jpg",
        "size": 28539,
        "chunks": [],
        "chunkNames": [],
        "emitted": true
      },
     module.js:339
    throw err;
    ^

Error: Cannot find module 'babel-runtime/core-js/object/assign'
    at Module._resolveFilename (module.js:337:15)
    at Object.resolve (/__redacted__/node_modules/webpack-isomorphic-tools/node_modules/require-hacker/babel-transpiled-modules/require hacker.js:321:11)
    at /__redacted__/node_modules/webpack-isomorphic-tools/babel-transpiled-modules/plugin/write assets.js:371:103
    at resolver (/__redacted__/node_modules/webpack-isomorphic-tools/node_modules/require-hacker/babel-transpiled-modules/require hacker.js:131:17)
    at Function._module3.default._findPath (/__redacted__/node_modules/webpack-isomorphic-tools/node_modules/require-hacker/babel-transpiled-modules/require hacker.js:436:24)
    at Function.Module._resolveFilename (module.js:335:25)
    at Function._module3.default._resolveFilename (/__redacted__/node_modules/webpack-isomorphic-tools/node_modules/require-hacker/babel-transpiled-modules/require hacker.js:403:34)
    at Function.Module._load (module.js:287:25)
    at Module.require (module.js:366:17)
    at require (module.js:385:17)
    at Object.<anonymous> (!./../../node_modules/isomorphic-style-loader/lib/insertCss.js.webpack-module:4:15)
    at Module._compile (module.js:435:26)
    at Object._module3.default._extensions.(anonymous function) [as .webpack-module] (/__redacted__/node_modules/webpack-isomorphic-tools/node_modules/require-hacker/babel-transpiled-modules/require hacker.js:264:11)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:311:12)
    at Module.require (module.js:366:17)
    at require (module.js:385:17)
    at Object.<anonymous> (/__redacted__/src/sass/LoginSignupForm.scss.webpack-module:4:21)
    at Module._compile (module.js:435:26)
    at Object._module3.default._extensions.(anonymous function) [as .webpack-module] (/__redacted__/node_modules/webpack-isomorphic-tools/node_modules/require-hacker/babel-transpiled-modules/require hacker.js:264:11)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:311:12)
    at Module.require (module.js:366:17)
    at require (module.js:385:17)
    at populate_assets (/__redacted__/node_modules/webpack-isomorphic-tools/babel-transpiled-modules/plugin/write assets.js:420:31)
    at Object.write_assets [as default] (/__redacted__/node_modules/webpack-isomorphic-tools/babel-transpiled-modules/plugin/write assets.js:63:2)
    at Compiler.<anonymous> (/__redacted__/node_modules/webpack-isomorphic-tools/babel-transpiled-modules/plugin/plugin.js:175:27)
    at Compiler.applyPlugins (/__redacted__/node_modules/webpack/node_modules/tapable/lib/Tapable.js:26:37)
    at Compiler.<anonymous> (/__redacted__/node_modules/webpack/lib/Compiler.js:193:12)
    at Compiler.emitRecords (/__redacted__/node_modules/webpack/lib/Compiler.js:282:37)

BTW, it stopped working in dev mode with debug: true
It should work.

Looks like Node fails on huge JSON output generated by the debug on my setup (many modules), so I cannot do anything with that.
Maybe, a debug log file option would be useful?

Sorry, have to go now, I'll be able to try again in 11+ hours.

You can share a sample project if you want so that I could test upon it.
It will need to have instructions for reproducing the bug.

Yes, to share a sample project I'll have to make one :) -- ok, will try to reduce the test case.

You can also try the "official" target: node approach which always works but is cumbersome to set up and to grasp.

I tried to use target: 'node' and failed miserably, so I had to revert to webpack-isomorphic-tools.
Below are my results after having resolved the issue and successfully integrated with https://github.com/kriasoft/isomorphic-style-loader
@halt-hammerzeit you might be interested in adding a manual for isomorphic-style-loader next to the one for style-loader.
// ---------
// The `withStyles` decorator is the main benefit of `isomorphic-style-loader`
// compared to `style-loader` -- it enables critical-path style extraction and
// partial loading of styles.
// We use `webpack-isomorphic-tools` that does not build using `webpack` on the
// server-side, so we can't use the `isomorphic-style-loader` on the server-side
// as it is designed.
// We could just use the `withStyles` architecture plus `style-loader` for style insertion,
// but `style-loader` does not expose a `removeCss` function that would rollback the `insertCss`,
// and that function is required to make `withStyles` complete -- thus, we don't.
// -- sompylasar
//

// webpack-isomorphic-tools config, the part responsible for styles (server-side)

    style_modules: {
      // ---------
      // The CSS Modules on the server-side should export objects with classnames and the CSS text.
      // The `extensions` defines the regular expression to match the module names (it is constructed under the hood).
      // The `filter` function finds the modules that are CSS Modules.
      // The `path` function converts module full names into asset paths.
      // The `parser` function transforms the module source code to export
      // objects that are expected from `require('*.scss')` on the server-side.
      // -- sompylasar
      //
      extensions: [
        'less',
        'scss',
      ],

      filter: function (module, regex, options, log) {
        // ---------
        // The `isomorphic-style-loader`, like `style-loader`, is a pitching loader, and during the `pitch`
        // it changes the module so that the remaining part of the module request starts with `css-loader` (the next one to the right).
        // @see https://github.com/kriasoft/isomorphic-style-loader/blob/5e4b0627fcde383a20b53f66d8f3c47d05062722/src/index.js#L14
        // @see https://github.com/kriasoft/isomorphic-style-loader/blob/5e4b0627fcde383a20b53f66d8f3c47d05062722/src/index.js#L21
        // @see https://webpack.github.io/docs/loaders.html#pitching-loader
        // @see https://github.com/webpack/webpack/issues/360#issuecomment-49028914
        // -- sompylasar
        //
        var ret = WebpackIsomorphicToolsPlugin.style_loader_filter(module, regex, options, log);
        if (ret) {
          log.debug('style_modules.filter ' + module.name + ' -> ' + ret);
        }
        return ret;
      },
      path: function (module, options, log) {
        // ---------
        // `isomorphic-style-loader` is similar to `style-loader`,
        // see detailed comment in `filter` above.
        // Here we strip the loaders to return the asset path.
        // The asset path value will become the key in the `webpack-assets.json`.
        // -- sompylasar
        //
        var ret = WebpackIsomorphicToolsPlugin.style_loader_path_extractor(module, options, log);
        log.debug('style_modules.name ' + module.name + ' -> ' + ret);
        return ret;
      },
      parser: function (module, options, log) {
        // ---------
        // `webpack-isomorphic-tools` does not use `webpack` loaders,
        // it uses its own way to convert assets to JS, called parsers.
        // The parser results are collected and cached in the `webpack-assets.json` file.
        // Usually, we would imitate behavior of loaders for known asset types
        // to provide proper `exports` objects on the server-side.
        // But `isomorphic-style-loader`'s `exports` object exports
        // functions `_getCss` and `_insertCss` which for some reason cannot be
        // serialized into `webpack-assets.json` although in `require-hacker`
        // which is responsible for serialization the CommonJS modules are handled specifically.
        // @see https://github.com/halt-hammerzeit/require-hacker/blob/ccd584d68fb8fee8a117b7ddfe0b2bcaeed309e8/source/require%20hacker.js#L280-L297
        // @see https://github.com/halt-hammerzeit/require-hacker/blob/ccd584d68fb8fee8a117b7ddfe0b2bcaeed309e8/source/require%20hacker.js#L451-L456
        // So we reuse the CSS Modules converter from `webpack-isomorphic-tools`
        // that builds a module that exports the CSS Modules classnames
        // and an additional `_style` string property with raw CSS text.
        // This structure gets serialized properly.
        // @see https://github.com/halt-hammerzeit/webpack-isomorphic-tools/blob/5e468729fe0a59eaed4f8a0f9da5ba92a4a7e3c5/source/plugin/plugin.js#L194-L199
        // -- sompylasar
        //
        var ret = WebpackIsomorphicToolsPlugin.css_modules_loader_parser(module, options, log);
        log.debug('style_modules.parser \n' + module.source + '\n\n -----------> \n\n' + ret + '\n');
        return ret;
      }
    }

// webpack config, the part responsible for style loaders (browser-side)

  const cssLoaderQuery = {
    modules: true,
    importLoaders: 2,  // `postcss-loader` + ( `sass-loader` or `less-loader` ).
    sourceMap: SOURCE_MAP_ENABLED,
    localIdentName: (__DEVELOPMENT__ ? '[local]___[hash:base64:5]' : undefined),
  };
  const lessSassLoaderQuery = {
    outputStyle: 'expanded',
    sourceMap: SOURCE_MAP_ENABLED,
  };
  const styleLoaders = [
    'isomorphic-style-loader',
    'css-loader?' + JSON.stringify(cssLoaderQuery),
    'postcss-loader',
  ];
  const styleLoadersWithTest = [
    {
      test: /\.less$/,
      loaders: [
        ...styleLoaders,
        'less-loader?' + JSON.stringify(lessSassLoaderQuery),
      ],
    },
    {
      test: /\.scss$/,
      loaders: [
        ...styleLoaders,
        'sass-loader?' + JSON.stringify(lessSassLoaderQuery),
      ],
    },
  ];

// collect styles on the rendering critical path (server-side)

        // CSS for all rendered React components.
        const cssTexts = [];
        function insertCss(styles) {
          // ---------
          // Although `styles` is expected to have `_getCss()` function on the server-side,
          // it won't, because on the server-side we use `webpack-isomorphic-tools`
          // to convert the modules to JS, not `webpack` loaders.
          // It has `_style` string which is generated by the
          // `WebpackIsomorphicToolsPlugin.css_modules_loader_parser`.
          // See `webpackIsomorphicToolsConfig` for more details.
          // -- sompylasar
          //
          cssTexts.push( styles._style );
        }

// collect styles on the rendering critical path (browser-side)

function insertCss(styles) {
  // ---------
  // On the browser-side we use `webpack` loaders to convert the modules to JS,
  // so here we have `_insertCss()` function generated by `isomorphic-style-loader`.
  // -- sompylasar
  //
  styles._insertCss();
}

/**
 * Provides `insertCss` function via React context to the `withStyles`-decorated components.
 *
 * Usage: <InsertCssProvider insertCss={insertCss}>{contentDOM}</InsertCssProvider>
 */
export default class InsertCssProvider extends Component {
  static propTypes = {
    insertCss: PropTypes.func.isRequired,
    children: PropTypes.node,
  }

  static childContextTypes = {
    insertCss: PropTypes.func,
  }

  getChildContext() {
    return {
      insertCss: (styles) => {
        const { insertCss } = this.props;
        // We may get an array of styles here if `withStyles` is used more than once.
        // TODO(sompylasar): Get to know when exactly this array happens.
        if (Array.isArray(styles)) {
          styles.forEach(insertCss);
        }
        else {
          insertCss(styles);
        }
      },
    };
  }

  render() {
    const { children } = this.props;
    return React.Children.only(children);
  }
}

Oh, so you finally made it. Who's the man)
I still haven't checked out this isomorphic-style-loader because I don't see why would one use it: everyone seems to be getting away with the default style-loader.
Some kind of "critical path", idk. Didn't get the idea of that loader.

The critical path is what's first visible by the user. When you do server-side rendering, you could bundle the styles for the critical path components right into HTML and save an HTTP request on the page load.

Oh, I see.
Well, I guess that's a too advanced topic for the large-enough README so this issue will be the example.
You can edit your first post if you want saying something like EDIT: this is the instruction on how to set up XXX with ...

I should say that the issue about multiple candidates hasn't been fixed.
It was caused by parser function returned source code. First time I applied the transformation to the isomorphic-style-loader``s output which contains special loader requests that start with !!and!because it's a pitching loader (itrequires the next loaders' output). The same can happen with any pitching loader, for example if you try to transform the style-loaderoutput, not thecss-loader` output. Probably the code loses its require context, and this causes the relative path require to be ambiguous -- I haven't figured out the cause.

Yeah, I had to update the README to reflect the fact that this library is not a 100% substitution for webpack:
https://github.com/halt-hammerzeit/webpack-isomorphic-tools/commit/f01276dcd8520a71908547c60349972f72146854
The reason for this "multiple candidates" error is there's currently no complete algorythm implemented of finding the required() webpack module object by the require() call parameter.
So far I've implemented a way of extraction of the require()d path from that call parameter:
			// // tries to normalize a cryptic Webpack loader path
			// // into a regular relative file path
			// // https://webpack.github.io/docs/loaders.html
			// let filesystem_required_path = last(required_path
			// 	.replace(/^!!/, '')
			// 	.replace(/^!/, '')
			// 	.replace(/^-!/, '')
			// 	.split('!'))

But the preceding loaders can't simply be omitted because loaders matter (obviously).
So I have implemented a simple algorithm for searching such paths in case it's not a loader-powered call (like ./path/to/file)
https://github.com/halt-hammerzeit/webpack-isomorphic-tools/blob/master/source/plugin/write assets.js#L296
This algorithm wouldn't work in some edge cases like require()ing a normal path from a loader-loaded module.
I don't remember why I constrained it to that.
I may try to ease that if condition:
			// (also check that the requiring file path is a filesystem path, not a Webpack one)
			if (!is_webpack_loader_path && module.filename.indexOf('!') < 0)
			{

Specifically, I may remove the second condition and give it more room for guessing.
That might even work in your case, or it may not: a test case is required.
By saying "test case" I mean a project reproducing the issue along with the instructions. It's not required to be a minimal project: any project will do as long as it has the reproduction instructions

Yeah, I had to update the README to reflect the fact that this library is not a 100% substitution for webpack

I'd add that the benefit of webpack-isomorphic-tools compared to webpack is that it does not require build step for the server-side code. This is very important.

The reason for this "multiple candidates" error is there's currently no complete algorIthm implemented of finding the required() webpack module object by the require() call parameter.

Yes, I discovered that. Had to dig deep into the source code to understand that it does not use webpack loaders internally (if I get it right?).

This algorithm wouldn't work in some edge cases like require()ing a normal path from a loader-loaded module.

Looks like that was the case:
https://github.com/kriasoft/isomorphic-style-loader/blob/506718ccd1f41acbb4f5c6098137573de1de2b1e/src/index.js#L22
const insertCssPath = path.join(__dirname, './insertCss.js');
// ...
let output = `
    var content = require(${stringifyRequest(this, `!!${remainingRequest}`)});
    var insertCss = require(${stringifyRequest(this, `!${insertCssPath}`)});

The isomorphic-style-loader requires its own JS module by absolute path., This path contains ! but only to cancel the webpack loader processing for the required module.

Specifically, I may remove the second condition and give it more room for guessing.

I think this second condition could be changed to skip the ! and/or !! as a prefix:
// Skip the `!` and `!!` prefixes that instruct `webpack` to skip certain loaders for this request.
// @see https://webpack.github.io/docs/loaders.html#loader-order
(module.filename.indexOf('!') !== 1 && module.filename.indexOf('!!') !== 1)

Ok, I've changed the code a bit and you can try<EMAIL_ADDRESS>if you have an opportunity.
Not necessarily might it fix your issue.

:+1: I'll give it a try.

Hi,
I think I was getting that error (More than a single candidate module was found) too because I had 2 components with same structure:
componentA/
componentA/index.js
componentA/styles.css

and
componentB/
componentB/index.js
componentB/styles.css

where both components required styles.css relatively (i.e. import styles from './style.css').
I think I fixed that by renaming each styles.css to their corresponding component name respectively. My setup was pretty full of stuff so I will test that again with minimal setup and will let you know once I have more info.

@sergeylukin Yeah, that kind of issue was reported recently
https://github.com/halt-hammerzeit/webpack-isomorphic-tools/pull/58
And it seems it was fixed, so you don't have to rename your files to different names.

I seem to be having this issue even with the latest version - I am currently trying to determine whether it's an issue in my code or a genuine bug.  Will report if so.

FYI
I'm posting this in every issue and PR to notify whoever may be interested:
today I've released an alternative helper library called universal-webpack.
It takes a different approach than webpack-ismorphic-tools and instead of hacking Node.js require() calls it just compiles all code with target: 'node' webpack configuration option.
As a result, all Webpack plugins and features are supported.
If you think you might need that here's an example project:
https://github.com/halt-hammerzeit/webpack-react-redux-isomorphic-render-example

@halt-hammerzeit Thanks! But webpack-isomorphic-tools benefits over target: node in that hacking require does not require preliminary compilation, works in runtime.

@sompylasar Yeah, that's true, target: node approach runs two webpack compilation processes in parallel so it's double load.


Argo v2.0 Demo doesn't work with Minikube

Following the Argo v2.0 Demo directions here (exact git hash link: https://github.com/argoproj/argo/blob/37f41eb7bf366cfe007d3ecce7b21f003d381e34/demo.md ) and using Minikube locally on a my MBP (OSX 10.12.6)
The tutorial as written isn't clear or doesn't work. I followed the instructions but, step 5 wasn't very clear.
When I ran kubectl edit configmap workflow-controller-configmap -n kube-system this is the complete config file saved:
# Please edit the object below. Lines beginning with a '#' will be ignored,
# and an empty file will abort the edit. If an error occurs while saving this file will be
# reopened with the relevant failures.
#
apiVersion: v1
data:
  config: |
    executorImage: argoproj/argoexec:v2.0.0-alpha2
    artifactRepository:
        s3:
            bucket: my-bucket
            endpoint: http://<IP_ADDRESS>:31443
            insecure: true
            accessKeySecret:
                name: argo-artifacts-minio-user
                key: "AKIAIOSFODNN7EXAMPLE"
            secretKeySecret:
                name: argo-artifacts-minio-user
                key: "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
kind: ConfigMap
metadata:
  creationTimestamp: 2017-12-09T04:40:09Z
  name: workflow-controller-configmap
  namespace: kube-system
  resourceVersion: "5975"
  selfLink: /api/v1/namespaces/kube-system/configmaps/workflow-controller-configmap
  uid: 0979807e-dc9b-11e7-a5f3-080027407c4d

I suspect that my challenges might come from using MiniKube. When I run kubectl get all -l release=argo-artifacts I get:
NAME                          DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
deploy/argo-artifacts-minio   1         1         1            1           1h

NAME                                 DESIRED   CURRENT   READY     AGE
rs/argo-artifacts-minio-7c4fccc877   1         1         1         1h

NAME                          DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
deploy/argo-artifacts-minio   1         1         1            1           1h

NAME                                 DESIRED   CURRENT   READY     AGE
rs/argo-artifacts-minio-7c4fccc877   1         1         1         1h

NAME                                       READY     STATUS    RESTARTS   AGE
po/argo-artifacts-minio-7c4fccc877-82dx7   1/1       Running   0          1h

NAME                           TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE
svc/argo-artifacts-minio-svc   LoadBalancer   <IP_ADDRESS>   <pending>     9000:31443/TCP   1h

The external-ip was always pending and after some googling it seems that minikube doesn't do external ip's the same. Running minikube service list shows:
|-------------|--------------------------|-----------------------------|
|  NAMESPACE  |           NAME           |             URL             |
|-------------|--------------------------|-----------------------------|
| default     | argo-artifacts-minio-svc | http://<IP_ADDRESS>:31443 |
| default     | kubernetes               | No node port                |
| kube-system | argo-ui                  | http://<IP_ADDRESS>:32529 |
| kube-system | kube-dns                 | No node port                |
| kube-system | kubernetes-dashboard     | http://<IP_ADDRESS>:30000 |
| kube-system | tiller-deploy            | No node port                |
|-------------|--------------------------|-----------------------------|

The url and port for argo-artifacts-minio-svc http://<IP_ADDRESS>:31443 is what I used for the config under what was originally argo-artifacts-minio-svc.default:9000 to explain my changes in the config here:
    artifactRepository:
        s3:
            bucket: my-bucket
            endpoint: http://<IP_ADDRESS>:31443

The actual error happens when we run the last step (6):
argo submit https://raw.githubusercontent.com/argoproj/argo/master/examples/artifact-passing.yaml
Name:             artifact-passing-vb9l7
Namespace:        default
Status:           Pending
Created:          Fri Dec 08 21:58:15 -0800 (2 seconds from now)

Running argo get artifact-passing-clrtl
Name:             artifact-passing-vb9l7
Namespace:        default
Status:           Failed
Message:          step group artifact-passing-vb9l7[0] was unsuccessful
Created:          Fri Dec 08 21:58:15 -0800 (5 seconds ago)
Started:          Fri Dec 08 21:58:15 -0800 (5 seconds ago)
Finished:         Fri Dec 08 21:58:20 -0800 (now)
Duration:         5 seconds

STEP                       PODNAME                            MESSAGE
 ✖ artifact-passing-vb9l7
 └---⚠ generate-artifact   artifact-passing-vb9l7-2566534122  failed to save artifacts: Key [AKIAIOSFODNN7EXAMPLE argo-artifacts-minio-user] does not exists for secret %!s(MISSING)

Referencing the PODNAME artifact-passing-vb9l7-2566534122 and getting the logs from the wait container:
kubectl logs artifact-passing-sdrzz-2497688641 -c wait
time="2017-12-09T06:29:41Z" level=info msg="Executor (version: v2.0.0-alpha2) initialized with template:\narchiveLocation:\n  s3:\n    accessKeySecret:\n      key: AKIAIOSFODNN7EXAMPLE\n      name: argo-artifacts-minio-user\n    bucket: my-bucket\n    endpoint: http://<IP_ADDRESS>:31443\n    insecure: true\n    key: artifact-passing-sdrzz/artifact-passing-sdrzz-2497688641\n    secretKeySecret:\n      key: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\n      name: argo-artifacts-minio-user\ncontainer:\n  args:\n  - cowsay hello world | tee /tmp/hello_world.txt\n  command:\n  - sh\n  - -c\n  image: docker/whalesay:latest\n  name: \"\"\n  resources: {}\ninputs: {}\nname: whalesay\noutputs:\n  artifacts:\n  - name: hello-art\n    path: /tmp/hello_world.txt\n"
time="2017-12-09T06:29:41Z" level=info msg="Waiting on main container"
time="2017-12-09T06:29:43Z" level=info msg="[docker wait 10e0350ee40e2f1251df6014e04a2c5cff7969b9986714592f8e65bb5366113c]"
time="2017-12-09T06:29:43Z" level=info msg="Waiting completed"
time="2017-12-09T06:29:43Z" level=info msg="Killing sidecars"
time="2017-12-09T06:29:43Z" level=info msg="Saving output artifacts"
time="2017-12-09T06:29:43Z" level=info msg="Main container identified as: 10e0350ee40e2f1251df6014e04a2c5cff7969b9986714592f8e65bb5366113c"
time="2017-12-09T06:29:43Z" level=info msg="Saving artifact: hello-art"
time="2017-12-09T06:29:43Z" level=info msg="Archiving 10e0350ee40e2f1251df6014e04a2c5cff7969b9986714592f8e65bb5366113c:/tmp/hello_world.txt to /argo/outputs/artifacts/hello-art.tgz"
time="2017-12-09T06:29:43Z" level=info msg="[sh -c docker cp -a 10e0350ee40e2f1251df6014e04a2c5cff7969b9986714592f8e65bb5366113c:/tmp/hello_world.txt - | gzip > /argo/outputs/artifacts/hello-art.tgz]"
time="2017-12-09T06:29:44Z" level=info msg="Archiving completed"
time="2017-12-09T06:29:44Z" level=fatal msg="Error saving output artifacts, Key [AKIAIOSFODNN7EXAMPLE argo-artifacts-minio-user] does not exists for secret %!s(MISSING)\ngithub.com/argoproj/argo/errors.New\n\t/root/go/src/github.com/argoproj/argo/errors/errors.go:47\ngithub.com/argoproj/argo/errors.Errorf\n\t/root/go/src/github.com/argoproj/argo/errors/errors.go:53\ngithub.com/argoproj/argo/errors.InternalErrorf\n\t/root/go/src/github.com/argoproj/argo/errors/errors.go:63\ngithub.com/argoproj/argo/workflow/executor.(*WorkflowExecutor).getSecrets\n\t/root/go/src/github.com/argoproj/argo/workflow/executor/executor.go:47\ngithub.com/argoproj/argo/workflow/executor.(*WorkflowExecutor).InitDriver\n\t/root/go/src/github.com/argoproj/argo/workflow/executor/executor.go:235\ngithub.com/argoproj/argo/workflow/executor.(*WorkflowExecutor).SaveArtifacts\n\t/root/go/src/github.com/argoproj/argo/workflow/executor/executor.go:170\ngithub.com/argoproj/argo/cmd/argoexec/commands.waitContainer\n\t/root/go/src/github.com/argoproj/argo/cmd/argoexec/commands/wait.go:29\ngithub.com/argoproj/argo/vendor/github.com/spf13/cobra.(*Command).execute\n\t/root/go/src/github.com/argoproj/argo/vendor/github.com/spf13/cobra/command.go:702\ngithub.com/argoproj/argo/vendor/github.com/spf13/cobra.(*Command).ExecuteC\n\t/root/go/src/github.com/argoproj/argo/vendor/github.com/spf13/cobra/command.go:783\ngithub.com/argoproj/argo/vendor/github.com/spf13/cobra.(*Command).Execute\n\t/root/go/src/github.com/argoproj/argo/vendor/github.com/spf13/cobra/command.go:736\nmain.main\n\t/root/go/src/github.com/argoproj/argo/cmd/argoexec/main.go:11\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:185\nruntime.goexit\n\t/usr/local/go/src/runtime/asm_amd64.s:2337"

I was trying out Argo for the first time and maybe I'm doing something wrong but, I followed the directions carefully. If there's something I'm missing, I'd be glad to hear it. Otherwise, please test and fix the directions so that they work locally with Minikube.

Hi @cloudbring, the issue is that you are storing the plain-text key in the configmap, instead of a kubernetes secret key reference. This is incorrect:
            accessKeySecret:
                name: argo-artifacts-minio-user
                key: "AKIAIOSFODNN7EXAMPLE"
            secretKeySecret:
                name: argo-artifacts-minio-user
                key: "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"

This is what should be stored in the config map literally:
        accessKeySecret:
          name: argo-artifacts-minio-user
          key: accesskey
        secretKeySecret:
          name: argo-artifacts-minio-user
          key: secretkey

The two fields, accessKeySecret and secretKeySecret are k8s secret selectors. argo-artifacts-minio-user refers to the secret name (which helm install stable/minio created for you). accesskey and secretKey refer to to the key in the secret.
Please try changing the configmap to the literal values in the demo.md and let us know if you have any further issues.

That said, this error message is confusing and should be fixed.
failed to save artifacts: Key [AKIAIOSFODNN7EXAMPLE argo-artifacts-minio-user] does not exists for secret %!s(MISSING)

It should probably read something like:
secret 'argo-artifacts-minio-user' does not have the key 'AKIAIOSFODNN7EXAMPLE'