Quick cast not working with configuration

Hey thanks for your good work :)
Just a note, it seems having Layout1 quickcast keys bound and then normal cast keys bound in Layout2 does not result in Layout1 having the quickcast functionality enabled.
Tested by starting lobby, opening console:
unbindball
exec autoexec.cfg

bellow is my preset.json:
{
    "layouts": [
        {
            "keybinds": {
                "1": [
                    "select",
                    "hero"
                ],
                "2": [
                    "select",
                    "all-units"
                ],
                "3": [
                    "select",
                    "other-units"
                ],
                "4": [
                    "select",
                    "controlgroup",
                    "4"
                ],
                "5": [
                    "select",
                    "courier"
                ],
                "6": [
                    "select",
                    "controlgroup",
                    "6"
                ],
                "7": [
                    "select",
                    "controlgroup",
                    "7"
                ],
                "8": [
                    "select",
                    "controlgroup",
                    "8"
                ],
                "9": [
                    "select",
                    "controlgroup",
                    "9"
                ],
                "Q": [
                    "ability",
                    "quick",
                    0
                ],
                "W": [
                    "ability",
                    "quick",
                    1
                ],
                "E": [
                    "ability",
                    "quick",
                    2
                ],
                "D": [
                    "ability",
                    "quick",
                    3
                ],
                "F": [
                    "ability",
                    "quick",
                    4
                ],
                "R": [
                    "ability",
                    "quick",
                    5
                ],
                "T": [
                    "item",
                    "quick",
                    0
                ],
                "X": [
                    "item",
                    "quick",
                    1
                ],
                "C": [
                    "item",
                    "quick",
                    2
                ],
                "V": [
                    "item",
                    "quick",
                    3
                ],
                "B": [
                    "item",
                    "quick",
                    4
                ],
                "N": [
                    "item",
                    "quick",
                    5
                ],
                "Y": [
                    "ability",
                    "auto",
                    "toggle"
                ],
                "A": [
                    "attack"
                ],
                "S": [
                    "stop"
                ],
                "ENTER": [
                    "open",
                    "chat"
                ],
                "U": [
                    "learn",
                    "stats"
                ],
                "'": [
                    "open",
                    "console"
                ],
                "O": [
                    "cycle",
                    0,
                    [
                        "dota_health_per_vertical_marker 250",
                        "dota_health_per_vertical_marker 325",
                        "dota_health_per_vertical_marker 450",
                        "dota_health_per_vertical_marker 550"
                    ]
                ],
                "F1": [
                    "open",
                    "scoreboard"
                ],
                "F2": [
                    "open",
                    "shop"
                ],
                "F3": [
                    "courier",
                    "deliver"
                ],
                "F4": [
                    "buy",
                    "quick"
                ],
                "F5": [
                    "buy",
                    "sticky"
                ],
                "F9": [
                    "pause"
                ],
                "F11": [
                    "reload"
                ],
                "UPARROW": [
                    "camera",
                    "up"
                ],
                "LEFTARROW": [
                    "camera",
                    "left"
                ],
                "DOWNARROW": [
                    "camera",
                    "down"
                ],
                "RIGHTARROW": [
                    "camera",
                    "right"
                ],
                "TAB": [
                    "select",
                    "next-unit"
                ],
                "`": [
                    "view",
                    "rune",
                    "toggle"
                ],
                "SPACE": [
                    "layout",
                    1
                ],
                "Z": [
                    "chatwheel",
                    0
                ],
                "KP_0": [
                    "chat",
                    "team",
                    "no"
                ],
                "KP_1": [
                    "chat",
                    "team",
                    "yes"
                ],
                "KP_2": [
                    "phrase",
                    59
                ],
                "KP_3": [
                    "phrase",
                    81
                ],
                "KP_4": [
                    "phrase",
                    75
                ],
                "KP_5": [
                    "phrase",
                    76
                ],
                "KP_6": [
                    "phrase",
                    82
                ],
                "KP_7": [
                    "phrase",
                    65
                ],
                "KP_8": [
                    "phrase",
                    53
                ],
                "KP_9": [
                    "phrase",
                    85
                ],
                "G": [
                    "voice",
                    "team"
                ]
            }
        },
        {
            "keybinds": {
                "1": [
                    "phrase",
                    9
                ],
                "2": [
                    "phrase",
                    10
                ],
                "3": [
                    "phrase",
                    11
                ],
                "Q": [
                    "ability",
                    "normal",
                    0
                ],
                "W": [
                    "ability",
                    "normal",
                    1
                ],
                "E": [
                    "ability",
                    "normal",
                    2
                ],
                "D": [
                    "ability",
                    "normal",
                    3
                ],
                "F": [
                    "ability",
                    "normal",
                    4
                ],
                "R": [
                    "ability",
                    "normal",
                    5
                ],
                "T": [
                    "item",
                    "self",
                    0
                ],
                "X": [
                    "item",
                    "self",
                    1
                ],
                "C": [
                    "item",
                    "self",
                    2
                ],
                "V": [
                    "item",
                    "self",
                    3
                ],
                "B": [
                    "item",
                    "self",
                    4
                ],
                "N": [
                    "item",
                    "self",
                    5
                ],
                "Y": [
                    "glyph"
                ],
                "Z": [
                    "chatwheel",
                    1
                ],
                "`": [
                    "view",
                    "base",
                    "toggle"
                ],
                "F3": [
                    "courier",
                    "burst"
                ],
                "SPACE": [
                    "layout",
                    1
                ],
                "G": [
                    "item",
                    "taunt"
                ]
            }
        }
    ],
    "chatwheels": [
        [
            8,
            1,
            2,
            3,
            29,
            54,
            6,
            61
        ],
        [
            30,
            66,
            78,
            41,
            79,
            70,
            23,
            68
        ]
    ],
    "cycles": [
        [
            [
                "health",
                250
            ],
            [
                "health",
                325
            ],
            [
                "health",
                450
            ],
            [
                "health",
                550
            ]
        ]
    ],
    "settings": {
        "gameplay": {
            "netgraph": true,
            "autoAttack": false,
            "autoAttackAfterSpell": false,
            "autoRepeatRightMouse": true,
            "forceMovementDirection": true,
            "forceRightClickAttack": true,
            "unifiedUnitOrders": true,
            "gridView": true,
            "playerNames": true,
            "heroFinder": true,
            "rangeFinder": true,
            "cameraZoom": false,
            "cameraMoveOnRespawn": false,
            "minimapProximityScale": true,
            "minimapShowHeroIcons": true,
            "minimapAlwaysShowHeroIcons": true,
            "minimapProximityScaleDistance": 20,
            "minimapProximityScaleMinimum": 400,
            "minimapMisclickTime": "3526",
            "autoSelectSummonedUnits": true
        },
        "performance": {
            "altTabIdle": true,
            "serverForcePreload": true,
            "clientForcePreload": true,
            "multiCore": true,
            "ambientOcclusion": true,
            "highQualityWater": false,
            "highQualityDashboard": false,
            "worldLighting": true,
            "additiveLightPass": true,
            "specularBloom": true,
            "specularHighlight": true,
            "doubleShadowUpdates": false,
            "shadowQuality": "1",
            "screenShake": false,
            "animatePortrait": false,
            "ambientCreatures": false
        },
        "engine": {
            "loadIndicator": [
                "sound",
                "ui/coins_big.vsnd_c"
            ],
            "altKey": "ALT",
            "keyboardLayout": "en-US",
            "inputButtonCodeIsScanCode": true
        }
    }
}

Update: Also tried with default layout, not only does quick cast not work on layout 1, but layout 2 selfcast also only triggers a normal cast.

Will have a look into this tomorrow. Can you tell me what your ingame setting for "Double Tap Ability To Self-Cast" or something like that is? It might be related.

Also I think I discovered a side-bug.
"O": [
                    "cycle",
                    0,
                    [
                        "dota_health_per_vertical_marker 250",
                        "dota_health_per_vertical_marker 325",
                        "dota_health_per_vertical_marker 450",
                        "dota_health_per_vertical_marker 550"
                    ]
                ],

What did you do, to get that bound to O? It shouldn't include all the commands. Seems to be a second bug, but I need to know if you did anything with O and what you did.

@dodekeract Hey so interesting enough, it turns out that unbindall doesn't unbind the QWER keys from the Dota 2 menu (they get reset). In addition, using right click to clear the keybinds doesn't persist after you exist from the menu, you have to bind one of the options to an unused key and attempt to remap the rest to that same key to unset them. Once you do that, it seems to work as intended (with the side consequence of one of your skills being mapped to a particular key).
As for the O mapping, I think its in the default preset! As far as I know I didn't map O to anything, added any cycle schemas.

That O thing is in the default preset, yes. But it shouldn't include these commands in the preset. That's why I'm wondering how that is possible.
So you didn't delete the keybinds in your ingame settings? That's the issue. You need to. AFAIK Manta can't overwrite them otherwise. Even with unbindall. Tell me if it works when you remove them manually in the settings.

@dodekeract Yeah, I had thought that right clicking to clear the keybinds in menu would be enough (it isn't, you have to some rebinding/clear tricks otherwise it gets reset as default QWEDFR).
But yeah as far those cycle commands getting into the preset I'm sorry I can't be more helpful, it might have been a state-dependent generated bug that my browser found itself in when I requested the download link.
Feel free to mark this one closed though and thank you!

I think I will leave this open for some days, since I haven't found out what triggered the second issue. It really shouldn't have been possible.


Add replace option on objects

There should either be and option to replace an object and delete the old one. This should may be the default.

What do you mean ? Replacing an object is already possible by deleting the old one and creating a new one. Maybe this could be combined in one request but this may be a pure convenience function with low priority. Any update / replacement / permanent modification of an object must create a new one or otherwise we will lose the strong focus in FAIR principles.


Query: apply entries took too long for 1 get request

Environment:
 4 core, Intel i5 , 4 GB , Ubuntu 14.04
started 3 node etcd cluster in local machine using
 goreman start
the Procfile is the default provided, no changes.
did a get operation using root user
./etcdctl get key1 --user=root
get following text in the logs:
19:25:07 etcd3 | 2016-09-27 19:25:07.511023 I | auth: authorized root, token is xWyuAJdKSJYXpOne.1765
19:25:07 etcd3 | 2016-09-27 19:25:07.511068 W | etcdserver: apply entries took too long [79.880367ms for 1 entries]
19:25:07 etcd3 | 2016-09-27 19:25:07.511076 W | etcdserver: avoid queries with large range/delete range!
19:25:07 etcd2 | 2016-09-27 19:25:07.521366 I | auth: authorized root, token is xWyuAJdKSJYXpOne.1765
19:25:07 etcd2 | 2016-09-27 19:25:07.521439 W | etcdserver: apply entries took too long [90.269411ms for 1 entries]
19:25:07 etcd2 | 2016-09-27 19:25:07.521482 W | etcdserver: avoid queries with large range/delete range!
19:25:07 etcd1 | 2016-09-27 19:25:07.526534 I | auth: authorized root, token is xWyuAJdKSJYXpOne.1765
19:25:07 etcd1 | 2016-09-27 19:25:07.526579 W | etcdserver: apply entries took too long [95.582386ms for 1 entries]
19:25:07 etcd1 | 2016-09-27 19:25:07.526588 W | etcdserver: avoid queries with large range/delete range!
Memory Usage:

takes 10 GB per process
Query:

why does a get operation generates this log, as if the nodes are under load ? did i miss to set some options?
is the memory usage normal? what can i do to reduce it.
using v3 api, does a get request go through the raft layer? is there a non-linearizable read option in v3 , which doesnt go through raft layer?

following log also appears after a while
19:40:46 etcd1 | 2016-09-27 19:40:46.747570 W | etcdserver: failed to send out heartbeat on time (exceeded the 100ms timeout for 191.216803ms)
19:40:46 etcd1 | 2016-09-27 19:40:46.747599 W | etcdserver: server is likely overloaded
19:40:46 etcd1 | 2016-09-27 19:40:46.747605 W | etcdserver: failed to send out heartbeat on time (exceeded the 100ms timeout for 191.271395ms)
19:40:46 etcd1 | 2016-09-27 19:40:46.747609 W | etcdserver: server is likely overloaded
19:46:21 etcd1 | 2016-09-27 19:46:21.443803 W | etcdserver: failed to send out heartbeat on time (exceeded the 100ms timeout for 387.366925ms)
19:46:21 etcd1 | 2016-09-27 19:46:21.443828 W | etcdserver: server is likely overloaded
19:46:21 etcd1 | 2016-09-27 19:46:21.443838 W | etcdserver: failed to send out heartbeat on time (exceeded the 100ms timeout for 387.411279ms)
19:46:21 etcd1 | 2016-09-27 19:46:21.443844 W | etcdserver: server is likely overloaded

Does the machine have SSD or HDD?

It uses an HDD
vimal@Tardis /home/vimal $ sudo smartctl -i /dev/sda
smartctl 6.2 2013-07-26 r3841 [x86_64-linux-3.19.0-68-generic] (local build)
Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF INFORMATION SECTION ===
Model Family:     Western Digital Caviar Blue Serial ATA
Device Model:     WDC WD3200AAJS-60Z0A0
Serial Number:    WD-WMAV2HW06484
LU WWN Device Id: 5 0014ee 002bf71cf
Firmware Version: 03.03E03
User Capacity:    320,072,933,376 bytes [320 GB]
Sector Size:      512 bytes logical/physical
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   ATA8-ACS (minor revision not indicated)
SATA Version is:  SATA 2.5, 3.0 Gb/s
Local Time is:    Tue Sep 27 21:04:48 2016 IST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

You probably cannot run 3 etcd members on the same machine that share the single HDD. It is too slow.

ok.
can you also pls respond about the other queries
Thanks !!

using v3 api, does a get request go through the raft layer? is there a non-linearizable read option in v3 , which doesnt go through raft layer?

use consistency=s, which is a local read.

is the memory usage normal? what can i do to reduce it.

it is 10GB virtual memory. The RSS is 2.7MB.

@vimalk78 Can you please separate questions/issues into different github issues. it is easier for us to answer and easier for other people to search around. thanks.

use consistency=s, which is a local read.

how to use this option from etcdctl

it is 10GB virtual memory. The RSS is 2.7MB.

i am new to Go, still isnt 10 GB Virtual memory for a fresh process a bit much.

how to use this option from etcdctl?

--consistency=s

i am new to Go, still isnt 10 GB Virtual memory for a fresh process a bit much.

etcd uses mmap. Is 10GB virtual memory causing you any issue?

--consistency=s
but i dont see any such option in etcdctl GLOBAL OPTIONS

etcd uses mmap. Is 10GB virtual memory causing you any issue?
no it is not causing any issue, i was expecting less mem usage from a Go process :)

It is just for get. so it wont be in global options. you cannot do local write.

It is just for get. so it wont be in global options. you cannot do local write.

ok, i see it in the /etcdctl help get

@vimalk78 Can you please separate questions/issues into different github issues

ok , i will log different queries in different issues.
3q ^_^

OK. For the latency warning, please try with SSD or run etcd on dedicated nodes. Thanks.

i tested on my macbook, i get same result.
Processor Name:	Intel Core i5
Processor Speed:	2.6 GHz
APPLE SSD 256 GB
01:47:46 etcd2 | 2016-09-28 01:47:46.876054 I | auth: authorized root, token is KcAXrUysCxYmDgYk.569
01:47:46 etcd2 | 2016-09-28 01:47:46.876082 W | etcdserver: apply entries took too long [99.955703ms for 1 entries]
01:47:46 etcd2 | 2016-09-28 01:47:46.876089 W | etcdserver: avoid queries with large range/delete range!
01:47:46 etcd3 | 2016-09-28 01:47:46.877533 I | auth: authorized root, token is KcAXrUysCxYmDgYk.569
01:47:46 etcd3 | 2016-09-28 01:47:46.877554 W | etcdserver: apply entries took too long [101.534968ms for 1 entries]
01:47:46 etcd3 | 2016-09-28 01:47:46.877560 W | etcdserver: avoid queries with large range/delete range!
01:47:46 etcd1 | 2016-09-28 01:47:46.878085 I | auth: authorized root, token is KcAXrUysCxYmDgYk.569
01:47:46 etcd1 | 2016-09-28 01:47:46.878102 W | etcdserver: apply entries took too long [102.362764ms for 1 entries]
01:47:46 etcd1 | 2016-09-28 01:47:46.878107 W | etcdserver: avoid queries with large range/delete range!

Can you try to get the metrics from clienturl/metrics on each members in the cluster?

ok. i have restarted the cluster freshly, and performed following operations from etcdctl
vimal (master) bin $ ./etcdctl user add root
Password of root:
Type password of root again for confirmation:
User root created
vimal (master) bin $ ./etcdctl role add root
Role root created
vimal (master) bin $ ./etcdctl user grant-role root root
Role root is granted to user root
vimal (master) bin $ ./etcdctl auth enable
Authentication Enabled
vimal (master) bin $ ./etcdctl put key1 val1 --user=root
Password:
OK
vimal (master) bin $
vimal (master) bin $ ./etcdctl member list -w table
+------------------+---------+--------+------------------------+------------------------+
|        ID        | STATUS  |  NAME  |       PEER ADDRS       |      CLIENT ADDRS      |
+------------------+---------+--------+------------------------+------------------------+
| 8211f1d0f64f3269 | started | infra1 | http://<IP_ADDRESS>:12380 | http://<IP_ADDRESS>:2379  |
| 91bc3c398fb3c146 | started | infra2 | http://<IP_ADDRESS>:22380 | http://<IP_ADDRESS>:22379 |
| fd422379fda50e48 | started | infra3 | http://<IP_ADDRESS>:32380 | http://<IP_ADDRESS>:32379 |
+------------------+---------+--------+------------------------+------------------------+
vimal (master) bin $ curl http://<IP_ADDRESS>:2379/metrics > metrics.2379.txt
vimal (master) bin $ curl http://<IP_ADDRESS>:22379/metrics > metrics.22379.txt
vimal (master) bin $ curl http://<IP_ADDRESS>:32379/metrics > metrics.32379.txt

which mertic you wanted me to check,"etcd_disk_wal_fsync_duration_seconds histogram" ?
i am attaching the metrics
metrics.32379.txt
metrics.22379.txt
metrics.2379.txt

etcd_disk_wal_fsync_duration_seconds_bucket{le="0.128"} 310
etcd_disk_wal_fsync_duration_seconds_bucket{le="0.256"} 311

There are a few fsyncs took more than 100ms, which triggered the warning. Typically, fsync takes <10ms on SSD.

is there a way to clear the metric after startup. so that it doesnt include startup fsync cost

@vimalk78 No. But you can get the diff by querying it twice or setup Prometheus to monitor the metrics.

i added a log to print the cost of sync, in wal/wal.go
425 func (w *WAL) sync() error {
426     if w.encoder != nil {
427         if err := w.encoder.flush(); err != nil {
428             return err
429         }
430     }
431     start := time.Now()
432     err := fileutil.Fdatasync(w.tail().File)
433
434     duration := time.Since(start)
435     plog.Warningf("wal/wal.go: WAL.sync: sync duration of %v", duration)
436     if duration > warnSyncDuration {
437         plog.Warningf("sync duration of %v, expected less than %v", duration, warnSyncDuration)
438     }
439     syncDurations.Observe(duration.Seconds())
440
441     return err
442 }

i get the same result on macbook with SSD
for ./etcdctl put key1 val1 --user=root
0:52:31 etcd1 | 2016-09-28 10:52:31.456417 W | wal: wal/wal.go: WAL.sync: sync duration of 12.658596ms
10:52:31 etcd2 | 2016-09-28 10:52:31.948671 W | wal: wal/wal.go: WAL.sync: sync duration of 4.862794ms
10:52:31 etcd1 | 2016-09-28 10:52:31.951545 W | wal: wal/wal.go: WAL.sync: sync duration of 7.972584ms
10:52:31 etcd3 | 2016-09-28 10:52:31.955170 W | wal: wal/wal.go: WAL.sync: sync duration of 11.371981ms
10:52:32 etcd2 | 2016-09-28 10:52:32.449009 W | wal: wal/wal.go: WAL.sync: sync duration of 4.99968ms
10:52:32 etcd3 | 2016-09-28 10:52:32.452911 W | wal: wal/wal.go: WAL.sync: sync duration of 8.894677ms
10:52:32 etcd1 | 2016-09-28 10:52:32.456783 W | wal: wal/wal.go: WAL.sync: sync duration of 12.960416ms
10:52:32 etcd2 | 2016-09-28 10:52:32.948676 W | wal: wal/wal.go: WAL.sync: sync duration of 4.765974ms
10:52:32 etcd3 | 2016-09-28 10:52:32.952293 W | wal: wal/wal.go: WAL.sync: sync duration of 8.249578ms
10:52:32 etcd1 | 2016-09-28 10:52:32.955854 W | wal: wal/wal.go: WAL.sync: sync duration of 12.112695ms
10:52:33 etcd1 | 2016-09-28 10:52:33.448450 W | wal: wal/wal.go: WAL.sync: sync duration of 4.644408ms
10:52:33 etcd2 | 2016-09-28 10:52:33.452029 W | wal: wal/wal.go: WAL.sync: sync duration of 7.99861ms
10:52:33 etcd3 | 2016-09-28 10:52:33.455826 W | wal: wal/wal.go: WAL.sync: sync duration of 11.711395ms
10:52:33 etcd3 | 2016-09-28 10:52:33.948967 W | wal: wal/wal.go: WAL.sync: sync duration of 4.966998ms
10:52:33 etcd2 | 2016-09-28 10:52:33.953003 W | wal: wal/wal.go: WAL.sync: sync duration of 8.979615ms
10:52:33 etcd1 | 2016-09-28 10:52:33.956981 W | wal: wal/wal.go: WAL.sync: sync duration of 13.186798ms
10:52:34 etcd2 | 2016-09-28 10:52:34.448828 W | wal: wal/wal.go: WAL.sync: sync duration of 4.808263ms
10:52:34 etcd3 | 2016-09-28 10:52:34.452370 W | wal: wal/wal.go: WAL.sync: sync duration of 8.279741ms
10:52:34 etcd1 | 2016-09-28 10:52:34.455875 W | wal: wal/wal.go: WAL.sync: sync duration of 12.065541ms
10:52:34 etcd2 | 2016-09-28 10:52:34.664349 W | wal: wal/wal.go: WAL.sync: sync duration of 4.730436ms
10:52:34 etcd3 | 2016-09-28 10:52:34.667901 W | wal: wal/wal.go: WAL.sync: sync duration of 8.268238ms
10:52:34 etcd1 | 2016-09-28 10:52:34.671326 W | wal: wal/wal.go: WAL.sync: sync duration of 11.857072ms
10:52:34 etcd1 | 2016-09-28 10:52:34.784484 I | auth: authorized root, token is GdAtUFqPLTleYqNp.120
10:52:34 etcd1 | 2016-09-28 10:52:34.784512 W | etcdserver: apply entries took too long [113.081608ms for 1 entries]
10:52:34 etcd1 | 2016-09-28 10:52:34.784544 W | etcdserver: avoid queries with large range/delete range!
10:52:34 etcd3 | 2016-09-28 10:52:34.786776 I | auth: authorized root, token is GdAtUFqPLTleYqNp.120
10:52:34 etcd3 | 2016-09-28 10:52:34.786851 W | etcdserver: apply entries took too long [115.183844ms for 1 entries]
10:52:34 etcd3 | 2016-09-28 10:52:34.786862 W | etcdserver: avoid queries with large range/delete range!
10:52:34 etcd3 | 2016-09-28 10:52:34.789645 W | wal: wal/wal.go: WAL.sync: sync duration of 3.977359ms
10:52:34 etcd2 | 2016-09-28 10:52:34.790052 I | auth: authorized root, token is GdAtUFqPLTleYqNp.120
10:52:34 etcd2 | 2016-09-28 10:52:34.790073 W | etcdserver: apply entries took too long [118.462242ms for 1 entries]
10:52:34 etcd2 | 2016-09-28 10:52:34.790079 W | etcdserver: avoid queries with large range/delete range!
10:52:34 etcd2 | 2016-09-28 10:52:34.792772 W | wal: wal/wal.go: WAL.sync: sync duration of 7.095156ms
10:52:34 etcd1 | 2016-09-28 10:52:34.795879 W | wal: wal/wal.go: WAL.sync: sync duration of 10.321791ms
10:52:34 etcd1 | 2016-09-28 10:52:34.948458 W | wal: wal/wal.go: WAL.sync: sync duration of 4.605493ms
10:52:34 etcd3 | 2016-09-28 10:52:34.951439 W | wal: wal/wal.go: WAL.sync: sync duration of 7.142112ms
10:52:34 etcd2 | 2016-09-28 10:52:34.954985 W | wal: wal/wal.go: WAL.sync: sync duration of 10.989116ms
10:52:35 etcd2 | 2016-09-28 10:52:35.448650 W | wal: wal/wal.go: WAL.sync: sync duration of 4.607731ms
10:52:35 etcd3 | 2016-09-28 10:52:35.452146 W | wal: wal/wal.go: WAL.sync: sync duration of 8.103521ms
10:52:35 etcd1 | 2016-09-28 10:52:35.455960 W | wal: wal/wal.go: WAL.sync: sync duration of 12.13561ms
10:52:35 etcd2 | 2016-09-28 10:52:35.948631 W | wal: wal/wal.go: WAL.sync: sync duration of 4.587029ms
10:52:35 etcd3 | 2016-09-28 10:52:35.952361 W | wal: wal/wal.go: WAL.sync: sync duration of 8.335277ms
10:52:35 etcd1 | 2016-09-28 10:52:35.955832 W | wal: wal/wal.go: WAL.sync: sync duration of 12.023144ms
10:52:36 etcd1 | 2016-09-28 10:52:36.446303 W | wal: wal/wal.go: WAL.sync: sync duration of 3.777395ms
10:52:36 etcd3 | 2016-09-28 10:52:36.449250 W | wal: wal/wal.go: WAL.sync: sync duration of 6.534771ms
10:52:36 etcd2 | 2016-09-28 10:52:36.451876 W | wal: wal/wal.go: WAL.sync: sync duration of 9.231175ms
10:52:36 etcd1 | 2016-09-28 10:52:36.948093 W | wal: wal/wal.go: WAL.sync: sync duration of 4.261986ms
10:52:36 etcd3 | 2016-09-28 10:52:36.951330 W | wal: wal/wal.go: WAL.sync: sync duration of 7.293265ms
10:52:36 etcd2 | 2016-09-28 10:52:36.951345 W | wal: wal/wal.go: WAL.sync: sync duration of 7.320416ms
10:52:37 etcd2 | 2016-09-28 10:52:37.447551 W | wal: wal/wal.go: WAL.sync: sync duration of 4.776849ms
10:52:37 etcd3 | 2016-09-28 10:52:37.450481 W | wal: wal/wal.go: WAL.sync: sync duration of 7.577574ms
10:52:37 etcd1 | 2016-09-28 10:52:37.453904 W | wal: wal/wal.go: WAL.sync: sync duration of 11.384875ms
10:52:37 etcd3 | 2016-09-28 10:52:37.948483 W | wal: wal/wal.go: WAL.sync: sync duration of 4.701587ms
10:52:37 etcd2 | 2016-09-28 10:52:37.952001 W | wal: wal/wal.go: WAL.sync: sync duration of 8.164684ms
10:52:37 etcd1 | 2016-09-28 10:52:37.956100 W | wal: wal/wal.go: WAL.sync: sync duration of 12.57509ms
10:52:38 etcd3 | 2016-09-28 10:52:38.448869 W | wal: wal/wal.go: WAL.sync: sync duration of 4.851255ms
10:52:38 etcd1 | 2016-09-28 10:52:38.452629 W | wal: wal/wal.go: WAL.sync: sync duration of 8.928099ms
10:52:38 etcd2 | 2016-09-28 10:52:38.456082 W | wal: wal/wal.go: WAL.sync: sync duration of 12.133325ms
for ./etcdctl get key1 --user=root
0:53:12 etcd1 | 2016-09-28 10:53:12.454510 W | wal: wal/wal.go: WAL.sync: sync duration of 11.518357ms
10:53:12 etcd3 | 2016-09-28 10:53:12.949365 W | wal: wal/wal.go: WAL.sync: sync duration of 5.306564ms
10:53:12 etcd2 | 2016-09-28 10:53:12.952978 W | wal: wal/wal.go: WAL.sync: sync duration of 8.91461ms
10:53:12 etcd1 | 2016-09-28 10:53:12.956686 W | wal: wal/wal.go: WAL.sync: sync duration of 12.865763ms
10:53:13 etcd3 | 2016-09-28 10:53:13.448642 W | wal: wal/wal.go: WAL.sync: sync duration of 4.679865ms
10:53:13 etcd2 | 2016-09-28 10:53:13.452054 W | wal: wal/wal.go: WAL.sync: sync duration of 8.06083ms
10:53:13 etcd1 | 2016-09-28 10:53:13.455902 W | wal: wal/wal.go: WAL.sync: sync duration of 12.128368ms
10:53:13 etcd2 | 2016-09-28 10:53:13.949335 W | wal: wal/wal.go: WAL.sync: sync duration of 5.307033ms
10:53:13 etcd3 | 2016-09-28 10:53:13.952472 W | wal: wal/wal.go: WAL.sync: sync duration of 8.447069ms
10:53:13 etcd1 | 2016-09-28 10:53:13.955682 W | wal: wal/wal.go: WAL.sync: sync duration of 11.882526ms
10:53:14 etcd3 | 2016-09-28 10:53:14.448097 W | wal: wal/wal.go: WAL.sync: sync duration of 4.037797ms
10:53:14 etcd2 | 2016-09-28 10:53:14.451212 W | wal: wal/wal.go: WAL.sync: sync duration of 7.048039ms
10:53:14 etcd1 | 2016-09-28 10:53:14.454530 W | wal: wal/wal.go: WAL.sync: sync duration of 10.804351ms
10:53:14 etcd1 | 2016-09-28 10:53:14.949136 W | wal: wal/wal.go: WAL.sync: sync duration of 5.580599ms
10:53:14 etcd3 | 2016-09-28 10:53:14.952719 W | wal: wal/wal.go: WAL.sync: sync duration of 8.898662ms
10:53:14 etcd2 | 2016-09-28 10:53:14.956459 W | wal: wal/wal.go: WAL.sync: sync duration of 12.709476ms
10:53:15 etcd3 | 2016-09-28 10:53:15.447986 W | wal: wal/wal.go: WAL.sync: sync duration of 4.716571ms
10:53:15 etcd2 | 2016-09-28 10:53:15.451476 W | wal: wal/wal.go: WAL.sync: sync duration of 8.207759ms
10:53:15 etcd1 | 2016-09-28 10:53:15.455391 W | wal: wal/wal.go: WAL.sync: sync duration of 12.354475ms
10:53:15 etcd3 | 2016-09-28 10:53:15.949384 W | wal: wal/wal.go: WAL.sync: sync duration of 5.354992ms
10:53:15 etcd2 | 2016-09-28 10:53:15.952506 W | wal: wal/wal.go: WAL.sync: sync duration of 8.455025ms
10:53:15 etcd1 | 2016-09-28 10:53:15.955690 W | wal: wal/wal.go: WAL.sync: sync duration of 11.901307ms
10:53:16 etcd3 | 2016-09-28 10:53:16.448889 W | wal: wal/wal.go: WAL.sync: sync duration of 4.90439ms
10:53:16 etcd2 | 2016-09-28 10:53:16.452347 W | wal: wal/wal.go: WAL.sync: sync duration of 8.276212ms
10:53:16 etcd1 | 2016-09-28 10:53:16.456222 W | wal: wal/wal.go: WAL.sync: sync duration of 12.428219ms
10:53:16 etcd1 | 2016-09-28 10:53:16.777123 W | wal: wal/wal.go: WAL.sync: sync duration of 4.995624ms
10:53:16 etcd3 | 2016-09-28 10:53:16.780212 W | wal: wal/wal.go: WAL.sync: sync duration of 7.990027ms
10:53:16 etcd2 | 2016-09-28 10:53:16.782789 W | wal: wal/wal.go: WAL.sync: sync duration of 10.587943ms
10:53:16 etcd1 | 2016-09-28 10:53:16.896965 I | auth: authorized root, token is wCMSWsQOgVAtMoWK.206
10:53:16 etcd1 | 2016-09-28 10:53:16.897005 W | etcdserver: apply entries took too long [116.484704ms for 1 entries]
10:53:16 etcd1 | 2016-09-28 10:53:16.897013 W | etcdserver: avoid queries with large range/delete range!
10:53:16 etcd2 | 2016-09-28 10:53:16.899351 I | auth: authorized root, token is wCMSWsQOgVAtMoWK.206
10:53:16 etcd2 | 2016-09-28 10:53:16.899374 W | etcdserver: apply entries took too long [116.514504ms for 1 entries]
10:53:16 etcd2 | 2016-09-28 10:53:16.899384 W | etcdserver: avoid queries with large range/delete range!
10:53:16 etcd3 | 2016-09-28 10:53:16.899937 I | auth: authorized root, token is wCMSWsQOgVAtMoWK.206
10:53:16 etcd3 | 2016-09-28 10:53:16.899961 W | etcdserver: apply entries took too long [119.322986ms for 1 entries]
10:53:16 etcd3 | 2016-09-28 10:53:16.899967 W | etcdserver: avoid queries with large range/delete range!
10:53:16 etcd3 | 2016-09-28 10:53:16.947336 W | wal: wal/wal.go: WAL.sync: sync duration of 3.613783ms
10:53:16 etcd1 | 2016-09-28 10:53:16.950621 W | wal: wal/wal.go: WAL.sync: sync duration of 7.143281ms
10:53:16 etcd2 | 2016-09-28 10:53:16.953870 W | wal: wal/wal.go: WAL.sync: sync duration of 10.167636ms
10:53:17 etcd3 | 2016-09-28 10:53:17.449356 W | wal: wal/wal.go: WAL.sync: sync duration of 5.36266ms
10:53:17 etcd2 | 2016-09-28 10:53:17.452788 W | wal: wal/wal.go: WAL.sync: sync duration of 8.790674ms
10:53:17 etcd1 | 2016-09-28 10:53:17.456590 W | wal: wal/wal.go: WAL.sync: sync duration of 12.806633ms
10:53:17 etcd3 | 2016-09-28 10:53:17.948637 W | wal: wal/wal.go: WAL.sync: sync duration of 4.64875ms
10:53:17 etcd2 | 2016-09-28 10:53:17.952177 W | wal: wal/wal.go: WAL.sync: sync duration of 8.131906ms
10:53:17 etcd1 | 2016-09-28 10:53:17.955932 W | wal: wal/wal.go: WAL.sync: sync duration of 12.170315ms
10:53:18 etcd1 | 2016-09-28 10:53:18.451360 W | wal: wal/wal.go: WAL.sync: sync duration of 8.827427ms
10:53:18 etcd2 | 2016-09-28 10:53:18.454598 W | wal: wal/wal.go: WAL.sync: sync duration of 11.86562ms
10:53:18 etcd3 | 2016-09-28 10:53:18.457453 W | wal: wal/wal.go: WAL.sync: sync duration of 14.596357ms
10:53:18 etcd1 | 2016-09-28 10:53:18.947245 W | wal: wal/wal.go: WAL.sync: sync duration of 3.751213ms
10:53:18 etcd3 | 2016-09-28 10:53:18.950735 W | wal: wal/wal.go: WAL.sync: sync duration of 7.001762ms
10:53:18 etcd2 | 2016-09-28 10:53:18.953634 W | wal: wal/wal.go: WAL.sync: sync duration of 9.984703ms
10:53:19 etcd1 | 2016-09-28 10:53:19.446148 W | wal: wal/wal.go: WAL.sync: sync duration of 3.553358ms
10:53:19 etcd2 | 2016-09-28 10:53:19.449994 W | wal: wal/wal.go: WAL.sync: sync duration of 7.097111ms
10:53:19 etcd3 | 2016-09-28 10:53:19.450021 W | wal: wal/wal.go: WAL.sync: sync duration of 7.088475ms
10:53:19 etcd2 | 2016-09-28 10:53:19.949220 W | wal: wal/wal.go: WAL.sync: sync duration of 5.190858ms
10:53:19 etcd3 | 2016-09-28 10:53:19.952641 W | wal: wal/wal.go: WAL.sync: sync duration of 8.533151ms
10:53:19 etcd1 | 2016-09-28 10:53:19.956298 W | wal: wal/wal.go: WAL.sync: sync duration of 12.514236ms

10:53:16 etcd1 | 2016-09-28 10:53:16.896965 I | auth: authorized root, token is wCMSWsQOgVAtMoWK.206
10:53:16 etcd1 | 2016-09-28 10:53:16.897005 W | etcdserver: apply entries took too long [116.484704ms for 1 entries]
10:53:16 etcd1 | 2016-09-28 10:53:16.897013 W | etcdserver: avoid queries with large range/delete range!
10:53:16 etcd2

So here is another issue. Auth is computationally extensive by design. It introduces high latency. It can be improved by making it async. I think there is a todo somewhere.
/cc @mitake

yes, i tested put/get without auth, it doesn't generate any latency logs
i would like to work on this issue/todo

@xiang90 @vimalk78 yes, the auth needs a long time because it needs password checking that involves heavy bcrypt operation. If a client uses a long living connection, the cost can be amortized. But clients like etcdctl creates connections often and the cost can be problematic.
The bcrypt checking can be excluded from the state machine transition but it needs careful validation and retry based on the auth revision number. I can work on it but do you already have a concrete plan? @vimalk78

@mitake i think we will need some kind of authentication or encryption for sure. So if auth takes a long time may be having a long connection is a better option, else using it in live systems without any auth will pose risk of leaking data to third party.

@sinsharat sure, I thought the long connection is a realistic assumption for the v3 API (it is based on gRPC) but can also understand the concern of the authentication cost. Taking 100ms means a user can execute etcdctl only 10 times per second (it cannot be executed concurrently at all). etcdctl wouldn't be invoked many times in performance sensitive paths but operation miss and bugs in shell scripts might  cause DoS like performance degradation of etcd clusters.

@mitake i will think over it and try to find a solution on managing both auth, encryption together without taking a tall on performance, Will also think about whether managing encryption from application side will be better than at etcd to avoid performance issues.
Once i come up with solution will discuss with you.
Thanks!

@sinsharat I already have an idea for solving the issue so I can share my implementation in the near future (maybe this week or next week).
BTW do you work in the same team? @sinsharat @vimalk78

@mitake yes we do work together for the same team.

@sinsharat @vimalk78 thanks. I'll share it with both of you. Or do you want to work on it if you already have a solid idea (https://github.com/coreos/etcd/issues/6530#issuecomment-250076788)?

@mitake , no solid idea as of now, going through the code. you can share your thoughts also, we can discuss. then perhaps you can assign to me/sharat for implementation.

@vimalk78 ok I'll share my detailed design tomorrow. Please wait for a while.

just a thought, will it help if etcdctl spawns a shell. the grpc dial up happens at shell startup and for later operations, it uses same authentication token for every request to server.

It doesn't seem to be used for non interactive purpose. If we have a workaround in etcdctl side, how about this: add a new command etcdctl auth for just getting token and let other etcdctl commands receive the token as their argument?

this could also work.
some points need to check though :

need to check if grpc dialup can accept a token instead of username/password
whether same token can be used across different grpc sessions?
is printing the token back to user a security issue? (not too sure about this one)

i checked, it is a security issue to print the token back to user.

I'd like to know the detailed reason. Is this really dangerous? I'm not sure it introduces the risk or not.
@xiang90 how do you think about the idea of the command for obtaining a token?

@mitake Is it possible to make the token generation async? It does not have any side effect. So we do not have to make it blocking.

if token generation is async, how does the subsequent request, say Put, use
the token.
On 29 Sep 2016 12:34 p.m., "Xiang Li"<EMAIL_ADDRESS>wrote:

@mitake https://github.com/mitake Is it possible to make the token
generation async? It does not have any side effect. So we do not have to
make it blocking.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/coreos/etcd/issues/6530#issuecomment-250387134, or mute
the thread
https://github.com/notifications/unsubscribe-auth/ADIcTLZWjoC4buO59KqxKC9Y6ZYizwY_ks5qu2MMgaJpZM4KHt_2
.

@vimalk78 It should not block the following commands to be applied. But it blocks client response.

@xiang90 sure async auth and generation of token is possible. Validating revision number of auth store can ensure correctness of authentication. But I thought that if the problem is only limited to the case of etcdctl, recycling token can avoid the cost of bcrypt simply (though it cannot prevent other problems like operation misses and bugs in management scripts).
I want to have an agreement about which solution we should work on. The async one would be the optimal. How do you think?

@xiang90 , i am sorry i dont quite understand your idea
the clientv3/Client.dial  needs the Token to invoke grpc.Dial()
or do you want to make the applying the Authenticate async in EtcdServer.applyEntryNormal or invoke bcrypt in a separate goroutine.
or something else i am totally missing.
thanks!

i am sorry i dont quite understand your idea
the clientv3/Client.dial needs the Token to invoke grpc.Dial()
or do you want to make the applying the Authenticate async in EtcdServer.applyEntryNormal or invoke bcrypt in a separate goroutine. or something else i am totally missing.

I never said it has anything to do with client. The logging you saw is from server side. What you can do it to make server side apply async for authentication by creating a go routine. You probably need to modify the applyResult struct to make it possible to receive on future event.

as i understand, this will only make the latency log disappear. but the time cost observed at etcdclient will remain same. right?

@vimalk78

but the time cost observed at etcdclient will remain same. right?

Yes, but the cost is limited to the single client. Other clients don't see the high latency.

@mitake , referring your comment here
https://github.com/coreos/etcd/issues/6530#issuecomment-250080152

Taking 100ms means a user can execute etcdctl only 10 times per second (it cannot be executed concurrently at all)

the async solution will not help with this.

@vimalk78 yes, the async solution won't reduce the cost of bcrypt. But it will help to improve entire performance of etcd. A number of authnetication requests that can be served by etcd cluster will be increased.

yes, i t will improve the Autheticate throughput.
But, the async part needs to be introduced in the ApplyEntries path. which i believe must maintain apply entries in-order. Since Authenticate is something which doesnt affect other operations, perhaps it is ok.
i will send a PR with this change

@vimalk78 sorry but I still can't understand your design yet. Could you share your plan of avoiding the cost of bcrypt without sacrificing the order of applying (I have an idea based on version number validation but yours seems to be different from mine)?

@mitake  i dont have a design for saving the cost without sacrificing the order. i was simply trying to bring this point in the discussion.
perhaps Authenticate/bcrypt can tolerate out of order execution, so with this assumption i was going to implement

@vimalk78 Please try with current master. @mitake just got this fixed :)

sure, thanks
On Monday 17 October 2016, Xiang Li<EMAIL_ADDRESS>wrote:

@vimalk78 https://github.com/vimalk78 Please try with current master.
@mitake https://github.com/mitake just got this fixed :)
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/coreos/etcd/issues/6530#issuecomment-254257888, or mute
the thread
https://github.com/notifications/unsubscribe-auth/ADIcTDm5HznoRKTuXh2kyO3Ti6_9DvjTks5q06GCgaJpZM4KHt_2
.


move kube-aws development to dedicated repository

\cc @robszumski @mfburnett

@mumoshu released 0.9.0 today, containing all the goodness from #544 #596 #608. This project really does fit better in it's own repo, thanks for all the work @colhom!


Paginator total ignores SoftDeleteTrait

SQL query from normal ->count() method
select * from `profiles` where `profiles`.`type` = ? `profiles.approved` = ? and `profiles`.`deleted_at` is null
SQL query from getCountForPagination() method
select * from `profiles` where `profiles`.`type` = ? `profiles.approved` = ?

Which Laravel version?

I'm using 5.3, but I believe the same applies to 5.2.
If I add applyScopes before ->paginate(), then it works

Did some tests and works ok on my end.
Can you paste the entire query?

    {
        dd([
            Receipt::paginate()
        ]);
    }```

 public function dashboard(StateRepository $states)
    {
        dd([
            Receipt::paginate()
        ]);
    }

Should give me:
select * from `receipts` where `receipts`.`deleted_at` is null
But it gives me
```select * from `receipts```` instead

That's very strange, I can't replicate this. Works ok for me including the total count. Are you using any package that could cause this?

Looks like I was. Sorry for the false alarm.


VSC not saving files

The file was "saved" a couple of times and today when I got back on the pc the file was empty. I have made myself a list of what else I need to do for a project and now 130 lines of the to-do list are gone.
This is the second time this had happened and after a simple google search, I see that this problem is old. I have used save as twice (always twice) and at the exit, there was no warning about saving. That means the file should save itself but at exit it deleted it. Well, the file stayed but the lines are gone.  So this is not getting fixed? Back to NPP it is

/needsMoreInfo

Here more info. The program is running on windows, on a pc that is plugged into electricity. The weather is sunny today.
what else do you need?

Latest version, win10 insider edition, full VS package, have no time to reproduce the bug and it was a normal .txt file made with save as option

I am facing a similar issue. The Golang code changes are not getting saved. Here are the details of my VSC installation.
Version: 1.42.1
Commit: c47d83b293181d9be64f27ff093689e8e7aed054
Date: 2020-02-11T14:44:27.652Z
Electron: 6.1.6
Chrome: 76.0.3809.146
Node.js: 12.4.0
V8: 7.6.303.31-electron.0
OS: Darwin x64 18.7.0

I wonder if this issue is being caused by an installed extension. Can you try to run VS Code without extensions? From the command line (NOT the integrated terminal in Code), execute: code --disable-extensions and try your steps again to see if it reproduces. If you see it is an issue with the extension, please file it against the extension repository itself.


[FMC][ROM] FHTrt_fw_entry_point field should be the entry index into the data vault

FMC specification is defining   FHT.rt_fw_entry_point as the physical address of the entry point of Runtime FW Module in ICCM SRAM, however ROM is already making this information available in the  data vault.
The proposal is to pass RT entry point field  as the entry index instead of a physical address.

I think this is the right way to go. If the address is already protected in the DV, it would be better (safer) to use it from there.


Remember window size and position on closing.

Upon launch, set window scale and position to last known.

Duplicate of #791


TagBot experienced an unexpected internal failure, AssertionError: unsupported encoding: none

In Groebner.jl, TagBot produces "TagBot experienced an unexpected internal failure" accompanied by the message "AssertionError: unsupported encoding: none":
https://github.com/sumiya11/Groebner.jl/actions/runs/10978120022/job/30480878080#step:3:82
Seemed to work fine previously: https://github.com/sumiya11/Groebner.jl/issues/15#issuecomment-2365452551
Not sure if this is a problem in Groebner or something went wrong in TagBot. Any help is appreciated; thanks !

We are experiencing the same in https://github.com/mikeingold/MeshIntegrals.jl/actions/runs/10978119797/job/30480877628#step:3:64.

I checked the latest package releases and it seems like since this PR (see https://github.com/nflverse/NFLData.jl/actions/runs/10976230101/job/30476748926#step:3:64) TagBot failed every time.

What AI thinks the issue could be
1) Incorrect File Encoding on GitHub:

The file TagBot is trying to access might not be base64 encoded. This could happen if the file is empty, binary, or improperly formatted.

2) GitHub API Changes:

There might have been changes in the GitHub API that affect how content encoding is handled, causing unexpected values like "none" to appear.
TagBot or Dependency Issues:

3) The version of TagBot or its dependencies (like the GitHub library) might have bugs or incompatibilities leading to this error.
Network or Fetching Issues:

4) Temporary issues when fetching the file could result in incomplete or improperly encoded data.

I just updated our deps to latest https://github.com/JuliaRegistries/TagBot/releases/tag/v1.19.5

@simeonschaub reported it's still happening on that new release https://github.com/JuliaLabs/AztecDiamonds.jl/actions/runs/10981139085/job/30488183323#step:2:1

It may be informative that CI here is passing, but this is failing in the wild, if we can figure out what the difference is.

hmmm.. this smells like it might be taking testing off into a different state than normal use
https://github.com/JuliaRegistries/TagBot/blob/4820024f1ddccf5e4e8832f01ecf2a79f62602eb/tagbot/action/repo.py#L88-L94

I believe we're running into issues because Registry.toml in General has become larger than 1MB:
In [24]: from github import Github, Auth

In [25]: auth = Auth.Token(token)

In [26]: g = Github(auth=auth)

In [27]: repo = g.get_repo("JuliaRegistries/General")

In [28]: registry_toml = repo.get_contents("Registry.toml")

In [29]: registry_toml.encoding
Out[29]: 'none'

See https://docs.github.com/en/rest/repos/contents?apiVersion=2022-11-28#get-repository-content:

If the requested file's size is:

1 MB or smaller: All features of this endpoint are supported.
Between 1-100 MB: Only the raw or object custom media types are supported. Both will work as normal, except that when using the object media type, the content field will be an empty string and the encoding field will be "none". To get the contents of these larger files, use the raw media type.

Yes, that makes very much sense! I checked that before this commit the size of Registry.toml was below 1MB and after that it is above 1MB. This is the same commit, where TagBot started to fail.

Thanks. New patch release just cut with that fix. Please confirm it fixes it.

Seems to work: https://github.com/mikeingold/MeshIntegrals.jl/actions/runs/10993022532/job/30518618465. Thanks q lot @simeonschaub and @IanButterworth!

Can confirm as well! 🎉 https://github.com/JuliaLabs/AztecDiamonds.jl/actions/runs/10990108308/job/30518644915

For me as well https://github.com/PumasAI/SummaryTables.jl/actions/runs/10992929480/job/30518753493


Create storage plugin for Amazon S3

https://www.npmjs.com/package/s3
Example:
https://github.com/verdaccio/verdaccio-memory
https://github.com/verdaccio/local-storage

Just some feedback I started building this plugin and ran into issues using the https://www.npmjs.com/package/s3 package. Its incredibly slow and the built-in aws package is incredibly old.
https://github.com/andrewrk/node-s3-client/issues/111
S3 ~2.4.9 vs aws-sdk-js 2.188.0
https://github.com/aws/aws-sdk-js/blob/master/package.json#L4
There are workarounds like injecting a newer version, but I really don't see much point, The only thing the s3 package provided over the official library was the ability to split the package into multiple parts - Which is now handled by the official client.
https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#upload-property

I would really appreciate this sort of plugin. I've just found verdaccio recently and having this sort of persistence would be great for my (small) team.

@mohsen1 it would be great to have either a guide, docs or something to show people how to do it.
btw. I'm working on Google Cloud plugin https://github.com/verdaccio/verdaccio/issues/473
and I think @ayusharma was experimenting with Amazon S3 as storage.

FYI, working on this at https://github.com/Remitly/verdaccio-s3-storage/pull/1

Would be awesome if we had the option to use any S3 hostname, and not be locked into Amazon proper. There are open source (Minio, Zenko) and commercial (Dell ECS, IBM CoS) that act as S3 object storage, and I think all that would be needed is a way to provide the URL of the service in the config.

My plugin is working (at least for my setup). If anyone wants to help test it, feel free! Open PRs or issues for any confusion, bugs, or feature requests.
https://github.com/remitly/verdaccio-s3-storage

Thanks @apexskier !! I'll try to test as well :-) ... Closing this, great work.

@apexskier thanks for creating the plugin! Is it possible to migrate from the standard FS storage to S3 somehow?

@lenovouser Should be, I'm going to open a new discussion in an issue in https://github.com/remitly/verdaccio-s3-storage so folks can find it in the future.


fix fix tablet invert index leaky #37334

cherry pick from #37334

run buildall

run buildall

run p0


Address QA errors (low hanging)

https://build.fhir.org/ig/hl7au/au-fhir-pd/qa.html
All unresolvable technical errors will be logged as issues on the source repo - https://github.com/hl7au/au-fhir-pd/issues and be raised at the FHIR WG for agreement for resolution.

Closed via https://github.com/hl7au/au-fhir-pd/commit/8bb18391417187495b2d6e9d15da382e0cd9b7a5


Update vendored reference ruby implementation

This includes the 2 patches to lib/uri/http.rb and lib/uri/generic.rb

Fork updated here: https://github.com/artichoke/ruby/tree/artichoke-vendor


vimrc mess

This is starting to get messy - this need to be cleanup.

if's for win32/posix

This was partially fixed and (for me) new version is acceptable. Closing


Change regexp flags field from uint8 to uint16

I need the extra bits to store the 'v' flag as described in https://github.com/tc39/proposal-regexp-v-flag

@saghul ping in case you missed this one :)

Yes I did!


PIXEL C

Hi, do you think shofel2 will work on the pixel C

yes

I would say no instead.
Finally I got all the binaries successfully built, using the documentation.
But I have two problems:

Vendor & Product IDs are obviously different. In order to fix this I simply changed one line:

    #DEV_ID_SWITCH = (0x0955, 0x7321)
    DEV_ID_SWITCH = (0x18d1, 0x5201)

When I run the exploit it says the following (sanity check failed):

$ ./shofel2.py cbfs.bin ../../coreboot/build/coreboot.rom
File descriptor: 7

Traceback (most recent call last):
  File "/home/samuel/Projects/fail0overflow/shofel2/exploit/./shofel2.py", line 258, in <module>
    rcm.pwn()
  File "/home/samuel/Projects/fail0overflow/shofel2/exploit/./shofel2.py", line 176, in pwn
    s.sanity_check(src_base, dst_base)
  File "/home/samuel/Projects/fail0overflow/shofel2/exploit/./shofel2.py", line 101, in sanity_check
    cur_src = parse32(buf, 0xc)
  File "/home/samuel/Projects/fail0overflow/shofel2/exploit/./shofel2.py", line 27, in parse32
    return struct.unpack('<L', buf[offset:offset+4])[0]
struct.error: unpack requires a buffer of 4 bytes

Any tip would be appreciated...

I got the exploit to work on pixel c but that was some years ago. Probably someone has already posted a working version online somewhere if you search around

I got the exploit to work on pixel c but that was some years ago. Probably someone has already posted a working version online somewhere if you search around

Thank you very much: that's very encouraging to me...
But I am afraid RCM (the context where to launch your exploit) has nothing to do with the fastboot mode; more likely corresponds to the recovery mode.
Unfortunately I am able to run only the fastboot mode.


Update French from Transifex

We are now updating the language files with each release. The current release has both the French language files as of yesterday.

I'll merge this PR, but you don't need to submit PRs for language updates in the future, @Kirvx, I update all the languages at once when we do a release.
Thank you for submitting it.


made the session configurable

Coverage increased (+0.2%) to 76.44% when pulling 3e43ac9ec383e8217fdc20557605bbc736e73079 on async into b1fc7242af10aec28360c48e002e8fc992907cba on master.

Coverage increased (+0.2%) to 76.44% when pulling 3e43ac9ec383e8217fdc20557605bbc736e73079 on async into b1fc7242af10aec28360c48e002e8fc992907cba on master.

Coverage increased (+0.2%) to 76.44% when pulling 3e43ac9ec383e8217fdc20557605bbc736e73079 on async into b1fc7242af10aec28360c48e002e8fc992907cba on master.


"Pink" and "white" show same color on simulator

Repro step:
• Navigate to https://makecode.adafruit.com/
• Drag two blcoks as below picture and choose "pink" and "white"
Expected result:
"Pink" and "white" should be different colors show on simulator
Actual result:

Note quite the same color, but I see the issue. They are very close.


fix: process call git instead of bash

also fixes #303

https://github.com/LoopPerfect/buckaroo/issues/301


⚠ Bofrost.lu has degraded performance

In 6e6cb77, Bofrost.lu (https://www.bofrost.lu) experienced degraded performance:

HTTP code: 200
Response time: 2909 ms

Resolved: Bofrost.lu performance has improved in ac3cc35 after 8 minutes.


(SP: ) [My Courses] Add requirements to the course creation fields.

Currently, the user doesn't see any requirements for the course creation fields on the New Course page, so it's not clear which fields are required and what the data requirements are for these fields.
On the course creation page, the requirements for filling in the fields should be displayed.

Duplicate #1493


problem for data

Hello, Sirui-Xu.
The Link of "Human3.6m in exponential map can be downloaded from here."  which in STARS/deterministic/ cannot be opend, can you give a update one?
Thanks you and Best wish.

Hi,
I can still use this link. Are there any network issues?
Best.


FIX: we must properly encode objects prior to escaping

(in cases of arrays escapeHTML will not work)

will follow up with a test later, just need to land this.

Approving now since its urgent, tests can be added later :+1:


Alex iteration5

Click on army
Click where you want to move
Press 'y'
Watch it do the thing.


Lots of warnings when using create-certificate-binding.ps1

Currently there are a ton of warnings spit out when you try to bind an SSL Certificate from the ERB parser:
==> default: Warning: Variable access via 'certificate_thumbprint' is deprecated. Use '@certificate_thumbprint' instead. template[C:/tmp/vagrant-puppet-4/modules-0/iis/templates/create-certificate-binding.ps1.erb]:5
==> default:    (at C:/tmp/vagrant-puppet-4/modules-0/iis/templates/create-certificate-binding.ps1.erb:5:in `block in result')
==> default: Warning: Variable access via 'ip_address' is deprecated. Use '@ip_address' instead. template[C:/tmp/vagrant-puppet-4/modules-0/iis/templates/create-certificate-binding.ps1.erb]:7
==> default:    (at C:/tmp/vagrant-puppet-4/modules-0/iis/templates/create-certificate-binding.ps1.erb:7:in `block in result')
==> default: Warning: Variable access via 'certificate_thumbprint' is deprecated. Use '@certificate_thumbprint' instead. template[C:/tmp/vagrant-puppet-4/modules-0/iis/templates/create-certificate-binding.ps1.erb]:9
==> default:    (at C:/tmp/vagrant-puppet-4/modules-0/iis/templates/create-certificate-binding.ps1.erb:9:in `block in result')
==> default: Warning: Variable access via 'ip_address' is deprecated. Use '@ip_address' instead. template[C:/tmp/vagrant-puppet-4/modules-0/iis/templates/create-certificate-binding.ps1.erb]:11
==> default:    (at C:/tmp/vagrant-puppet-4/modules-0/iis/templates/create-certificate-binding.ps1.erb:11:in `block in result')
==> default: Warning: Variable access via 'certificate_thumbprint' is deprecated. Use '@certificate_thumbprint' instead. template[C:/tmp/vagrant-puppet-4/modules-0/iis/templates/create-certificate-binding.ps1.erb]:13
==> default:    (at C:/tmp/vagrant-puppet-4/modules-0/iis/templates/create-certificate-binding.ps1.erb:13:in `block in result')
==> default: Warning: Variable access via 'certificate_thumbprint' is deprecated. Use '@certificate_thumbprint' instead. template[C:/tmp/vagrant-puppet-4/modules-0/iis/templates/create-certificate-binding.ps1.erb]:15
==> default:    (at C:/tmp/vagrant-puppet-4/modules-0/iis/templates/create-certificate-binding.ps1.erb:15:in `block in result')
==> default: Warning: Variable access via 'ip_address' is deprecated. Use '@ip_address' instead. template[C:/tmp/vagrant-puppet-4/modules-0/iis/templates/create-certificate-binding.ps1.erb]:16
==> default:    (at C:/tmp/vagrant-puppet-4/modules-0/iis/templates/create-certificate-binding.ps1.erb:16:in `block in result')

These should be cleaned up

Fixed with 4e20116be36c7ed17b6585fc95d19a6cdbdc7108


feat(safari): close pop on double enter

Expected Behavior
When in tags field, pressing enter should dismiss the popup. This is a useful way to indicate that you’re done adding tags and therefore done with the popup

Fixed in #172


how to install docker image from different branch

Hi,
I would like to install docker image for different branch. Case #2563
Someone could help how could I install?
Normally for original branch I do:
sudo docker run -it -p 3000:3000 huginn/huginn
I would like to execute : https://github.com/sfischer13/huginn/tree/docker-armhf
Thanks!

You have to check out the fork locally and build it yourself.


Not clear where UseAdaptiveSampling extension method is

The quote:

Use extension methods of TelemetryProcessorChainBuilder as shown below to customize sampling behavior.

Is incredibly unclear.  Where is this shown below?  What is TelemetryProcessorChainBuilder?  Where do I find the UseAdaptiveSampling extension method?  I've tried including every using statement I can think of, but this method is nowhere to be found.  Please include a fully working example, including using statements.

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

ID: 2f4c906d-7abe-eab7-331a-120230344583
Version Independent ID: ab24ade5-5e4c-b430-c3f8-2a00073e9e81
Content: Telemetry sampling in Azure Application Insights - Azure Monitor
Content Source: articles/azure-monitor/app/sampling.md
Service: azure-monitor
Sub-service: application-insights
GitHub Login: @mrbullwinkle
Microsoft Alias: mbullwin

@MikeChristensen, thanks for the feedback! This article is currently on our backlog to be completely refactored so we appreciate  you opening the issue as it helps us gauge priority.
You need Microsoft.ApplicationInsights.Extensibility

Here's a snippet of a simple .NET Core Razor Pages app where I have added the necessary changes:
using Microsoft.ApplicationInsights.Extensibility;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;

namespace WebApplication9
{
    public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }

        public IConfiguration Configuration { get; }

        public void ConfigureServices(IServiceCollection services)
        {
            services.AddRazorPages();
            var aiOptions = new Microsoft.ApplicationInsights.AspNetCore.Extensions.ApplicationInsightsServiceOptions();
            aiOptions.EnableAdaptiveSampling = false;
            services.AddApplicationInsightsTelemetry(aiOptions);
        }

        public void Configure(IApplicationBuilder app, IWebHostEnvironment env, TelemetryConfiguration configuration)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseExceptionHandler("/Error");
                app.UseHsts();
            }

            var builder = configuration.DefaultTelemetrySink.TelemetryProcessorChainBuilder;
            builder.UseAdaptiveSampling(maxTelemetryItemsPerSecond: 5);
            builder.Build();

            app.UseHttpsRedirection();
            app.UseStaticFiles();

            app.UseRouting();

            app.UseAuthorization();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapRazorPages();
            });
        }
    }
}

I am creating a PR now to add in the appropriate using statement, but ideally we will have time in an upcoming sprint to completely overhaul this article as it really needs to be improved and made more accessible.

It also appears you need to reference the Microsoft.ApplicationInsights.WorkerService NuGet package as well..

If you are monitoring a non ASP.NET Core app and using the WorkerService specific SDK, yes you would want that package. Though for the workerservice SDK you would need to change the code slightly and use:
var aiOptions= new Microsoft.ApplicationInsights.WorkerService.ApplicationInsightsServiceOptions();
services.AddApplicationInsightsTelemetryWorkerService(aiOptions);
rather than :
var aiOptions = new Microsoft.ApplicationInsights.AspNetCore.Extensions.ApplicationInsightsServiceOptions();
services.AddApplicationInsightsTelemetry(aiOptions)
My example above would be for an ASP.NET Core web app app where you would not want to use the WorkerService SDK.

Ah yes, I'm just running as a standard .NET Core console app (EXE).  No ASP.NET or OWIN or any HTTP listeners what so ever..

Can you confirm this code is correct?  telemetry is a private field of my class, and I just call TrackMetric and TrackEvent on it a whole bunch (hundreds of times a second)..
public AppInsightsStats(string appInsightsKey)
{
    TelemetryConfiguration configuration = TelemetryConfiguration.CreateDefault();
    configuration.InstrumentationKey = appInsightsKey;

    telemetry = new TelemetryClient(configuration);

    // Enable sampling since amount of logging is massive
    var builder = configuration.DefaultTelemetrySink.TelemetryProcessorChainBuilder;
    builder.UseAdaptiveSampling(maxTelemetryItemsPerSecond: 5);
    builder.Build();
}

with the workerservice SDK on a .NET Core Console app I think you would want something more like this:
using System;
using Microsoft.ApplicationInsights;
using Microsoft.ApplicationInsights.DataContracts;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using System.Threading.Tasks;
using Microsoft.ApplicationInsights.Extensibility;

namespace ConsoleApp1
{
    class Program
    {
            static async Task Main(string[] args)
            {
                // Create the DI container.
                IServiceCollection services = new ServiceCollection();

                // Being a regular console app, there is no appsettings.json or configuration providers enabled by default.
                // Hence instrumentation key and any changes to default logging level must be specified here.
                var aiOptions= new Microsoft.ApplicationInsights.WorkerService.ApplicationInsightsServiceOptions();
                // Disables adaptive sampling.
                aiOptions.EnableAdaptiveSampling = false;
                aiOptions.InstrumentationKey = "your-ikey-here";
                services.AddLogging(loggingBuilder => loggingBuilder.AddFilter<Microsoft.Extensions.Logging.ApplicationInsights.ApplicationInsightsLoggerProvider>("Category", LogLevel.Information));
                services.AddApplicationInsightsTelemetryWorkerService(aiOptions);

                // Build ServiceProvider.
                IServiceProvider serviceProvider = services.BuildServiceProvider();

                // Obtain logger instance from DI.
                ILogger<Program> logger = serviceProvider.GetRequiredService<ILogger<Program>>();

                // Obtain TelemetryClient instance from DI, for additional manual tracking or to flush.
                var telemetryClient = serviceProvider.GetRequiredService<TelemetryClient>();
                var configuration = serviceProvider.GetRequiredService <TelemetryConfiguration>();

                var builder = configuration.DefaultTelemetrySink.TelemetryProcessorChainBuilder;
                builder.UseAdaptiveSampling(maxTelemetryItemsPerSecond: 5);
                builder.Build();

            //Demo metric telemetry
            var customMetric = new MetricTelemetry
            {
                Name = "test",
                Sum = 10
            };

                while (true) // This app runs indefinitely. replace with actual application termination logic.
                {
                    logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now);

                    {
                        logger.LogWarning("A sample warning message. By default, logs with severity Warning or higher is captured by Application Insights");

                        telemetryClient.TrackEvent("Test Event");
                        telemetryClient.TrackMetric(customMetric);
                    }

                    await Task.Delay(1000);
                }

                // Explicitly call Flush() followed by sleep is required in Console Apps.
                // This is to ensure that even if application terminates, telemetry is sent to the back-end.
                // In the current form of this sample with while(true) this section would be unreachable.
                // telemetryClient.Flush();
                // Task.Delay(5000).Wait();
            }
    }
}

The one thing you would want to keep in mind since you mentioned you were calling TrackMetric(), and TrackEvent() hundreds of times is that while TrackEvent() is subject to sampling, TrackMetric() is by design not subject to sampling. For this scenario you might need to use GetMetric + TrackValue which will allow you take advantage of local aggregation for your metric telemetry .
Adding @cijothomas to confirm that my usage/when I am calling this line above;
var configuration = serviceProvider.GetRequiredService <TelemetryConfiguration>();

is correct since we don't currently have an example of using a telemetry processor in the .NET Core console app section of the worker service doc.

Thanks!  This was super helpful.  I switched to "GetMetric()" instead of "TrackMetric", and I've been able to verify everything is sampling correctly.  Thanks again for your help!

Going to close out the issue, thanks again for helping us to improve our documentation.

#please-close


https://github.com/flutter/flutter/issues/123853

https://github.com/flutter/flutter/issues/123853
were you able to solve this?
Sorry, couldn't find any other way to connect.

I haven't been able to resolve this issue completely either. My specific situation is that when compiling a Flutter program using Ubuntu in GitHub Actions, it relies on a higher version of GLIBC. However, stable system repositories like Debian don't have the higher version of GLIBC needed to run the Flutter program.
What's strange is that Flutter programs I compile on my own virtual machine running Ubuntu don't have a dependency on a higher version of GLIBC and can run on Debian. I haven't fully investigated the cause, but it seems that avoiding the generation of Flutter programs using GitHub Actions is the solution for now.


Remove import

It is possible to remove the import of the module.
I found a solution here: https://github.com/detectlanguage/detectlanguage-python/blob/master/setup.py#L9

That's very nifty.


create index.html and style.css

Good Job so far!
But there is a little changes that needed to be made.

You need to work on the linter errors 2/4 passed
Try to write a concise pull request title. e.g Code Review Pull Request.
Add a comment description to the code review to explain the pull request

Good Job so far!
But there is a little changes that needed to be made.

You need to work on the linter errors 2/4 passed
Try to write a concise pull request title. e.g Code Review Pull Request.
Add a comment description to the code review to explain the pull request

Approved!


Exercise raindrops: fix input data type and testclass name

Can you also change the exp value in test_number1 and test_number2 to be strings?


Updated the README accordingly.

@nathanyoung Just wanted to let you know that the idea of this PR (and the corresponding PRs to the other two repos) is to give you the opportunity to give feedback. You can test it locally by:

Setting up an account on travis-ci.org
Check out this PR
Push to your account on travis
View the script output

Please let me know if you'd like anything about the script or output to change. Better yet, file an issue on the Commit Analyzer repo!

@thenickcox so we just tried this and we're not quite sure what to expect. We made a commit to the APIDocs to update the readme (7fbb3e6093135331d7f5c74add70693b10255f86). Travis started building but then errored.
https://travis-ci.org/CenturyLinkCloud/APIDocs/builds/72164389

I've seen this happen if git thinks there are any changes to the submodule directory when you push. What happens if you run git status from the lib directory?

Definitely thinks something has changed.

Great. cd into lib and run git reset --hard. Then try to push master again.

Ok, I was able to successfully push, but travis build errored: https://travis-ci.org/CenturyLinkCloud/APIDocs/builds/72170195

Okay. That's because the submodule is a private repo. Can you follow the steps here and let me know the output?

There is no way to create a token that is specific to just one repository, or at least not that I know of. So there would be a checked in token that would have access to all private repos not something we want.
Is there any reason to not just make the comment analyzer a public repo? Do we have secretes or confidential information checked in there?

The commit analyzer could be public if you want. There is no confidential information. It's just a few scripts. It would just be a matter of if you want it to be open source or not.

Alright, so I made the commit analyzer public and re-ran the build. There are 3 errors in the travis log, but the build passed. Theoretically, shouldn't it fail?
https://travis-ci.org/CenturyLinkCloud/APIDocs/builds/72170195

Let me double-check that it fails for me locally.

I just reran this and it looks like it pulled in a commit from you that fixes the docs. Were you able to get it to fail?

Here's what happened when I ran this locally:

Yeah, I just fixed those. Now we were going to test a PR that breaks something to see if it Travis reports a build failure.

So it found the bad link I committed, but the build still passed.
https://travis-ci.org/CenturyLinkCloud/APIDocs/builds/72189183

Wondering if the submodule was updated properly. [Here] is a link to my "bad link" commit, which failed as expected.

@nathanyoung Should we move this to email to make sure none of this conversation slips through the cracks?


%GetHeapUsage removed

It looks like %GetHeapUsage is no longer available in Chrome 91, which is unfortunate since the code is using it to test for --allow-natives-syntax support.
I can't find anything official on when it was removed or why, but:

I will attempt to look into if they renamed it, cause sometimes they change the names.   Thanks for pinging me on it.

I went at looked at the source code, and it was removed at the end of Dec 2020.   I've pinged the developer that removed it, to see if there is a different options as looking thru the new commands I don't see anything equivalent or even related.  :(

Unfortunately the developer that removed this, basically stated anything internal (i.e. %xxxx) are removed at whim when no longer used by the code base.   So it is gone for good.
I found that window.performance.memory in chrome will give you the Heap / Memory info.  (If you use --enable-precise-memory-info you will get more accurate information)
And with Node you can use:
process.memoryUsage();
I'll get this removed from the v8-natives codebase...   With a comment about this...

Sorry, I don't think I explained the problem very well, let me try again:
I don't actually need %GetHeapUsage myself at all, but it's what your package is using to detect whether native support is enabled: https://github.com/NathanaelA/v8-Natives/blob/e1e1b2927621342dcb1e14ddde421c21e95e5d34/lib/v8-browser-all.js#L32-L42
So, with %GetHeapUsage removed, testIfAllowNativeSyntax will always return false (on recent Chrome) and make your package fall back to the dummy implementations... pretty much rendering the whole package useless.
I would suggest that you replace that check either with something "guaranteed" (if there is such a thing) to be around for the foreseeable future, or -- maybe better -- check a list of functions and return true for testIfAllowNativeSyntax as long as at least one of the functions is available. I suppose ideally you would check all functions used by your package and then emit warnings or disable functionality accordingly, but who has time for that.
(Although I won't need them, thanks for researching and digging up those alternative suggestions for me!)

I've pushed a new version that removes this and uses a different test command.   Thanks for letting me know.

Awesome, thanks for the quick turnaround!


NameError: name 'TenantProfile' is not defined

Traceback (most recent call last):
File "create-device.py", line 2, in
from tb_rest_client.rest_client_ce import *
File "", line 991, in _find_and_load
File "", line 975, in _find_and_load_unlocked
File "", line 655, in _load_unlocked
File "", line 618, in _load_backward_compatible
File "", line 259, in load_module
File "/home/administrator/.pyenv/versions/3.8.11/lib/python3.8/site-packages/tb_rest_client-1.1.1-py3.8.egg/tb_rest_client/rest_client_ce.py", line 17, in
File "", line 991, in _find_and_load
File "", line 975, in _find_and_load_unlocked
File "", line 655, in _load_unlocked
File "", line 618, in _load_backward_compatible
File "", line 259, in load_module
File "/home/administrator/.pyenv/versions/3.8.11/lib/python3.8/site-packages/tb_rest_client-1.1.1-py3.8.egg/tb_rest_client/rest_client_base.py", line 32, in
File "/home/administrator/.pyenv/versions/3.8.11/lib/python3.8/site-packages/tb_rest_client-1.1.1-py3.8.egg/tb_rest_client/rest_client_base.py", line 772, in RestClientBase
NameError: name 'TenantProfile' is not defined

Hi @maksonlee, your issue was fixed, please update your rest-client to the newest version via the master branch.


Add Remote parameter to Invoke-WinlogonCheck

Hi,
Would it be possible to add a remote parameter to the Invoke-WinlogonCheck to search in the GPP files in the SYSVOL share, similarly like you implemented in the Invoke-GPPPasswordCheck function?

Hi,
I think that would be a completely different check.
With Invoke-WinlogonCheck I check whether the registry key is present and if it contains a cleartext password.
WIth Invoke-GPPPasswordCheck, on the other hand, I was already parsing local Group Policy files, so implementing a "remote" version was easy because I just had to change the path used for the file search.
For Winlogon I don't even know which file to look for. Perhaps you could elaborate a bit on what you expect.
As far as I know you need to create a GPO that populates the Winlogon registry key "manually".
This means that I would need to grep all the cached GPO files. :thinking:

Hi,
My bad, I didn't closely check the source code of Invoke-WinlogonCheck.
I think these settings can only be configured through Computer configuration > Preferences > Windows Settings > Registry and the corresponding file is \\dc\sysvol\test.lab\Policies\<guid>\Machine\Preferences\Registry\Registry.xml. Here's a sample: Registry.xml.
I think the annoying part is that technically, it's possible to add duplicate registry key/values in a group policy.  I created the following sample snippet based on Invoke-GPPPasswordCheck which I think is correct but it's quite ugly.
$GppPath = "\\$($Env:USERDNSDOMAIN)\SYSVOL"

$CachedGPPFiles = Get-ChildItem -Path $GppPath -Recurse -Include 'Registry.xml' -Force -ErrorAction SilentlyContinue

foreach ($File in $CachedGPPFiles) {

    $FileFullPath = $File.FullName
    Write-Verbose $FileFullPath

    try {
        [xml]$XmlFile = Get-Content -Path $FileFullPath -ErrorAction SilentlyContinue
    }
    catch [Exception] {
        Write-Verbose $_.Exception.Message
    }

    if ($null -eq $XmlFile) {
        continue
    }

	$Results = New-Object -TypeName PSObject -Property @{
		DefaultDomainName    = [System.Collections.ArrayList]@()
		DefaultUserName      = [System.Collections.ArrayList]@()
		DefaultPassword      = [System.Collections.ArrayList]@()
		AutoAdminLogon       = [System.Collections.ArrayList]@()
		AltDefaultDomainName = [System.Collections.ArrayList]@()
		AltDefaultUserName   = [System.Collections.ArrayList]@()
		AltDefaultPassword   = [System.Collections.ArrayList]@()
		AltAutoAdminLogon    = [System.Collections.ArrayList]@()
	}

    $XmlFile.GetElementsByTagName("Properties") | ForEach-Object {

        $Properties = $_

		if ([string]::IsNullOrEmpty($Properties.value)) {
			return
		}

        switch ($Properties.name) {

			DefaultDomainName {
				$null = $Results.DefaultDomainName.Add($Properties.value)
            }

            DefaultUserName {
				$null = $Results.DefaultUserName.Add($Properties.value)
            }

			DefaultPassword {
				$null = $Results.DefaultPassword.Add($Properties.value)
            }

            AutoAdminLogon {
				$null = $Results.AutoAdminLogon.Add($Properties.value)
            }

			AltDefaultDomainName {
				$null = $Results.AltDefaultDomainName.Add($Properties.value)
            }

            AltDefaultUserName {
				$null = $Results.AltDefaultUserName.Add($Properties.value)
            }

			AltDefaultPassword {
				$null = $Results.AltDefaultPassword.Add($Properties.value)
            }

            AltAutoAdminLogon {
				$null = $Results.AltAutoAdminLogon.Add($Properties.value)
            }
        }
	}

	if ($Results.DefaultPassword.Count -ne 0) {
         $Result = New-Object -TypeName PSObject
         $Result | Add-Member -MemberType "NoteProperty" -Name "Domains" -Value $Results.DefaultDomainName
         $Result | Add-Member -MemberType "NoteProperty" -Name "Usernames" -Value $Results.DefaultUserName
         $Result | Add-Member -MemberType "NoteProperty" -Name "Passwords" -Value $Results.DefaultPassword
         $Result | Add-Member -MemberType "NoteProperty" -Name "AutoAdminLogons" -Value $Results.AutoAdminLogon
         $Result
     }

	if ($Results.AltDefaultPassword.Count -ne 0) {
         $Result = New-Object -TypeName PSObject
         $Result | Add-Member -MemberType "NoteProperty" -Name "Domains" -Value $Results.AltDefaultDomainName
         $Result | Add-Member -MemberType "NoteProperty" -Name "Usernames" -Value $Results.AltDefaultUserName
         $Result | Add-Member -MemberType "NoteProperty" -Name "Passwords" -Value $Results.AltDefaultPassword
         $Result | Add-Member -MemberType "NoteProperty" -Name "AutoAdminLogon" -Value $Results.AltAutoAdminLogon
         $Result
     }
}

Oh nice! Thank you very much for your detailed answer!
Your implementation seems pretty close to what I would have probably done.
I thought about another way to handle the duplicate values but I think the one you chose is the most relevant. As we cannot really determine which value is correct beforehand, the best solution is to return all the values as you did.
I will just make some slight adjustments but, overall, your code seems fine to me.
Thanks again. I will probably take care of this in the coming days. :)

I had to find the time and motivation to do it, but it's finally there!
I did some testing using the sample file you attached. It seems to work pretty fine.
But of course, I would be glad to have some feedback as well. :slightly_smiling_face:

By the way, if you want to test it quickly, you can use the following command:
powershell -ep bypass -c ". .\PrivescCheck.ps1; Invoke-WinlogonCheck -Remote"

No worries, thank you for your time.
I just did a quick test and it seems to be working fine.

Nice! Thank you for your feedback.
So, I close the issue for now but don't hesitate to let me know if something looks wrong.


Function specifications

[x] Set up empty functions with full function documentation for bootstrapping
[x] Set up empty function with full function documentation for summary statistics
[x] Set up empty function with full function documentation for plotting
[x] Set up empty function with full documentation for table creation

@voremargot that's a good idea, but can we decide on the set of statistics that we should display on the table, any specific stats you have in mind? One thing I would suggest would be the standard error.

I am thinking for sure mean, standard deviation, CI upper, CI lower, selected alpha.
Any other statistics that might be helpful in  a publication or report (i.e quartiles, sample size,  bootstrapping reps)?

Personally I think the table should be limited to statistics on the sampling distribution of the statistic we are estimating (mean, sd, CI bounds with alpha)
The info that was relevant to the process of estimation (sample size, bootstrapping reps) could perhaps go into the title of the table produced?

@voremargot Yeah, sure, We could add some optional parameters to make it more flexible. And I agree with @BooleanJulien that we should stick with the statistics on the sampling distribution as the input distribution is the bootstrapped samples. What about adding standard error, sample size, sample mean, selected alpha? Anything add-on?

Also, if I would like to change something that is different from the previous pull request. Do you guys know how should I do that? Should I close the previous pull request and then create a new one?

Also @gauthampughazhendhi in generating the bootsrapped distributions, can we have a default for "n" (size of each bootstrap sample) be "auto" ?
This would be the length of the input vector/column by default.

Yeah @voremargot @gauthampughazhendhi in regards to @zackt113's comment, if we have minor requested changes on a PR, what should the process be? Should we still accept the PR and make subsequent changes or request a new PR?

If you want to make changes to a pull request, just make the changes and push them to the repo and they should show up in the request that is already open! No need to delete the request and make a new one.  Just comment on the request once the changes are made so we know we can merge them.

Also I am totally happy with the suggested statistics! Lets do it!

@BooleanJulien @zackt113 as @voremargot correctly mentioned, just add your changes to the same feature branch, the PR would be automatically updated and you can find the changes under files tab of the PR.

@zackt113

Also @gauthampughazhendhi in generating the bootsrapped distributions, can we have a default for "n" (size of each bootstrap sample) be "auto" ?
This would be the length of the input vector/column by default.

Yes, I am doing it.

@zackt113 the stats you mentioned looks good to me.


[Feature Request] Allow any combination of variants to be selected for a run

Is your feature request related to a problem? Please describe.
When a flow has more than one node with each node having more than one variant, only one variant can be specified per run.   When running with the selected node variant, all other nodes with variants will run with their specified default.  Because of this functionality, it is not possible to run all combinations of variants without having to update defaults.
For illustration consider the following flow: I have two LLM nodes each with 2 variants.   In each node there is a variant that adds a statement to the prompt to limit the number of characters and the other variant does not.   In this situation, I would like to experiment running all combinations of the prompts.
For the illustration, I will refer to node one and two as N1 and N2, and Variant one and to as V1 and V2

Total possible combinations

N1V1*, N2V1*

N1V1*, N2V2

N1V2, N2V1*

N1V2, N2V2

Indicates default variant

Given the constraint a node variant can only run against another node's default variant, in the case of multiple nodes with multiple variants, there will exist nodes that are unreachable.  In the example above, if we specify V1 as the default for each node.  In this case, the combination of non-default variant of Node 1 with non-default variant of Node 2 would not be possible to execute.

Describe the solution you'd like
I believe this is probably not something straightforward, but I would think maybe:

Provide ability to have variant be defined at the flow level
Provide ability to specify which variant will be used for which node (seems that this might get complicated)

Describe alternatives you've considered
I have not been able to find a workaround here aside from changing the default prior to running the experiment.
Additional context
An example of the flow above can be found here:
https://github.com/pragmatical/llmops-promptflow-template/blob/main/web_classification/flows/experiment/flow.dag.yaml

Good

Hello is there any progress on this issue ?

Hello, is there any progress on this issue?

Hello @ZhiliangWu is it ok if I start prototyping around this feature ?
What are the potential changes involved in such a change besides simply adding a list in the argparse and then loading each node variant as specified in that list ?

Hello @ZhiliangWu is it ok if I start prototyping around this feature ?
What are the potential changes involved in such a change besides simply adding a list in the argparse and then loading each node variant as specified in that list ?

Hello @sashokbg, thanks for picking this up! That's up to your design. For me, it would be great if we can deliberately choose the variants for all nodes with variants (instead of only being able to overwrite one)
--variant ${node_name1.variant_name_1} --variant ${node_name2.variant_name_1}

What do you think?

Hello @ZhiliangWu is it ok if I start prototyping around this feature ?
What are the potential changes involved in such a change besides simply adding a list in the argparse and then loading each node variant as specified in that list ?

Hello @sashokbg, thanks for picking this up! That's up to your design. For me, it would be great if we can deliberately choose the variants for multiple nodes with variants (instead of only being able to overwrite one)
--variant ${node_name1.variant_name_1} --variant ${node_name2.variant_name_1}

What do you think?

Hello @ZhiliangWu yes the input seems clear enough. My worries are that within the code we reference a run instance with it's variant. And currently the variant is just one string.
So to add multi-param variants we should change the "primary" key of a run's instance etc and this might have some implications that I am not aware.
(I have only very limited knowledge of the inner parts of the project and I am not a python developer)
I will do some crunching and come back to you.
@crazygao, @YingChen1996, @wangchao1230  any thoughts tips on that topic ?

I would recommend not to take this now. As we haven't clearly defined the signature.
The return type of pf.runs.create should be signle run. What's the sdk API poposal here?

Hello @wangchao1230 the api would still be the same. pf.runs.create will return a single run, but the args.variant will become a list.
The idea is that the a variant (let's called it Flow Variant) should be a list of node overrides.
We can model this as a new class ex:
class FlowVariant:
_name: str                        # allow to give a meaningful name to a variant ex: mistral_with_vector_search
_overrides: list[str]          # ex: [${node_chat.mistral}, ${node_rag.vector}]


Open geo intents

Solution https://github.com/Zverik/every_door/issues/387
While implementing the changes, I encountered two problems that might be worth to discuss:

I had to use a GlobalKey for navigation. This was necessary because without it when the app was opened on another page (for example, 'Profile'), the geo intent was processed but the page remained the same. GlobalKey solves this problem but if there are more logic with deeplinks, I would suggest to consider named routing.

When the coordinates are opened, the zoom level in the app stays as it was set by the user previously. It might be worth considering this and finding an optimal zoom level.

Please take a look :)

@mnalis I see you tried to test this, did it go well? :)
Ann, thanks for the pull request! I'll look into it soon!

@mnalis I see you tried to test this, did it go well? :)

Ah, Thanks for the reminder... I did hit another problem with building APK in the process (https://github.com/Zverik/every_door/pull/810) so had to put it aside... But I've managed to build it now (with extra changes for modified appid, hopefully it's not the cause of breaking it) in https://github.com/mnalis/every_door/actions/runs/11865626297 and I'm having partial success on Android 14:

when sharing the geo: link, the EveryDoor app appears in the list, and that is always good!
however, while sometimes it will work fine, sometimes (especially if EveryDoor was not in memory / recent apps?) the opening of geo: will not focus on new  location, but instead open at old location (which was open via previous run). What is interesting, if one exists EveryDoor and enters it again, it will position it correctly.
sometimes it will locate, but it would be too zoomed out, not in the originally shared zoom level   (that issue is mentioned in original PR comment)

Here is video of one not-working correctly (sharing from OsmAnd to EveryDoor):
https://github.com/user-attachments/assets/9a09f0ff-ac15-487a-ba4d-6669d07cbfa7

So yeah, this doesn't work, because it breaks all the navigation paths in order to quickly show the location. Hence the global key. Instead, it should nudge the editor towards the location, but not override everything.
Using AppLinks, I guess that means it should:

Check the initial/latest link in loading.dart and switch navigation to it when not null.
Set up a provider (?) listening to the stream, and if it encounters a link, change the location (as it does now?), but not switch a page. Because we don't want to lose any data e.g. when an editor is open. Maybe show an alert if not on the map page.

I've added a commit that in theory works. The zoom problem remains, but I don't think it is worth fixing now.

Okay this goes into 5.3 today, thanks @ann-who :)


feat: add support for caching

  - uses: cashapp/activate-hermit@v1
    with:
      cache: true

This necessitated switching to a composite action, and I couldn't figure out a way to keep the existing JS action when using it. TBH I think the script approach is a bit cleaner anyway.
Also introduced a CI test for the action, and verified it with act.

cc @wesbillman