Lotus' OpenRPC definitions are inaccurate

Forest wants to use Lotus' OpenRPC definitions to ensure RPC compatibility.
But we've found that most endpoints are incorrect.
Here are some examples:
Snippets are taken from Lotus' OpenRPC definitions, and extraneous items have been redacted for brevity.
Tested against Lotus v1.23.3
Objects in spec do not match objects in practice
        {
            "name": "Filecoin.WalletList",
            "result": {
                "description": "[]address.Address",
                "schema": {
                    "items": [
                        {
                            "additionalProperties": false,
                            "type": [
                                "object"
                            ]
                        }
                    ],
                    "type": [ "array" ]
                },
                "required": true,
            }
        },

Claims to return an array of empty objects: [ {}, {}, {} ], but actually returns an array of strings
        {
            "name": "Filecoin.ChainHasObj",
            "params": [
                {
                    "description": "cid.Cid",
                    "schema": {
                        "examples": [
                            {
                                "/": "bafy2bzacea3wsdh6y3a36tb3skempjoxqpuyompjbmfeyf34fi3uy6uue42v4"
                            }
                        ],
                        "type": [ "string" ]
                    },
                    "required": true,
                }
            ],

Claims to accept a string but in actually accepts only objects like { "/": "<some CID>" }.
Note that the example does match the schema.
The schema does not represent all (stable) endpoints
Filecoin.Version does not appear in the schema, but is callable, and appears in the documentation

https://github.com/filecoin-project/lotus/issues/12164


Support for localization

It would be nice to support for multiple languages, we need to think on how we can implement this either to have different APIs or to have extra JSON keys for for title
For example, I think this will be a good approach:
[
  {
    "id": "1",
    "title": "Adding a map",
    "localized_title": [
      {
        "language": "ar",
        "value": "اضافة خارطة"
      },
      {
        "language": "en",
        "value": "Adding a map"
      }
    ],
    "status": "planned", // This also can be the same as title
    "description": "some description" // This also can be the same as title
  }
]

I have opened a PR for this.

Thanks a lot for your work on this!

Thanks to u guys for such idea!
@jordibruin @hiddevdploeg @AvdLee

I am noticing localisation for Chinese simplified and traditional are not working. Other languages work correctly.

@dickieee feel free to fork the repo and make the adjustments and file a PR


[Task]: Fix crashed explorer with basic auth

Task description
You can replicate the issue by faking basic auth credentials in localhost

Reopening issue because the problem persists in Nova


fix sspi_buffer_sequence ambiguous overload on x86

it should fix issue #65

Thanks for spotting and fixing this.
I agree that implicit conversions are most often not a good idea and I have no idea why I thought it would be a good idea in this case.
I didn't really think 32 bit support was relevant anymore but it's a bug anyway so thanks for the fix and for letting me know that 32 bit is actually supported with this fix.
Much appreciated.


Broken link on "Patterns for Building LLM-based Systems & Products"

Thank you for sharing your insights. This article is fantastic!
I wanted to point out one issue I hit while reading:
The first link in the section How to apply fine tuning? with text "good guidelines" is incorrect.
It should link to How to Write Data Labeling/Annotation Guidelines

Thank you for catching this and bringing it to my attention! 🙏
Fixed.


Improve query filtering to allow advanced filters

https://github.com/cbrand/go-filterparams

https://github.com/google/go-querystring


Terragrunt should check your Terraform code defines a backend

A common problem that has been hitting a few Terragrunt users is that they define a remote_state block in their Terragrunt configuration, but forget to specify a backend in their Terraform configurations (.tf). As a result, Terragrunt makes it look like it's configuring your backend, but Terraform ignores those configurations completely.
If a remote_state block is defined, Terragrunt should do a simple grep through the .tf source files to look for backend "XXX" and make sure that the XXX matches the backend type specified in remote_state. If either check fails, Terragrunt should exit with an error.

👍
On the logs when running Terragrunt you can check if the S3 backend configuration worked properly just to be sure it worked useful while these feature it's implemented.
Initializing the backend...

Successfully configured the backend "s3"! Terraform will automatically
use this backend unless the backend configuration changes.

Whoops, looks like I filed the same bug twice. This is a dupe of #212.


node: remove unused GetHostMasqueradeIPv*() helpers

The last users were removed by
07b336f42f25 ("iptables: Add rules runtime reconciliation").

/test


Global state: better solution?

Reading in Figmex.StateStore:

Configured with a "global" name, so one instance exists across all nodes. This isn't my favorite solution, but minimizes race conditions for now.

Do you hinting on what would be a more optimal solution? Maybe something based on mnesia? Thanks!

@mxgrn Hey Max. You're actually spot on with what I was imagining. Mnesia, as I understand it, supports some transaction locking features that would make it a good candidate. I sort of talked about going that direction here, but the main reason I didn't was time and effort. I couldn't find someone who had done it with Fly.io and I didn't want to spend the time figuring it out since it was just a proof of concept.
If the goal is to stay 100% in the Elixir/Erlang eco-system then Mnesia is seemingly a good place to start. Otherwise if one might venture beyond Elixir, then maybe Redis, but anything outside of elixir will require money and more infrastructure.
You need some way of reliably saving a snapshot of the board in a distributed way and making sure that anyone that joins the "room" isn't getting something state. I don't think there's a perfect solution, just solutions that are tolerable.
Note: Mnesia seems like the choice since  Elixir's Ets is not distributed so it wouldn't work there.
Why the current solution is not great
I think it's just worth mentioning why I think a "global" genserver isn't good:

One "global" genserver, but many distributed nodes: depending on where you are in the 🌏 world, you might be really close or really far from the node that is actually hosting the "global" genserver. you might have really good or really bad response time

it doesn't really scale well as a solution. in a real product where there were many rooms for many teams and users, you'd want to dynamically create gen servers on the fly. you can still communicate with a genserver on another node if you have the PID, so you don't have to register it "globally" for it be "global". You just need to make sure you have another way of finding it.

Why the current solution is good

Very easy to implement
We avoid most race conditions because there is one instance and no syncing required

I say "most" because if two people clicked the same thing at the exact same time, the person who is physically closer to the node hosting the global genserver would win (I suspect). So it's not bulletproof.

Thanks for the extended answer! I'm considering leveraging Mnesia for my multiplayer memory game, which currently relies on Redis to store the game state. As I'm rewriting it from scratch, I found it a fun experiment to get rid of that dependency. My quick experiments with 2 linked BEAM nodes show that it works nicely for my case (I also used the mnesiac lib, btw), especially I like the fact that I can reboot those nodes one by one during deployments - and not lose the state.
However, a turn-based game like this is a much simpler use case for mnesia, as there's no room for race conditions (only 1 player is changing the state at any given moment).


excution and launch plan command added

Command Added

Get Excution
Get Launch Plan
Get Version

Basic Unit Test Added for all commands

This looks great. How about unit tests :P for these functions. This will really set a great precedence

Can you rebase with master?

Looks good, but, it seems you are moving the printer back to pkg folder. I purposely moved it to the top folder to match with the new golang conventions

@kumare3 I am aware of one kind of structure that we follow https://github.com/golang-standards/project-layout. New there is something new then i can move them in root folder

merge conflict then looks good to me

I removed the execution command and I will create a separate pr for that


Feature to arm / disarm alarmo with other entity

Checklist

[ ] I checked for similar existing requests (both open and closed) before posting. -> DONE
[ ] My request is generic, other users may benefit from it too. -> SURE

Proposal
I'm sure others are also searching for keypad solutions.
Additional info
The keypad with RFID has a relay that activates for 3 seconds, once the code in entered correctly or the tag is valid.
I will connect the relais output of the keypad/RFID reader to a GPIO of an ESP module.
This way in HA I have an entity that will change it state when the relais of the keypad is activated.
I've seen your recommandation to use an automation to arm/disarm automatically https://github.com/nielsfaber/alarmo#automatic-arming but it's based on a static state; I clarify:
switch off = armed
switch on = disarmed
In my case I have the relay that closes for 3 seconds.
Based on this change the Alarmo state should change to armed (if it was disarmed) or vice versa. A kind of toggle feature.
Maybe the automation can be changed but I have no idea how to do that.
Thanks for your help!

This is not a valid feature request.
You are asking for help on creating a custom automation for your DIY keypad, this is not the place for that.
Anyways, below is a starting point (i didn't test it).
Next time, please use the HA forum for support questions.
Automation for arming:
trigger:
  - platform: state
    entity_id: switch.my_remote
    to: 'on'
condition: # only execute this rule if the alarm is disarmed
  - condition: state
    entity: alarm_control_panel.alarmo
    state: disarmed
action:
  - service: alarmo.arm
    data:
      entity_id: alarm_control_panel.alarmo
      code: '1234'
      mode: away

Automation for disarming:
trigger:
  - platform: state
    entity_id: switch.my_remote
    to: 'on'
condition: # only execute this rule if the alarm is not disarmed
  condition: not
  conditions:
    - condition: state
      entity: alarm_control_panel.alarmo
      state: disarmed
action:
  - service: alarmo.disarm
    data:
      entity_id: alarm_control_panel.alarmo
      code: '1234'


All integration tests are failing

It seems that lately, all integration tests (where we actually run commands in the sandbox) are failing.

We should:

Find the root cause of this
Have BuildStream make an early exit when it finds it is running on a host that is incapable of running commands properly
Fix the infra to properly support builds

This may be fixed by updating buildbox. We should merge https://github.com/apache/buildstream/pull/1544. buildbox-fuse had a bug that only causes issues on Linux 5.13+ (or possibly on older versions with backports). I.e. this issue may have been triggered by a kernel upgrade in the CI infrastructure.

Yes, this is the reason I opened #1544.

Nice thanks ! This is indeed solved by #1544, closing.


final touches on windows probe

https://github.com/preludeorg/systems/pull/180
Installer changes that will hopefully work with this

preludeorg/systems#180
Installer changes that will hopefully work with this

Perfect.

The PRELUDE_DIR change is also in this PR @privateducky

The PRELUDE_DIR change is also in this PR @privateducky

We actually want to avoid an env var for this, if possible, to avoid someone hot-patching that and creating havoc under our process.

This doesn't make a difference, a user can just modify the .vst directly directly


kpod logs --tail flag doesn't work

When the tail flag is set for kpod logs, no output is given.
➜  ~ sudo kpod logs --tail 2 c91
2017/11/03 13:32:37 Seeked /var/log/crio/pods/f903e70f737f67e09405a3d2efe2bd052684e15f756a038feb28f20ac6641011/c91ef327b3777c93c608135a51e595d9c8c010770d049a39077197ffced092bb.log - &{Offset:2 Whence:2}

vs kpod logs without the tail flag
➜  ~ sudo kpod logs c91
2017/11/03 13:33:26 Seeked /var/log/crio/pods/f903e70f737f67e09405a3d2efe2bd052684e15f756a038feb28f20ac6641011/c91ef327b3777c93c608135a51e595d9c8c010770d049a39077197ffced092bb.log - &{Offset:0 Whence:0}
2017-11-02T16:05:05.140456062-04:00 stdout 1:C 02 Nov 20:05:05.140 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
2017-11-02T16:05:05.140456062-04:00 stdout 1:C 02 Nov 20:05:05.140 # Redis version=4.0.2, bits=64, commit=00000000, modified=0, pid=1, just started
2017-11-02T16:05:05.140456062-04:00 stdout 1:C 02 Nov 20:05:05.140 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
2017-11-02T16:05:05.141264162-04:00 stdout 1:M 02 Nov 20:05:05.141 # You requested maxclients of 10000 requiring at least 10032 max file descriptors.
2017-11-02T16:05:05.141264162-04:00 stdout 1:M 02 Nov 20:05:05.141 # Server can't set maximum open files to 10032 because of OS error: Operation not permitted.
2017-11-02T16:05:05.141264162-04:00 stdout 1:M 02 Nov 20:05:05.141 # Current maximum open files is 4096. maxclients has been reduced to 4064 to compensate for low ulimit. If you need higher maxclients increase 'ulimit -n'.
2017-11-02T16:05:05.142466462-04:00 stdout 1:M 02 Nov 20:05:05.142 * Running mode=standalone, port=6379.
2017-11-02T16:05:05.142764996-04:00 stdout 1:M 02 Nov 20:05:05.142 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
2017-11-02T16:05:05.142789664-04:00 stdout 1:M 02 Nov 20:05:05.142 # Server initialized
2017-11-02T16:05:05.142842374-04:00 stdout 1:M 02 Nov 20:05:05.142 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
2017-11-02T16:05:05.143046750-04:00 stdout 1:M 02 Nov 20:05:05.143 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.
2017-11-02T16:05:05.143087041-04:00 stdout 1:M 02 Nov 20:05:05.143 * Ready to accept connections
2017-11-02T16:08:11.932548480-04:00 stdout 1:signal-handler<PHONE_NUMBER>) Received SIGTERM scheduling shutdown...
2017-11-02T16:08:12.017862951-04:00 stdout 1:M 02 Nov 20:08:12.017 # User requested shutdown...
2017-11-02T16:08:12.017862951-04:00 stdout 1:M 02 Nov 20:08:12.017 * Saving the final RDB snapshot before exiting.
2017-11-02T16:08:12.022972360-04:00 stdout 1:M 02 Nov 20:08:12.022 * DB saved on disk
2017-11-02T16:08:12.023063960-04:00 stdout 1:M 02 Nov 20:08:12.022 # Redis is now ready to exit, bye bye...

Going through the code, I noticed that https://github.com/projectatomic/libpod/blob/master/libkpod/logs.go#L43 is returning 0 tail.Lines in the Tail struct when the SeekInfo is set.
I cannot figure out why no lines are being received. I can fix this if I can get some guidance on why this might be happening.

@umohnani8 Is this fixed now?

No, but I am working on it.

fixed


Expandible table of contents

https://gist.github.com/pierrejoubert73/902cc94d79424356a8d20be2b382e1ab

Also include TOC inside TOC

83771f079377788b71bf4a1072bc145a23235c71

Needs https://github.com/ManderaGeneral/generallibrary/issues/14 first

f9dfd362faf6fcf1780efccf92440800c582074d
Made everything collapsible! Probably overkill but seems nice for now ;)


[stable/wordpress] helm install --set persistence.storageClass=nfs failed

Is this a request for help?:
No
Is this a BUG REPORT or FEATURE REQUEST? (choose one):

Version of Helm and Kubernetes:
Helm v2.12.3
Kubernetes v1.13
Which chart:
stable/wordpress
What happened:
Following the readme, using helm install --name my-release --set persistence.storageClass=nfs stable/wordpress. This chart creates two pvc, but only create one storage class. So one pvc is bound and another one is always pending.
What you expected to happen:
Two storage classes should be created, and both pvc should be bound, and pods should be created successfully.
How to reproduce it (as minimally and precisely as possible):
helm install stable/nfs-client-provisioner --set nfs.server=x.x.x.x --set nfs.path=/exported/path
and then
helm install --name my-release --set persistence.storageClass=nfs stable/wordpress
Anything else we need to know:

I have use nfs-stor storageclass , but it show me don't bound storageclass, i have to delete pvc and creat a yaml to creat a same name pvc.


30 seconds wasted in session locking

Hey,
having some issues with session locking. Figured out that #132 relates to this. My problem are such things in the logs (and, for sure, seeing the rendering time) before my actual code is running:
[2015-05-18 10:36:13] snc_redis.INFO: Executing command "SETNX sf9it65cploqnpr3ok88lo7iu8p5.loc[...] 1" [] []
[2015-05-18 10:36:13] snc_redis.INFO: Executing command "SETNX sf9it65cploqnpr3ok88lo7iu8p5.loc[...] 1" [] []
... 100 more of them ...
[2015-05-18 10:36:44] snc_redis.INFO: Executing command "SETNX sf9it65cploqnpr3ok88lo7iu8p5.loc[...] 1" [] []
[2015-05-18 10:36:44] snc_redis.INFO: Executing command "SETNX sf9it65cploqnpr3ok88lo7iu8p5.loc[...] 1" [] []

Stack trace is:
#0  Snc\RedisBundle\Logger\RedisLogger->logCommand() called at [/var/www/core/vendor/snc/redis-bundle/Snc/RedisBundle/Client/Predis/Connection/ConnectionWrapper.php:163]
#1  Snc\RedisBundle\Client\Predis\Connection\ConnectionWrapper->executeCommand() called at [/var/www/core/vendor/predis/predis/lib/Predis/Connection/PredisCluster.php:213]
#2  Predis\Connection\PredisCluster->executeCommand() called at [/var/www/core/vendor/predis/predis/lib/Predis/Client.php:246]
#3  Predis\Client->executeCommand() called at [/var/www/core/vendor/predis/predis/lib/Predis/Client.php:228]
#4  Predis\Client->__call()
#5  Predis\Client->setnx() called at [/var/www/core/vendor/snc/redis-bundle/Snc/RedisBundle/Session/Storage/Handler/RedisSessionHandler.php:111]
#6  Snc\RedisBundle\Session\Storage\Handler\RedisSessionHandler->lockSession() called at [/var/www/core/vendor/snc/redis-bundle/Snc/RedisBundle/Session/Storage/Handler/RedisSessionHandler.php:149]
#7  Snc\RedisBundle\Session\Storage\Handler\RedisSessionHandler->read() called at [/var/www/core/vendor/symfony/symfony/src/Symfony/Component/HttpFoundation/Session/Storage/Proxy/SessionHandlerProxy.php:69]
#8  Symfony\Component\HttpFoundation\Session\Storage\Proxy\SessionHandlerProxy->read()
#9  session_start() called at [/var/www/core/vendor/symfony/symfony/src/Symfony/Component/HttpFoundation/Session/Storage/NativeSessionStorage.php:148]
#10 Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage->start() called at [/var/www/core/vendor/symfony/symfony/src/Symfony/Component/HttpFoundation/Session/Storage/NativeSessionStorage.php:262]
#11 Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage->getBag() called at [/var/www/core/vendor/symfony/symfony/src/Symfony/Component/HttpFoundation/Session/Session.php:89]
#12 Symfony\Component\HttpFoundation\Session\Session->get() called at [/var/www/core/vendor/symfony/symfony/src/Symfony/Component/Security/Http/Firewall/ContextListener.php:76]
#13 Symfony\Component\Security\Http\Firewall\ContextListener->handle() called at [/var/www/core/vendor/symfony/symfony/src/Symfony/Component/Security/Http/Firewall.php:69]
#14 Symfony\Component\Security\Http\Firewall->onKernelRequest()
#15 call_user_func() called at [/var/www/core/vendor/symfony/symfony/src/Symfony/Component/EventDispatcher/Debug/WrappedListener.php:61]
#16 Symfony\Component\EventDispatcher\Debug\WrappedListener->__invoke()
#17 call_user_func() called at [/var/www/core/vendor/symfony/symfony/src/Symfony/Component/EventDispatcher/EventDispatcher.php:164]
#18 Symfony\Component\EventDispatcher\EventDispatcher->doDispatch() called at [/var/www/core/vendor/symfony/symfony/src/Symfony/Component/EventDispatcher/EventDispatcher.php:53]
#19 Symfony\Component\EventDispatcher\EventDispatcher->dispatch() called at [/var/www/core/vendor/symfony/symfony/src/Symfony/Component/EventDispatcher/ContainerAwareEventDispatcher.php:170]
#20 Symfony\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch() called at [/var/www/core/vendor/symfony/symfony/src/Symfony/Component/EventDispatcher/Debug/TraceableEventDispatcher.php:112]
#21 Symfony\Component\EventDispatcher\Debug\TraceableEventDispatcher->dispatch() called at [/var/www/core/app/bootstrap.php.cache:2997]
#22 Symfony\Component\HttpKernel\HttpKernel->handleRaw() called at [/var/www/core/app/bootstrap.php.cache:2970]
#23 Symfony\Component\HttpKernel\HttpKernel->handle() called at [/var/www/core/app/bootstrap.php.cache:3119]
#24 Symfony\Component\HttpKernel\DependencyInjection\ContainerAwareHttpKernel->handle() called at [/var/www/core/app/bootstrap.php.cache:2368]
#25 Symfony\Component\HttpKernel\Kernel->handle() called at [/var/www/core/web/app.php:37]

Is there any way to stop this? Sure, I can disable the session locking, but I guess there must be a weird other reason for that. Anyone already stumbled over this?
Would be happy about some hints ;) Thx in advance!
Regards
Sven

I also get this error from time to time.
I'm not really sure about what really happens but it seems like for some reasons the session is never unlocked, so the lock key is not deleted.
Then, the handler try as many attempts as possible (according to max_execution_time) to set the lock key which already exists.

I just got this after upgrading and found this issue.
php-fpm is killed because it's taking too much time (100+ line of snc_redis.INFO: Executing command "SETNX yprox_sess_eblmo5esra5as73so21p8[...] 1" [] [)

@tristanbes you can disable spin-lock in parameters
snc_redis.session.locking: false

Same here. v1.1.9

@tristanbes for me disabling session locking renders my site unable to log in :(

Anoyone found the solution for this?

The master branch contains new code for the session locking, see #230 and #236 (which I will merge later).

Bug still exists in v1.1.10

@tlaguz 1.1.7 works like charm

Still not fixed, tried the 1.1.10 and 2.x-dev versions. The 1.1.7 one works only because there appears to be no locking whatsoever there.
For reference I am running a websocket server and a web server which are sharing the session via redis (predis v1.0). The websocket server grabs when the upgrade header is sent, but never releases it, so if I reload the page I have to wait 30 secs for the lock to expire.

What version of PHP are you using? Which client? PhpRedis or Predis?
With PHP 7, I recommand you to use Predis because igbinary, compiled with PhpRedis, isn't released yet. See #259.
@aleksa2808 Session and PHP Websocket server is a real pain.
If you're only doing read-operations on the websocket-server side, locking isn't needed.
But if you really need it (write operations...), make sure the process open and close the session everytime. RedisSessionHandler::close() should be called.
You can do a simple check by monitoring Redis.

@Pouix I was only writing to the session via the Http server, so I disabled locking. Tho I don't understand why this was happening, since the Websocket server reads from the session only during the initial "upgrade" header request and it should lock it up right after, yet it never did.
My issue is resolved for now, if I notice some race conditions with the sessions needing a locking mechanism, I'll look this up again.

I have big problem by session, i think that its reason is session lock.

bundle run very command for session set.
1	0.89 ms	default	SET session5m1vdrvau4jdmgiqu8300gqtq1.lock 581ce28fabbf0 PX 30001 NX
2	0.46 ms	default	SET session5m1vdrvau4jdmgiqu8300gqtq1.lock 581ce28fabbf0 PX 30001 NX
3	0.40 ms	default	SET session5m1vdrvau4jdmgiqu8300gqtq1.lock 581ce28fabbf0 PX 30001 NX
4	0.40 ms	default	SET session5m1vdrvau4jdmgiqu8300gqtq1.lock 581ce28fabbf0 PX 30001 NX
5	0.44 ms	default	SET session5m1vdrvau4jdmgiqu8300gqtq1.lock 581ce28fabbf0 PX 30001 NX
6	0.45 ms	default	SET session5m1vdrvau4jdmgiqu8300gqtq1.lock 581ce28fabbf0 PX 30001 NX
.
.
.
186	0.49 ms	default	SET session5m1vdrvau4jdmgiqu8300gqtq1.lock 581ce28fabbf0 PX 30001 NX
187	0.52 ms	default	SET session5m1vdrvau4jdmgiqu8300gqtq1.lock 581ce28fabbf0 PX 30001 NX
188	0.52 ms	default	SET session5m1vdrvau4jdmgiqu8300gqtq1.lock 581ce28fabbf0 PX 30001 NX
189	0.52 ms	default	SET session5m1vdrvau4jdmgiqu8300gqtq1.lock 581ce28fabbf0 PX 30001 NX
190	0.52 ms	default	SET session5m1vdrvau4jdmgiqu8300gqtq1.lock 581ce28fabbf0 PX 30001 NX
191	0.53 ms	default	SET session5m1vdrvau4jdmgiqu8300gqtq1.lock 581ce28fabbf0 PX 30001 NX
192	0.51 ms	default	SET session5m1vdrvau4jdmgiqu8300gqtq1.lock 581ce28fabbf0 PX 30001 NX
193	1.42 ms	default	SET session5m1vdrvau4jdmgiqu8300gqtq1.lock 581ce28fabbf0 PX 30001 NX
194	0.35 ms	default	GET session5m1vdrvau4jdmgiqu8300gqtq1

194 command for session set ;(
I use php 5.6.16 and Predis client.
can i disable session lock? why we must use session lock?

When we disabled session lock, whole application crashed.
I suspect that symfony reads session at the beginning of the request and writes it back to cache at the end. You can have situation when two requests are processed:
| - request start/end

A: | ------------------------------ |
B:       | ------------- |

When request B changed sth in session then those changes would be overwritten by end of request A.
This is only my suspicion based on what was happening to our application. I may be wrong.

This is still randomly happening. Is there any fix yet?

Same problem here, wtf.

Same problem here!
I just updated redis to latest 3.2.8 version, this solved the problem!

@ruslan-naryzhnyi Not for me. I got the same issue.
Redis: 3.2.10
SncRedis: dev-master 86d8997
Configuration:
snc_redis:
    clients:
        default:
            type: '%redis_client_type%'
            alias: default
            dsn: 'redis://%redis_host%'
            logging: '%kernel.debug%'
        session:
            type: '%redis_client_type%'
            alias: session
            dsn: 'redis://%redis_host%/1'
            logging: '%kernel.debug%'
        mailer:
            type: '%redis_client_type%'
            alias: mailer
            dsn: 'redis://%redis_host%/2'
            logging: '%kernel.debug%'
    session:
        client: session
        ttl: 3600
        locking: true
    swiftmailer:
        client: mailer
        key: '%redis_mailer_key%'

I've seen this happen a while ago still.
@jaztec you have any idea when we ran into this, and did we just remove the locking setting in the end?

We actually were performing multiple heavy (+20s) async calls simultaneously. The "workaround" in our case was simply to queue the calls and then the problem no longer occurred.
So in the end we only had to fix our own design flaw :-)

Yeah well that still doesn't truly fix the underlying issue if it's still there, so the vote is still out on that one hehe.
@Soullivaneuh did you ever see it again since your last comment here?

anyone, anything? this is still happening

Either stop making multiple simultaneous calls or disable session locking.

it is not even about simultaneous calls, lock does not disappears after 1 call

Geez, I know why this is happens. I'm using "php" serializer. The lock invalidation script:
if redis.call("GET", KEYS[1]) == ARGV[1] then
                return redis.call("DEL", KEYS[1])
            else
                return redis.call("GET", KEYS[1])
            end

does not work because lock key contains:
s:13:"5b1a6fcb744ef";
instead of:
5b1a6fcb744ef

#435

Still occurrs. :(

@er1z Does it occur with 3.0.0-RC2 ?

Didn't check but I messed up with some combinations and as far as I found out: never use the same profile for session and anything else. Weird but worked.

@er1z Thx for the heads up!


feat: support ttl check and update ttl

Support TTL check and auto update TTL after registering to Consul
Add unit test
fix #16

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

@baiyutang 麻烦看看


Not able to find Menu using component.find

import {Dropdown, Menu} from 'antd';
class comp extends Component {
    state = {
      concept: 'Concept',
    }

    menuItemSelection=({key}) => {
      this.setState({
        concept: key
      })
    }

    menu = (
      <Menu onClick={this.menuItemSelection}>
        <Menu.Item key='ab'>ab</Menu.Item>
        <Menu.Item key='mw'>mw</Menu.Item>
        <Menu.Item key='va'>va</Menu.Item>
      </Menu>
   )

    render() {
      const {concept} = this.state
      return (

            <Dropdown overlay={this.menu}>

{concept}

            </Dropdown>

      )
    }
}

export default comp;

this is how my components looks like :
when hovered  on DropDown the menu will appear and when clicked on any of the item the items gets selected and state variable concept gets updated. how to test this DropDown ? iam not able to access the Menu to simulate the 'click' on the menu
component = mount(<comp />)     const dropdown = component.find(Dropdown) // this i am able to find      const menuInstance = component.find(Menu) // this it is returning reactwrapper {length:0}
how to simulate the onclick on menu
i tried console logging the dropdown.props().overlay i got:
 { '$$typeof': Symbol(react.element),
      type:
       { [Function: Menu]
         Divider: { [Function: Divider] propTypes: [Object], defaultProps: [Object] },
         Item: { [Function: MenuItem] contextTypes: [Object], isMenuItem: 1 },
         SubMenu: { [Function: SubMenu] contextTypes: [Object], isSubMenu: 1 },
         ItemGroup:
          { [Function: MenuItemGroup]
            propTypes: [Object],
            defaultProps: [Object],
            isMenuItemGroup: true },
         defaultProps:
          { prefixCls: 'ant-menu',
            className: '',
            theme: 'light',
            focusable: false },
         childContextTypes: { inlineCollapsed: [Function], antdMenuTheme: [Function] },
         contextTypes: { siderCollapsed: [Function], collapsedWidth: [Function] } },
      key: null,
      ref: null,
      props:
       { onClick: [Function],
         children: [ [Object], [Object], [Object] ],
         prefixCls: 'ant-menu',
         className: '',
         theme: 'light',
         focusable: false },
      _owner: null,
      _store: {} }

How does Dropdown render the Menu? If it renders it outside of the render tree - like, say it appends to the DOM, or uses the modern Portals API - it's not necessarily something enzyme can handle.
Have you filed an issue with antd to see if they have any thoughts?

as far as i can see it is rendering outside of render tree. though i haven't filed any issue with antd

I’m going to close this then; if it’s using official Portals, then it should just work in React 16, but otherwise, see #252 for why it’s not something enzyme can address.
Please post the link here when you do file the issue!


add diagram showing how to consume the journal api

The journaling api doc could use a diagram showing how to consume the journal api.
It is non trivial and everyone who worked on our end on a journal client found it extremely helpful to have such a diagram since just the available textual documentation isn’t enough for getting a proper understanding. And the retry logic can be easily misunderstood from my experience.
Here is an example flow (petri-net) diagram: adobeio-journal-v2-diagram.zip
But don't take it literally - it is slightly out of date. An IO Events engineer should first ensure it is correct.
(The zip contains both visio sources and a png)

Thanks @alexkli will get it reviewed and then update.


prometheus service auto-discovery

#1
Describe your changes
goldPinger expose prometheus metrics at ip:port/metrics, and you need to send it to prometheus or add configuration to prometheus in order to fetch, but if this request merged, you will allow prometheus to auto-discover your metrics and fetch it from service-name:ip/metrics
Testing performed
I add this and checked from prometheus side if target is up and metrics fetched.
Additional context
Add any other context about your contribution here.

Excellent point! Please could you follow https://github.com/bloomberg/goldpinger/pull/71/checks?check_run_id=321407289 to sign off the commits so that I can approve and merge?

Hey @SuleimanWA - every commit in the PR needs to have this Signed off part in the description.

Thanks!

@seeker89 a lot of things happened by mistake, sorry for this, is it in good shape now?

No problem at all. I've left one comment, and then we should be good to go.


Subtitle should be a centered header

This looks good to me. One thing: can we do h3 for subtitles instead?


Reconnection attempts happen very quickly

Tutum are running into an issue where a connection is failing at the handshake stage (or just after), which is leading to connection churn, and high CPU usage. Maybe some sort of backoff is in order.

Duplicate of #953


Bump to newer version of Ruby

@rogerhu Thanks for submitting this, makes sense to remove the old rubyforge property and unlock bundler to support 2.0 as well. Unclear if we would actually have to change our usage of bundler at all in order to support 2.0 in gen, hopefully not.
However, right now the tests are failing, it looks relatively minor in terms of failures, but this wouldn't make sense to merge until we can get the test cases passing again.

However, right now the tests are failing, it looks relatively minor in terms of failures, but this wouldn't make sense to merge until we can get the test cases passing again.

As I pointed out at #2221, the failure seems to be caused by the update of Sinatra, and I have one solution to the issue.
(The reason I don't make PR is that I think it's better to update the test case than to match the test case with a monkey patch.)

Thanks for the lead into the issue.  I think this is expected behavior.  If I put a breakpoint in the code with the changes mentioned in https://github.com/sinatra/sinatra/pull/1566/files in the padrino-core/lib/padrino-core/application/routing.rb file, I can see that the body is setting the URL that's missing as the body.
[1122, 1131] in /Users/rogerh/.rvm/gems/ruby-2.6.3/gems/sinatra-<IP_ADDRESS>/lib/sinatra/base.rb
   1122:         status(500)
   1123:       end
   1124:
   1125:       status(500) unless status.between? 400, 599
   1126:
=> 1127:       boom_message = boom.message if boom.message && boom.message != boom.class.name
   1128:       if server_error?
   1129:         dump_errors! boom if settings.dump_errors?
   1130:         raise boom if settings.show_exceptions? and settings.show_exceptions != :after_handler
   1131:       elsif not_found?
(byebug) boom.message
"GET /"

Later in this function the message gets set:
   1131:       elsif not_found?
=> 1132:         headers['X-Cascade'] = 'pass' if settings.x_cascade?
   1133:         body boom_message || '
Not Found
'

Later we see this thing gets set as the response:
#<Sinatra::Response:0x00007fc82073de68 @status=404, @headers={"Content-Type"=>nil, "X-Cascade"=>"pass"}, @writer=#<Method: Sinatra::Response(Rack::Response::Helpers)#append>, @block=nil, @body=["GET /"], @buffered=true, @length=0>

[918, 927] in /Users/rogerh/.rvm/gems/ruby-2.6.3/gems/sinatra-<IP_ADDRESS>/lib/sinatra/base.rb
   918:       @response['Content-Type'] = nil
   919:       invoke { dispatch! }
   920:       invoke { error_block!(response.status) } unless @env['sinatra.error']
   921:
   922:       unless @response['Content-Type']
=> 923:         if Array === body and body[0].respond_to? :content_type
   924:           content_type body[0].content_type
   925:         else
   926:           content_type :html
   927:         end
(byebug) body[0]
"GET /"

Ruby 2.6.3. seems to pass.  There are other issues on Ruby 2.7.0.

Thanks!


Don't use std::unique_ptr for SVEvent

https://github.com/tesseract-ocr/tesseract/issues/3869

This reverts commit 37b33749d, but misses some destructor calls which were previously used.

I didn’t test against 4.0.0.
4.1.3:
@.:~/tesseract4.1.3$ grep unique_ptr src/viewer/scrollview.cpp
@.:~/tesseract4.1.3$

Conclusion: Also /src/cutil/callcpp.cpp contains a unique_ptr-construction, but that’s probably not getting ‘delete’d. The big log is not falling over it.
I think a clear choice has to be made between using those std::-constructs and make the Java-application use them as well, or just remove them.

For 4.x that code was in callcpp.cpp (see link in my previous comment).

For 4.x that code was in callcpp.cpp (see link in my previous comment).

Yes. I saw that on second look. My commit primarily reverses your second commit, but hardly the first one. I wonder whether those other variables are also transferred to and from Java, and whether the std:: -wrapping gives trouble with the Java-application.


Date of birth is not a valid date each time setting the date properly

Hi
I am trying to validate date_of_birth using the following code:
validates_date :date_of_birth, :before => lambda { 18.years.ago },
                         :before_message => "must be at least 18 years old"

In my form, I have the following:
<%= form.text_field :date_of_birth, type: 'date', id: :profile_data_of_birth %>

Standard. Nothing particuler. But when I set the date, I keep getting the following error:
Date of birth is not a valid date

Any thoughts why this is happening?
Thanks very much!

what format is the DOB your inputting?


Documentation class reference links broken

Hello,
On the documentation site, all class reference links seem to be broken.
For example, at page: https://ethz-adrl.github.io/ct/ct_doc/doc/html/core_tut_control.html
clicking on any of the links (such as ct::core::PIDController) gives a 404 error.
Because I couldn't find a class reference page on the docs, I'm not sure what the intended behavior here is, but it seems like either the links should be removed or repaired.
Thanks!
-Seth

Hi,
I can confirm the issue for cross-referencing. E.g. when you try to navigate go a class reference in ct_core while being on the ct_optcon pages, you will get a 404 error.
The following workaround worked for me (you may resort to this as long as we do not have a proper fix). Rather than clicking the link for the class reference directly, first navigate to the correct package in the main bar

e.g. click on ct_core ... .and then search for your class of interest, e.g. "PID-Controller" on the top right search window. This means more effort, but at least you can follow the doc in the meantime.


profileDir doesn't create profile

As was suggested in #10 the profileDir option can be used to store FF profile in the .vscode folder. However I only got to try it now and I think profileDir have some issues resolving paths...

"profileDir": "${workspaceRoot}/.vscode/vscode-firefox-debug-profile/"

This path doesn't exist so according to docs it should be created, instead I get:

"profileDir": "${workspaceRoot}/.vscode/vscode-firefox-debug-profile" //without trailing "/"
"profileDir": "${workspaceRoot}\\.vscode\\vscode-firefox-debug-profile"

doesn't work either
If I create this folder manually, it starts to work, except the folder never gets populated and remains empty. I guess the debugger still uses temp profile.

I recently changed the behaviour so that the debug adapter always makes a copy of the specified profile and works with that and didn't adjust the documentation accordingly.
Do you actually need to work with the specified profile directly instead of with a copy? The upside would be that you could make permanent changes to the Firefox configuration while debugging, otherwise you'd have to manually start Firefox with this profile directory in order to make permanent changes. If you need this then I could add an option to modify and work with the specified profile directly.

I... don't  quite follow... Copy of what and where? I'm talking about profileDir not profile. I thought if I specify profileDir that doesn't exist - it would create it and it doesn't have to be a path under %APPDATA%\Mozilla\Firefox\Profiles - it can be everywhere, isn't it right?

Ok, yes, now I get it. You always make a copy (except when no profile is specified, I guess). Yes, I would say that this behavior is kinda counter intuitive. The user expects to use the specified profile directly and the specified profileDir directly. I would suggest using profiles directly by default and copy only if a specific option (let's say "proxyProfile": true||false) is specified, like the following:

if no profile is specified: a clean new preconfigured profile would be created under temp and deleted afterwards. proxyProfile would be ignored.
if a non existent profile name is specified: it would be created in the profile collection, preconfigured and it would be used directly.

If proxyProfile is set to true it would copy it into temp and work with the copy.

just as with 2. if profileDir is set to a path that contains no profile: it would create a preconfigured profile under that path and use it directly.

If an existent profile name is specified: it would copy & preconfigure it to that path.
If proxyProfile is set to true: the newly created profile under profileDir would get copied into temp and it becomes the working one.

So yeah, it can become redundant if the user would specify all 3 options at once, but it would make more sence from the get go. Like specifying profile and profileDir would get a copy of a profile into the desired location after the first lounch and by removing profile from the lounch config the user can work with that copy from now on and by switching proxyProfile he can kinda enter a safe mod.
Right now profileDir is a supplement option to profile but I suggest to make it work on it's own.

I don't want to make the option of working with the specified profile directly the default, because I'm modifying the profile and can't undo the modifications (and some of those modifications are considered a potential security risk if you use them for regular web browsing).
By the way, profileDir is not a supplement to profile at all but an alternative. If you specify both options, profileDir will be used and profile will be ignored.

I don't want to make the option of working with the specified profile directly
Do you actually need to work with the specified profile directly instead of with a copy?

Ok, than something like useProfileDirectly would be nice... I guess it would start faster as well.

By the way, profileDir is not a supplement to profile at all but an alternative.
If you specify a profile directory which doesn't exist yet, it will be created and configured for remote debugging automatically.

How exactly? As I mentioned in the OP if I just specify some path (be it an existent or none) - I get an error or the default behavior (clean temp profile, no usage of the path).

First of all you'd have to let Firefox create a profile directory by starting it with the command line option -profile. Then it should work.
If you create an empty profile directory (as you mentioned in the OP), that directory won't get filled because the debug adapter will make a copy of that empty directory and work with that - and that happens to be exactly the default behavior.

(or you could manually copy one of your existing profile directories and work with that)

If you create an empty profile directory (as you mentioned in the OP), that directory won't get filled because the debug adapter will make a copy of that empty directory and work with that - and that happens to be exactly the default behavior.

No, it fails to do anything. At first I simply specified a path with profileDir. Without creating an empty dir manually. it resulted in an error. only then I tried to create the path manually. As it states in your docs:  "If you specify a profile directory which doesn't exist yet, it will be created and configured for remote debugging automatically." Does it this piece of texts describe profile or profileDir functionality? Or both? Because if you say "profile directory" I (the user) think of profileDir.

First of all you'd have to let Firefox create a profile directory by starting it with the command line option -profile. Then it should work.

Ok, now I'm really confused. You said profileDir isn't supplementary to profile but now you say I have to manually create a profile in order to use profileDir. So does this mean I have to define this (previously, manually created) profile's name under profile? Or how exactly does profileDir know which profile to copy? Why does profileDir even needs an existent profile? Again: "If you specify a profile directory which doesn't exist yet, it will be created and configured for remote debugging automatically."

As it states in your docs: "If you specify a profile directory which doesn't exist yet, it will be created and configured for remote debugging automatically." Does it this piece of texts describe profile or profileDir functionality? Or both? Because if you say "profile directory" I (the user) think of profileDir.

Yes, this did describe profileDir. But that's where I changed the behaviour, the profileDir doesn't create a profile directory at the given path anymore. Your quote from the documentation was outdated and I have removed it now. Sorry about the confusion.
Both profile and profileDir reference existing profile directories: profile references a profile directory created using Firefox' profile manager under %APPDATA%\Mozilla\Firefox\Profiles. profileDir can reference a profile directory anywhere in the filesystem.
These two settings correspond to Firefox' command line options: profile corresponds to -P and profileDir corresponds to -profile. But whereas these command line options use the profile directories directly (and create them if they don't exist), the debug adapter always makes a temporary copy of them (and fails if they don't exist).
I hope this cleared things up (?)

yeah, I guess so. thnx.


circuit.draw display when ipython

Thanks to @frankharkins, I learned about IPython.display.display. This allows circuit to be drew circuits in a loop.
Take the following example:
from qiskit import QuantumCircuit
qc1 = QuantumCircuit(2)
qc1.h(0)
qc1.cx(0,1)

qc2 = QuantumCircuit(2)
qc2.h(1)
qc2.cx(1,0)

circuits = [qc1, qc2]

These are the outputs:

This makes #5030 unnecessary, so removing.

I think this would cause confusing behaviour. For example, in Jupyter Notebooks we wouldn't be able to do qc.draw().savefig(), but this would be fine in a script.
I would suggest leaving the .draw() functionality as is, and instead adding an _ipython_display_ method to the QuantumCircuit class. Then if someone wants to view their circuit they can type display(qc), or just qc if it's the last line of a cell. Slowly over time we can encourage the behaviour of using display(<object>) to show something in a notebook, and .draw() when we want to do something with that drawing.

I think this would cause confusing behaviour. For example, in Jupyter Notebooks we wouldn't be able to do qc.draw('mpl').savefig(), but this would be fine in a script.

What about qc.draw(..., display=True)?

What about qc.draw(..., display=True)?

This is better, but notebook users typing qc.draw(display=True) at the end of a cell will see a drawing followed by 'None'. I think it's still easier to keep existing functionality and encourage people to type display(qc.draw()) for these cases.

I agree with @frankharkins here, we don't want to change the return type that will break user expectations for using draw().

Yeap... I agree. What about a qc.display(...)

The right way to solve this is by calling display (by default in the jupyter notebook scope).
for circuit in circuits:
     display(circuit.draw(...))


Ansible request for CentOS6 adoptopenjdk_install role

Affecting both VPC and the CentOS6 GitHub Check:

https://ci.adoptopenjdk.net/job/VagrantPlaybookCheck/997/OS=CentOS6,label=vagrant/console

https://github.com/AdoptOpenJDK/openjdk-infrastructure/pull/1875/checks?check_run_id=1804893220

[ ] Missing install

[x] Bug in ansible playbook

[ ] Request for new playbook addition

Details:
The issue is with adoptopenjdk_install :
fatal: [localhost]: FAILED! => {"attempts": 3, "changed": false, "msg": "Failed to validate the SSL certificate for github-releases.githubusercontent.com:443. Make sure your managed systems have a valid CA certificate installed. If the website serving the url uses SNI you need python >= 2.7.9 on your managed machine  (the python executable used (/usr/bin/python) is version: 2.6.6 (r266:84292, Jun 20 2019, 14:14:55) [GCC 4.4.7 20120313 (Red Hat 4.4.7-23)]) or you can install the `urllib3`, `pyOpenSSL`, `ndg-httpsclient`, and `pyasn1` python modules to perform SNI verification in python >= 2.6. You can use validate_certs=False if you do not need to confirm the servers identity but this is unsafe and not recommended. Paths checked for this platform: /etc/ssl/certs, /etc/pki/ca-trust/extracted/pem, /etc/pki/tls/certs, /usr/share/ca-certificates/cacert.org, /etc/ansible. The exception msg was: hostname 'github-releases.githubusercontent.com' doesn't match either of '*.githubassets.com', 'githubassets.com'.", "status": -1, "url": "https://api.adoptopenjdk.net/v3/binary/latest/8/ga/linux/x64/jdk/hotspot/normal/adoptopenjdk?project=jdk"}

Apparently it's failing to validate the SSL Certificate for github-releases.githubusercontent.com. If all else fails, we can use validate_certs=False, but this is a last resort.

Replicated problem on local CentOS6 VM. Looking at doing as the Issue suggests, and updating Python to 2.7.9, however, we'll still have to ensure the GH check and the VPC machine has Python 2.7.9

Hmm, installing 2.7.9 ruined my Ansible install.... Not something I want to do on the VPC machine

Oh - my mistake - the error message is talking about the CentOS6 Python install, I think.
Installing it on CentOS6, following this https://www.linuxtweaks.in/how-to-install-python-2-7-in-centosrhel/ (and changing 2.7.8 for 2.7.9). I then symlinked /usr/bin/python to /usr/local/bin/python2.7. This also retains the original python 2.6 at /usr/bin/python2. This makes the role work!
@sxa Because a lot depends on Python, is it okay to have the playbook install 2.7 ? Alternatively, to fix VPC, we can have python2.7 installed in the provisioning script. As for GH check, I can't see where anything might be installed before the playbook is run on the docker image?

I've made a Python 2.7.9 install role, which can be seen at https://github.com/Willsparker/openjdk-infrastructure/tree/1877 . Currently testing with VPC : https://ci.adoptopenjdk.net/job/VagrantPlaybookCheck/1002/

https://ci.adoptopenjdk.net/job/VagrantPlaybookCheck/1005/
Seems this will have implications later on. I'll try to fix that issue and then if anymore come up , I think I'll abandon the idea of installing Python 2.7.9 and try to find a solution to the original problem.

Okay, yep, scrap the Python 2.7.9 idea. I'll put the yaml here, just in case we ever want to come back to it:
---
####################
# Python Bootstrap #
####################

# Check if Python is installed, and it's version. If Python isn't installed, or it's at a version below 2.7.9, install Python 2.7.9.
# Currently only for CentOS6. See: https://github.com/AdoptOpenJDK/openjdk-infrastructure/issues/1877

- name: Check for Python 2's version
  shell: python -V 2>&1 | grep -Po '(?<=Python )(.+)'
  register: python_version
  ignore_errors: yes
  when:
    - (ansible_distribution == "CentOS") and (ansible_distribution_major_version == "6")
  tags:
    - python_bootstrap

- name: Yum install prerequisites to build Python 2.7.9
  package:
    name: '{{ item }}'
    state: latest
  with_items:
    - zlib-devel
    - bzip2-devel
    - openssl-devel
    - xz-libs
    - wget
  when:
    - (ansible_distribution == "CentOS") and (ansible_distribution_major_version == "6")
    - (python_version.rc != 0) or (python_version.rc == 0 and python_version.stdout is version_compare('2.7.9', operator='lt') )
  tags:
    - python_bootstrap

- name: Download & extract Python 2.7.9 source
  unarchive:
    src: http://www.python.org/ftp/python/2.7.9/Python-2.7.9.tar.xz
    dest: /tmp/
    remote_src: yes
    mode: 0755
  retries: 3
  delay: 5
  register: python_download
  until: python_download is not failed
  when:
    - (ansible_distribution == "CentOS") and (ansible_distribution_major_version == "6")
    - (python_version.rc != 0) or (python_version.rc == 0 and python_version.stdout is version_compare('2.7.9', operator='lt') )
  tags:
    - python_bootstrap

- name: Configure, build & make/make altinstall
  shell: |
    cd /tmp/Python-2.7.9 && ./configure --prefix=/usr/local && make && make altinstall
  when:
    - (ansible_distribution == "CentOS") and (ansible_distribution_major_version == "6")
    - (python_version.rc != 0) or (python_version.rc == 0 and python_version.stdout is version_compare('2.7.9', operator='lt') )
  tags:
    - python_bootstrap

- name: Symlink Python 2.7.9 to /usr/bin/python
  file:
    src: /usr/local/bin/python2.7
    dest: /usr/bin/python
    state: link
    force: yes
  when:
    - (ansible_distribution == "CentOS") and (ansible_distribution_major_version == "6")
    - (python_version.rc != 0) or (python_version.rc == 0 and python_version.stdout is version_compare('2.7.9', operator='lt') )
  tags:
    - python_bootstrap

Onwards

Okay, I tried installing the 4 pip modules that the error message suggests, and while installing pyOpenSSL, the following error occurs:
[vagrant@adoptopenjdkC6 ~]$ sudo pip install pyOpenSSL
You are using pip version 7.1.0, however version 21.0.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
Collecting pyOpenSSL
  Downloading https://files.pythonhosted.org/packages/b2/5e/06351ede29fd4899782ad335c2e02f1f862a887c20a3541f17c3fa1a3525/pyOpenSSL-20.0.1-py2.py3-none-any.whl (54kB)
    100% |████████████████████████████████| 57kB 4.2MB/s
Collecting cryptography>=3.2 (from pyOpenSSL)
  Downloading https://files.pythonhosted.org/packages/b7/82/f7a4ddc1af185936c1e4fa000942ffa8fb2d98cff26b75afa7b3c63391c4/cryptography-3.3.1.tar.gz (539kB)
    100% |████████████████████████████████| 540kB 203kB/s
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):
      File "<string>", line 20, in <module>
      File "/tmp/pip-build-hDZHat/cryptography/setup.py", line 25, in <module>
        exec (f.read(), about)
      File "<string>", line 31, in <module>
    ValueError: zero length field name in format

    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-hDZHat/cryptography

And much the same error message installing ndg-httpsclient :
[vagrant@adoptopenjdkC6 ~]$ sudo pip install ndg-httpsclient
You are using pip version 7.1.0, however version 21.0.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
Collecting ndg-httpsclient
  Downloading https://files.pythonhosted.org/packages/bf/b2/26470fde7ff55169df8e071fb42cb1f83e22bd952520ab2b5c5a5edc2acd/ndg_httpsclient-0.5.1-py2-none-any.whl
Collecting PyOpenSSL (from ndg-httpsclient)
  Using cached https://files.pythonhosted.org/packages/b2/5e/06351ede29fd4899782ad335c2e02f1f862a887c20a3541f17c3fa1a3525/pyOpenSSL-20.0.1-py2.py3-none-any.whl
Collecting pyasn1>=0.1.1 (from ndg-httpsclient)
  Downloading https://files.pythonhosted.org/packages/62/1e/a94a8d635fa3ce4cfc7f506003548d0a2447ae76fd5ca53932970fe3053f/pyasn1-0.4.8-py2.py3-none-any.whl (77kB)
    100% |████████████████████████████████| 77kB 4.2MB/s
Collecting cryptography>=3.2 (from PyOpenSSL->ndg-httpsclient)
  Using cached https://files.pythonhosted.org/packages/b7/82/f7a4ddc1af185936c1e4fa000942ffa8fb2d98cff26b75afa7b3c63391c4/cryptography-3.3.1.tar.gz
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):
      File "<string>", line 20, in <module>
      File "/tmp/pip-build-vqod4k/cryptography/setup.py", line 25, in <module>
        exec (f.read(), about)
      File "<string>", line 31, in <module>
    ValueError: zero length field name in format

    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-vqod4k/cryptography

You're trying things with ancient versions of pip. python -m pip install --upgrade pip should help. While you are at it, use the latest version (2.7.18). If I remember correctly, Ansible favours Python 3 nowadays. Maybe it compiles on CentOS 6? Would give us patches.

Yeah ... it may be worth bringing up the conversation of running our playbooks on Python 3.
I'll trying upgrading pip, and seeing if that changes anything, thanks :-)

On a fresh Vagrant VM:
[vagrant@adoptopenjdkC6 ~]$ pip install --upgrade pip
You are using pip version 7.1.0, however version 21.0.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
Collecting pip
  Downloading https://files.pythonhosted.org/packages/b7/2d/ad02de84a4c9fd3b1958dc9fb72764de1aa2605a9d7e943837be6ad82337/pip-21.0.1.tar.gz (1.5MB)
    100% |████████████████████████████████| 1.6MB 151kB/s
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):
      File "<string>", line 20, in <module>
      File "/tmp/pip-build-0PsDnh/pip/setup.py", line 77, in <module>
        "pip{}=pip._internal.cli.main:main".format(sys.version_info[0]),
    ValueError: zero length field name in format

    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-0PsDnh/pip

:facepalm:

I'm just testing to see if validating_certs: no will fix the issue - as a temporary fix, it may be considered passable considering it's coming from our api server. But  it shouldn't be permanent.
https://ci.adoptopenjdk.net/job/VagrantPlaybookCheck/1012/

I'm just testing to see if validating_certs: no will fix the issue - as a temporary fix, it may be considered passable considering it's coming from our api server.

It isn't - the API server redirects to github. I would possibly be ok with ignoring the cert if either we verified a checksum on the download, although that would need to be updated on each release.

Yeah, as you say, it's non trivial - I'd prefer to work on finding the fix over finding the optimal workaround :-)
I may go back to building Python 2.7.9 as part of the playbook and dealing with the problems from that.

Okay, so the issue I'm having when using Python 3.6.10 on a CentOS6 VM is as follows:
< TASK [Common : Enable EPEL release (not CentOS8)] >
fatal: [<IP_ADDRESS>]: FAILED! => {"changed": false, "msg": "The Python 2 bindings for rpm are needed for this module. If you require Python 3 support use the `dnf` Ansible module instead.. The Python 2 yum module is needed for this module. If you require Python 3 support use the `dnf` Ansible module instead."}

Note for future me: You can force the ansible_python_interpreter by using -e 'ansible_python_interpreter=/usr/local/bin/python3' in the ansible-playbook command.
Apparently this is a known issue of the dnf module (not specifically the yum module) (https://github.com/ansible/ansible/issues/67083#issuecomment-582000464). I assume this affects yum too.

From what I can see, CentOS6 's Yum is dependent on Python2.6, and so we can't just globally set the ansible_python_interpreter to the newer version of Python. And as far as I can see, there's no way of setting the interpreter to a specific python for a single task.

If the problem is only the missing Let's Encrypt root certificate, you should be able to put those somewhere in /etc, invoke some tool, and CentOS should re-generate the trust stores for all tools (see https://manuals.gfi.com/en/kerio/connect/content/server-configuration/ssl-certificates/adding-trusted-root-certificates-to-the-server-1605.html). That's the short-term solution. The long-term solution is to do what Oracle does: Install a CentOS 6 sysroot onto a CentOS 7 system.

Ah okay... I googled a bit, and found that the SSL Cert can be found with openssl s_client -showcerts -servername api.adoptopenjdk.net.net -connect api.adoptopenjdk.net:443 < /dev/null - however, that's outputting 3 different certificates.

You want ISRG Root X1, and ISRG Root X2 from https://letsencrypt.org/certificates/.

Do you know how I can retrieve them from the command line? The command I put above doesn't output anything about ISRG, and I can't find anything online about how to retrieve it

First, check with curl -vI https://valid-isrgrootx1.letsencrypt.org/ whether it fails.
To get the certificates:
curl -O https://letsencrypt.org/certs/isrgrootx1.pem
curl -O https://letsencrypt.org/certs/isrg-root-x1-cross-signed.pem
curl -O https://letsencrypt.org/certs/isrg-root-x2.pem
curl -O https://letsencrypt.org/certs/isrg-root-x2-cross-signed.pem

After importing the certificates into the OS, check again with curl -vI https://valid-isrgrootx1.letsencrypt.org/ and it should work now.
[A client program has to bring the root certificates itself, otherwise the whole chain of trust wouldn't work. The client program trusts those certificates and by trusting those, it trusts every certificate signed with one of those root certificates. If the root certificates were supplied by the server or if you had none, It would be like connecting to a server with a self-signed certificate because there's no pre-established trust. That's why openssl s_client is useless for this task.]

Ah okay. I retrieved them and added them to the system as per https://manuals.gfi.com/en/kerio/connect/content/server-configuration/ssl-certificates/adding-trusted-root-certificates-to-the-server-1605.html , however the curl -vI https://valid-isrgrootx1.letsencrypt.org/ command seemed to output the same before and after adding those certs. I am able to wget an archive, but I get the error when using the unarchive module in Ansible

Can you paste the curl output here and run curl -vI api.adoptopenjdk.net, too? What does python -c "import ssl; print(ssl.get_default_verify_paths()) print?

[vagrant@adoptopenjdkC6 ~]$ curl -vI api.adoptopenjdk.net
* Rebuilt URL to: api.adoptopenjdk.net/
*   Trying <IP_ADDRESS>...
* TCP_NODELAY set
* Connected to api.adoptopenjdk.net (<IP_ADDRESS>) port 80 (#0)
> HEAD / HTTP/1.1
> Host: api.adoptopenjdk.net
> User-Agent: curl/7.61.1
> Accept: */*
>
< HTTP/1.1 301 Moved Permanently
HTTP/1.1 301 Moved Permanently
< Date: Tue, 16 Feb 2021 09:18:01 GMT
Date: Tue, 16 Feb 2021 09:18:01 GMT
< Connection: keep-alive
Connection: keep-alive
< Cache-Control: max-age=3600
Cache-Control: max-age=3600
< Expires: Tue, 16 Feb 2021 10:18:01 GMT
Expires: Tue, 16 Feb 2021 10:18:01 GMT
< Location: https://api.adoptopenjdk.net/
Location: https://api.adoptopenjdk.net/
< cf-request-id: 084bbaf1470000e658c838a000000001
cf-request-id: 084bbaf1470000e658c838a000000001
< Server: cloudflare
Server: cloudflare
< CF-RAY: 62262dc87ae9e658-LHR
CF-RAY: 62262dc87ae9e658-LHR
< alt-svc: h3-27=":443"; ma=86400, h3-28=":443"; ma=86400, h3-29=":443"; ma=86400
alt-svc: h3-27=":443"; ma=86400, h3-28=":443"; ma=86400, h3-29=":443"; ma=86400

<
* Connection #0 to host api.adoptopenjdk.net left intact

and
[vagrant@adoptopenjdkC6 ~]$ python -c "import ssl; print(ssl.get_default_verify_paths())"
Traceback (most recent call last):
  File "<string>", line 1, in <module>
AttributeError: 'module' object has no attribute 'get_default_verify_paths'

Doesn't look like get_default_verify_paths exists. I can't even check the ssl.OPENSSL_VERSION supposedly because Python2.6 doesn't support that.

curl -vI api.adoptopenjdk.net needs a https. You're testing port 80 at the moment.

Redone:
[vagrant@adoptopenjdkC6 ~]$ curl -vI https://api.adoptopenjdk.net
* Rebuilt URL to: https://api.adoptopenjdk.net/
*   Trying <IP_ADDRESS>...
* TCP_NODELAY set
* Connected to api.adoptopenjdk.net (<IP_ADDRESS>) port 443 (#0)
* Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH
* successfully set certificate verify locations:
*   CAfile: /etc/pki/tls/certs/ca-bundle.crt
  CApath: none
* TLSv1.2 (OUT), TLS handshake, Client hello (1):
* TLSv1.2 (IN), TLS handshake, Server hello (2):
* NPN, negotiated HTTP1.1
* TLSv1.2 (IN), TLS handshake, Certificate (11):
* TLSv1.2 (IN), TLS handshake, Server key exchange (12):
* TLSv1.2 (IN), TLS handshake, Server finished (14):
* TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
* TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.2 (OUT), TLS handshake, Next protocol (67):
* TLSv1.2 (OUT), TLS handshake, Finished (20):
* TLSv1.2 (IN), TLS change cipher, Change cipher spec (1):
* TLSv1.2 (IN), TLS handshake, Finished (20):
* SSL connection using TLSv1.2 / ECDHE-ECDSA-AES128-GCM-SHA256
* Server certificate:
*  subject: C=US; ST=CA; L=San Francisco; O=Cloudflare, Inc.; CN=adoptopenjdk.net
*  start date: Jul  2 00:00:00 2020 GMT
*  expire date: Jul  2 12:00:00 2021 GMT
*  subjectAltName: host "api.adoptopenjdk.net" matched cert's "*.adoptopenjdk.net"
*  issuer: C=US; O=Cloudflare, Inc.; CN=Cloudflare Inc ECC CA-3
*  SSL certificate verify ok.
> HEAD / HTTP/1.1
> Host: api.adoptopenjdk.net
> User-Agent: curl/7.61.1
> Accept: */*
>
< HTTP/1.1 200 OK
HTTP/1.1 200 OK
< Date: Tue, 16 Feb 2021 11:38:16 GMT
Date: Tue, 16 Feb 2021 11:38:16 GMT
< Content-Length: 1846
Content-Length: 1846
< Connection: keep-alive
Connection: keep-alive
< Set-Cookie: __cfduid=d07de1c281a7523a818f9401eb9100b3f1613475496; expires=Thu, 18-Mar-21 11:38:16 GMT; path=/; domain=.adoptopenjdk.net; HttpOnly; SameSite=Lax
Set-Cookie: __cfduid=d07de1c281a7523a818f9401eb9100b3f1613475496; expires=Thu, 18-Mar-21 11:38:16 GMT; path=/; domain=.adoptopenjdk.net; HttpOnly; SameSite=Lax
< Accept-Ranges: bytes
Accept-Ranges: bytes
< cache-control: public, max-age=86400
cache-control: public, max-age=86400
< last-modified: Tue, 12 Jan 2021 11:54:22 GMT
last-modified: Tue, 12 Jan 2021 11:54:22 GMT
< vary: accept-encoding
vary: accept-encoding
< Set-Cookie: b7b892882bae631693e1ea44963ef628=fde9d519ef5131c720794443840a88a0; path=/; HttpOnly; Secure
Set-Cookie: b7b892882bae631693e1ea44963ef628=fde9d519ef5131c720794443840a88a0; path=/; HttpOnly; Secure
< Cache-control: private
Cache-control: private
< CF-Cache-Status: DYNAMIC
CF-Cache-Status: DYNAMIC
< cf-request-id: 084c3b5a240000423374814000000001
cf-request-id: 084c3b5a240000423374814000000001
< Expect-CT: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
Expect-CT: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
< Server: cloudflare
Server: cloudflare
< CF-RAY: 6226fb3d0fa54233-LHR
CF-RAY: 6226fb3d0fa54233-LHR
< alt-svc: h3-27=":443"; ma=86400, h3-28=":443"; ma=86400, h3-29=":443"; ma=86400
alt-svc: h3-27=":443"; ma=86400, h3-28=":443"; ma=86400, h3-29=":443"; ma=86400

<
* Connection #0 to host api.adoptopenjdk.net left intact

Upon further investigation with @aahlenst . we've ascertained that this probably can't be done properly. Python 2.6 doesn't support SNI, which is the issue when connecting with http://github-releases.githubusercontent.com/ . We can't install a different version of Python, otherwise yum won't work.
So, we have a few options, none of them great:

Merge #1913 - which will stop validating the certs.
use the get_url module to retrieve the archive and decompress it in a separate task (however, due to adoptopenjdk_install being a generalised role, the checksum can't be put in, so I don't think it's safer than validate_certs: no ).
Try to do what Oracle does with CentOS6, which is install a CentOS6 sysroot on a CentOS7 system - however; I don't know how easy that'd be to implement into VPC / the GitHub Check.

regarding option 2: Can the API provide a checksum of the archive that's being requested? If so, it could be assigned to a variable easily enough

We can't install a different version of Python, otherwise yum won't work.

Is it not possible to put Python2.7 in a different location on the machine and only use that with ansible? i.e. don't make it the default on the machine, therefore yum should be unaffected?

use the get_url module to retrieve the archive and decompress it in a separate task

Does that work and validate the certificate (Seems unlikely if unarchive doesn't)? If so I don't see why that's a problem ...

I've just built my own Python27 and pointed ansible at it after setting ansible_python_interpreter=/usr/local/python2/bin/python as a variable to ansible and it was able to complete the adoptopenjdk_install role. Note that if you set that value it also uses it for operations on the machine that you're running ansible-playbook on so it's not ideal unless you're running ansible-playbook on the target machine unless you symlink /usr/local/python2/bin/python to the default python on your local system. (There must be another way of doing that :-) )
tarball is at https://ci.adoptopenjdk.net/userContent/usrlocalPython27.tar.xz if we can make use of it (Nothing special done to make it, just created from this source, then ./configure --prefix=/usr/local/python2; make -j10; make install)

With that, did you run the whole playbook or just the adoptopenjdk_install role? If it's just the adoptopenjdk-install role, try running the Common role (or anything that uses Ansible's yum module).
From my brief googling, wget does validate the SSL cert, I think?

The Common role can't easily be tested because it hits a Error: Cannot find a valid baseurl for repo: base for me. I don't see why get_url would behave differently from unarchive in which case we likely have two options if the Common role won't work (Although why ansible's yum operation needs to use the same python interpreter as it does is ... grrr)

Use wget or another utility to download before the unarchive
Use a separate unarchive step for RHEL/Cent6 with e.g.:

  vars:
    ansible_python_interpreter: /usr/local/python2/bin/python

I think the latter, personally - seems cleaner and it's more obvious that it's done that way because CentOS6 is the outlier

I have a branch doing that at https://github.com/Willsparker/openjdk-infrastructure/tree/centos6_Python and testing on VPC at https://ci.adoptopenjdk.net/job/VagrantPlaybookCheck/1062/ :-)


Add Pod Disruption Budget to Karpenter helm chart

Tell us about your request
Add PDB to the helm chart that allow setting minAvailable/maxUnavailable for Karpenter
Tell us about the problem you're trying to solve. What are you trying to do, and why is it hard?
I am deploying a HA Karpenter running with on multiple nodes. During k8s version upgrade, I will create a new set of node group and move all the Karpenter pods over there. I would like to drain all the old nodes at once but since there is no PDB at the moment, I need to cordon and drain the node one by one to move the workload over to new nodes. It will be great if the helm chart allows us to set something like pod.disruption.minAvailable.

https://github.com/aws/karpenter/pull/1641


Update version: FengHe.FocusNote version 2.16.2-682

Pull request has been created with WinGet Automation :rocket:
Microsoft Reviewers: codeflow:open?pullrequest=https://github.com/microsoft/winget-pkgs/pull/113840&drop=dogfoodAlpha

Close with reason: No changes;


handler is not a function

I've just started using this library.
Sometimes my code works and the bot responds, sometimes it does not, and in the console i get a
μ-bot :: Error
TypeError: handler is not a function

I am new to this so i dont know if i am missing something ....

Hello, can you please post your code?

const TeleBot = require('telebot');
const bot = new TeleBot(process.env.BOT_TOKEN);

bot.on(['/start', 'audio', 'sticker'], msg => {
  return bot.sendMessage(msg.from.id, 'Bam!');
});
bot.start();

This code looks ok. What version of Node.js are you using?

Shouldn't that be:
const TeleBot = require('telebot');
const bot = new TeleBot(process.env.BOT_TOKEN);

bot.on(['/start', 'audio', 'sticker'], (msg) => {
  return bot.sendMessage(msg.from.id, 'Bam!');
});
bot.start();

So msg in brackets rather than without?

@mullwar node version is 5.0.0
@Vashiru i can try it but it is indeed possible to use an arrow function with only one parameter without ()

TeleBot library requires Node >= 6.0.

@mullwar Im sorry, node version is v8.0.0 (npm is 5.0.3)

Had nothing to do with your library. Somehow i confused and was using something from another library called micro-bot to start my bot. Just regular node  index.js did the job.
I'm sorry and thanks for your repsonses. Now it works great!


Feature fail safe

Added tentative files for the MCUs of the Fail Safe [FS] system for Vortex's Autonomous Surface Vehicle [ASV].

The PWM file has been tested with both the hardware RX and simulated PWM. Please note that the ESC requires a fresh PWM calibration signal each time the FS is triggered or the ESC boots up. The RX will automatically send this signal, but if the ESC is connected to the Teensy MCU instead, this signal won't be received. Therefore the Teensy also needs to send a calibration signal.
The FS file compiles, but needs testing.

Added testing files for the Arduino MCUs of the ASV.
Added READMEs for Fail Safe and Electronic Speed Controllers and updated Main README of the repository.
Added a workspace for Analog Discovery 2 Oscilloscopes to quickly test and simulate FS functionality.

Might have been beneficial to design the FS software part as a state machine, but I really don't think it's that important. @PizzaAllTheWay @theBadMusician any other input?

sorry misclick :P

Might have been beneficial to design the FS software part as a state machine, but I really don't think it's that important. @PizzaAllTheWay @theBadMusician any other input?

Yeah don't think it's necessary, as it seems now the code implementation of Fail Safe is a ok :)


Trailing Fragment Space(s)

We have fragments that have a space at the end (outbound/22130600/po/powithspacetest%20).  When trying to navigate to this fragment Backbone is stripping the trailing space in getFragment().
        var M = /^[#\/]|\s+$/g;

        getFragment: function(t) {
            if (t == null) {
                if (this._usePushState || !this._wantsHashChange) {
                    t = this.getPath()
                } else {
                    t = this.getHash()
                }
            }
            return t.replace(M, "")
        },

I can understand removing the bits at the start of the fragment, but can someone explain the motivation for removing the space(s) at the end?  This causes our app to fail to lookup the requested data because the part with the space is a param in the router.
routes: {
                "": "home",
                "outbound/:tieBack/po/:poNbr": "outboundDetail"
            },

And
            outboundDetail: function(tieBack, poNbr) {
                app.switchOutboundDetail(tieBack, poNbr);
            },

Since somebody went out of his or her way to strip trailing spaces, it's probably a solution to some kind of problem, so I'll need to consult the version history in order to find the rationale. In any case, I agree it seems a bit overzealous.


The api is unable to send data to control channel

When SendModuleStatus is called by any module it is working perfectly. But if it called by webui, using api it does not sends data to the channel. The execution is blocked at the channel.

To better understand the issue add the print command in utils function before the data is sent to the channel and other in main where data is received by the channel. Then try to call util.SendModuleStatus from different module. Then try to use webui to see the difference.


Fix dot merge BatchingDimensions setting

mark related to https://github.com/alibaba/BladeDISC/issues/766


1.0.1 version not displaying anything

Can I start by saying I absolutely love this extension, and I can't believe I have only just found it! Super super useful stuff.
I wanted to let you know that the display of the type-tree doesn't seem to render at all in the new 1.x version. I was able to use it just fine with the latest 0.x version, so that's what I'll be using for now, but felt I should make a bug report.
I am on an Intel MacBook Pro (2019) running Monterey 12.6.3. When I try to load the updated extension I get the toast activation message saying it is ready to use, and the title of the sidebar section reads TS TYPE EXPAND (ACTIVE) but the section is completely blank no matter what files I open or what types I click on.
Let me know if you need any more details. Thanks for all your hard work!

@finnmerlett Sorry for the delay in checking.
Thanks for the bug report! I appreciate it!
I am a regular user of M1 Mac, but I also own an Intel Mac, so I will try to reproduce the problem on that machine. If I can't reproduce the problem, I may ask you to submit the logs.
Also, I don't have much time to contribute these days, so it may take some time to solve the problem. I would appreciate it if you could continue to use 0.X for now.
Thank you so much!

@finnmerlett Thank you for your patience!
I have just released v1.0.5, which fixes the same problem (it becomes active but does not expand when selected).
However, I suspect that this is the same cause, since the fix seems to be the cause of what should probably be broken in 0.x as well.
I would appreciate it if you could try the latest v1.0.5 and comment on whether the problem continues to occur!

Just checked it out and looks like it's working with the v1.0.5! Nice one, cheers


add rrelatime mount test

issue: https://github.com/containers/youki/issues/1534

[x] rrelatime
[x] rnorelatime
[x] rnoatime
[x] rstrictatime

Can you run make lint to make sure clippy passes? Or we can wait to merge this after we fix the CI.

Let me see.

Can you rebase to main so we can test this PR with CI now that #1643 is merged :)

Can you rebase to main so we can test this PR with CI now that #1643 is merged :)

Ok, already rebase main.

Apologize, we may need to merge #1638 first so the CI can be fixed.

#1638 merged. Please rebase and I can review.

The tests LGTM. Pending explaination on the need to change .gitignore.

Also, you don't have to do it in the PR, but can you follow up to add more comments explain how the mod test work? I had to trace the code myself to understand where the condition is checked. A simple explanation at top explaining that runtimetest will check if the actual mount matches the spec will be good. Otherwise, the reader's first reaction is: I see the spec contains the mount options, but where is the options actually checked.


Maven wrapper 3.2.0+  : Add checksum verification

Starting with the Maven wrapper 3.2.0, they added checksum verification
This recipe should add this verification.
See
https://issues.apache.org/jira/browse/MWRAPPER-75
https://github.com/apache/maven-wrapper/blob/master/src/site/markdown/index.md#checksum-verification-of-downloaded-binaries

Could you please assign it to me? I would attempt it in coming weeks...


Remove unused dependencies

This addon was looking quite out of date. In particular, the fact that it depended on ember-cli-babel version 5 was starting to cause issues for an Ember app that depends on this addon.
Here's a summary of what I changed:
Consolidating dependencies
The main functionality of this addon is implemented in the index.js file. That file has two explicit dependencies:

'request-promise'
'ember-cli-deploy-plugin'

It makes sense to declare these as dependencies in the package.json file. That leaves the following as devDependencies:

'chai-as-promised'
'chai'
'ember-cli' (required from ember-cli-build.js)
'glob'
'mocha-jshint'
'mocha'
'request'

These are mostly used for running unit tests.
Everything else must go! 🔥🔥🔥
Use native Promise instead of RSVP
Node has had Promise API for ages. This addon supports node 10 and later. We don't need RSVP as a polyfill anymore.
Update Travis configuration
The travis configuration was out of date (using node version 4!). I used output from Ember CLI generate addon as a fresh start, then adapted it to run the tests for this addon.
Remove ember-try
ember-try is great for testing addons against different versions of Ember. To use ember try, you have to run tests via ember test, which in turn requires ember-source, ember-cli-htmlbars and ember-cli-babel (Remember? That was how we got here in the first place!)... I don't think any of that stuff belongs in this addon.
I removed the ember-try addon from package.json and also removed the config/ember-try.js file.
Remove bower
bower looks like a relic from a bygone era. We don't need it.

Thanks @nelstrom . Published as https://github.com/achambers/ember-cli-deploy-github-deployment-status/releases/tag/v1.0.0


INT B-18653 Multi-Moves Routing & Enhancements

INTEGRATION BRANCH
Agility ticket
Summary
With Multiple Moves being integrated and being able to have the functionality of a user being able to not only see their move, but be able to create a new move - we needed to change the current routing in order to support multiple moves.
Currently, the home page of a move was just the URL /move. This page used data from state and was not flexible or dynamic with what state held. With the use of the React hook useParams(), we can leverage the moveId and select the move data from the recently added API endpoint of getAllMoves and have the move home page be more dynamic and should allow for multiple home pages for a user.
This PR does the following:

updated some backend return values (primarily db queries) to support the new move home page
added useEffect to the MultiMovesLandingPage that will allow for current data to be loaded and saved into state on component mount
updated the routing return of MultiMovesLandingPages to consider the current profile state
updated test data to what is being returned by the getAllMoves API endpoint
implemented early LoadingPlaceholer returns as data loads to avoid async errors
updated MultiMoveContainer to show shipment unique identifier instead of move code
created MoveHome.jsx and essentially refactored the previously used Home component from a class to a functional component. This will allow for the use of hooks (useEffect, useState, useParams, etc)

NOTE the full functionality of adding another move is not yet in place. This will be done with Multiple Moves - Create Move Button Flow. Once that is in place, the user should be able to upload orders AKA moves.
How to test

Access MM as a customer
If you do not have a profile set up, you should be routed to the profile creation flow
Click Create a Move button on the landing page
This should navigate you to the basic /move home page
Click Add Orders and add your info
Once complete, you should be routed back to the landing page and see your move
Click Go to Move button and you should see the URL contain the moveId params

Warnings

:warning:

Files located in legacy directories (src/shared or src/scenes) have
been edited. Are you sure you don’t want to also relocate them to the new file structure?
View the frontend file org ADR for more information

  Generated by :no_entry_sign: dangerJS against 45632c4079e35ddd54c705b692f21e17a792bf7d

Warnings

:warning:

Files located in legacy directories (src/shared or src/scenes) have
been edited. Are you sure you don’t want to also relocate them to the new file structure?
View the frontend file org ADR for more information

  Generated by :no_entry_sign: dangerJS against 7cfc3f02a1db803a3d72be509a389346cd720017

I logged in as a customer with multiple moves:

I click "Create a move" then am asked to validate my profile, so I do, then "Create a Move" from the validation page. Should that route me to the customer flow at that point?

I click "Create a move" then am asked to validate my profile, so I do, then "Create a Move" from the validation page. Should that route me to the customer flow at that point?

Or actually since I have an active move, I should be routed to that move page itself right?

I logged in as a customer with multiple moves:
I click "Create a move" then am asked to validate my profile, so I do, then "Create a Move" from the validation page. Should that route me to the customer flow at that point?

That will be fixed and addressed with B-18654

That will be fixed and addressed with B-18654

Ah ok my b!

I click "Create a move" then am asked to validate my profile, so I do, then "Create a Move" from the validation page. Should that route me to the customer flow at that point?

Or actually since I have an active move, I should be routed to that move page itself right?

aaaaand that will be fixed with B-18652 haha

Click Add Orders and add your info
Once complete, you should be routed back to the landing page and see your move

Let me know if this comment is also out of scope lol. For these steps - after I entered orders and uploaded, I am taken back to the landing page but don't see my move yet.

I have to click Create a Move, then add the shipments, review, then I do see the move on the landing page.
Was that routing fixed in one of Tevin's stories?

It might be a bit out of scope, but it's not a difficult fix and is kinda relevant.

Ok, up to you. I can't remember if this was addressed in Tevin's work for all the routing fixes or not.

It might be a bit out of scope, but it's not a difficult fix and is kinda relevant.

Ok, up to you. I can't remember if this was addressed in Tevin's work for all the routing fixes or not.

Nah it's just an issue of updating state when orders are created. Right now the dashboard is using data from the serviceMemberMoves object in state. That isn't being updated when orders are uploaded, but is being updated when the move home page is accessed.

Click Add Orders and add your info
Once complete, you should be routed back to the landing page and see your move

Let me know if this comment is also out of scope lol. For these steps - after I entered orders and uploaded, I am taken back to the landing page but don't see my move yet.

I have to click Create a Move, then add the shipments, review, then I do see the move on the landing page.
Was that routing fixed in one of Tevin's stories?

I can update the moves when orders are submitted instead of on page load. Let me get a fix going. I've been testing this by just clicking the MilMove logo after submitting orders. It's just an issue with updating state in several locations.
It might be a bit out of scope, but it's not a difficult fix and is kinda relevant.

Fixed!


About the video feature extraction

Can you provide your code about the video feature extraction? Nice Work in CVPR 😄

Hi, please refer to HCRN for feature extraction. I will try to add it to this repo if got time..

Hi @doc-doc , Hi @Gary-code,
Any news about the feature extraction for the video, especially the test file.
I'm looking for  the file : app_mot_test.h5, I would be really grateful if you can provide us this file, because it is not included in the zip file mentioned in the readme.
Best,

Hi @doc-doc , Hi @Gary-code,
Any news about the feature extraction for the video, especially the test file.
I'm looking for the file : app_mot_test.h5, I would be really grateful if you can provide us this file, because it is not included in the zip file mentioned in the readme.
Best,

Hello, have you solved this problem? I am also looking for app_mot_test.h5 file, best wish.


Replace CRLF line endings with LF

Fix issues with CRLF line endings.

I have no idea how CRLFs snuck in, thanks!


COMMAND PROMT OPEN BUT DOES NOTHING HELP!!

Please join our help server on Discord for help with setting up the bot. You haven't provided any information to allow us to help you here.


Unload plugin after patch

Unload plugin from memory

Thanks! Seems to work, doesn't show up in the modules list after boot. I've updated it to use a structure to make the code more legible.


Clean Up 1.21 Presubmits

Required to get https://github.com/aws/eks-anywhere-build-tooling/pull/2085 working.
We no longer support 1.21 so we should cleanup the jobs.

/lgtm
/approve


Tracking number is not migrated

Used Shopware Version: <IP_ADDRESS>
Description:
If a tracking number was recorded in Shopware 5, it is not transferred to the Shopware 6 order during migration.
Steps to reproduce:

Set up a migration environment
Install the migration extensions
Enter a tracking number in Shopware 5
Migrate to Shopware 6.6

Expected result:
The tracking number is transferred correctly.
Actual result:
The tracking numbers are not migrated.

[public] Shopware automated response: This issue is linked to the internal issue: MIG-997
[created from MIG-997, comment 514448]


Deprecate installing ko from ./cmd/ko

As one of ko's biggest fans, it pains me to see people fail to install ko by trying:
go install github.com/google/ko

Because this repo is not likely to have more than one executable, let's move the binary to the root to make the logical install line above work as expected.

Closed by #257?

Closed by #257?

Can we also instead recommend installing from released binaries, instead of using go install?
Some user reports indicate this approach might lead to friction, since users should run the command outside of a directory that's part of a Go module, and might be broken by case-sensitivity bugs if some packages had previously been fetched on the user's machine.
Installing from prebuilt released binaries should be the default.

Can we also instead recommend installing from released binaries, instead of using go install?
Some user reports indicate this approach might lead to friction, since users should run the command outside of a directory that's part of a Go module, and might be broken by case-sensitivity bugs if some packages had previously been fetched on the user's machine.
Installing from prebuilt released binaries should be the default.

Some user reports indicate this approach might lead to friction, since users should run the command outside of a directory that's part of a Go module, and might be broken by case-sensitivity bugs if some packages had previously been fetched on the user's machine.

I think this is why @n3wscott filed https://github.com/google/ko/pull/288
Installing with go is broken such that you don't pick up the latest release, AFAICT.

Some user reports indicate this approach might lead to friction, since users should run the command outside of a directory that's part of a Go module, and might be broken by case-sensitivity bugs if some packages had previously been fetched on the user's machine.

I think this is why @n3wscott filed https://github.com/google/ko/pull/288
Installing with go is broken such that you don't pick up the latest release, AFAICT.

Is there no issue to install the cmd version? I thought the casing issue is not related to where the exe is but a bad actor on the other lib

Is there no issue to install the cmd version? I thought the casing issue is not related to where the exe is but a bad actor on the other lib

Jason's comment is unrelated to ./ko vs ./ko/cmd/ko AFAICT. Our releases are fine, but you can't install the latest release via go anymore, for some reason. I'm not sure how to fix this.

Jason's comment is unrelated to ./ko vs ./ko/cmd/ko AFAICT. Our releases are fine, but you can't install the latest release via go anymore, for some reason. I'm not sure how to fix this.


engine: support setting memory limit for raft engine

What is changed and how it works?
Issue Number: Close #12255
What's Changed:
Support setting memory limit for raft engine

Related changes

PR to update pingcap/docs/pingcap/docs-cn:

Check List
Tests

Unit test
Integration test

Side effects

Performance regression when follower down and memory not enough

Release note
Support setting memory limit for raft engine

/merge

/run-test

/test

/test

/test


404 Not Found on Dapr net6.0 web application

Expected Behavior
Calling the route GET http://<IP_ADDRESS>:5000/17 should result in a 200 type response
Actual Behavior
The following is returned back from the Visual Studio Code Rest Client Plugin:
HTTP/1.1 404 Not Found
Content-Length: 0
Connection: close
Date: Mon, 28 Mar 2022 15:33:44 GMT
Server: Kestrel

Steps to Reproduce the Problem

Clone this sample repository
Open the root in Visual Studio Code
Run the application using F5
Call the route. Note the repository has a sample http  file that can be used.

https://github.com/jsacapdev/az.container.apps/blob/3958ada03f356630a46079860f49819bb22c2e3e/src/ControllerSample/Controllers/SampleController.cs?_pjax=%23js-repo-pjax-container%2C div[itemtype%3D"http%3A%2F%2Fschema.org%2FSoftwareSourceCode"] main%2C [data-pjax-container]#L10
You can remove the [Route("[controller]")] attribute or change the URL like this http://<IP_ADDRESS>:5000/Sample/deposit.

thanks @JadynWong


libpng warning: iCCP: known incorrect sRGB profile

Hello there,
I don't have any problems to get screenshots except for specific websites. For instance, whenever I try to take screenshots for https://web.archive.org/, it always returns libpng warning: iCCP: known incorrect sRGB profile and the result comes as a blank picture.
$ wkhtmltoimage --version
wkhtmltoimage 0.12.5 (with patched qt)

$ wkhtmltoimage --enable-javascript --width 1024  --height 1024 --custom-header Host 'web.archive.org' 'https://web.archive.org/' a.jpg
Loading page (1/2)
libpng warning: iCCP: known incorrect sRGB profile           ] 59%
Rendering (2/2)
Done

Did anybody manage to go through this error? Maybe this error has nothing to do with the outcome but the thing is screenshot turns to be a blank picture.

Wrong repository. Please check https://github.com/wkhtmltopdf/wkhtmltopdf.


Possible to serialize scripts?

Two questions:

Can you serialize scripts alongside the entities in scenes?
Can you set variables in the script and serialize those as well?

When I work with scripts in Godot, I attach a script to a node, then export a variable from that script so that that particular script instance has a unique value. While there is no editor, is it possible to encode this data in a scene?

So out of the box, scripts state is not serialised at all, since state is stored inside the ScriptContexts resource and afaik resources are not touched by the scene system in bevy.
Now I am quite new to the whole ECS thing, and I am also used to mixing data and logic like Godot or Unity do.
However, I think it helps to think of the scripts as just another system in bevy, since that's essentially what they are as seen in this core system: https://github.com/makspll/bevy_mod_scripting/blob/f776e1501b79e931bea38c4476d1ac0d486c92b4/bevy_mod_scripting/src/hosts/mod.rs#L493
And having said that, I personally think serialising any script state/variables would be an anti-pattern. A more ECS-friendly approach would be to use your script to modify components (data) which then in turn get serialised, and can be modified by the upcoming editor.
But if you really want to use some sort of dedicated per-script state, you could probably create a blackboard or dedicated state component. But also worth noting is the fact that all your script variables (state variable in Rhai, and any others in Lua) persist for the lifetime of the script (but they do not survive serialization).
When writing this library I am taking a lot of inspiration from the way Noita handled its script API as seen here: https://noita.fandom.com/wiki/Modding:_Lua_API. AFAIK they use ECS and scripts are pure control layers.
Hope that helps!

I've done some more work in the area and I am confident currently the script components will persist a save/load cycle but none-of contexts will so I need to improve this

I am going to split this into two issues

what exactly does serializing script variables mean?
like using https://github.com/MrGVSV/bevy_proto to load/unload/save scenes with entity data (like godot's .TSCN format) and attach scripts to those entities (like godot's .gd files) together? then easily load / save those scenes + script functionality for quick development / editing of levels?
or only pure scripts which save / load some serializable state like data / cache (remember previous player xp / story checkpoint / active equipped weapon  etc..)?

@coderedart the latter, the former is supported in that script components are persisted across bevy scenes