Added .display-block, .display-inline-block, .display-inline

Per https://github.com/twbs/bootstrap/issues/19443
Cleans up lingering doc/scss references to .center-block (post https://github.com/twbs/bootstrap/pull/19102)
Per https://github.com/twbs/bootstrap/issues/19343
Added new .display-<display-type> classes
Request was to combine them in one PR, but they're in two commits if either feature is wanted without the other.

Given the naming of some of the other utilities, perhaps these should be .d-inline-block or even .d-ib.
@mdo Your thoughts?

Thanks for the feedback, made adjustments. HoundCI is dinging me for the !importants on a utility class, please let me know if there's anything I can do to get that passing? Also renamed the display classes to .d-block, .d-inline-block, etc based on your comment, seemed the most readable but can adjust as needed.

Merged the display utilities addition as 1b3510585214824d16adac234895756ebe960e9e.

Merged the .center-block removal as a0a157db9339b129738face06ef72c10fbe3fbf3.
Thanks!


Remove tower-grpc dependency

At one point this codebase was using tower-grpc extensively. Now it doesn't use it at all.
Remove the dependency and replace the tower build code with post.

Did this ages ago.


Leverage Cardano.unbundleLedgerShelleyBasedProtocolParams

[x] Replace all non-unit test calls to Cardano.toLedgerPParams with the much cheaper Cardano.unbundleLedgerShelleyBasedProtocolParams.

Comments
Suggestion to #3812

Issue Number

Running cabal test cardano-wallet:unit --test-options='-j 8 --match "balanceTransaction"'
This branch:
Cardano.Wallet.Shelley.Transaction
  balanceTransaction
    doesn't balance transactions with existing 'totalCollateral' [✔] (661ms)
      +++ OK, passed 10 tests; 42 discarded.
    doesn't balance transactions with existing 'returnCollateral' [✔] (402ms)
      +++ OK, passed 10 tests; 25 discarded.
    produces valid transactions or fails [✔] (72290ms)
      +++ OK, passed 1000 tests:
       0.3% partial tx had zero ada outputs

      41.1% input resolution conflicts
      19.0% output below minCoinValue
      16.8% conflicting networks
       9.2% missing tokens
       8.6% success
       1.8% missing coin
       1.4% missing coin and tokens
       1.2% existing collateral
       0.9% maxTxSize limit exceeded
    bootstrap witnesses
      coin-selection's size estimation == balanceTx's size estimation [✔] (904ms)
        +++ OK, passed 100 tests.
      balanceTx's size estimation >= measured serialized size [✔] (985ms)
        +++ OK, passed 100 tests.

        overestimation/wit (100 in total):
        41% 9
        37% 2
         6% 4
         3% 0 (but with no wits)
         3% 11
         3% 5
         3% 6
         2% 7
         1% 10
         1% 8
    balance goldens
      testPParams [✔] (17ms)
        Golden and Actual output didn't change
      balanced binaries
        pingPong_2 [✔] (12ms)
          Golden and Actual output didn't change
      results when varying wallet balance (1 UTxO)
        pingPong_1 [✔] (29ms)
          Golden and Actual output didn't change
        pingPong_2 [✔] (83ms)
          Golden and Actual output didn't change
        delegate [✔] (27ms)
          Golden and Actual output didn't change
        1ada-payment [✔] (54ms)
          Golden and Actual output didn't change
    posAndNegFromCardanoValue
      roundtrips with toCardanoValue [✔]
        +++ OK, passed 100 tests.
    change address generation
      assigns change addresses as expected [✔] (9ms)
      returns s' corresponding to which addresses were used [✔]
    increases zero-ada outputs to minimum [‐]
      # PENDING: Needs correct mock PParams for Babbage
    effect of txMaxSize on coin selection
      tries to select 2x the payment amount [✔] (4ms)
      falls back to 1x if out of space [✔] (6ms)
      otherwise fails with ErrBalanceTxMaxSizeLimitExceeded [✔] (12ms)
    when passed unresolved inputs
      fails with ErrBalanceTxUnresolvedTxIn [✔]
      with redeemers
        fails with ErrBalanceTxUnresolvedInputs [✔]
    when validity interval is too far in the future
      with some Plutus redeemers
        fails with TimeTranslationPastHorizon [✔] (1ms)
      with no redeemers
        succeeds at balancing [✔]
    when a redeemer is missing
      balancing succeeds (currently) [✔]
    when a redeemer points to an input that doesn't exist
      fails with ErrAssignRedeemersTargetNotFound [✔]

Finished in 75.5092 seconds, used 82.4280 seconds of CPU time

#3812 48c86f2c3fb1aea2f50b04abc5cada9734f7e395
Cardano.Wallet.Shelley.Transaction
  balanceTransaction
    doesn't balance transactions with existing 'totalCollateral' [✔] (899ms)
      +++ OK, passed 10 tests; 49 discarded.
    doesn't balance transactions with existing 'returnCollateral' [✔] (398ms)
      +++ OK, passed 10 tests; 29 discarded.
    produces valid transactions or fails [✔] (86118ms)
      +++ OK, passed 1000 tests:
       0.4% partial tx had zero ada outputs

      40.8% input resolution conflicts
      19.5% conflicting networks
      17.9% output below minCoinValue
       8.4% success
       7.5% missing tokens
       2.0% missing coin
       1.7% missing coin and tokens
       1.4% existing collateral
       0.8% maxTxSize limit exceeded
    bootstrap witnesses
      coin-selection's size estimation == balanceTx's size estimation [✔] (876ms)
        +++ OK, passed 100 tests.
      balanceTx's size estimation >= measured serialized size [✔] (949ms)
        +++ OK, passed 100 tests.

        overestimation/wit (100 in total):
        40% 9
        39% 2
        10% 4
         3% 5
         3% 8
         2% 0 (but with no wits)
         2% 7
         1% 10
    balance goldens
      testPParams [✔] (32ms)
        Golden and Actual output didn't change
      balanced binaries
        pingPong_2 [✔] (59ms)
          Golden and Actual output didn't change
      results when varying wallet balance (1 UTxO)
        pingPong_1 [✔] (1321ms)
          Golden and Actual output didn't change
        pingPong_2 [✔] (2847ms)
          Golden and Actual output didn't change
        delegate [✔] (1316ms)
          Golden and Actual output didn't change
        1ada-payment [✔] (1346ms)
          Golden and Actual output didn't change
    posAndNegFromCardanoValue
      roundtrips with toCardanoValue [✔]
        +++ OK, passed 100 tests.
    change address generation
      assigns change addresses as expected [✔] (24ms)
      returns s' corresponding to which addresses were used [✔]
    increases zero-ada outputs to minimum [‐]
      # PENDING: Needs correct mock PParams for Babbage
    effect of txMaxSize on coin selection
      tries to select 2x the payment amount [✔] (20ms)
      falls back to 1x if out of space [✔] (38ms)
      otherwise fails with ErrBalanceTxMaxSizeLimitExceeded [✔] (43ms)
    when passed unresolved inputs
      fails with ErrBalanceTxUnresolvedTxIn [✔]
      with redeemers
        fails with ErrBalanceTxUnresolvedInputs [✔]
    when validity interval is too far in the future
      with some Plutus redeemers
        fails with TimeTranslationPastHorizon [✔] (17ms)
      with no redeemers
        succeeds at balancing [✔] (15ms)
    when a redeemer is missing
      balancing succeeds (currently) [✔] (46ms)
    when a redeemer points to an input that doesn't exist
      fails with ErrAssignRedeemersTargetNotFound [✔] (16ms)

Finished in 96.3977 seconds, used 105.0684 seconds of CPU time

Looking particularly good is the speedup of the golden tests:

Golden
time before / ms
time after / ms
speedup

pingPong_1
1321
29
46x

pingPong_2
2847
83
34x

delegate
1316
27
48x

1-ada-payment
1346
54
25x

@Anviking I did some performance testing here: https://github.com/input-output-hk/cardano-wallet/pull/3812#issuecomment-1488156169

Hm, effect of this PR seems marginal in your test. That seems odd 🤔


Spark version detection prevents startup of new spark sessions

Describe the bug
With the newest commit giving support to Spark 3.1/3.2, pydeequ uses a new method for detecting the (py)spark version.  By spawning a new subprocess within the Spark JVM, and not appropriately cleaning up the created SparkContext, subsequent calls to SparkSession.builder.getOrCreate() fail as it attempts to create a secondary SparkContext.  This bug was not present historically, when the Spark version was detected through an environment variable.
Error output:
22/11/18 14:47:33 INFO StandaloneAppClient$ClientEndpoint: Connecting to master spark://spark:7077...
22/11/18 14:47:33 INFO TransportClientFactory: Successfully created connection to spark/[removed]:7077 after 35 ms (0 ms spent in bootstraps)
22/11/18 14:47:34 INFO StandaloneSchedulerBackend: Connected to Spark cluster with app ID app-20221118144734-0000
22/11/18 14:47:34 INFO Utils: Successfully started service 'org.apache.spark.network.netty.NettyBlockTransferService' on port 39167.
22/11/18 14:47:34 INFO NettyBlockTransferService: Server created on spark:39167
22/11/18 14:47:34 INFO BlockManager: Using org.apache.spark.storage.RandomBlockReplicationPolicy for block replication policy
22/11/18 14:47:34 INFO BlockManagerMaster: Registering BlockManager BlockManagerId(driver, spark, 39167, None)
22/11/18 14:47:34 INFO BlockManagerMasterEndpoint: Registering block manager spark:39167 with 434.4 MiB RAM, BlockManagerId(driver, spark, 39167, None)
22/11/18 14:47:34 INFO BlockManagerMaster: Registered BlockManager BlockManagerId(driver, spark, 39167, None)
22/11/18 14:47:34 INFO BlockManager: Initialized BlockManager: BlockManagerId(driver, spark, 39167, None)
22/11/18 14:47:34 INFO StandaloneSchedulerBackend: SchedulerBackend is ready for scheduling beginning after reached minRegisteredResourcesRatio: 0.0
Traceback (most recent call last):
  File "/opt/spark/jobs/pipelines/[removed].py", line 66, in <module>
    [removed]
  File "/usr/local/lib/python3.9/site-packages/[removed].py", line 32, in __init__
    [removed]
  File "/usr/local/lib/python3.9/site-packages/[removed].py", line 53, in __init__
    [removed]
  File "/usr/local/lib/python3.9/site-packages/[removed].py", line 41, in __init__
   [removed]
  File "/usr/local/lib/python3.9/site-packages/[removed].py", line 50, in create_spark_session
    SparkSession.builder.appName(app_name)
  File "/opt/spark/python/lib/pyspark.zip/pyspark/sql/session.py", line 228, in getOrCreate
  File "/opt/spark/python/lib/pyspark.zip/pyspark/context.py", line 392, in getOrCreate
  File "/opt/spark/python/lib/pyspark.zip/pyspark/context.py", line 146, in __init__
  File "/opt/spark/python/lib/pyspark.zip/pyspark/context.py", line 209, in _do_init
  File "/opt/spark/python/lib/pyspark.zip/pyspark/context.py", line 329, in _initialize_context
  File "/opt/spark/python/lib/py4j-<IP_ADDRESS>-src.zip/py4j/java_gateway.py", line 1585, in __call__
  File "/opt/spark/python/lib/py4j-<IP_ADDRESS>-src.zip/py4j/protocol.py", line 326, in get_return_value
py4j.protocol.Py4JJavaError: An error occurred while calling None.org.apache.spark.api.java.JavaSparkContext.
: org.apache.spark.SparkException: Only one SparkContext should be running in this JVM (see SPARK-2243).The currently running SparkContext was created at:
org.apache.spark.api.java.JavaSparkContext.<init>(JavaSparkContext.scala:58)
java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
java.base/java.lang.reflect.Constructor.newInstance(Unknown Source)
py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:247)
py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:357)
py4j.Gateway.invoke(Gateway.java:238)
py4j.commands.ConstructorCommand.invokeConstructor(ConstructorCommand.java:80)
py4j.commands.ConstructorCommand.execute(ConstructorCommand.java:69)
py4j.ClientServerConnection.waitForCommands(ClientServerConnection.java:182)
py4j.ClientServerConnection.run(ClientServerConnection.java:106)
java.base/java.lang.Thread.run(Unknown Source)
	at org.apache.spark.SparkContext$.$anonfun$assertNoOtherContextIsRunning$2(SparkContext.scala:2647)
	at scala.Option.foreach(Option.scala:407)
	at org.apache.spark.SparkContext$.assertNoOtherContextIsRunning(SparkContext.scala:2644)
	at org.apache.spark.SparkContext$.markPartiallyConstructed(SparkContext.scala:2734)
	at org.apache.spark.SparkContext.<init>(SparkContext.scala:95)
	at org.apache.spark.api.java.JavaSparkContext.<init>(JavaSparkContext.scala:58)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
	at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
	at java.base/java.lang.reflect.Constructor.newInstance(Unknown Source)
	at py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:247)
	at py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:357)
	at py4j.Gateway.invoke(Gateway.java:238)
	at py4j.commands.ConstructorCommand.invokeConstructor(ConstructorCommand.java:80)
	at py4j.commands.ConstructorCommand.execute(ConstructorCommand.java:69)
	at py4j.ClientServerConnection.waitForCommands(ClientServerConnection.java:182)
	at py4j.ClientServerConnection.run(ClientServerConnection.java:106)
	at java.base/java.lang.Thread.run(Unknown Source)

22/11/18 14:47:35 INFO SparkContext: Invoking stop() from shutdown hook

To Reproduce
On a Spark 3.2.2 (likely 3.x) installation:

Execute pip install git+https://github.com/awslabs/python-deequ.git@7ec9f6f72839779f370a4753c0db26d6cf052203
Create a file $SPARK_HOME/jobs/test.py with the following contents:

from pyspark.sql import SparkSession
from pydeequ import deequ_maven_coord
session = SparkSession.builder.getOrCreate()

Execute $SPARK_HOME/bin/spark-submit jobs/test.py

Expected behavior
PySpark won't crash when I try to make a spark session.
Screenshots
If applicable, add screenshots to help explain your problem.
Desktop (please complete the following information):

Apache spark-py 3.2.2 official docker image.

Specifically tagging @lecardozo for visibility.  Issue seems to be here:
https://github.com/awslabs/python-deequ/blob/7ec9f6f72839779f370a4753c0db26d6cf052203/pydeequ/configs.py#L15
My suspicion is that the subprocess doesn't fully close out the spark context, or at least it isn't garbage collected quickly enough, and the SparkSession builder somehow isn't able to find it across process boundaries?  Not entirely sure, but replacing this with the following snippet works for me locally:
def _get_spark_version() -> str:
    # Get version from a subprocess so we don't mess up with existing SparkContexts.
    session = SparkSession.builder.getOrCreate()
    version = session.version
    spark_version = version[:-2]
    session.stop()
    return spark_version

Thanks for the heads up, @pajablons!  😃

My suspicion is that the subprocess doesn't fully close out the spark context, or at least it isn't garbage collected quickly enough, and the SparkSession builder somehow isn't able to find it across process boundaries?

That might be what's happening. I opted for this "weird" subprocess-based solution because tests were failing with a solution similar to yours. Tests failed because, when the tests tried setting up a new context, actually just recycled the context that was already created inside _get_spark_version. As this was created without the deequ_maven_coord configuration, the dependencies were not downloaded, breaking the tests.
I have a feeling that your solution works in this case because you are just recycling the already created session (i.e. just getting, instead of creating). 🤔  Can you confirm to me if you could properly run tests with your suggested approach?
We might need to get back to the previous, explicit, approach of using the SPARK_VERSION. That way we can make sure that we do not interfere with users SparkContext creation.

On an additional note: I feel this _get_spark_version is a weird way to make the life of the user better, by telling it exactly the Maven coordinate that should be installed at runtime. I personally don't use the deequ_maven_config in production, though I agree it's useful for local testing.

Would you mind trying out the revert from this branch?
pip install https://github.com/lecardozo/python-deequ/archive/fix/get-spark-version.zip

Let me know if this is working for you, or if you have any suggestions. 😃

That revert works perfectly for me, with one little detail caveat-- It's not completely future proof (which isn't a new thing or a big deal).  This line:
https://github.com/lecardozo/python-deequ/blob/198c923891cff89230e12b8b92b28e524560c31f/pydeequ/configs.py#L27
Will obviously break if by some miracle Apache decides to drop spark 3.10.0 on us or something.  It's one of those super benign things that is probably never going to be an issue, but it's worth noting I think.


i18n(zh-cn): translate tutorial

What kind of changes does this PR include?

Translated content

Description

Chinese translation of the tutorial introduction
The continuation of another PR: https://github.com/withastro/docs/pull/2704

考虑到原译者目前可能没有时间和精力去继续这项翻译工作，我直接接手了翻译进度并且完成了剩余部分的翻译。为了不打扰原译者，我选择来直接另开一个 PR。当然如果任何人对此有其他想法，可以直接提出来。
Considering that the original translator @KurumiFrost may currently lack the time and energy to continue with this translation work, I have taken over the translation progress directly and completed the remaining part of the translation. In order to not disturb the original translator, I have chosen to open a new PR directly. Of course, if anyone has other ideas about this, they can directly propose them.
我刚刚完成基本的翻译就来开这个 PR 了，尽管我也认为它需要进一步修改，所以刚开始一段时间我可能会把这个 PR 设置为草稿（Draft）。这么早开 PR 的一个原因，就是为了让更多的译者能来审阅并提出修改意见。当我觉得这个翻译已经很完善的时候，我大概就会删除这个草案标记。
I just completed the basic translation and came to open this PR, although I also believe that it needs further modifications, so I might set this PR as a draft for a while at the beginning. One reason for opening the PR this early is to allow more translators to review it and provide suggestions for modifications. When I feel that the translation is already quite refined, I will probably remove the draft mark.
对于其他译者和贡献者： 如果你有任何修改意见，可以直接在这个 PR 中提出，也可以修改并提交后去我的仓库开一个 PR。
For other translators and contributors: If you have any suggestions for modifications, you can directly propose them in this PR or make modifications and submit a PR in my repository.

Very large workload. I will help review this pr.

I reviewed the first three units, I spotted a few small details.
Tomorrow I will continue.


Template test

Install syft in CI push stage

Pull Request Test Coverage Report for Build<PHONE_NUMBER>1
Details

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 8.546%

Totals

Change from base Build<PHONE_NUMBER>1:
0.0%

Covered Lines:
774

Relevant Lines:
9057

💛  - Coveralls


Newline in the table heading can't be removed

There is a bug with ER Table 1 in Entity Relation set where a newline in the table heading can't be removed. This may affect other objects.
Steps to reproduce:

Create new diagram.
Select ER Table 1 in Entity Relation set and drag and drop it on to the page.
In the table heading text field, write something short and enter newline and immediately remove it by pressing backspace.
Click in an empty space on the page to un-focus the table heading text field.

Observe that that the newline is still there. It takes some trial and error to remove it.

Still a bug

Thanks for the report. This will be fixed in the next release.

Thanks for the report. This will be fixed in the next release.


Update how-to-build-deploy-onnx.md

Updates based on latests ONNX Runtime release (OSS)

@faxu : Thanks for your contribution! The author, @prasanthpul, has been notified to review your proposed change.

#sign-off

@j-martens: I'm sorry - only the author of this article, @prasanthpul, can sign off on your changes. But we do have an exception process - if you are on the Microsoft content or product team for this product area, you can ask the PR review team to review and merge it by sending mail to the techdocprs alias.


Error running /bin/zsh "/var/folders/f3/l0x65b_j2c90lr5g6d_0y6x80000gn/T/vV1qr7d/7"|"/Users/xlc/.fzf/bin/fzf"

Category

[x] fzf binary
[ ] fzf-tmux script
[ ] Key bindings
[ ] Completion
[x] Vim
[x] Neovim
[ ] Etc.

OS

[ ] Linux
[x] Mac OS X
[ ] Windows
[ ] Windows Subsystem for Linux
[ ] Etc.

Shell

[ ] bash
[x] zsh
[ ] fish

vim:
Error running /bin/zsh "/var/folders/f3/l0x65b_j2c90lr5g6d_0y6x80000gn/T/v4Vnsdl/4"|"/Users/xlc/.fzf/bin/fzf" --color=bg+:237,bg:235,spinner:104,hl:168,fg:249,header:30,info:176,poi
nter:160,marker:36,fg+:36,prompt:134,hl+:81 --color=bg+:237,bg:235,spinner:104,hl:168,fg:249,header:30,info:176,pointer:160,marker:36,fg+:36,prompt:134,hl+:81 -m  --prompt '~/' --ex
pect=ctrl-v,ctrl-x,ctrl-t --height=19 > /var/folders/f3/l0x65b_j2c90lr5g6d_0y6x80000gn/T/v4Vnsdl/3

neovim:

I notice that you have just released a new version and I also update to the latest, does it caused by the new release? Is there any notes for this release?

Rerun the install script (~/.fzf/install) to download the latest binary.

Thanks!

I hit this same wall while using fzf in nvim inside iTerm. What's weird is that it works most of the time, but it fails about 3/10 times.

You can check if the command printed in the error message works outside of nvim.

I'm also getting this random segfaults errors while in the terminal (outside vim)
/usr/local/bin/fzf-tmux: line 89: 54372 Segmentation fault: 11  fzf "${args[@]}"

Please post the full command you executed.

I'm getting the original issue in vim. I've re-run the installation command to download the latest binary like you mentioned.
I get the following when I try :Files:
Error running /usr/local/bin/zsh "/var/folders/47/n2r2wmk55s977ztm6m2r1jlc0000gn/T/v0XdqgI/16"|"fzf"  -m  --prompt '~/' --expect=ctrl-v,ctrl-x,ctrl-t --height=17 > /var/folders/47/n2r2wmk55s977ztm6m2r1jlc0000 gn/T/v0XdqgI/15
The var/folders/47/n2r2wmk55s977ztm6m2r1jlc0000gn/T/v0XdqgI/ directory does not exist.

I completely uninstalled fzf and installed the latest version and the problem went away. It's been working perfectly for the last 2 weeks. 🎉

@junegunn I thought I'd ask here before I open a new issue, but I keep randomly having this error and it's annoying to the point that's making me consider not use fzf, which is one of my favorite plugins.
I've reinstalled fzf and fzf-git from aur mutliple times, updating the script from vim every time as well, but no matter what this bug comes back, and worse of all it makes my cpu spike to high temperatures until I kill it with ctrl+c.
The full error that I get is:
history/FZF' --color=bg+:#383a3e,spinner:#F92772,hl:#75715E,fg:#E8E8E3,header:#75715E,info:#
A6E22D,pointer:#F92772,marker:#66d9ef,fg+:#E8E8E3,prompt:#F92772,hl+:#F92772 '--multi' '--pr
ompt' '~/' --expect=ctrl-v,ctrl-x,ctrl-t --no-height > /tmp/nvimghd8Jx/3```


Could not load compiled classes for initialization script from cache

I have a multimodule Gradle project. There is a buildSrc folder inside this top-level project and it contains several Groovy Files with functional plugins including tests. I am using a Gradle wrapper with 2 initialization scripts - one to disable buildScan, and one for repository config.
Running "gradlew -p buildSrc test" inside top-level project results in failure of all tests using GradleRunner. These failed tests have not been executed properly, i.e. failure came much too fast and surely is not a result of expectations that were not met. Stacktrace points to the line were GradleRunner is called.
This strange behavior came all of a sudden. All tests could be run before and all of them passed.
Here is what I have tried so far:

run task with --debug -> but there was no additional info about failure itself
delete ~/.gradle dir
delete multimodule project, then do a fresh checkout from VCS
gradlew --stop -> stopped daemon but did not solve the issue
reboot Windows

Despite all of these measures the error keeps returning.
output from --info
info.txt
stacktrace
stacktrace.txt
output from --version
version.txt

A colleague of mine found a way to alleviate the issue. Since the plugin tests use a JUnit Rule to create temporary folders I checked "C:\Users<username>\AppData\Local\Temp" for files and folders related to these tests. While there were empty junit folders it turned out that after removing ".gradle-test-kit-" directory the tests were working again.
It would be great to have someone reproduce the issue since the "why" behind this case is still unknown.

A colleague of mine found a way to alleviate the issue. Since the plugin tests use a JUnit Rule to create temporary folders I checked "C:\Users<username>\AppData\Local\Temp" for files and folders related to these tests. While there were empty junit folders it turned out that after removing ".gradle-test-kit-" directory the tests were working again.
It would be great to have someone reproduce the issue since the "why" behind this case is still unknown.

You can alleviate the problem with  https://github.com/gradle/gradle/issues/4506#issuecomment-729169154

Thank you @martinda.
Good to know there is another issue associated with gradle-test-kit-* directory. The withTestKitDir( File) option could be used as a workaround. It must however be used in conjunction with a cleanup mechanism, e.g. configuring the Test task to have the directory in question deleted before task execution. On the other hand there sure is a reason behind the fact that Gradle Runner does not delete the directory by itself.

I had the exact same problem and I think it is related to the gradle daemon. I usually don't have it running because it sometimes gives me random problems related to files being locked. However, I wanted to give it another try as I was getting somewhat tired of waiting for gradle to "warm up". At first it worked really good. After a while I got some folders locked again (could not delete them but I could delete contents), so I disabled it. Things kept working for a while but then I made a small refactoring and my tests kept complaining about not being able to load compiled classes and always Caused by: java.lang.ClassNotFoundException: build_<some-random-string>.
I suspect that the daemon kept locks on some gradle-test-kit files so they could not be cleaned up and despite reboot and removing the entire ~/.gradle folder the error kept coming back. Everything worked fine on other machines.
I got it working again after deleting the ".gradle-test-kit-" directory as suggested by @mroeppis in this thread.
$ ./gradlew --version

------------------------------------------------------------
Gradle 6.9.2
------------------------------------------------------------

Build time:   2021-12-21 20:18:38 UTC
Revision:     5d94aa68c0fdbe443838bb977080e3b9f273e889

Kotlin:       1.4.20
Groovy:       2.5.12
Ant:          Apache Ant(TM) version 1.10.9 compiled on September 27 2020
JVM:          11.0.13 (Eclipse Adoptium 11.0.13+8)
OS:           Windows 10 10.0 amd64

am facing this challenge
Could not load compiled classes for settings file 'C:\Users\user\Desktop\top2\flutter_application\android\settings.gradle' from cache.

settings_40bag1r29t3wdmkm1uuelbobr


"null" in unit field

Describe the bug
When Agent Configuration is complete, I get Data Points with unit property = "null" (String), instead of empty field.
Because of that remapping to another Asset is impossible as DATATYPE and UNIT do not match.

@sergeyk183 could you please write here if you are using start-for-free or a developer tenant (it is important, because the start-for-free tenants have api rate limitations in place which can affect the creation of mappings)
Regarding the null issue, do you have a unit configured in the AssetManagement for your second aspect?

I think i found the reason. This is happening because MindSphere has recently changed the requirement for the variables to have a unit and they have introduced a special meaning for the null values which only the UI knows about but not the CLI, node-RED etc.

This is technically an unannounced API change but I will see what I can do.


US98268: Be less opinionated about boolean implementations of behavio…

…ur. Computed values of these booleans may not be as deterministic as these tests imply.

@ryantmer I don't think these verifications are providing us sufficient value for the work they'd require to keep up to date. Making sure they exist seems sufficient for now.


[zh] sync configure-persistent-volume-storage.md

Sync with en.
content/zh-cn/docs/tasks/configure-pod-container/configure-persistent-volume-storage.md

CI jobs are failed


Failed REST request

Hi,
I'm trying to use this to post data from a sensor (XDK bosch) using c-programming to the mock api, but I am getting this error:
Failed to send REST request!
The code works with my other webservice API. Any idea what might be the issue?

@captmomo Does it work when sending the request using CURL instead?


Release 0.12.1

Pom changes during release.

Codecov Report

Merging #113 into master will not change coverage.
The diff coverage is n/a.

@@            Coverage Diff            @@
##             master     #113   +/-   ##
=========================================
  Coverage     72.55%   72.55%
  Complexity      245      245
=========================================
  Files            48       48
  Lines           849      849
  Branches         40       40
=========================================
  Hits            616      616
  Misses          209      209
  Partials         24       24

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update b7edb29...52b1a9b. Read the comment docs.

👍


Check mysql charset, if it's utf8, display an error log

This PR will check MySQL database charset when Gitea start. If it's utf8, an error log will be displayed.

The CI failure is related.

Hmm, so we used an incorrect database to test for years? 😂

It's wired, we never test emoji with our CI mysql services?

What about adding a "self check" page in site admin?
It could do a full self check, including:

database versions (pgsql, mysql, etc)
database charsets (mysql)
reverse proxy rewriting and sub path (eg: is %2F kept?)
system time (to resolve incorrect OTP problems)
system health like free disk, etc

What about adding a "self check" page in site admin?
It could do a full self check, including:
1. database versions (pgsql, mysql, etc)

2. database charsets (mysql), not only just checking default, but check all columns.

3. reverse proxy rewriting and sub path (eg: is `%2F` kept?)

4. system time (to resolve incorrect OTP problems)

5. system health like free disk, etc

sounds like web-based gitea doctor

Yes, some checks could only be done by web UI (eg: 3, 4)

UI self check I'd say is out of scope for this PR.

UI self check I'd say is out of scope for this PR, but I agree it might be useful.

But checking default charset is not enough. Every column should be checked one by one.

UI self check I'd say is out of scope for this PR, but I agree it might be useful.

But checking default charset is not enough. Every column should be checked one by one.

I think you are right, but we should not check them when start. It should be a backend task.

UI self check I'd say is out of scope for this PR, but I agree it might be useful.

But checking default charset is not enough. Every column should be checked one by one.

I think you are right, but we should not check them when start. It should be a backend task.

That why I suggest to make an admin UI

Still not sure about UI.
How about actually refusing to start on wrong charset? Yes it's strict, but it's the only way to really ensure all users get it.

IMO an admin UI is the only solution. See these 5 points (actually not only these)
We shouldn't stop Gitea from starting, and we should do full check (check every column) when starting. So we still need an admin UI.

How about doing a full table check and display a warning on dashboard to every admin user if issues found? That should be a simple UI to add and would be better than something hidden away in the admin section. I assume a full table scan won't take so long.

How about doing a full table check and display a warning on frontpage to every admin user if issues were found? That should be a simple UI to add and would be better than something hidden away in the admin section. I assume a full table scan won't take so long.
For people concerned about startup performance, we could add a opt-out to these checks in config.

Atlassian does exactly this (a full table check, and then reports in UI) for the datacentre version of their products, they aren't blocking on the boot of the server (IIRC) and so we could probably do something similar.
I agree re: having it block the startup for the check is bad. At the very least a one-off "on-boot" cron might be sufficient.

Close as this will break users' instances.


[Frontend] Making InfluencersList.js responsive

In this the influencers brands both etc ..bar should be a slider with clickable buttons and dropdown. the top bar and menu bar shoudl be fixed with bottom bar buttons are clickable and search button should be working like when search button is clicked a search bar of same alignment should open and marketplace title should disappear and dp shoudl appear in same shape

Hey @RohitGupta1237
Assign me the issue.

Hey @RohitGupta1237
What about the items of dropdown's..?

@BHS-Harish add any randoms xyz for now

Filter button should be fixed at bottom... Am i right..?

@BHS-Harish yes it should be fixed but while content is scrolling then its should become translucent

@BHS-Harish  hey sent on mail


private method `print' called for nil:NilClass

This might be because i'm using the preview on 3.0.1. However, when I invoke the debugger (f5) and enter into the "Debug Command Line" the following ruby /Users/joeed/test/blah.rb
I get the following error:
/Users/joeed/.asdf/installs/ruby/3.0.1/lib/ruby/gems/3.0.0/gems/debug-1.0.0.rc2/lib/debug/server_dap.rb:85:in `send': private method `print' called for nil:NilClass (NoMethodError)
        from /Users/joeed/.asdf/installs/ruby/3.0.1/lib/ruby/gems/3.0.0/gems/debug-1.0.0.rc2/lib/debug/server_dap.rb:110:in `send_event'
        from /Users/joeed/.asdf/installs/ruby/3.0.1/lib/ruby/gems/3.0.0/gems/debug-1.0.0.rc2/lib/debug/server_dap.rb:259:in `event'
        from /Users/joeed/.asdf/installs/ruby/3.0.1/lib/ruby/gems/3.0.0/gems/debug-1.0.0.rc2/lib/debug/session.rb:193:in `session_server_main'

If I enter:
rdbg -c ruby /Users/joeed/unifi/test/blah.rb
or
rdbg /Users/joeed/unifi/test/blah.rb
They work and drop me into a debugger session in the terminal. However the "Watch", "Call Stack" and "Variables" sections are not populated in VSCode (i'm not sure if they are supposed to be or if that hasn't been implemented in this plugin yet)

The complete error:
DEBUGGER: Session start (pid: 74540)
DEBUGGER: Debugger can attach via UNIX domain socket (/Users/joeed/.ruby-debug-sock/ruby-debug-joeed-74409)
DEBUGGER: wait for debugger connection...
DEBUGGER: Connected.
DEBUGGER: ReaderThreadError: undefined method `add_catch_breakpoint' for DEBUGGER__::SESSION:DEBUGGER__::Session
Did you mean?  add_check_breakpoint
               add_line_breakpoint
DEBUGGER: Disconnected.
#<Thread:0x00007fcbb001d168@DEBUGGER__::SESSION@server /Users/joeed/.asdf/installs/ruby/3.0.1/lib/ruby/gems/3.0.0/gems/debug-1.0.0.rc2/lib/debug/session.rb:110 run> terminated with exception (report_on_exception is true):
/Users/joeed/.asdf/installs/ruby/3.0.1/lib/ruby/gems/3.0.0/gems/debug-1.0.0.rc2/lib/debug/server_dap.rb:85:in `send': private method `print' called for nil:NilClass (NoMethodError)
        from /Users/joeed/.asdf/installs/ruby/3.0.1/lib/ruby/gems/3.0.0/gems/debug-1.0.0.rc2/lib/debug/server_dap.rb:110:in `send_event'
        from /Users/joeed/.asdf/installs/ruby/3.0.1/lib/ruby/gems/3.0.0/gems/debug-1.0.0.rc2/lib/debug/server_dap.rb:259:in `event'
        from /Users/joeed/.asdf/installs/ruby/3.0.1/lib/ruby/gems/3.0.0/gems/debug-1.0.0.rc2/lib/debug/session.rb:193:in `session_server_main'
        from /Users/joeed/.asdf/installs/ruby/3.0.1/lib/ruby/gems/3.0.0/gems/debug-1.0.0.rc2/lib/debug/session.rb:113:in `block in activate'
["DEBUGGER Exception: /Users/joeed/.asdf/installs/ruby/3.0.1/lib/ruby/gems/3.0.0/gems/debug-1.0.0.rc2/lib/debug/thread_client.rb:956",
 #<NoMethodError: private method `print' called for nil:NilClass>,
 ["/Users/joeed/.asdf/installs/ruby/3.0.1/lib/ruby/gems/3.0.0/gems/debug-1.0.0.rc2/lib/debug/server_dap.rb:85:in `send'",
  "/Users/joeed/.asdf/installs/ruby/3.0.1/lib/ruby/gems/3.0.0/gems/debug-1.0.0.rc2/lib/debug/server_dap.rb:110:in `send_event'",
  "/Users/joeed/.asdf/installs/ruby/3.0.1/lib/ruby/gems/3.0.0/gems/debug-1.0.0.rc2/lib/debug/server_dap.rb:259:in `event'",
  "/Users/joeed/.asdf/installs/ruby/3.0.1/lib/ruby/gems/3.0.0/gems/debug-1.0.0.rc2/lib/debug/session.rb:193:in `session_server_main'",
  "/Users/joeed/.asdf/installs/ruby/3.0.1/lib/ruby/gems/3.0.0/gems/debug-1.0.0.rc2/lib/debug/session.rb:113:in `block in activate'"]]
/Users/joeed/.asdf/installs/ruby/3.0.1/lib/ruby/gems/3.0.0/gems/debug-1.0.0.rc2/lib/debug/server_dap.rb:85:in `send': private method `print' called for nil:NilClass (NoMethodError)
        from /Users/joeed/.asdf/installs/ruby/3.0.1/lib/ruby/gems/3.0.0/gems/debug-1.0.0.rc2/lib/debug/server_dap.rb:110:in `send_event'
        from /Users/joeed/.asdf/installs/ruby/3.0.1/lib/ruby/gems/3.0.0/gems/debug-1.0.0.rc2/lib/debug/server_dap.rb:259:in `event'
        from /Users/joeed/.asdf/installs/ruby/3.0.1/lib/ruby/gems/3.0.0/gems/debug-1.0.0.rc2/lib/debug/session.rb:193:in `session_server_main'
        from /Users/joeed/.asdf/installs/ruby/3.0.1/lib/ruby/gems/3.0.0/gems/debug-1.0.0.rc2/lib/debug/session.rb:113:in `block in activate'
        ```

Thank you for your report. Could you share us your trial script?

Please open this issue if your script if you still have a issue on latest version.


Is to possible for only parent to call a function?

I have a function binded on @node:checked  and @node:unchecked which calls an API endpoint and returns data. My problem is that each time a parent node is checked/unchecked the endpoint is called for each node/child inside that parent. Is there a way for a parent to call only once disregarding the children? I get all selected/unselected nodes before calling the endpoint so i just need to call it once on parent.

Hi! I've added a new version. 2th arguments was added when autoCheckChildren is true. You can try:
this.$refs.tree.$on('node:checked', (currentNode, targetNode) => {
 if (!targetNode) {
  // ... call the API
 }
})

@amsik It works perfectly! Thanks!


Object.constructor isn't implemented specifically enough

Consider:
class Foo extends ([].constructor) {
}

[].constructor should be Array, which we aught to be able to extend. However, the checker complains on [].constructor that "Type 'Function' is not a constructor function type". Considering .constructor is quite explicitly the constructor function for the object, I believe this is a lie perpetuated by our lib.d.ts files. I think we need to go add appropriate self-constructor-referencing .constructor fields to each builtin.
Additionally consider the following:
class Bar {
}

class Foo extends ((new Bar()).constructor) {
}

The same thing but with a custom class rather than a builtin. We should know the correct type of .constructor here (the Bar class), but we don't - we just look at the members on Object.
In the first example, I believe it could be fixed with more precise lib files, but in the second case, I believe this is an instance of a field whose type should be known by the compiler, much like .prototype on the class itself is known.

Dupe of #4356?

Partially? The last bit where .constructor should be compiler inferred is a dupe of that, for sure.
But in the immediate future, we should fix our lib.d.ts files so that for builtins it is actually typed to the constructor function and not Function, as in the [].constructor example above.

Feel free to send a PR for this.

I'd like to share a workaround for when you need constructor property to have correct type. You can just specify the type using interface.
class Thing {

}

interface Thing {
    constructor: typeof Thing;
}

let a = new Thing();
let b = new a.constructor(); // compiles just fine and the b has type Thing


Climate-801

Add new tests for dataset processor module.

Can one of the admins verify this patch?

please merge to master once the CI build is successful

+1 please merge in to master


Reduce pcap timeout to avoid overflow

Fixes #3774
The value is passed by google/gopacket into a signed 32-bit int, so we must pick a timeout which is less than 2^31 microseconds.
See https://github.com/google/gopacket/issues/708

LGTM


chore(deps): upgrade dev dependencies

Upgrades project dependencies. See details in workflow run.

Automatically created by projen via the "upgrade-dev-dependencies-k8s-30-main" workflow

⚪ Backport skipped
The pull request was not backported as there were no branches to backport to. If this is a mistake, please apply the desired version labels or run the backport tool manually.
Manual backport
To create the backport manually run:
backport --pr 4724

Questions ?
Please refer to the Backport tool documentation


Build fails on Jazzy

Yeah it's that time of the year again 😄
Building the existing Humble branch with Cyclone set as the RMW results in the following, I think it's the same for FastDDS:
--- stderr: rws
/home/ubuntu/colcon_ws/src/rws/src/typesupport_helpers.cpp:20:10: fatal error: ament_index_cpp/get_package_prefix.hpp: No such file or directory
   20 | #include "ament_index_cpp/get_package_prefix.hpp"
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
gmake[2]: *** [CMakeFiles/rws_typesupport_helpers_test.dir/build.make:76: CMakeFiles/rws_typesupport_helpers_test.dir/src/typesupport_helpers.cpp.o] Error 1
gmake[1]: *** [CMakeFiles/Makefile2:285: CMakeFiles/rws_typesupport_helpers_test.dir/all] Error 2
gmake[1]: *** Waiting for unfinished jobs....
/home/ubuntu/colcon_ws/src/rws/src/typesupport_helpers.cpp:20:10: fatal error: ament_index_cpp/get_package_prefix.hpp: No such file or directory
   20 | #include "ament_index_cpp/get_package_prefix.hpp"
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
gmake[2]: *** [CMakeFiles/rws_translate_test.dir/build.make:76: CMakeFiles/rws_translate_test.dir/src/typesupport_helpers.cpp.o] Error 1
gmake[2]: *** Waiting for unfinished jobs....
/home/ubuntu/colcon_ws/src/rws/src/typesupport_helpers.cpp:20:10: fatal error: ament_index_cpp/get_package_prefix.hpp: No such file or directory
   20 | #include "ament_index_cpp/get_package_prefix.hpp"
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
gmake[2]: *** [CMakeFiles/rws_server.dir/build.make:132: CMakeFiles/rws_server.dir/src/typesupport_helpers.cpp.o] Error 1
gmake[2]: *** Waiting for unfinished jobs....
/home/ubuntu/colcon_ws/src/rws/src/translate.cpp: In function ‘rws::json rws::serialized_message_to_json(const std::string&, ConstSharedMessage)’:
/home/ubuntu/colcon_ws/src/rws/src/translate.cpp:152:43: warning: ‘const rosidl_message_type_support_t* rclcpp::get_typesupport_handle(const std::string&, const std::string&, rcpputils::SharedLibrary&)’ is deprecated: Use `get_message_typesupport_handle` instead [-Wdeprecated-declarations]
  152 |   auto ts = rclcpp::get_typesupport_handle(msg_type, rws::ts_identifier, *library);
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /opt/ros/jazzy/include/rclcpp/rclcpp/generic_publisher.hpp:31,
                 from /opt/ros/jazzy/include/rclcpp/rclcpp/node.hpp:46,
                 from /opt/ros/jazzy/include/rclcpp/rclcpp/executors/single_threaded_executor.hpp:28,
                 from /opt/ros/jazzy/include/rclcpp/rclcpp/executors.hpp:22,
                 from /opt/ros/jazzy/include/rclcpp/rclcpp/rclcpp.hpp:172,
                 from /home/ubuntu/colcon_ws/src/rws/src/translate.cpp:17:
/opt/ros/jazzy/include/rclcpp/rclcpp/typesupport_helpers.hpp:55:1: note: declared here
   55 | get_typesupport_handle(
      | ^~~~~~~~~~~~~~~~~~~~~~
/home/ubuntu/colcon_ws/src/rws/src/translate.cpp: In function ‘rws::SharedMessage rws::json_to_serialized_message(const std::string&, const json&)’:
/home/ubuntu/colcon_ws/src/rws/src/translate.cpp:280:43: warning: ‘const rosidl_message_type_support_t* rclcpp::get_typesupport_handle(const std::string&, const std::string&, rcpputils::SharedLibrary&)’ is deprecated: Use `get_message_typesupport_handle` instead [-Wdeprecated-declarations]
  280 |   auto ts = rclcpp::get_typesupport_handle(msg_type, rws::ts_identifier, *library);
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/opt/ros/jazzy/include/rclcpp/rclcpp/typesupport_helpers.hpp:55:1: note: declared here
   55 | get_typesupport_handle(
      | ^~~~~~~~~~~~~~~~~~~~~~
/home/ubuntu/colcon_ws/src/rws/src/translate.cpp: In function ‘std::string rws::generate_message_meta(const std::string&, bool)’:
/home/ubuntu/colcon_ws/src/rws/src/translate.cpp:422:43: warning: ‘const rosidl_message_type_support_t* rclcpp::get_typesupport_handle(const std::string&, const std::string&, rcpputils::SharedLibrary&)’ is deprecated: Use `get_message_typesupport_handle` instead [-Wdeprecated-declarations]
  422 |   auto ts = rclcpp::get_typesupport_handle(msg_type, rws::ts_identifier, *library);
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/opt/ros/jazzy/include/rclcpp/rclcpp/typesupport_helpers.hpp:55:1: note: declared here
   55 | get_typesupport_handle(
      | ^~~~~~~~~~~~~~~~~~~~~~
In file included from /home/ubuntu/colcon_ws/src/rws/include/rws/node_interface.hpp:6,
                 from /home/ubuntu/colcon_ws/src/rws/include/rws/connector.hpp:8,
                 from /home/ubuntu/colcon_ws/src/rws/include/rws/client_handler.hpp:21,
                 from /home/ubuntu/colcon_ws/src/rws/src/server_node.cpp:22:
/home/ubuntu/colcon_ws/src/rws/include/rws/generic_client.hpp: In constructor ‘rws::GenericClient::GenericClient(rclcpp::node_interfaces::NodeBaseInterface*, rclcpp::node_interfaces::NodeGraphInterface::SharedPtr, std::string, std::string, rcl_client_options_t&)’:
/home/ubuntu/colcon_ws/src/rws/include/rws/generic_client.hpp:65:49: warning: ‘const rosidl_message_type_support_t* rclcpp::get_typesupport_handle(const std::string&, const std::string&, rcpputils::SharedLibrary&)’ is deprecated: Use `get_message_typesupport_handle` instead [-Wdeprecated-declarations]
   65 |     req_ts_hdl_ = rclcpp::get_typesupport_handle(request_type, rws::ts_identifier, *req_ts_lib_);
      |                   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /opt/ros/jazzy/include/rclcpp/rclcpp/generic_publisher.hpp:31,
                 from /opt/ros/jazzy/include/rclcpp/rclcpp/node.hpp:46,
                 from /opt/ros/jazzy/include/rclcpp/rclcpp/executors/single_threaded_executor.hpp:28,
                 from /opt/ros/jazzy/include/rclcpp/rclcpp/executors.hpp:22,
                 from /home/ubuntu/colcon_ws/src/rws/src/server_node.cpp:20:
/opt/ros/jazzy/include/rclcpp/rclcpp/typesupport_helpers.hpp:55:1: note: declared here
   55 | get_typesupport_handle(
      | ^~~~~~~~~~~~~~~~~~~~~~
/home/ubuntu/colcon_ws/src/rws/include/rws/generic_client.hpp:70:49: warning: ‘const rosidl_message_type_support_t* rclcpp::get_typesupport_handle(const std::string&, const std::string&, rcpputils::SharedLibrary&)’ is deprecated: Use `get_message_typesupport_handle` instead [-Wdeprecated-declarations]
   70 |     res_ts_hdl_ = rclcpp::get_typesupport_handle(response_type, rws::ts_identifier, *res_ts_lib_);
      |                   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/opt/ros/jazzy/include/rclcpp/rclcpp/typesupport_helpers.hpp:55:1: note: declared here
   55 | get_typesupport_handle(
      | ^~~~~~~~~~~~~~~~~~~~~~
gmake[1]: *** [CMakeFiles/Makefile2:258: CMakeFiles/rws_translate_test.dir/all] Error 2
In file included from /usr/include/c++/13/bits/stl_tempbuf.h:61,
                 from /usr/include/c++/13/bits/stl_algo.h:69,
                 from /usr/include/c++/13/algorithm:61,
                 from /home/ubuntu/colcon_ws/build/rws/_deps/json-src/include/nlohmann/json.hpp:21,
                 from /home/ubuntu/colcon_ws/src/rws/src/server_node.cpp:16:
/usr/include/c++/13/bits/stl_construct.h: In instantiation of ‘void std::_Construct(_Tp*, _Args&& ...) [with _Tp = rclcpp::GenericSubscription; _Args = {rclcpp::node_interfaces::NodeBaseInterface*, shared_ptr<rcpputils::SharedLibrary>, const __cxx11::basic_string<char, char_traits<char>, allocator<char> >&, const __cxx11::basic_string<char, char_traits<char>, allocator<char> >&, const rclcpp::QoS&, function<void(shared_ptr<const rclcpp::SerializedMessage>)>&, const rclcpp::SubscriptionOptionsWithAllocator<allocator<void> >&}]’:
/usr/include/c++/13/bits/alloc_traits.h:661:19:   required from ‘static void std::allocator_traits<std::allocator<void> >::construct(allocator_type&, _Up*, _Args&& ...) [with _Up = rclcpp::GenericSubscription; _Args = {rclcpp::node_interfaces::NodeBaseInterface*, std::shared_ptr<rcpputils::SharedLibrary>, const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const rclcpp::QoS&, std::function<void(std::shared_ptr<const rclcpp::SerializedMessage>)>&, const rclcpp::SubscriptionOptionsWithAllocator<std::allocator<void> >&}; allocator_type = std::allocator<void>]’
/usr/include/c++/13/bits/shared_ptr_base.h:604:39:   required from ‘std::_Sp_counted_ptr_inplace<_Tp, _Alloc, _Lp>::_Sp_counted_ptr_inplace(_Alloc, _Args&& ...) [with _Args = {rclcpp::node_interfaces::NodeBaseInterface*, std::shared_ptr<rcpputils::SharedLibrary>, const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const rclcpp::QoS&, std::function<void(std::shared_ptr<const rclcpp::SerializedMessage>)>&, const rclcpp::SubscriptionOptionsWithAllocator<std::allocator<void> >&}; _Tp = rclcpp::GenericSubscription; _Alloc = std::allocator<void>; __gnu_cxx::_Lock_policy _Lp = __gnu_cxx::_S_atomic]’
/usr/include/c++/13/bits/shared_ptr_base.h:971:16:   required from ‘std::__shared_count<_Lp>::__shared_count(_Tp*&, std::_Sp_alloc_shared_tag<_Alloc>, _Args&& ...) [with _Tp = rclcpp::GenericSubscription; _Alloc = std::allocator<void>; _Args = {rclcpp::node_interfaces::NodeBaseInterface*, std::shared_ptr<rcpputils::SharedLibrary>, const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const rclcpp::QoS&, std::function<void(std::shared_ptr<const rclcpp::SerializedMessage>)>&, const rclcpp::SubscriptionOptionsWithAllocator<std::allocator<void> >&}; __gnu_cxx::_Lock_policy _Lp = __gnu_cxx::_S_atomic]’
/usr/include/c++/13/bits/shared_ptr_base.h:1712:14:   required from ‘std::__shared_ptr<_Tp, _Lp>::__shared_ptr(std::_Sp_alloc_shared_tag<_Tp>, _Args&& ...) [with _Alloc = std::allocator<void>; _Args = {rclcpp::node_interfaces::NodeBaseInterface*, std::shared_ptr<rcpputils::SharedLibrary>, const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const rclcpp::QoS&, std::function<void(std::shared_ptr<const rclcpp::SerializedMessage>)>&, const rclcpp::SubscriptionOptionsWithAllocator<std::allocator<void> >&}; _Tp = rclcpp::GenericSubscription; __gnu_cxx::_Lock_policy _Lp = __gnu_cxx::_S_atomic]’
/usr/include/c++/13/bits/shared_ptr.h:464:59:   required from ‘std::shared_ptr<_Tp>::shared_ptr(std::_Sp_alloc_shared_tag<_Tp>, _Args&& ...) [with _Alloc = std::allocator<void>; _Args = {rclcpp::node_interfaces::NodeBaseInterface*, std::shared_ptr<rcpputils::SharedLibrary>, const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const rclcpp::QoS&, std::function<void(std::shared_ptr<const rclcpp::SerializedMessage>)>&, const rclcpp::SubscriptionOptionsWithAllocator<std::allocator<void> >&}; _Tp = rclcpp::GenericSubscription]’
/usr/include/c++/13/bits/shared_ptr.h:1009:14:   required from ‘std::shared_ptr<typename std::enable_if<(! std::is_array< <template-parameter-1-1> >::value), _Tp>::type> std::make_shared(_Args&& ...) [with _Tp = rclcpp::GenericSubscription; _Args = {rclcpp::node_interfaces::NodeBaseInterface*, shared_ptr<rcpputils::SharedLibrary>, const __cxx11::basic_string<char, char_traits<char>, allocator<char> >&, const __cxx11::basic_string<char, char_traits<char>, allocator<char> >&, const rclcpp::QoS&, function<void(shared_ptr<const rclcpp::SerializedMessage>)>&, const rclcpp::SubscriptionOptionsWithAllocator<allocator<void> >&}; typename enable_if<(! is_array< <template-parameter-1-1> >::value), _Tp>::type = rclcpp::GenericSubscription]’
/home/ubuntu/colcon_ws/src/rws/include/rws/node_interface_impl.hpp:25:70:   required from here
/usr/include/c++/13/bits/stl_construct.h:119:7: error: no matching function for call to ‘rclcpp::GenericSubscription::GenericSubscription(rclcpp::node_interfaces::NodeBaseInterface*, std::shared_ptr<rcpputils::SharedLibrary>, const std::__cxx11::basic_string<char>&, const std::__cxx11::basic_string<char>&, const rclcpp::QoS&, std::function<void(std::shared_ptr<const rclcpp::SerializedMessage>)>&, const rclcpp::SubscriptionOptionsWithAllocator<std::allocator<void> >&)’
  119 |       ::new((void*)__p) _Tp(std::forward<_Args>(__args)...);
      |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /opt/ros/jazzy/include/rclcpp/rclcpp/node.hpp:47:
/opt/ros/jazzy/include/rclcpp/rclcpp/generic_subscription.hpp:71:3: note: candidate: ‘template<class AllocatorT> rclcpp::GenericSubscription::GenericSubscription(rclcpp::node_interfaces::NodeBaseInterface*, std::shared_ptr<rcpputils::SharedLibrary>, const std::string&, const std::string&, const rclcpp::QoS&, rclcpp::AnySubscriptionCallback<rclcpp::SerializedMessage, AllocatorT>, const rclcpp::SubscriptionOptionsWithAllocator<AllocatorT>&)’
   71 |   GenericSubscription(
      |   ^~~~~~~~~~~~~~~~~~~
/opt/ros/jazzy/include/rclcpp/rclcpp/generic_subscription.hpp:71:3: note:   template argument deduction/substitution failed:
/usr/include/c++/13/bits/stl_construct.h:119:7: note:   ‘std::function<void(std::shared_ptr<const rclcpp::SerializedMessage>)>’ is not derived from ‘rclcpp::AnySubscriptionCallback<rclcpp::SerializedMessage, AllocatorT>’
  119 |       ::new((void*)__p) _Tp(std::forward<_Args>(__args)...);
      |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
gmake[2]: *** [CMakeFiles/rws_server.dir/build.make:104: CMakeFiles/rws_server.dir/src/server_node.cpp.o] Error 1
gmake[1]: *** [CMakeFiles/Makefile2:231: CMakeFiles/rws_server.dir/all] Error 2
gmake: *** [Makefile:146: all] Error 2
---
Failed   <<< rws [14.3s, exited with code 2]

Summary: 17 packages finished [20.8s]
  1 package failed: rws

Looks vaguely like they changed something regarding generic subscribers.

Yeah it's that time of the year again 😄

It's like annual celebration)
Here's PR https://github.com/v-kiniv/rws/pull/31, not thoroughly tested, hope you can help with that

Indeed I can :) It builds on jazzy now and I've and ran the test nodes for vizanti (I don't really have an actual robot set up yet) and it seems to all work with #31. I'll test it more in the coming days, but I think it's all sorted. 👍
There is another problem involving sending arrays from the web side that I've also been seeing on humble, but I need to gather more data on it first so I'll log that as its own issue when I can.
In terms of performance benchmarking on the Pi 5 I'm seeing 20% cpu usage with rws under heavy load and 100% with rosbridge which seems to just cap out and can't keep up. About the same with cyclone and fastdds. There's also some talk about zenoh being ready soon, I hope it'll be possible to get topic introspection there.

Indeed I can :) It builds on jazzy now and I've and ran the test nodes for vizanti (I don't really have an actual robot set up yet) and it seems to all work with https://github.com/v-kiniv/rws/pull/31. I'll test it more in the coming days, but I think it's all sorted, thanks. 👍

Ok, I'm going to merge PR then and close the issue. If anything came up, just open another issue, thanks for testing.

There is another problem involving sending arrays from the web side that I've also been seeing on humble, but I need to gather more data on it first so I'll log that as its own issue when I can.

Would be great if you can setup small test fixture using Vizanti for example, so I can just fetch it and start testing, but yeah let's discuss in details in a separate issue.

In terms of performance benchmarking on the Pi 5 I'm seeing 20% cpu usage with rws under heavy load and 100% with rosbridge which seems to just cap out and can't keep up. About the same with cyclone and fastdds. There's also some talk about zenoh being ready soon, I hope it'll be possible to get topic introspection there...

As for performance, it's not bad at all, although there is still room for improvement in terms of compatibility.
Pesky tradeoffs - that's why we can't have nice things)
I haven't heard of zenoh, I'm a bit out of the loop on ROS now because I'm no longer working on the robotics project I made RWS for. Regarding zenoh, if it'll follow the same frame as cyclone and fastdds, should be possible. Ping me when it's ready and I'll look into it.

Would be great if you can setup small test fixture using Vizanti for exampl

Will do :)

I haven't heard of zenoh, I'm a bit out of the loop on ROS now because I'm no longer working on the robotics project I made RWS for. Regarding zenoh, if it'll follow the same frame as cyclone and fastdds, should be possible. Ping me when it's ready and I'll look into it.

Yeah it's this silver bullet people have been claiming will fix all DDS issues since it's an RMW that's not actually a DDS and is supposedly a very lightweight. Haven't tested it out myself yet since it hasn't been officially released yet and I've been mostly on Noetic this past few months again.
https://github.com/eclipse-zenoh/zenoh
https://github.com/ros2/rmw_zenoh
I'll let you know once I dive into it. 😃


Fix for NUTCH-2317: Plugin jars don't get added to classpath

@sujen please reference the Jira issue in your comment on the PR. It makes it much easier for those of us who review patches. Good job on this one this has been bugging us for a while. Thanks Sujen.

Forgot to say... +1

Thanks, here is the link to JIRS - https://issues.apache.org/jira/browse/NUTCH-2317

-1

this would mean to have all libs from all plugins on the classpath. In consequence, we would have to make sure that there are absolutely no conflicts between all dependencies.
this solution would have only effect in local mode but not for distributed mode where plugins and their dependencies are in the job file

Excellent points Seb. Some suggestions below
On Sep 25, 2016 2:53 AM, "Sebastian Nagel"<EMAIL_ADDRESS>wrote:

-1
this would mean to have all libs from all plugins on the classpath.

Your right this is not good as several plugins may not be being used in The
deployment. Maybe we should look into removing the unused plugins from the
copy command when we copy from /build to /runtime. That would solve the
issue you've pointed out. Wdyt?
In consequence, we would have to make sure that there are absolutely no
conflicts between all dependencies.
Is this a bad thing? Imho it is a good thing. It is possibly a naive
position to assume that we can obtain zero conflicts.

this solution would have only effect in local mode but not for
distributed mode where plugins and their dependencies are in the job file
Correct. That is another issue which has not been addressed yet.

—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or mute the thread.

The advantage of the current implementation and the plugin class loader: two independent plugins can have conflicting library versions as dependencies. There may be still conflicts between "base" libs and plugin dependencies, see https://issues.apache.org/jira/browse/NUTCH-2316 for such an issue.
To add only libs from activated plugins to the class path would only make conflicts less probable. But we allow users to use any combination of available plugins, so sooner or later we see a conflict as a Jira issue. Also making the build use a runtime configuration such as the property plugin.includes would violate the idea that users always can deploy their configuration by just placing the customized nutch-site.xml in a folder which comes early on the classpath.

In consequence, we would have to make sure that there are absolutely no conflicts between all dependencies. Is this a bad thing? Imho it is a good thing. It is possibly a naive position to assume that we can obtain zero conflicts.

Yes, of course, it would be the best solution if we could resolve all conflicts. No question. But there are many conflicts, e.g., currently we have in runtime/local:
lib/httpclient-4.3.5.jar
plugins/lib-htmlunit/httpclient-4.3.4.jar
plugins/lib-selenium/httpclient-4.5.1.jar
plugins/indexer-solr/httpclient-4.4.1.jar
plugins/indexer-cloudsearch/httpclient-4.3.6.jar

And the right way would be: 1. resolve the conflicts and make sure that everything runs fine, 2. configure one global classpath. To get NUTCH-2316 resolved could be the first step of the first task.

The need for adding these jars may be similar to what I tried to overcome with NUTCH-2429.

Closing, see NUTCH-2317.


http2https and https2http broken by cli parser probably

Steps to reproduce the problem:
[:~ mogorman$ mitmproxy -R http2https://mysite.com/
usage: mitmproxy [options]
mitmproxy: error: argument -R/--reverse: Invalid server specification: http2https://mysite.com/
What is the expected behavior?
To work as described in the help
What went wrong?
command is not parsed
Any other comments?

Mitmproxy Version:mitmproxy 0.17
Operating System:macos x

Which help are you referring to? We made mitmproxy auto-detect incoming TLS, so the http[s]2 part is obsolete. :smiley:

hmm? my intended behavior was to access an https site internal on my pc externally over http.  how would i make that happen?

the docs i was referring to was the --help documentation in the command

Thanks for the clarification. You can just skip the http[s]2 part, see 9f92855. :-)

i want the users to connect via http to the https server?  when i connect to the mitmproxy i immediately see the certificate error.

If you specify mitmproxy -R https://mysite.com/, you can open the page unencrypted at http://localhost:8080/.
You could also open the page at https://localhost:8080/, in which case mitmproxy will automatically detect the TLS handshake from the client and establish a secure connection (with its certificates).

that is not the behavior i see.  I open mitmproxy
mitmproxy -R https://mysite.com/
i then navigate to http://localhost:8080/
and then see an https cert error in browser and here is what i see in curl
curl -v -v  localhost:8080/boutique
*   Trying ::1...
* connect to ::1 port 8080 failed: Connection refused
*   Trying <IP_ADDRESS>...
* Connected to localhost (<IP_ADDRESS>) port 8080 (#0)
> GET /boutique HTTP/1.1
> Host: localhost:8080
> User-Agent: curl/7.43.0
> Accept: */*
>
< HTTP/1.1 301 MOVED PERMANENTLY
< Server: nginx
< Date: Fri, 22 Apr 2016 12:35:16 GMT
< Content-Type: text/html; charset=utf-8
< Transfer-Encoding: chunked
< Connection: keep-alive
< Set-Cookie: user_agent_set=desktop; domain=; path=/; secure
< Set-Cookie: browsable_segments=WzM3NjNd; domain=; path=/; secure
< Set-Cookie: default_segments=WzUsMl0=; domain=; path=/; secure
< Location: https://localhost:8080/boutique/
< X-Request-Start: t=1461328516.809
< Lane: WRITE
< Nginx-Cache-Key: /@route/boutique
< X-Request-Start: t=1461328516.809
<
* Connection #0 to host localhost left intact

finally got it worrking using the sslstrip example and reverse proxy setting


Error on importing metagraph that uses unbound input multiple times

If I export a scoped metagraph which has multiple references to a tensor which will be unbound after exporting, I cannot re-import the metagraph. This problem can be reproduced with the following MWE.
import tensorflow as tf

graph = tf.Graph()

with graph.as_default():
    inputs = tf.placeholder(shape=[], dtype=tf.float32, name="inputs")

    with tf.name_scope("scope"):
        output = inputs + inputs

    tf.train.export_meta_graph("./mwe.meta",
                               export_scope="scope",
                               as_text=True)

graph = tf.Graph()

with graph.as_default():
    inputs = tf.constant(shape=[], value=1.0)

    tf.train.import_meta_graph("./mwe.meta",
                               import_scope="scope",
                               input_map={
                                   "$unbound_inputs_inputs": inputs
                               })

Running this code results in the following error.
Traceback (most recent call last):
  File "<snip>\metagraph_bug_mwe.py", line 23, in <module>
    "$unbound_inputs_inputs": inputs
  File "<snip>\Python35\lib\site-packages\tensorflow\python\training\saver.py", line 1595, in import_meta_graph
    **kwargs)
  File "<snip>\Python35\lib\site-packages\tensorflow\python\framework\meta_graph.py", line 479, in import_scoped_meta_graph
    ",".join([compat.as_str(v) for v in field.value
ValueError: Graph contains unbound inputs: $unbound_inputs_inputs,$unbound_inputs_inputs. Must provide these inputs through input_map.

Upon inspection of the generated metagraph file (see mwe.meta, lines 67 - 75), I noticed that the inputs tensor actually has two entries in the unbound_inputs collection. Since the import_scoped_meta_graph function compares the full collection read from the proto to the input_map parameter, they do not match and the error is raised.
System information

Have I written custom code (as opposed to using a stock example script provided in TensorFlow): Yes, see above
OS Platform and Distribution (e.g., Linux Ubuntu 16.04): Windows 10
TensorFlow installed from (source or binary): binary
TensorFlow version (use command below): 1.1.0
Bazel version (if compiling from source): N/A
CUDA/cuDNN version: 8.0/5.1.10
GPU model and memory: Nvidia GeForce GTX 860M with 2GB VRAM + 4GB shared
Exact command to reproduce: See MWE above

It has been 14 days with no activity and this issue has an assignee.Please update the label and/or status accordingly.

Is this still an issue?

Yes, the MWE provided above still breaks with the same exception in 1.4.

Looks like this is not expected behavior. Are you in a position to send a fix?

I am currently working on a PR to fix this issue

Any news on this topic?
I am getting a list of unbound inputs:
if not input_map or v not in input_map]))
ValueError: Graph contains unbound inputs: $unbound_inputs_tower_0/IteratorGetNext,$unbound_inputs_cnn/conv_1/kernel/read,$unbound_inputs_cnn/conv_1/bias/read,$unbound_inputs_cnn/conv_2/kernel/read,$unbound_inputs_cnn/conv_2/bias/read,$unbound_inputs_linear_layer/linear_cnn/kernel/read,$unbound_inputs_linear_layer/linear_cnn/bias/read,$unbound_inputs_tower_0/seq_real_size_slice,$unbound_inputs_lstm/rnn/multi_rnn_cell/cell_0/lstm_cell_0/kernel/read,$unbound_inputs_lstm/rnn/multi_rnn_cell/cell_0/lstm_cell_0/bias/read,$unbound_inputs_lstm/rnn/multi_rnn_cell/cell_0/lstm_cell_0/projection/kernel/read,$unbound_inputs_lstm/rnn/multi_rnn_cell/cell_1/lstm_cell_1/kernel/read,$unbound_inputs_lstm/rnn/multi_rnn_cell/cell_1/lstm_cell_1/bias/read,$unbound_inputs_lstm/rnn/multi_rnn_cell/cell_1/lstm_cell_1/projection/kernel/read,$unbound_inputs_fully_connected/fc_1/kernel/read,$unbound_inputs_fully_connected/fc_1/bias/read,$unbound_inputs_fully_connected/fc_2/kernel/read,$unbound_inputs_fully_connected/fc_2/bias/read,$unbound_inputs_fully_connected/output_layer/kernel/read,$unbound_inputs_fully_connected/output_layer/bias/read. Must provide these inputs through input_map.


⚠ Bofrost.at has degraded performance

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

HTTP code: 200
Response time: 2928 ms

Resolved: Bofrost.at performance has improved in 2b07311 after 313 days, 4 hours, 20 minutes.


Auto coloring is broken

Expected behavior: as one annotates a dataset and possibly adds classes,

the label -> color mapping should stay consistent as much as possible, and
the color of the data points must be consistent with the color of the legend.

Right now (in 0.4.0) both of these behaviors are broken.

Resolved in 1d21e75a4861eaeb48ddf6222d817702ccdd4bce

Resolved in 1d21e75a4861eaeb48ddf6222d817702ccdd4bce


Unexpected exception while executing org.apache.cloudstack.api.command.user.kubernetes.cluster.CreateKubernetesClusterCmd

ISSUE TYPE

Bug Report

COMPONENT NAME

kubernetes

CLOUDSTACK VERSION

4.14.0

CONFIGURATION

Advanced networking
OS / ENVIRONMENT

CentOS7 on MS, XCP-NG 8.2 on hypervisors
SUMMARY

Cannot create kubernetes cluster from classic/primate UIs. It fails to create master/worker VMs. Other Linux/Winsows VMs are created by MS without issues on the same hypervisor.
I'm getting exception in management-server.log
STEPS TO REPRODUCE

0. Login under admin account
1. Enable the kubernetes service / restart MS
2. Register new kubernetes from UI:
add kubernetessupportedversion name=v1.16.3 semanticversion=1.16.3 url=http://packages.shapeblue.com.s3-eu-west-1.amazonaws.com/cks/setup-1.16.3.iso mincpunumber=2 minmemory=2048
3. Register CoreOS template from http://dl.openvm.eu/cloudstack/coreos/x86_64/coreos_production_cloudstack_image-xen.vhd.bz2
4. Wait till its ready
5. Now create a kubernetes cluster from UI with 2 nodes

EXPECTED RESULTS

Expected kubernetes cluster to be created successfully

ACTUAL RESULTS

Getting pop-up with "Command failed due to Internal Server Error".  CKS is in "Starting" state until I stop/destroy it.

2020-08-03 17:16:20,000 INFO  [o.a.c.f.j.i.AsyncJobMonitor] (API-Job-Executor-30:ctx-fe4f9ce8 job-3345) (logid:492b8e9c) Add job-3345 into job monitoring
2020-08-03 17:16:20,016 DEBUG [o.a.c.f.j.i.AsyncJobManagerImpl] (API-Job-Executor-30:ctx-fe4f9ce8 job-3345) (logid:bfd9221f) Executing AsyncJobVO {id:3345, userId: 9, accountId: 9, instanceType: VirtualMachine, instanceId: 3, cmd: org.apache.cloudstack.api.command.user.kubernetes.cluster.CreateKubernetesClusterCmd, cmdInfo: {"keypair":"example@example.com","description":"kuber test","httpmethod":"GET","ctxAccountId":"9","uuid":"090ac64f-a796-4cf3-ab78-885025d89ff8","cmdEventType":"KUBERNETES.CLUSTER.CREATE","kubernetesversionid":"4841cf7a-9033-462f-9bfe-f7425303daf2","size":"1","serviceofferingid":"48611534-7524-4d94-97f3-81d1d3f135c9","response":"json","ctxUserId":"9","name":"kubetest","zoneid":"1be9f1f9-e6d2-4133-942d-8582d645ca8f","networkid":"02e37ff6-48ab-4c87-888e-09f248845fd0","ctxStartEventId":"5601","id":"3","ctxDetails":"{\"interface com.cloud.offering.ServiceOffering\":\"48611534-7524-4d94-97f3-81d1d3f135c9\",\"interface com.cloud.kubernetes.version.KubernetesSupportedVersion\":\"4841cf7a-9033-462f-9bfe-f7425303daf2\",\"interface com.cloud.dc.DataCenter\":\"1be9f1f9-e6d2-4133-942d-8582d645ca8f\",\"interface com.cloud.network.Network\":\"02e37ff6-48ab-4c87-888e-09f248845fd0\"}"}, cmdVersion: 0, status: IN_PROGRESS, processStatus: 0, resultCode: 0, result: null, initMsid:<PHONE_NUMBER>1, completeMsid: null, lastUpdated: null, lastPolled: null, created: null, removed: null}
2020-08-03 17:16:20,542 ERROR [c.c.a.ApiAsyncJobDispatcher] (API-Job-Executor-30:ctx-fe4f9ce8 job-3345) (logid:bfd9221f) Unexpected exception while executing org.apache.cloudstack.api.command.user.kubernetes.cluster.CreateKubernetesClusterCmd
java.lang.NullPointerException
        at com.cloud.vm.UserVmManagerImpl.createVirtualMachine(UserVmManagerImpl.java:3764)
        at com.cloud.vm.UserVmManagerImpl.createAdvancedVirtualMachine(UserVmManagerImpl.java:3405)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
        at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:344)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:198)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
        at org.apache.cloudstack.network.contrail.management.EventUtils$EventInterceptor.invoke(EventUtils.java:107)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:175)
        at com.cloud.event.ActionEventInterceptor.invoke(ActionEventInterceptor.java:51)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:175)
        at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:95)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
        at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212)
        at com.sun.proxy.$Proxy176.createAdvancedVirtualMachine(Unknown Source)
        at com.cloud.kubernetes.cluster.actionworkers.KubernetesClusterStartWorker.createKubernetesMaster(KubernetesClusterStartWorker.java:203)
        at com.cloud.kubernetes.cluster.actionworkers.KubernetesClusterStartWorker.provisionKubernetesClusterMasterVm(KubernetesClusterStartWorker.java:271)
        at com.cloud.kubernetes.cluster.actionworkers.KubernetesClusterStartWorker.startKubernetesClusterOnCreate(KubernetesClusterStartWorker.java:498)
        at com.cloud.kubernetes.cluster.KubernetesClusterManagerImpl.startKubernetesCluster(KubernetesClusterManagerImpl.java:1057)
        at org.apache.cloudstack.api.command.user.kubernetes.cluster.CreateKubernetesClusterCmd.execute(CreateKubernetesClusterCmd.java:273)
        at com.cloud.api.ApiDispatcher.dispatch(ApiDispatcher.java:156)
        at com.cloud.api.ApiAsyncJobDispatcher.runJob(ApiAsyncJobDispatcher.java:108)
        at org.apache.cloudstack.framework.jobs.impl.AsyncJobManagerImpl$5.runInContext(AsyncJobManagerImpl.java:603)
        at org.apache.cloudstack.managed.context.ManagedContextRunnable$1.run(ManagedContextRunnable.java:49)
        at org.apache.cloudstack.managed.context.impl.DefaultManagedContext$1.call(DefaultManagedContext.java:56)
        at org.apache.cloudstack.managed.context.impl.DefaultManagedContext.callWithContext(DefaultManagedContext.java:103)
        at org.apache.cloudstack.managed.context.impl.DefaultManagedContext.runWithContext(DefaultManagedContext.java:53)
        at org.apache.cloudstack.managed.context.ManagedContextRunnable.run(ManagedContextRunnable.java:46)
        at org.apache.cloudstack.framework.jobs.impl.AsyncJobManagerImpl$5.run(AsyncJobManagerImpl.java:551)
        at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
        at java.base/java.lang.Thread.run(Thread.java:834)
2020-08-03 17:16:20,545 DEBUG [o.a.c.f.j.i.AsyncJobManagerImpl] (API-Job-Executor-30:ctx-fe4f9ce8 job-3345) (logid:bfd9221f) Complete async job-3345, jobStatus: FAILED, resultCode: 530, result: org.apache.cloudstack.api.response.ExceptionResponse/null/{"uuidList":[],"errorcode":530}
2020-08-03 17:16:20,546 DEBUG [o.a.c.f.j.i.AsyncJobManagerImpl] (API-Job-Executor-30:ctx-fe4f9ce8 job-3345) (logid:bfd9221f) Publish async job-3345 complete on message bus
2020-08-03 17:16:20,546 DEBUG [o.a.c.f.j.i.AsyncJobManagerImpl] (API-Job-Executor-30:ctx-fe4f9ce8 job-3345) (logid:bfd9221f) Wake up jobs related to job-3345
2020-08-03 17:16:20,546 DEBUG [o.a.c.f.j.i.AsyncJobManagerImpl] (API-Job-Executor-30:ctx-fe4f9ce8 job-3345) (logid:bfd9221f) Update db status for job-3345
2020-08-03 17:16:20,547 DEBUG [o.a.c.f.j.i.AsyncJobManagerImpl] (API-Job-Executor-30:ctx-fe4f9ce8 job-3345) (logid:bfd9221f) Wake up jobs joined with job-3345 and disjoin all subjobs created from job- 3345
2020-08-03 17:16:20,549 DEBUG [o.a.c.f.j.i.AsyncJobManagerImpl] (API-Job-Executor-30:ctx-fe4f9ce8 job-3345) (logid:bfd9221f) Done executing org.apache.cloudstack.api.command.user.kubernetes.cluster.CreateKubernetesClusterCmd for job-3345
2020-08-03 17:16:20,549 INFO  [o.a.c.f.j.i.AsyncJobMonitor] (API-Job-Executor-30:ctx-fe4f9ce8 job-3345) (logid:bfd9221f) Remove job-3345 from job monitoring

Hi @DaanHoogland
Could you please help?

cc @shwstppr

@sm97 Couple of things,

Have you tried it with a different hypervisor? XCP-NG 8.2 support is not present in 4.14 and not even in master. Did you add all OS mappings? Though at this point I'm not sure if that's all we will need for XCP-ng 8.2.
Does the deployment of VMs outside CKS plugin work fine with CoreOS template?

@shwstppr Thanks for prompt reply,

No, I have no extra server to test different hypervisor. Test stand is in my plans, but not nearest one :( I know that XCP-NG 8.2 is not listed in supported ACS configurations, but it does works well for me for regular usage.
I have tested CoreOS template outside of CKS plugin and it runs well. But CKS just fails to create new VMs. That's the root cuase of my issue.

@sm97 It is failing at https://github.com/apache/cloudstack/blob/6f96b3b2b391a9b7d085f76bcafa3989d9832b4e/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java#L3764
Hypervisor must be coming as null here. Will check code for more. Till then, ca you please check/answer,

While adding XCP-ng 8.2 hosts did you add guest OS mappings for XCP-ng 8.2.0 version?
Please share cloudmonkey response for your CoreOS template
To reproduce this, MS is CentOS 7, hosts XCP-ng 8.2, advance networking zone?

@sm97 It is failing at
https://github.com/apache/cloudstack/blob/6f96b3b2b391a9b7d085f76bcafa3989d9832b4e/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java#L3764
Hypervisor must be coming as null here. Will check code for more. Till then, ca you please check/answer,

Please share cloudmonkey response for your CoreOS template

(local) � > list templates id=d99a8aa6-acb1-4e9b-944c-41c1b017fd9c templatefilter=all
count = 1
template:
id = d99a8aa6-acb1-4e9b-944c-41c1b017fd9c
name = Kubernetes-Service-Template-Xenserver-20200803
account = admin
bits = 0
checksum = 6d68e13f102acb3b003c4523caa28458c8bbf2f93864a0eb22e18f7f8d89f042796fa9e727b0219997c66c3f9ef96c7fb3edcb8e3c6c57914db316a5eaabcc50
created = 2020-08-03T18:58:00+0300
crossZones = True
details:
hypervisortoolsversion = xenserver61
directdownload = False
displaytext = Kubernetes-Service-Template-Xenserver-20200803
domain = ROOT
domainid = 2209783f-b5fa-11ea-8b15-000ae485569f
format = VHD
hypervisor = XenServer
isdynamicallyscalable = False
isextractable = False
isfeatured = False
ispublic = True
isready = True
ostypeid = 7c24f587-b5fa-11ea-8b15-000ae485569f
ostypename = CoreOS
passwordenabled = True
physicalsize =<PHONE_NUMBER>
requireshvm = True
size =<PHONE_NUMBER>
sshkeyenabled = True
status = Download Complete
tags:
templatetype = USER
zoneid = 1be9f1f9-e6d2-4133-942d-8582d645ca8f
zonename = devzone

While adding XCP-ng 8.2 hosts did you add guest OS mappings for XCP-ng 8.2.0 version?
To reproduce this, MS is CentOS 7, hosts XCP-ng 8.2, advance networking zone?
Sorry, I do not understand how I can check this?

@sm97 4.14 didn't have XCP-ng 8.1+ support officially. I couldn't see 8.2 released on XCP-ng site. With guest os mappings I meant something like, https://github.com/apache/cloudstack/pull/4068/commits/b9edc955ed0a83fbb3bbc5a060cffe87d448dab0#diff-1ce878cd8ce12c2ca2fbe9c3639af33eR28-R32
I've tried to reproduce this locally but couldn't see NPE, will try to dig further.
Template seems okay. Can you please verify cluster was using same template for deployment (by checking cluster VMs).
If possible, please share management server logs for complete k8s cluster deployment.

@shwstppr
I changed max_guests_limit to 100 for hypervisor_version ='default' only:
https://gist.github.com/sm97/966037be4c3366cfb24c8c63822e92ec
I don't see any records for 8.1.0. But I see CoreOS records for 'default' version of XenServer. Is it Ok?
https://gist.github.com/sm97/98f4bb3e5be877aa060a2c903c7073a9

Can you please verify cluster was using same template for deployment (by checking cluster VMs).

It seems that correct template is used. This is nfs mount from MS host:
$ cat /var/cloudstack/mnt/46783616671.5d4051c7/template/tmpl/2/241/template.properties
#
#Mon Aug 03 15:59:42 UTC 2020
uniquename=241-2-1666096b-aa90-3b43-af53-75cf72214d1a
vhd.size=4765639168
description=Kubernetes-Service-Template-Xenserver-20200803
filename=fff7ff82-37e5-38ae-a658-cc1b47bc50b9.vhd
vhd=true
size=4765639168
public=true
vhd.filename=fff7ff82-37e5-38ae-a658-cc1b47bc50b9.vhd
vhd.virtualsize=4756340736
id=241
hvm=true
virtualsize=4756340736

$ ls -l /var/cloudstack/mnt/46783616671.5d4051c7/template/tmpl/2/241/fff7ff82-37e5-38ae-a658-cc1b47bc50b9.vhd
-rw-rw-rw-. 1 root root<PHONE_NUMBER> Aug  3 18:59 /var/cloudstack/mnt/46783616671.5d4051c7/template/tmpl/2/241/fff7ff82-37e5-38ae-a658-cc1b47bc50b9.vhd

If possible, please share management server logs for complete k8s cluster deployment.
Sure. This is log for unsuccessfull cluster creation named kubetest: https://gist.github.com/sm97/eab813ec255ee4dc07c99b46e4357737

@shwstppr Do I need to supply additional info?

@sm97 sorry got occupied with some stuff last week. WIll get back to you on this later today.

@sm97 can you please try deploying k8s cluster after setting vm.instancename.flag to false.
Issue here doesn't seem to be with CKS itself, the code in UserVmManagerImpl.java seems to be checking the wrong variable for hypervisor type at line 3764
https://github.com/apache/cloudstack/blob/6f96b3b2b391a9b7d085f76bcafa3989d9832b4e/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java#L3764
I'll add a fix for this.

@shwstppr Setting vm.instancename.flag to false did the trick :)
Thank you!


Security and Performance Improvements

add_header X-Powered-By "EasyEngine";

Showing the version will open paths to exploiting a known vulnerability.
add_header "X-UA-Compatible" "IE=Edge";

https://msdn.microsoft.com/library/jj676915(v=vs.85).aspx
add_header X-Content-Type-Options nosniff;`

https://msdn.microsoft.com/library/gg622941(v=vs.85).aspx
gzip_comp_level 5;
gzip_min_length 256;

https://github.com/h5bp/server-configs-nginx/blob/master/nginx.conf
# Cloudfront users should change gzip_http_version 1.1 to 1.0;

https://pelanne.com/blog/enabling-gzip-compression-your-nginx-served-cloudfront-content

My guess is: add_header X-Powered-By "EasyEngine"; is used as a way to market/brand easyengine.
But I agree, I myself always remove it, and many aware devs do the same.

@renatonascalves The EasyEngine part isn't the problem. The version is, because it makes easier to exploiting a known vulnerability. (:

@ntorga Oh, got it!

EE should also Add Security Header by default
EXAMPLE OF security header

add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
add_header Referrer-Policy "no-referrer";

More Info
https://securityheaders.com/

Hi @ntorga
Sorry for the delay in checking this.
EE already provides a config option to remove its header and as noted by @renatonascalves many remove it.
We are not accepting any new PR's in V3 unless they are security fixes.
In EE v4, we will continue to provide an option to remove branding. The v4 default will not reveal EE version.
Thanks.


Cannot read properties of undefined (reading 'split')

What version of million are you using?
1.0.9
Are you using an SSR adapter? If so, which one?
None
What package manager are you using?
npm
What operating system are you using?
Windows
What browser are you using?
Yandex Browser (on Chromium)
Describe the Bug
When I clicked on the "Optimize by 93%" button, the extension thought for 20 seconds, and then I received error "Cannot read properties of undefined (reading 'split')"

What's the expected result?
Extension is working :sad
Link to Minimal Reproducible Example
It is unclear which part of the project to give
Participation

[ ] I am willing to submit a pull request for this issue.

Hey @Stepashka20! Can you try updating to the latest? We pushed a patch that should have fixed your issue
Run this to upgrade:
npx million@latest


[ISSUE #3031] Upgrade netty-all dependency version to 4.1.65.Final

What is the purpose of the change
Fix https://github.com/apache/rocketmq/issues/3031
Brief changelog
Upgrade netty-all dependency version to 4.1.65.Final
Verifying this change
Follow this checklist to help us incorporate your contribution quickly and easily. Notice, it would be helpful if you could finish the following 5 checklist(the last one is not necessary)before request the community to review your PR.

[x] Make sure there is a Github issue filed for the change (usually before you start working on it). Trivial changes like typos do not require a Github issue. Your pull request should address just this issue, without pulling in other changes - one PR resolves one issue.
[x] Format the pull request title like [ISSUE #123] Fix UnknownException when host config not exist. Each commit in the pull request should have a meaningful subject line and body.
[x] Write a pull request description that is detailed enough to understand what the pull request does, how, and why.
[x] Write necessary unit-test(over 80% coverage) to verify your logic correction, more mock a little better when cross module dependency exist. If the new feature or significant change is committed, please remember to add integration-test in test module.
[x] Run mvn -B clean apache-rat:check findbugs:findbugs checkstyle:checkstyle to make sure basic checks pass. Run mvn clean install -DskipITs to make sure unit-test pass. Run mvn clean test-compile failsafe:integration-test  to make sure integration-test pass.
[ ] If this contribution is large, please file an Apache Individual Contributor License Agreement.

Coverage decreased (-0.3%) to 53.818% when pulling 361eb8d286c3bdc19260d4315a87fa8427673fa5 on messense:upgrade-netty-all into 160c5772fbdf02e55cdc67bc3b74bb9f9c4c644b on apache:develop.

Codecov Report

Merging #3032 (361eb8d) into develop (df1d93f) will decrease coverage by 0.25%.
The diff coverage is 0.00%.

@@              Coverage Diff              @@
##             develop    #3032      +/-   ##
=============================================
- Coverage      47.97%   47.72%   -0.26%
+ Complexity      4569     4546      -23
=============================================
  Files            552      552
  Lines          36628    36671      +43
  Branches        4844     4849       +5
=============================================
- Hits           17572    17500      -72
- Misses         16832    16941     +109
- Partials        2224     2230       +6

Impacted Files
Coverage Δ

...rocketmq/broker/pagecache/ManyMessageTransfer.java
36.36% <0.00%> (-9.80%)
:arrow_down:

.../rocketmq/broker/pagecache/OneMessageTransfer.java
24.00% <0.00%> (-9.34%)
:arrow_down:

...ocketmq/broker/pagecache/QueryMessageTransfer.java
0.00% <0.00%> (ø)

...rg/apache/rocketmq/remoting/netty/NettyLogger.java
17.68% <0.00%> (-1.37%)
:arrow_down:

.../org/apache/rocketmq/store/PutMessageSpinLock.java
0.00% <0.00%> (-85.72%)
:arrow_down:

.../broker/subscription/SubscriptionGroupManager.java
54.11% <0.00%> (-16.48%)
:arrow_down:

...rg/apache/rocketmq/common/stats/StatsSnapshot.java
84.61% <0.00%> (-15.39%)
:arrow_down:

.../apache/rocketmq/common/stats/MomentStatsItem.java
38.09% <0.00%> (-9.53%)
:arrow_down:

...ache/rocketmq/common/stats/MomentStatsItemSet.java
43.47% <0.00%> (-8.70%)
:arrow_down:

...org/apache/rocketmq/store/ha/WaitNotifyObject.java
71.15% <0.00%> (-7.70%)
:arrow_down:

... and 23 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update df1d93f...361eb8d. Read the comment docs.

@messense thanks for the pr, and do you have any performance test (like produce/consume tps) to evaluate performance impact due to upgrade netty from 4.0.42 to 4.1.65 ?

In addition, Should the shell script runServer be modified ?  can we contribute back to rocketmq community from this pr ? @messense

@messense thanks for the pr, and do you have any performance test (like produce/consume tps) to evaluate performance impact due to upgrade netty from 4.0.42 to 4.1.65 ?

No, I don't know how to benchmark it nor do I have the time and energy to do that.

In addition, Should the shell script runServer be modified ? can we contribute back to rocketmq community from this pr ? @messense

I'm not sure, it may not be suitable for both JDK 8 and later versions.

@RongtongJin Can you help review this pull request ?

I ran quick-start on the computer without problems.

IMO，the netty component is too important, it is recommended to do more verification before merging


Need for a Generic Instant/Time/Duration

Hi All,
I'v run into the need for a generic "Instant" implementation several times.

Its implementation could be "tick based", for example running from 72Mhz clock with an u32 counter - this overflows about every 1 minute.
Or can be "time based" for example every 1ms  an u32 counter is incremented, so we do not have to worry about overflows for about 50 days.

Depending on your application you can decide what resolution ticks you need (and how often you can tolerate an overflow) and what kind of HW resources you have to increase a counter.
Then this implementation of "Instant" trait(s) could be passed to various stuff, like:

measure impulse width of an infrared remote control
decide between clicks / double clicks
switch debounce filters
measure the length of light part of the days
etc.

Each of these implementations would be generic about the "Instant" trait(s), but all of them likely

want to store one or more past instant so it most be Copy
calculate the duration between these instants ops::Sub<Output=DURATION>
make some calculation with these durations, so DURATION: Default, Copy, ops::Add<Output=DURATION>, ops::Sub<Output=DURATION>
calculate a future instant by adding a duration to a past instant
compare/order instants, durations
convert this duration into a known time unit for example Into < Microseconds >

The std time, duration is too big overhead for an embedded system, with this abstraction each application could be provided with a well optimized time measurement utility.
Please comment!

The std time, duration is too big overhead for an embedded system

I'm curious what you mean by core::time::Duration having too much of an overhead?
Its definition is struct Duration { secs: u64, nanos: u32 }, so memory-wise there isn't a problem. Likewise, operations like addition are pretty trivial and would optimise down to nothing.
In my application, I'm using the time since a stable reference point (e.g. power on or the unix epoch) for time-keeping purposes.
/// Something which records the elapsed real time.
///
/// This uses shared references because it may be shared between multiple
/// components at any one time.
pub trait SystemClock {
    /// The amount of time that has passed since a clock-specific reference
    /// point (e.g. device startup or the unix epoch).
    fn elapsed(&self) -> Duration;
}

In my application, I'm using the time since a stable reference point (e.g. power on or the unix epoch) for time-keeping purposes.

First of all, thanks for sharing your application repo!
In clock.rs of your application, it seems that measuring the actual elapsed time is possible only when std is enabled for std::time::Instant support.
May I ask how I could implement such 'time-measuring' functionality without std support??
Thank you 😄

On an embedded device (most #[no_std] applicationd) you often bring your own clock.
This is typically implemented by registering a SysTick interrupt handler and incrementing a counter every time it's triggered. From there you can do some math with the clock frequency to turn ticks into seconds. I don't want to make assumptions about your application or force people to use whatever I implement, so we use a trait.
If you're compiling with the full standard library we know we'll always have access to the "current time" via the OS, so I've provided an implementation instead of forcing every user to write it themselves.

I have just released embedded-time to handle clocks, instants, durations more easily in embedded contexts. It follows a similar idea to the C++ std::chrono library.
Example Usage:
struct SomeClock;

impl Clock for SomeClock {
    type Rep = i64;

    fn now() -> Instant<Self> {
        // read the count of the clock
        // ...
        Instant::new(count as Self::Rep)
    }
}

impl Period for SomeClock {
    // this clock is counting at 16 MHz
    const PERIOD: Ratio<i32> = Ratio::<i32>::new_raw(1, 16_000_000);
}

// read from a Clock
let instant1 = SomeClock::now();

// ... some time passes

let instant2 = SomeClock::now();
assert!(instant1 < instant2);    // instant1 is *before* instant2

// duration is the difference between the instances
let duration: Option<Microseconds<i64>> = instant2.elapsed_since(&instant1);

// add some duration to an instant
let future_instant = instant2 + Milliseconds(23);
// or
let future_instant = instant2 + 23.milliseconds();

assert(future_instant > instant2);


Update date

Hi @gbowerman, I'm your friendly neighborhood Azure Pull Request Bot (You can call me AZPRBOT). Thanks for your contribution!

It looks like you're working at Microsoft (guybo). If you're full-time, we DON'T require a contribution license agreement.

If you are a vendor, DO please sign the electronic contribution license agreement. It will take 2 minutes and there's no faxing! https://cla.azure.com.

TTYL, AZPRBOT;

@gbowerman - Use two-digit date format in the month space.

@gbowerman - Actually, I need you to reach out to @squillace & @cynthn for this update.

This is a waste of everyone's time just to mark a document as current.

@gbowerman Guy, we're in the middle of ripping the entire doc set apart, over 250 topic and thousands of links, so there's a "master" branch freeze at the moment, that is the delay. You can either wait until next week, in which case this will work fine, or you can make the changes in a different branch -- ping me offline and I'll be happy to show you where.