Can you please add a documentation on how to create a Storage Container with the Azure Portal?

There is documentation on how to create a storage account in the Azure Portal: https://docs.microsoft.com/en-us/azure/storage/common/storage-account-create?tabs=azure-portal, but it seems that there is no documentation on how to create a storage container in the Azure Portal.

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

ID: 0e562bab-3470-8dd4-ab7d-8c8fdd79fe64
Version Independent ID: 05dfdc55-665b-1bbf-aa91-bbda3f540cf7
Content: Manage blob containers using Azure CLI - Azure Storage
Content Source: articles/storage/blobs/blob-containers-cli.md
Service: storage
Sub-service: blobs
GitHub Login: @stevenmatthew
Microsoft Alias: shaas

@gro1m It's already available in the documents!
https://docs.microsoft.com/en-us/azure/storage/blobs/storage-quickstart-blobs-portal
If you are facing any issue in creating the container , I'd recommend posting your question in https://azure.microsoft.com/en-us/support/community/ since it's not directly related to the documentation. We'll follow up there. We will now proceed to close this thread. If there are further questions regarding this matter, please tag me in your reply. We will gladly continue the discussion and we will reopen the issue.


Can kornia be used for bounding box/ keypoint data augmentation

I see this can be used for different affine/perspective transformations for an image, can this library also be used to perform the same transformation on bounding box/ keypoint coordinates batched on the gpu? If so how?

Not yet exactly. We will add this for our plan. https://github.com/arraiyopensource/kornia/issues/279
In mean time, if you have transformation in format of homography matrix, you can use this function:
https://kornia.readthedocs.io/en/latest/geometry.linalg.html#kornia.geometry.linalg.transform_points

Gotcha, thanks for the response. I'm assuming that getting the homography matrix is non-trivial and there is no function implementation in kornia? Not the same as getting a transformation matrix (Rotation/translation?)

It depends on what you are starting from :)
If you have 4 corners before and after, then just apply this
https://kornia.readthedocs.io/en/latest/geometry.transform.html#kornia.geometry.transform.get_perspective_transform
If rotation angle is available, then use https://kornia.readthedocs.io/en/latest/geometry.transform.html#kornia.geometry.transform.get_rotation_matrix2d and add 3rd row == [0, 0, 1]


If datashader is unable to startup if there are too many cache files

gunicorn times out the worker while it tries to clear the cache because it takes too long to glob the files in the cache directory.
https://docs.gunicorn.org/en/stable/settings.html#timeout
Potential temporary relief to increase the timeout time. but need a long term solution.

fixed in 5f3650f


DatadogLogger passing all JSON data to message field and not being parsed correctly

I set up logger_json with a Phoenix service and am using the DatadogLogger (with all the same configs as in the README).
However, whenever I log something now, I see this in DataDog:

When clicking the "copy log as JSON" button in the top right, I get:
{
	"id": "<ID>",
	"content": {
		"timestamp": "2022-11-23T22:11:47.677Z",
		"tags": [
			"<REDACTED TAGS>"
		],
		"service": "<SERVICE NAME>",
		"message": "<REDACTED JSON I WANT DATADOG TO ACTUALLY USE/PARSE>",
		"attributes": {
			"service": "<SERVICE NAME>",
			"source": "stdout",
			"timestamp":<PHONE_NUMBER>677
		}
	}
}

So, using the example from the README:
{
  "domain": ["elixir"],
  "duration": 3863403,
  "http": {
    "url": "http://localhost/create-account",
    "status_code": 200,
    "method": "GET",
    "referer": "http://localhost:4000/login",
    "request_id": "http_FlDCOItxeudZJ20AAADD",
    "useragent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36",
    "url_details": {
      "host": "localhost",
      "port": 4000,
      "path": "/create-account",
      "queryString": "",
      "scheme": "http"
    }
  },
  "logger": {
    "thread_name": "#PID<0.1042.0>",
    "method_name": "Elixir.LoggerJSON.Plug.call/2"
  },
  "message": "",
  "network": {
    "client": {
      "ip": "<IP_ADDRESS>"
    }
  },
  "phoenix": {
    "controller": "Elixir.RecognizerWeb.Accounts.UserRegistrationController",
    "action": "new"
  },
  "request_id": "http_FlDCOItxeudZJ20AAADD",
  "syslog": {
    "hostname": [10, 10, 100, 100, 100, 100, 100],
    "severity": "info",
    "timestamp": "2020-12-14T19:16:55.088Z"
  }
}

All of that information gets shoved into the message field in DataDog so it's not parsed and turned into attributes:
  "message": "{\"domain\":[\"elixir\"],\"duration\":3863403,\"http\":{\"url\":\"http://localhost/create-account\",\"status_code\":200,\"method\":\"GET\",\"referer\":\"http://localhost:4000/login\",\"request_id\":\"http_FlDCOItxeudZJ20AAADD\",\"useragent\":\"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36\",\"url_details\":{\"host\":\"localhost\",\"port\":4000,\"path\":\"/create-account\",\"queryString\":\"\",\"scheme\":\"http\"}},\"logger\":{\"thread_name\":\"#PID<0.1042.0>\",\"method_name\":\"Elixir.LoggerJSON.Plug.call/2\"},\"message\":\"\",\"network\":{\"client\":{\"ip\":\"<IP_ADDRESS>\"}},\"phoenix\":{\"controller\":\"Elixir.RecognizerWeb.Accounts.UserRegistrationController\",\"action\":\"new\"},\"request_id\":\"http_FlDCOItxeudZJ20AAADD\",\"syslog\":{\"hostname\":[10,10,100,100,100,100,100],\"severity\":\"info\",\"timestamp\":\"2020-12-14T19:16:55.088Z\"}}"

The only thing I suspect at this point is the DataDog agent itself or the FluentBit container we use for log routing. We don't have any crazy custom configuration for these though. The DataDog agent has the following env vars set up:
ECS_FARGATE=true
DD_ENV=dev
DD_APM_ENABLED=true
DD_PROFILING_ENABLED=true
DD_PROCESS_AGENT_ENABLED=true
DD_DOGSTATSD_NON_LOCAL_TRAFFIC=true

But as far as I can tell from DataDog docs none of these should be changing how JSON logs are being parsed. So my last guess is that I've set up logger_json incorrectly?
Any and all ideas/help is appreciated!

Hey. I feel like you should start by digging into the FluentBit configuration, it looks like it doesn't have a rule to properly parse JSON in the container's stdout file (you can tail it to see if LoggerJSON does its job and sends formatted logs there first).

@AndrewDryga I would but my entire team got laid off today so this is no longer my problem. 😄 In the end I doubt it's a logger_json issue but I wanted to at least make an issue and see what others thought.
Take care!

I'm sorry to hear that @Nezteb, I know how that feels. Please take care of yourself, I bet you and the other guys will find a better place to work.


Enrique

Describe the bug
A clear and concise description of what the bug is.
To Reproduce
Steps to reproduce the behavior:

Go to '...'
Click on '....'
Scroll down to '....'
See error

Expected behavior
A clear and concise description of what you expected to happen.
Screenshots
If applicable, add screenshots to help explain your problem.
Desktop (please complete the following information):

OS: [e.g. iOS]
Browser [e.g. chrome, safari]
Version [e.g. 22]

Smartphone (please complete the following information):

Device: [e.g. iPhone6]
OS: [e.g. iOS8.1]
Browser [e.g. stock browser, safari]
Version [e.g. 22]

Additional context
Add any other context about the problem here.

Hi enriquegiraldo,
The issue you have provided is a template for reporting bugs. It includes all of the information that developers need to understand and reproduce the bug, including:

A clear and concise description of the bug.
Steps to reproduce the bug.
Expected behavior.
Actual behavior.
Screenshots (if applicable).
Environment details (operating system, browser, version, etc.).
Additional context.

The purpose of this issue is to help developers fix bugs as quickly as possible. By providing all of the necessary information in a clear and concise manner, you can help developers to reproduce the bug on their own computers and to start working on a fix.
Here is an example of how this issue template could be used to report a bug:
Title: Website crashes when scrolling down to the "About Us" section
Description:
When I go to the website and scroll down to the "About Us" section, the website crashes. I have tried reproducing this bug on multiple browsers and devices, and it happens every time.
Screenshots:
[Include screenshots of the website before and after it crashes.]
Environment:

Operating system: Windows 11
Browser: Chrome
Version: 105.0.5195.125

Steps to reproduce:

Go to the website.
Scroll down to the "About Us" section.
Observe that the website crashes.

Expected behavior:
The website should not crash when scrolling down to the "About Us" section.
Actual behavior:
The website crashes when scrolling down to the "About Us" section.
Additional context:
I am using a laptop with a 1920x1080 resolution.
By providing all of this information, the developer will be able to easily reproduce the bug and start working on a fix.


Unstable in Foundry 0.8.9

Hi. Please update this fantastic module I have problems in 0.8.9. When I run Find the Culprit, it gives me different modules that make O.R.E not working but when I then reactivate all but those, O:R:E still doesn't work. Very strange. Unreliable bugs.

Thanks!  Can you let me know what those problems are exactly?  How to reproduce this?

I have Foundry 0.8.9 on an ORACLE server, with the following 85 plugins enabled (see attached file). When I write "/ore 5" or any number in chat, the ORE plugin doesn't trigger. When I run Find the Culprit, it starts working, and then find a different module that is in conflict for every run. When I reactivate and then disable this module, ORE still doesn't work. I don't know whats wrong.
moduleList.txt
.

 After the rll, if dies are wiggled to form sets, they sets are re-rendered and shown.

It works for me with only ORE enabled and no other modules, so it's probably not a 0.8.9 compatibility issue.
Could you try doing the same, and telling me if it works by itself?
If it does, then I'd need to see which module is in conflict, so I'll need you to name some specific modules that Find The Culprit is pinpointing.  Or alternatively you can try finding it yourself by enabling half the modules, then a bit more or less, etc. to search which one causes it.
The module list you attached is great, but you've got 85 modules installed, and I don't really have the time to install all of them myself just to see which one is incompatible.  Sorry!

ok I will do some research on this within the next few days.


[Sign up] After signing up the new user is not logged and redirected to main page istead of 'My Space' page

Environment: Windows, Google Chrome 94.0.4606.71
Reproducible: always
Build found: 04.10.2021
Preconditions
Go to Green City https://ita-social-projects.github.io/GreenCityClient/#/
Steps to reproduce

Click on 'Sign-up' button
Set correct values in 'Email' field in the following format: @domain.com
Set correct value in 'User name' field - up to 20 characters
Set correct value in the 'Password' field
Set correct value in 'Confirm password' field
Click 'Sign-up' button
Open the email box you entered in step 2
Open the email with the verification of your email address
Click on 'Підтвердьте свою електронну адресу' button
Actual result
The user is redirected to the main page and not logged in.
https://user-images.githubusercontent.com/91474733/135894360-fbb45c6b-f009-49f9-8423-b3a01dc6ae01.mp4

Expected result
User is successfully redirected to 'My habits' page.
User story and test case links
E.g.: "User story #29, #386, #455"
Labels to be added
"Bug", Priority ("high: "), Severity ("severity: high"), Type ( "Functional")

Verified - done


Logi Circle: .logi_cache.pickle is saved in working directory, not config

Home Assistant release with the issue:
0.94.3
Last working Home Assistant release (if known):
before 0.92 (Before new Logi Circle OAuth integration)
Operating environment (Hass.io/Docker/Windows/etc.):
Docker
Component/platform:
https://www.home-assistant.io/components/logi_circle/
Description of problem:
When configuring Logi Circle through the new OAuth flow it creates a .logi_cache.pickle file. This file seems to be saved in the working directory of home assistant, not in the config directory.
In the official docker container that means /usr/src/app
This directory is not typically mounted to the docker host. Only the config directory.
Due to this every time the image gets recreated (with an update) the file gets lost and the integration has to be set up again.
Problem-relevant configuration.yaml entries and (fill out even if it seems unimportant):
logi_circle:
  client_id: !secret logi_client_id
  client_secret: !secret logi_client_secret
  api_key: !secret logi_api_key
  redirect_uri: ***

Traceback (if applicable):

Additional information:

Thanks for the report. Can reproduce, and I know what I've missed. I'll aim to have a PR out tonight to resolve this. Sorry for the trouble!

Thanks @evanjd


Added CHANGELOG for 1.10.3

Looks good. I'll merge this last once the other PRs for 1.10.3 are on master.


report <project-name> fails with 500 error

In a timeld-cli admin session, the command report "<Valid Project>" consistently results in the following error (after a delay of ~30s):
Fetch from https://timeld.org/api/rpt/<user>/own/Valid%20Project?user=<user> failed with 500: Internal Server Error
(Note that actual project name and user have been de-identified for confidentiality reasons).

Likely to be the same as #59 (possibly with a different character-match problem). DM me the failing IDs pls.

Done.  Concerning the possible common underlying cause with #59, the Timesheet name in the above case is in fact all lower-case, but the Project name has some upper-case characters.  If it's the same code that handles the latter entity class, then it's likely to be that.  Could that restriction be relaxed?  Some people prefer the flexibility of being able to use upper-case characters in entity names.

Decided in update meeting 15-Aug-22 not to change this restriction.
https://gitter.im/federatedbookkeeping/timesheets?at=62fa2c04443b7927a76ce94d


[MINOR][SQL] Add a comment for removedSQLConfigs

What changes were proposed in this pull request?
In the PR, I propose to explain in the description of removedSQLConfigs when removed SQL configs should NOT be placed to the map.
Why are the changes needed?
To make the cases when SQL configs should be added to removedSQLConfigs more clear. Recently, spark.sql.variable.substitute.depth was removed from the map by #27646 because it contradicts to the condition described by the PR.
Does this PR introduce any user-facing change?
No
How was this patch tested?
By ./dev/scalastyle

Test build #118728 has started for PR 27653 at commit da9873c.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder-K8s/23479/
Test PASSed.

Thanks, @MaxGekk .
cc @gatorsmile

Test build #118732 has started for PR 27653 at commit c48364a.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder-K8s/23483/
Test PASSed.

Test build #118728 has finished for PR 27653 at commit da9873c.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/118728/
Test PASSed.

Test build #118732 has finished for PR 27653 at commit c48364a.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/118732/
Test PASSed.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder-K8s/23555/
Test PASSed.

Test build #118805 has started for PR 27653 at commit 43ea1a6.

Test build #118805 has finished for PR 27653 at commit 43ea1a6.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/118805/
Test PASSed.

Merged to master and branch-3.0.


[18.03] Possible race on ingress programming

backport of https://github.com/docker/libnetwork/pull/2178 for the bump18.03 branch
git checkout -b 18.03-backport-race-ingress upstream/bump_18.03
git cherry-pick -s -S -x 7bb62d0172f8e676388d4d78e510c4d9fd4c1d06
git push -u origin

no conflicts
Make sure that iptables operations on ingress
are serialized.
Before 2 racing routines trying to create the ingress chain
were allowed and one was failing reporting the chain as
already existing.
The lock guarantees that this condition does not happen anymore
Signed-off-by: Flavio Crisciani<EMAIL_ADDRESS>(cherry picked from commit 7bb62d0172f8e676388d4d78e510c4d9fd4c1d06)
Signed-off-by: Sebastiaan van Stijn<EMAIL_ADDRESS>

Codecov Report

:exclamation: No coverage uploaded for pull request base (bump_18.03@3931ba4). Click here to learn what that means.
The diff coverage is 0%.

@@             Coverage Diff              @@
##             bump_18.03   #2181   +/-   ##
============================================
  Coverage              ?   40.6%
============================================
  Files                 ?     139
  Lines                 ?   22484
  Branches              ?       0
============================================
  Hits                  ?    9129
  Misses                ?   12024
  Partials              ?    1331

Impacted Files
Coverage Δ

service_linux.go
3.2% <0%> (ø)

Continue to review full report at Codecov.

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


Maintenance: Drop Lodash

Lodash is a big, regularly updating dep. We only use 2 modules from it, and it #21 we discussed dropping lodash for other techniques.
Describe the solution you'd like
Replace lodash.clone and lodash.isequal with simple JS-built-in options such as structuredClone or JSON.parse(JSON.stringify and Object.isEqual
Describe alternatives you've considered
Leave lodash alone :leave-britney-gif:

Hey, I was bored so I took a stab at this. My $0.02 is you should leave lodash alone — here's why:

lodash.isEqual is too useful and too annoying to replicate. Object.isEqual isn't a thing, much as I wish :lolsob:
lodash.clone seems to preserve type information whereas structuredClone / JSON.parse(JSON.stringify) don't. For example, consider the map predicate in this line:

If you try to refactor it to just be structuredClone by reference, you get a type error on structuredClone's second parameter (an options bag), because map predicates are supposed to take the element index as the second parameter.
If you then try to refactor it to be (node) => structureClone(node) to get around that type error, the finalNodesClone array gets typed as any, whereas lodash.clone correctly types it as ImportOrLine[]. This doesn't yield any errors (unless you use noImplicitAny), but it does introduce implicit anys, which can cause TypeScript to unexpectedly let you down.

possibly useful repo: https://github.com/you-dont-need/You-Dont-Need-Lodash-Underscore

https://github.com/angus-c/just 👀

structuredClone is too young anyway to be used in a wide project, but in 1/2 years I think the the default node types would be improved to keep type information. Or it could be wrap in a one liner like: const clone = <T>(value: T): T => structureClone(value). Using a runtime lib just for a bad default types is not ideal IMO.

I'm inclined to keep what we have for now, since:

Lodash is battle tested, and it's been working fine for us so far as far as I know.
It has good typescript support
It sounds like there are not great native solutions just yet.

Happy to reconsider, but using two small functions from lodash seems fine in my opinion.


Support const char* keys

Currently, vt_hash_string and vt_cmpr_string do not declare their arguments to be const. This makes them not useable with KEY_TY of const char*
Ideally, HASH_FN and CMPR_FN should be set automatically when KEY_TY is const char* just like they are for key type char*, but that is not so important.

Here is a patch:
--- /t/verstable.h	2024-07-08 11:44:53.464754276 +0530
+++ 3rdparty/verstable.h	2024-07-08 11:45:43.431669510 +0530
@@ -550,7 +550,7 @@ static inline uint64_t vt_hash_integer(
 }

 // FNV-1a.
-static inline uint64_t vt_hash_string( char *key )
+static inline uint64_t vt_hash_string( const char *key )
 {
   uint64_t hash = 0xcbf29ce484222325ull;
   while( *key )
@@ -564,7 +564,7 @@ static inline bool vt_cmpr_integer( uint
   return key_1 == key_2;
 }

-static inline bool vt_cmpr_string( char *key_1, char *key_2 )
+static inline bool vt_cmpr_string( const char *key_1, const char *key_2 )
 {
   return strcmp( key_1, key_2 ) == 0;
 }
@@ -877,10 +877,10 @@ VT_CAT( NAME, _itr ) VT_CAT( NAME, _eras
 #define HASH_FN                                                               \
 _Pragma( "warning( push )" )                                                  \
 _Pragma( "warning( disable: 4189 )" )                                         \
-_Generic( ( KEY_TY ){ 0 }, char *: vt_hash_string, default: vt_hash_integer ) \
+_Generic( ( KEY_TY ){ 0 }, char *: vt_hash_string, const char*: vt_hash_string, default: vt_hash_integer ) \
 _Pragma( "warning( pop )" )
 #else
-#define HASH_FN _Generic( ( KEY_TY ){ 0 }, char *: vt_hash_string, default: vt_hash_integer )
+#define HASH_FN _Generic( ( KEY_TY ){ 0 }, char *: vt_hash_string, const char*: vt_hash_string, default: vt_hash_integer )
 #endif
 #else
 #error Hash function inference is only available in C11 and later. In C99, you need to define HASH_FN manually to \
@@ -894,10 +894,10 @@ vt_hash_integer, vt_hash_string, or your
 #define CMPR_FN                                                               \
 _Pragma( "warning( push )" )                                                  \
 _Pragma( "warning( disable: 4189 )" )                                         \
-_Generic( ( KEY_TY ){ 0 }, char *: vt_cmpr_string, default: vt_cmpr_integer ) \
+_Generic( ( KEY_TY ){ 0 }, char *: vt_cmpr_string, const char*: vt_cmpr_string, default: vt_cmpr_integer ) \
 _Pragma( "warning( pop )" )
 #else
-#define CMPR_FN _Generic( ( KEY_TY ){ 0 }, char *: vt_cmpr_string, default: vt_cmpr_integer )
+#define CMPR_FN _Generic( ( KEY_TY ){ 0 }, char *: vt_cmpr_string, const char*: vt_cmpr_string, default: vt_cmpr_integer )
 #endif
 #else
 #error Comparison function inference is only available in C11 and later. In C99, you need to define CMPR_FN manually \

Thanks for working on this! const-correctness throughout the library is planned for the next release (I previously mentioned the matter in #11). This ought to include all function parameters that can be const, including the key parameters of _insert, _get, and _get_or_insert. I'm not sure yet how well this change will mesh with your suggestions, which are intended to allow the user to specify const as part of the key type (i.e. via KEY_TY). For example, there would be duplicate const specifiers on the aforementioned parameters, which result in compiler warnings. It possibly that the changes I intend to make will eliminate a user's need to specify a const key type in the first place. I'll need to investigate further.

These changes dont affect that, since they aren't marking key parameters const. They would be required anyway if you wanted to mark key parameters const, so I see no harm in merging them now.
Note that in my code using verstable.h I extensively use const char* as KEY_TY. Changing verstable to add const to KEY_TY internally would break that. It's not a big deal as I can obviously change my code, but it is a breaking change.


Spevacus: Watch theemailshop.com

Spevacus requests the watch of the watch_keyword theemailshop\.com. See the MS search here and the Stack Exchange search in text, in URLs, and in code.

theemailshop\.com has been seen in 1 true positive, 0 false positives, and 0 NAAs.

Approved by Eliah Kagan in Charcoal HQ


Wrong data in metrics

Hello,
The sap connection has been run throw load balance server.
I using exporter with config metrics:
[[TableMetrics]]
  Name = "sap_users"
  Help = "sm04 help"
  MetricType = "counter"
  TagFilter = ["users"]
  FunctionModule = "TH_USER_LIST"
  AllServers = true
  Table = "USRLIST"
  [TableMetrics.Params]
  [TableMetrics.RowCount]
  mandt = ["000","900"]
  [TableMetrics.RowFilter]

 [[FieldMetrics]]
  Name = "sap_ma_errors"
  Help = "SAP CRM Loy MA Errors"
  MetricType = "gauge"
  TagFilter = []
  AllServers = true
  FunctionModule = "ZLOY_MON_MA_GET"
  FieldLabels = ["EV_COUNT_MA"]
  [FieldMetrics.Params]
   IV_ESTAT = "E0005"

My listing at *9663/metrics contains a lots of data, for example:
# HELP go_gc_duration_seconds A summary of the pause duration of garbage collection cycles.
# TYPE go_gc_duration_seconds summary
go_gc_duration_seconds{quantile="0"} 1.9562e-05
go_gc_duration_seconds{quantile="0.25"} 4.8896e-05
go_gc_duration_seconds{quantile="0.5"} 5.8457e-05
go_gc_duration_seconds{quantile="0.75"} 7.3996e-05
go_gc_duration_seconds{quantile="1"} 0.000145196
go_gc_duration_seconds_sum 0.001742321
go_gc_duration_seconds_count 27
# HELP go_goroutines Number of goroutines that currently exist.
# TYPE go_goroutines gauge
go_goroutines 13
# HELP go_info Information about the Go environment.
# TYPE go_info gauge
go_info{version="go1.15.3"} 1
# HELP go_memstats_alloc_bytes Number of bytes allocated and still in use.
# TYPE go_memstats_alloc_bytes gauge
go_memstats_alloc_bytes 2.995584e+06
# HELP go_memstats_alloc_bytes_total Total number of bytes allocated, even if freed.
# TYPE go_memstats_alloc_bytes_total counter
go_memstats_alloc_bytes_total 7.4896712e+07
# HELP go_memstats_buck_hash_sys_bytes Number of bytes used by the profiling bucket hash table.
# TYPE go_memstats_buck_hash_sys_bytes gauge
go_memstats_buck_hash_sys_bytes 1.451492e+06
# HELP go_memstats_frees_total Total number of frees.
# TYPE go_memstats_frees_total counter
go_memstats_frees_total 273941
# HELP go_memstats_gc_cpu_fraction The fraction of this program's available CPU time used by the GC since the program started.
# TYPE go_memstats_gc_cpu_fraction gauge
go_memstats_gc_cpu_fraction 7.84741736744209e-05
# HELP go_memstats_gc_sys_bytes Number of bytes used for garbage collection system metadata.
# TYPE go_memstats_gc_sys_bytes gauge
go_memstats_gc_sys_bytes 4.644088e+06
# HELP go_memstats_heap_alloc_bytes Number of heap bytes allocated and still in use.
# TYPE go_memstats_heap_alloc_bytes gauge
go_memstats_heap_alloc_bytes 2.995584e+06
# HELP go_memstats_heap_idle_bytes Number of heap bytes waiting to be used.
# TYPE go_memstats_heap_idle_bytes gauge
go_memstats_heap_idle_bytes 6.2447616e+07
# HELP go_memstats_heap_inuse_bytes Number of heap bytes that are in use.
# TYPE go_memstats_heap_inuse_bytes gauge
go_memstats_heap_inuse_bytes 4.071424e+06
# HELP go_memstats_heap_objects Number of allocated objects.
# TYPE go_memstats_heap_objects gauge
go_memstats_heap_objects 7412
# HELP go_memstats_heap_released_bytes Number of heap bytes released to OS.
# TYPE go_memstats_heap_released_bytes gauge
go_memstats_heap_released_bytes 6.2070784e+07
# HELP go_memstats_heap_sys_bytes Number of heap bytes obtained from system.
# TYPE go_memstats_heap_sys_bytes gauge
go_memstats_heap_sys_bytes 6.651904e+07
# HELP go_memstats_last_gc_time_seconds Number of seconds since 1970 of last garbage collection.
# TYPE go_memstats_last_gc_time_seconds gauge
go_memstats_last_gc_time_seconds 1.6043270470749338e+09
# HELP go_memstats_lookups_total Total number of pointer lookups.
# TYPE go_memstats_lookups_total counter
go_memstats_lookups_total 0
# HELP go_memstats_mallocs_total Total number of mallocs.
# TYPE go_memstats_mallocs_total counter
go_memstats_mallocs_total 281353
# HELP go_memstats_mcache_inuse_bytes Number of bytes in use by mcache structures.
# TYPE go_memstats_mcache_inuse_bytes gauge
go_memstats_mcache_inuse_bytes 6944
# HELP go_memstats_mcache_sys_bytes Number of bytes used for mcache structures obtained from system.
# TYPE go_memstats_mcache_sys_bytes gauge
go_memstats_mcache_sys_bytes 16384
# HELP go_memstats_mspan_inuse_bytes Number of bytes in use by mspan structures.
# TYPE go_memstats_mspan_inuse_bytes gauge
go_memstats_mspan_inuse_bytes 67456
# HELP go_memstats_mspan_sys_bytes Number of bytes used for mspan structures obtained from system.
# TYPE go_memstats_mspan_sys_bytes gauge
go_memstats_mspan_sys_bytes 98304
# HELP go_memstats_next_gc_bytes Number of heap bytes when next garbage collection will take place.
# TYPE go_memstats_next_gc_bytes gauge
go_memstats_next_gc_bytes 4.194304e+06
# HELP go_memstats_other_sys_bytes Number of bytes used for other system allocations.
# TYPE go_memstats_other_sys_bytes gauge
go_memstats_other_sys_bytes 950564
# HELP go_memstats_stack_inuse_bytes Number of bytes in use by the stack allocator.
# TYPE go_memstats_stack_inuse_bytes gauge
go_memstats_stack_inuse_bytes 589824
# HELP go_memstats_stack_sys_bytes Number of bytes obtained from system for stack allocator.
# TYPE go_memstats_stack_sys_bytes gauge
go_memstats_stack_sys_bytes 589824
# HELP go_memstats_sys_bytes Number of bytes obtained from system.
# TYPE go_memstats_sys_bytes gauge
go_memstats_sys_bytes 7.4269696e+07
# HELP go_threads Number of OS threads created.
# TYPE go_threads gauge
go_threads 10
# HELP process_cpu_seconds_total Total user and system CPU time spent in seconds.
# TYPE process_cpu_seconds_total counter
process_cpu_seconds_total 0.84
# HELP process_max_fds Maximum number of open file descriptors.
# TYPE process_max_fds gauge
process_max_fds 1024
# HELP process_open_fds Number of open file descriptors.
# TYPE process_open_fds gauge
process_open_fds 12
# HELP process_resident_memory_bytes Resident memory size in bytes.
# TYPE process_resident_memory_bytes gauge
process_resident_memory_bytes 3.227648e+07
# HELP process_start_time_seconds Start time of the process since unix epoch in seconds.
# TYPE process_start_time_seconds gauge
process_start_time_seconds 1.60432697996e+09
# HELP process_virtual_memory_bytes Virtual memory size in bytes.
# TYPE process_virtual_memory_bytes gauge
process_virtual_memory_bytes 1.389203456e+09
# HELP process_virtual_memory_max_bytes Maximum amount of virtual memory available in bytes.
# TYPE process_virtual_memory_max_bytes gauge
process_virtual_memory_max_bytes -1
# HELP promhttp_metric_handler_requests_in_flight Current number of scrapes being served.
# TYPE promhttp_metric_handler_requests_in_flight gauge
promhttp_metric_handler_requests_in_flight 1
# HELP promhttp_metric_handler_requests_total Total number of scrapes by HTTP status code.
# TYPE promhttp_metric_handler_requests_total counter
promhttp_metric_handler_requests_total{code="200"} 20
promhttp_metric_handler_requests_total{code="500"} 0
promhttp_metric_handler_requests_total{code="503"} 0
# HELP sap_ma_errors SAP CRM Loy MA Errors
# TYPE sap_ma_errors gauge
sap_ma_errors{EV_COUNT_MA="13 a",server="chq",system="chq",usage="test"} 1
# HELP sap_users sm04 help
# TYPE sap_users counter
sap_users{count="mandt_000",server="chq",system="chq",usage="test"} 1
sap_users{count="mandt_900",server="chq",system="chq",usage="test"} 0

Q1:How could I disable exporting unnecessary info?
Q2: The sap_users counter contains wrong values in the most responses. Only 10-20 % of responses contains correct data.
promhttp_metric_handler_requests_total{code="200"} 37
promhttp_metric_handler_requests_total{code="500"} 0
promhttp_metric_handler_requests_total{code="503"} 0
# HELP sap_ma_errors SAP CRM Loy MA Errors
# TYPE sap_ma_errors gauge
sap_ma_errors{EV_COUNT_MA="15 a",server="chq",system="chq",usage="test"} 1
# HELP sap_users sm04 help
# TYPE sap_users counter
sap_users{count="mandt_000",server="chq",system="chq",usage="test"} 1
sap_users{count="mandt_900",server="chq",system="chq",usage="test"} 1
incorrect!!!

promhttp_metric_handler_requests_total{code="200"} 38
promhttp_metric_handler_requests_total{code="500"} 0
promhttp_metric_handler_requests_total{code="503"} 0
# HELP sap_ma_errors SAP CRM Loy MA Errors
# TYPE sap_ma_errors gauge
sap_ma_errors{EV_COUNT_MA="15 a",server="chq",system="chq",usage="test"} 1
# HELP sap_users sm04 help
# TYPE sap_users counter
sap_users{count="mandt_000",server="chq",system="chq",usage="test"} 2
sap_users{count="mandt_900",server="chq",system="chq",usage="test"} 22
correct!!!

promhttp_metric_handler_requests_total{code="200"} 39
promhttp_metric_handler_requests_total{code="500"} 0
promhttp_metric_handler_requests_total{code="503"} 0
# HELP sap_ma_errors SAP CRM Loy MA Errors
# TYPE sap_ma_errors gauge
sap_ma_errors{EV_COUNT_MA="14 a",server="chq",system="chq",usage="test"} 1
# HELP sap_users sm04 help
# TYPE sap_users counter
sap_users{count="mandt_000",server="chq",system="chq",usage="test"} 1
sap_users{count="mandt_900",server="chq",system="chq",usage="test"} 0
incorrect!!!

Q3: The field EV_COUNT_MA contains wrong value also. That field type CHAR 10, should contains number of error without any chars. And it's vallue changing randomly in any next responses.
Please help to resolve issues.

Q1: The other metrics are from the prometheus client. If you don't need them just ignore these metrics.
Q2: I just compared the sap_users metric for some of our test systems with the result of the function module TH_USER_LIST and got the same values. In larger system it's difficult to compare exactly because the values can change immediately.
The MetricType must be "gauge" in this case. I used the following metric:
[[TableMetrics]]
   Name = "sap_users"
  Help = "sm04 help"
  MetricType = "gauge"
  TagFilter = []
  AllServers = true
  FunctionModule = "TH_USER_LIST"
  Table = "USRLIST"
  [TableMetrics.Params]
  [TableMetrics.RowCount]
    MANDT = ["000", "010", "100"]

Q3: I can't say anything regarding Q3, because ZLOY_MON_MA_GET is a custom function module.


Port ANCM current to github.

Bring current ANCM on VSTS as a separate project in IISIntegration.
Drops ANCM into two separate folders in the artifact folder: AspNetCoreModuleV1 and V2

TODO:

[ ] Re-add tests in IISIntegration, ServerTests, and MusicStore for current ANCM.
[ ] Verify newly built ANCM doesn't cause regressions.
[ ] Fix versioning of ANCM current
[ ] Rename ANCM vNext aspnetcore.dll to aspnetcoreV2.dll.
[ ] Freb logs? Websocket changes?

When reviewing this PR, I would recommend checking each commit rather than reviewing everything.

cc @muratg @Eilon

Nice! But I don't know what to review ☹

Nvrm, I was going to ask about the licenses, but it is the same as before.

@muratg  No, lets squash some commits and review it first.

@pakrym didn't you guys want to take it as is first so that all the history is recorded?

This PR contains both taking and fixing. @jkotalik already squashed it into 4 nice commits (there were 18 earlier today), I'll review them tomorrow and we'll merge without squashing to preserve history.

Nice work! The code is identical to IIS OOB now. I remember we updated couple of files to fix the issue introduced by the new compiler . Those changes are missing now. We should add them back.

(there were 18 earlier today)
Shhhh they don't know that <_<

And this is happening side-by-side rather than in a separate branch because...?

There is a bunch of ignored files in this PR. src\AspNetCoreModuleV1\AspNetCore\aspnetcore_msg.rc. \src\AspNetCoreModuleV1\AspNetCore\ancm.mof etc.

@Tratcher Few reasons

Easier to test ANCMV1 as it is part of dev and release/2.1
Building the MSIs can be done in the same build chain for both V1 and V2.

We don't have plans to build the ANCMv2 MSIs any time soon, correct? Their versioning would be all messed up.

@shirhatti let's not do it as part of this PR. It's pretty large and impactful already.

I think this is good for review now. I have updated the ANCM out of process tests to select the version of the aspnetcore.dll version via a msbuild property. There are a few features we need to port from the ANCMV2 out of process code to V1 (https://github.com/aspnet/IISIntegration/commit/00b1948937e8d5cdcc7559c8d8aafda1613479b4, for example).
For cross repo consumption of the ANCMV1, I created a separate nuget package called Microsoft.AspNetCore.AspNetCoreModuleV1. I will make a PR to universe to mark that as a noship nuget package for now. I will eventually update Microsoft.AspNetCore.AspNetCoreModule=> AspNetCoreModuleV2, but I will do that in a separate PR.

Yes.  Please merge the pr


Disallow animated GIFs as post images

If a user tries to reserve/request an animated image, show an error telling them to choose a frame of the animation instead.

Implemented in 60aeca8518b752f019b9f01e02c51015c14a38ba


Missing class import via use statement for trait with static::class

PHPMD version: 2.7.0
PHP Version: 7.3.9
Installation type: (composer)
Operating System / Distribution & Version: (Ubuntu 18.04 => Docker => Debian GNU/Linux 9)

Current Behavior
/app/src/Traits/EnumTrait.php:16        Missing class import via use statement (line '16', column '32').
Expected Behavior
I expect that there are no error.
Steps To Reproduce:
run phpmd on following class:
<?php

declare(strict_types=1);

namespace App\Traits;

trait EnumTrait
{
    public static function validate(string $value): bool
    {
        return \in_array($value, self::getArray(), true);
    }

    public static function getArray(): array
    {
        $reflectionClass = new \ReflectionClass(static::class);

        return $reflectionClass->getConstants();
    }
}

Checks before submitting

[x] Be sure that there isn't already an issue about this. See: Issues list
[x] Be sure that there isn't already a pull request about this. See: Pull requests
[x] I have added every step to reproduce the bug.
[x] If possible I added relevant code examples.
[x] This issue is about 1 bug and nothing more.
[x] The issue has a descriptive title. For example:  "JSON rendering failed on Windows for filenames with space".

This doesn't have to do with static::class, more that you are not importing ReflectionClass.
This passes with no error.
<?php

declare(strict_types=1);

namespace App\Traits;

use ReflectionClass;

trait EnumTrait
{
    public static function validate(string $value): bool
    {
        return \in_array($value, self::getArray(), true);
    }

    public static function getArray(): array
    {
        $reflectionClass = new ReflectionClass(static::class);

        return $reflectionClass->getConstants();
    }
}

Indeed it could be cool to have the name of the class in the message so we know which one is concerned if multiple class names in the same line (counting "column" position is not that easy).

@cacahouwete can you verify that the ReflectionClass is the problem?
Naming the class in the message is a good addition but a separated issue so I like to close this issue if the ReflectionClass is the problem.

As no feedback received here, I assume it was the missing ReflectionClass fault.


Makefile: Call contrib/python's clean regardless of HAS_PYTHON3

The only Python dependency in contrib/python's clean is:
$(PYTHON) setup.py clean --all

and our setup.py works on both major Python versions:
$ make -C contrib/python PYTHON=python2 clean
make: Entering directory '/.../src/github.com/projectatomic/libpod/contrib/python'
python2 setup.py clean --all
running clean
'build/lib' does not exist -- can't clean it
'build/bdist.linux-aarch64' does not exist -- can't clean it
'build/scripts-2.7' does not exist -- can't clean it
rm -rf podman.egg-info dist
find . -depth -name __pycache__ -exec rm -rf {} \;
make: Leaving directory '/.../src/github.com/projectatomic/libpod/contrib/python'
$ echo $?
0

Spun off from here, cc @baude.

I've pushed 28352a4 -> 32c037b to get better handling if the user forces PYTHON to an empty string or where Python is not installed at all.

The Travis errors look unrelated:
$ sudo apt-get -qq update
W: GPG error: http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.4 Release: The following signatures were invalid: KEYEXPIRED<PHONE_NUMBER>
W: The repository 'http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.4 Release' is not signed.
W: http://ppa.launchpad.net/couchdb/stable/ubuntu/dists/trusty/Release.gpg: Signature by key 15866BAFD9BCC4F3C1E0DFC7D69548E1C17EAB57 uses weak digest algorithm (SHA1)
E: Failed to fetch http://mirror.jmu.edu/pub/ubuntu/dists/trusty-updates/universe/i18n/Translation-en  Writing more data than expected (243993 > 243863)
E: Some index files failed to download. They have been ignored, or old ones used instead.

Needs rebase.

Rebased onto master with 32c037b -> 356765a.  New in this reroll is some shifting of the Python invocations during clean recipes, so that even if the Python invocations fail (e.g. the system has no Python installed), as much of the clean logic as possible still runs (although see a slight caveat for this in the da42c603 commit message).

LGTM
@baude @mheon @TomSweeneyRedHat @umohnani8 PTAL

LGTM, though I would like a nod from @jwhonce on the Python changes

LGTM

I think this is good to merge. Going to hit homu on this one to clear legacy PRs before the new CI landed.

@rh-atomic-bot r+

Alright, Homu appears to be hung

Alright, hell with this - going to merge this manually.


stats.ks_2samp: reference?

I noted that there is no reference for the KS 2-sample test. The p-value is computed as
d = np.max(np.absolute(cdf1 - cdf2))
en = np.sqrt(n1 * n2 / float(n1 + n2))
prob = distributions.kstwobign.sf((en + 0.12 + 0.11 / en) * d)

The term en is standard, but I wonder where 0.12 + 0.11 / en comes from.
https://en.wikipedia.org/wiki/Kolmogorov–Smirnov_test
Does anyone have a reference? (Maybe @pvanmulbregt who worked lot on that test)

see https://github.com/scipy/scipy/issues/8341#issuecomment-362315548

Thanks for the reference. I close this issue as it is a "sub-issue" of 8341.


Apps using X freezes and new ones does not start

I am testing an environment running on Docker, that is located within WSL2 and utilizing WSLG. I added Pulseaudio in the Docker container in order to get sound from the Docker environment into Windows. It did work but i also notice that all X apps froze, and starting up new ones causes the process starting them to hang. So I suspect a correlation ot PulseAudio here.
Environment
Windows build number: Microsoft Windows [Version 10.0.22000.184]
Your Distribution version: Ubuntu 20.04
Your WSLg version: 1.0.26

WSL logs:
stderr.log
pulseaudio.log
weston.log

too hard

@Ueland, thanks for reporting the issue. Just for clarification, you don't experience the hang if no pulseaudio is enabled from docker container? Does hang happen only after starting app which uses audio? or any kind of app? thanks!

Correct, it was fine until that. When it triggered, i could not start any new app that uses UI/X.

@Ueland, thanks. While I can't see any relationship with pulseaudio, but I see below error logged in your weston.log, this ends up no window visible on desktop, so it can be appeared as hang. This is reported at https://github.com/microsoft/wslg/issues/179. Would you please check whenever you encounter this issue, does below error get logged always? thanks!
[12:30:22.458] rdp_allocate_shared_memory: Failed to open "/mnt/shared_memory/{78873564-aa69-4224-b3a7-11619533f43c}" with error: Input/output error

I am having the same issue but then with a simple application as Dbeaver-CE (which as far as I know doesn't use audio) - after it freezes, I cannot start any new applications

@hideyukn88, yes, I will report back if I manage to trigger the issue again.


Add ktlint Kotlin linter via Spotless plugin

fixes #16
Spotless plugin (used in cloud tools for intellij also) has built in support for ktlint.
There are a few peculiarities that we can iron out as we go along:

the IJ formatter doesn't seem to enforce the line length rule (even though the linter will fail since 100 char limit is part of the Android Studio style guide)
The current settings can lead to some strange formatting (see the changes to SkaffoldUiResources in this PR). As far as I can tell this is correct Kotlin styling

see the discussion here: https://github.com/yole/kotlin-style-guide/issues/15#issuecomment-225418198 w/regards to the formatting changes applied to SkaffoldUiResources.  I agree with yole's comment, but looks like they went with it:
https://kotlinlang.org/docs/reference/coding-conventions.html#function-formatting

Here's the same rule in the Android style guide (which is the one we are following currently):
https://android.github.io/kotlin-guides/style.html#functions


feat(core/react/playground): add freelayout feature. enable resize SettingsPanel. add custom source icon feature

add FreeLayout feature.
Add hooks and handlers to achieve this function.
When the component has translatable properties in designerProps, it show a button with text 'Free' on the top left corner. Developer can press the button, drag and drop to place the component everywhere on the designer panel.

enable resize SettingsPanel
in some cases, the SettingsPanel is too small to show some complex setters. Some customized setters has long description or very complex value to show. Add resize feature to  improve the user experience, and show the demo for new hands

add custom source icon feature
support developer add custom source icon using a ReactElement, it's more friendly to custom development。

Before submitting a pull request, please make sure the following is done...

[x] Ensure the pull request title and commit message follow the Commit Specific in English.
[x] Fork the repo and create your branch from main.
[ ] If you've added code that should be tested, add tests!
[ ] If you've changed APIs, update the documentation.
[ ] Ensure the test suite passes (npm test).
[x] Make sure your code lints (npm run lint) - we've done our best to make sure these rules match our internal linting guidelines.

@janryWang 邮件手动 “PR run fail”。能指导一下在哪里看错误信息吗，没有pr经验。“1 in progress, 8 successful, and 6 neutral checks“ 这个问题吗

这个有点丑，建议用一个图标按钮，类似于
，放到同一个位置上去，具体图标我后面设计好了替换掉就行，你可以先临时用同一个Move图标

 这个有点丑，建议用一个图标按钮，类似于 ，放到同一个位置上去，具体图标我后面设计好了替换掉就行，你可以先临时用同一个Move图标

iconwidget 已新增了一种icon


"Cannot find calendar. Check instructions for set up."

I followed all these instructions and placed my calendar's ID in the string of code just as it was explained here. Whenever I select a cell and click either "Sync to Calendar" or "Update to Calendar" on the top ui bar of the spreadsheet. I still get this error pop-up "Cannot find calendar. Check instructions for set up." The script is running fine, too.
Also keep in mind that I am a newb and might not have common sense with appscript.

Did you double check that your have the calendar ID correct? It should end in<EMAIL_ADDRESS>

Yeah, it ends in that. I also get a typeError each time I select one of the macros as a result of this being imported. Maybe I missed a step?  I downloaded the sheet, copy/pasted script, replaced the calendarID with the calendarID that I have, and then imported the script under Tools>Macros>Import

That might be the issue. This is a script, not a macro. You should be doing Tools -> Script Editor and pasting the code there. I'm not exactly sure what the difference is, but that might be it.


how to trigger default marker popup

I am trying to trigger a marker popup by the markerId. I see the showCallout method available in the examples but, how do I pass the marker id of the marker i want to focus on?

Are you solved it?

i see the demo
this.refs.m1.showCallout();
i use this method in
componentDidMount(){
this.refs.m1.showCallout();
},
no result

This is a timing issue. You have to wait until the marker is fully rendered before showing the popup. I think you need at least a second delay.
  componentDidMount() {     setTimeout(function() {       this.refs.newMarkerInfo.showCallout();     }.bind(this), 2000);   }

@cmunson your solution works, but as you mentioned it's not the best way to solve the problem... Does anyone else have other ideas?

merging to #849

How to pass marker ID? because I'm rendering many markers and wanted to show callout on specific marker... :\


Fixed warnings

Added missing @Overrides
Removed unused fields and variables
Removed impossible null checks
Added missing null checks
Fixed a couple of tiny bugs that were pointed out by the null checks warnings
Added a whole bunch of @SuppressWarnings("unused") to parameters

On hold until after the EnderCore merge, currently it would affect too many things.


xds-k8s: Add code quality helpers

Add ./bin/yapf.sh and ./bin/isort.sh helpers to auto-format code.
Autoformat imports
Confirmed grpc import workaround caused by #24897 no longer needed (reproduced the error locally, then confirmed the upgrade solves it)
Added requirements-dev.txt

The job is still running, but I'm confident enough at that point, this works as expected: https://source.cloud.google.com/results/invocations/534f0f85-f005-4f00-a8df-3dedf40f638a/targets


Document Manager role & the gpg keys since they can tag and release

we have written down maintainers and owners.
but since then there where a new role added to move some load of of owners. they do have rights to:

ban users in gitea related chats
push tags (and so release versions) ...
Can merge PRs on github/gitea.com

Packagers did want something like https://github.com/nodejs/node/#release-keys to ensure only trusted people did do a release

We are di-/assigned by the owners rather than an election process. The only explicit criteria for assignment is, having to be a maintainer first.

" ... Can moderate various platforms, such as open/close/lock issues/PRs on github, moderation of Discord/Matrix (delete messages, kick/ban users)
Privy to security related issues (some maintainers are as well, so this may need other clarification) ..."

This should be resolved by #24492

Since #24492 merged, I think we can close this one and further information could be sent to another PR.


(PDB-3643) Fix fact dedupe migration with null values

In the flat fact storage code, null fact values were stored as sql null instead
of json null. Update the migration code to account for this.

Test PASSed

Gonna merge this even with the integration tests failing, as we need to get this fix promoted. a separate pr is up which will hopefully fix those tests.


posty talks to buff and removes hamburger fire

Posty talks to Buff.
Buff Loves history. Tells you all about history and the paintings and people in the room. Doesn't actually know anythving about history but Posty doesn't either so it's hard to call them out on it.
buff makes up some kind of fact about the painting.
posty thinks to use the heavier on the painting, removing the fire.
posty prods buff for another fact about the painting, that is now changed.
buff makes up a new fact that contradicts the previous fact.
posty calls them out on the contradiction, causing them to give posty an imaginary lighter.
posty is confused.
buff explains that imaginary things are a contradictory science, so they gave Posty a con-science lighter to make their conscience lighter after saying a contradiction outing themself as a liar. this all sounds very made-up, but, that's the nature of imaginary things.

p happy "Ooh you seem to know a lot about art!"
buff "Why thank you! I am a fanatic when it comes to these things!"
buff "The food exhibit in particular is one of the oldest collection of pre OSO artwork in the world, some of them dating back thousands of years!"
p astonished "Thousands of years?!"
buff "Indeed. Take this firey masterpiece here!"
"Abandoned In The Grill: the fire really wants to escape the canvas!"
buff "This painting shows the very last moments of the artist who had painted it."
buff "If you listen closely, you can hear faint crackling and screams..."
p concerned "..."
buff "As though he is still burning alive in that August evening..."
p suspicious "(I may not know what watercolor is, but they are bluffing!)"
p "(Maybe I should try out this heavier thing, just in case...)"
show burger out
$ item.heavier = False
$ burger_extinguish = True
p happy "Wow you have a lot of knowledge about this exhibit!"
p "Tell me more about this Abandoned in the Grill piece."
buff "Why.. er certainly"
buff "It is a misconception that this particular piece is called Abandoned in the Grill because the artist died in a fire..."
p suspicious "Oh?"
buff "Yeah yeah err it was because..."
p "Yes?"
buff "The artist was being torn from limb to limb by a... burger that became alive!"
buff "Yeahh yeah yea..."

buff "Ahhhuhuhuh... it was thematic!"
p angry "You are pulling my flap."
buff "You finally caught me..."
$ item.imaginary_lighter = True
"You got the {b}imaginary lighter{/b}!
p confused "Huh?"
buff "The imaginary and illusory don't follow our rules as much as they evade them."
buff "To make a lie requires the liar to know what looks true."

buff "Making your conscience lighter in the end of it..."
buff "Con-science lighter, contradictory science lighter..."
p angry "I see"


'Install Extension' searches by name, but only shows displayName, description, and version in the results

In https://github.com/Microsoft/vscode/issues/140#issuecomment-165473225 @egamma recommends installing @dbaeumer's vscode-eslint extension.
While doing this, I notice that I can search for vscode-eslint in the Install Extensions dialog. I find the correct extension, but the results pane does not show me the vscode-eslint that I searched for (name in package.json). It shows displayName, description, version, and publisher.
I was left wondering if that was the right package, because it said ESLint, and I couldn't see vscode-eslint anywhere.
In the case where a user searches on name, and VS Code finds a match, if the results pane contained feedback that the package listed is the right package, it would be good.
An idea: Maybe show name in the results if the match was on name?
I've attached a screen shot - hope that clarifies what I'm talking about.
Thanks!

@jwulf - convinced after watching your video :smile:

Showing all attributes in the UI will simply make it cluttered. We still let you filter on the underlying ID since that is a nice thing to do.
@egamma, why important?

@joaomoreno this video illustrates that this results in confusion.

Ok, what's your pick?

Do not show readable extension name, but extension ids in the UI
Show both readable name and id, for every extension in the UI
Stop filtering on the extension id

What about option 4: "show the extension id when that is what was searched and matched"
If they didn't search on extension id, no need to show it.
If they searched on extension id and we found matches, then show it.
In other words: have the behaviour match the user's intent and expected context.
Or more simply: show them what they are looking for.
—
Sent from Mailbox
On Tue, Jan 5, 2016 at 12:58 AM, João Moreno<EMAIL_ADDRESS>wrote:

Ok, what's your pick?

Do not show readable extension name, but extension ids in the UI
Show both readable name and id, for every extension in the UI
Stop filtering on the extension id

Reply to this email directly or view it on GitHub:
https://github.com/Microsoft/vscode/issues/1441#issuecomment-168699087

I don't really like that solution since it would make labels come in and out of the view as you type and poses the following questions: Where to show it? Do we replace the readable name with it? Do we append to it?

Great questions.
One possibility:
Show only the names while the user is typing, then when the user stops typing for a (specified delay period), make a decision about what to show.
That addresses the labels coming in and out of view.
What about having the Name as a tooltip, and it could only be a tooltip for items where the match was made on name.
That would be kind of like Google's "Why am I seeing this ad?" pattern.
—
Sent from Mailbox
On Tue, Jan 5, 2016 at 1:59 AM, João Moreno<EMAIL_ADDRESS>wrote:

I don't really like that solution since it would make labels come in and out of the view as you type and poses the following questions: Where to show it? Do we replace the readable name with it? Do we append to it?
Reply to this email directly or view it on GitHub:
https://github.com/Microsoft/vscode/issues/1441#issuecomment-168715340

How about a tooltip over every extension's readable name that would display its id? Would that help?

I think so.

+1


Preparation for MultiAccount support

This PR is an first step towards support for multi-accounts, by changing the underlying data structure to enable this feature.
Current implementation:
Most services use an instance of the BackendDict-class to persist the state.
The BackendDict overrides a dictionary, and stores data in the following format:
{
  "us-east-1": ServiceBackend("us-east-1"),
  "us-east-2": ServiceBackend(..),
  ..
}

Because global services such as S3 do not have any regions, those backends were persisted as straightforward dictionaries:
{"global": S3Backend()}

Proposed implementation:
All services now use the BackendDict, with an option to specify whether this is a global service.
The underlying data structure of the BackendDict now looks like this:
{
  "account_id": {
    "us-east-1": ServiceBackend(region_name="..", account_id=".."),
    ..,
  },
  ..
}

Benefits of this approach:

There is a logical separation between accounts
The BaseBackend becomes responsible for setting/resetting the region_name and account_id, reducing code duplication
Because of that, each ServiceBackend has direct access to it's account id, and a user longer has to worry about overriding it on a case-by-case basis

Noticeable aspects of this PR:
There is no change in functionality.

The BackendDict will always return the same account_id for now, regardless of what the user specifies.
No ServiceBackend uses self.account_id, but continues to import get_account_id

A lot of users access the internal API using backend_dict["us-east-1"].model.attribute = "..".
The __getitem__-method of BackendDict has been overridden to still support this, enabling backwards compatibility
The meat of this PR lies in moto/core/utils/BackendDict - all other changes are a logical consequence of the changes to that class.
Future PR's:
Because of the massive scope of this change, the current PR only prepares multi-account support, but without any functional changes.
A future PR is necessary to then unlock this functionality. This PR would consist of the following changes:

Ensure that each ServiceResponse has access to the AccountID for that specific request, using either get_account_id or IAM
Ensure that each ServiceResponse retrieves the correct ServiceBackend, using backend_dict[account_id][region_name]
Change all services to use self.account_id, instead of get_account_id()
Remove the option to access backend_dict[region_name] directly, as we would  have no context about which account we want to use

Because this PR would be a breaking change, it would have to be released as part of the next major release.
Related PR's:
#4699 introduced the BackendDict in the first place
#5098 added another way to override AccountID
TODO:
Need to verify that the scaffold-script still creates the expected templates.

@whummer @thrau FYI. As far as I can tell, this should not have an impact on on LocalStack. Let me know if you need some time to review/test this though.

Codecov Report

Merging #5157 (d6c1ac0) into master (5d84eec) will decrease coverage by 0.02%.
The diff coverage is 99.00%.

@@            Coverage Diff             @@
##           master    #5157      +/-   ##
==========================================
- Coverage   95.89%   95.86%   -0.03%
==========================================
  Files         680      680
  Lines       67425    67092     -333
==========================================
- Hits        64655    64317     -338
- Misses       2770     2775       +5

Flag
Coverage Δ

servertests
36.51% <89.10%> (-0.35%)
:arrow_down:

unittests
95.80% <99.00%> (-0.03%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

moto/batch_simple/models.py
93.33% <ø> (-0.42%)
:arrow_down:

moto/ec2/models/route_tables.py
95.41% <ø> (-0.02%)
:arrow_down:

moto/ec2instanceconnect/models.py
100.00% <ø> (ø)

moto/kinesisvideoarchivedmedia/models.py
100.00% <ø> (ø)

moto/rekognition/models.py
100.00% <ø> (ø)

moto/applicationautoscaling/models.py
94.26% <75.00%> (-0.12%)
:arrow_down:

moto/config/models.py
99.22% <87.50%> (-0.13%)
:arrow_down:

moto/rds/models.py
93.96% <90.00%> (-0.03%)
:arrow_down:

moto/cognitoidp/models.py
95.35% <92.30%> (-0.24%)
:arrow_down:

moto/acm/models.py
90.68% <100.00%> (-0.19%)
:arrow_down:

... and 144 more

Continue to review full report at Codecov.

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

this looks great @bblommers! excited to see that multi-account is coming to moto :-) i'm sure this will simplify things also on our end for multi-account. i haven't fully understood the ramifications of the change yet, but as you said it looks like this won't have much impact since it's backwards compatible. it may affect some monkeypatches to backends but we can iron those out.
we can try to run a localstack ci build with the changes and see what happens.


Cannot read properties of undefined (reading 'lastPage')

Getting the following error when using the default options of the component:
Cannot read properties of undefined (reading 'lastPage')

My code (unformatted):
---
import { getCollection, CollectionEntry } from "astro:content"
import Pagination from "@philnash/astro-pagination"
type Props = { page: Page<CollectionEntry<"recipes">> }
const { page } = Astro.props
---

<Pagination
  page={page}
  urlPattern={"/recipes/page/{}"}
  firstPageUrl="/recipes"
  windowSize={3}
  showPrevNext={true}
/>

Any help would be greatly appreciated.

It looks to me like you aren't passing a page object to the component with the code you're showing. You're using a custom firstPageUrl. Is that first page served by the same Astro page? In my own blog, the first page and the remaining pages are served by different Astro pages in order to get the URLs to work. So on my first page I have to construct a page object and then pass it to the component that renders the list.
Check out the implementation of the first page and the remaining pages.

It looks to me like you aren't passing a page object to the component with the code you're showing. You're using a custom firstPageUrl. Is that first page served by the same Astro page? In my own blog, the first page and the remaining pages are served by different Astro pages in order to get the URLs to work. So on my first page I have to construct a page object and then pass it to the component that renders the list.
Check out the implementation of the first page and the remaining pages.

I figured it out. Thanks for the reply!

Glad to hear it! Let me know if there's any other feedback! (I... err... have my email notifications on now after realising I'd turned them off before)


ability to fetch column descriptors

There are cases where it makes sense to know the column descriptors (column name and datatype pairs). Includes mixed type handlers.

Pull revoked as per discussion.


Migration guide from X to Y and how to update your code

What problem does this solve or what need does it fill?
Avoiding getting a lot of issues on GH where API have changed and give you a panic! no pun intended
Describe the solution would you like?
Migration guide explaining what has been modified, removed or added between version x to y and how to update your code
Additional context
I know that Bevy news gave us a blogpost of changes. But it feels like not everyone is going through all the PR to find exactly how the API have been changed, i.e #810  (I had the same thing happening to me just now and went to the issues by chance and found it)
This might just be a nice to have and is not suitable this early in the development. Just by looking at the changes between 0.2.1 and 0.3.0 it has been quite a few 😅 I guess this would be something to think about when we reach a more stable version like 1.0.0 and above :)

It's a coincidence that I came across this. I know this issue is basically asking a documented version of CHANGELOG, but let me say a few words on how I am planning to do the migration guide on clap in the coming future. (I am a  maintainer on it).
Using rust-analyzer, I have built a tool called cargo-up that can automatically upgrade your code if the dependency describes their changes.
I am planning to finish it off, polish it and then release it when clap v3 releases (currently v2). The main motivation behind the tool is to decrease the churn for users of the library. Once clap v3 is released, users can go to their codebase that uses clap v2 and run cargo up dep clap and voila, all the codebase is updated to use clap v3.
It's not documented yet, but if anyone is interested, they can check the current shortcuts for breaking change description here and the actual breaking change description code here.

Closing this due to this addition: https://github.com/bevyengine/awesome-bevy/pull/38


Added ruby 2.6 and updated newrelic gem version

Added ruby 2.6 to tests
Updated new relic dependency to v6

@splittingred PR is green on CI. I have removed ruby 2.2 since it will be EOL in couple days. If you want I can add it back since CI still passes the tests on 2.2. I would recommend bumping version of the gem to 2.0 to signal backwards incompatibility with ruby 2.2 support. Please advise if you want me to put ruby 2.2 back.

Hi @ocha wanted to let you know I've release v1.1.0 with this fix: https://github.com/bigcommerce/gruf-newrelic/releases/tag/v1.1.0


Utilization metrics

are we running out of cpu/ram/disk in the vm?
put in a system of notifications that tells us if we are. Avoid oom kills.
How do we do this through standard AWS infra? alerts and metrics that trigger on system resources

Monitor CPU, RAM, and Disk Usage:

We can use Amazon CloudWatch to monitor the CPUUtilization metric by default. This gives us insight into CPU performance on our EC2 instances.
To extend monitoring to RAM and disk space, we can install the CloudWatch Agent on our EC2 instances. This allows us to capture metrics like memory usage (mem_used_percent) and disk usage (disk_used_percent), providing a comprehensive view of resource consumption.
Set Thresholds and Alerts:

We can create CloudWatch Alarms for key metrics:

CPUUtilization to monitor CPU performance.
mem_used_percent to keep track of memory usage.
disk_used_percent to alert us when disk space is running low.
Setting thresholds (e.g., 80% utilization) ensures we are notified well before resource limits are reached.
We can configure Amazon SNS to send real-time notifications (via email or SMS) whenever these thresholds are crossed, allowing us to take action proactively before the system runs out of resources.

Auto-Scaling:

To prevent resource shortages during high traffic, we can implement Auto-Scaling. This allows our infrastructure to automatically scale up (add instances) when CPU or RAM usage increases, and scale down when demand decreases.
With Elastic Load Balancer (ELB), we can balance incoming traffic across multiple EC2 instances, ensuring that the load is distributed evenly and preventing overloading of any single instance.

DNS Failover with Route 53:

We can set up Route 53 with health checks to ensure that our DNS can automatically failover if one of our EC2 instances becomes unhealthy or unavailable.
By doing this, Route 53 will reroute traffic to healthy instances, ensuring minimal downtime and maintaining service availability even in the event of failure.

1. CloudWatch Metrics
Free Tier:

10 custom metrics per month, with 1-minute granularity (standard resolution).

Additional Costs:

Custom Metrics: $0.30 per metric per month.
Detailed Monitoring for EC2: $0.015 per instance per hour (for 1-minute metrics instead of default 5-minute metrics).

2. CloudWatch Logs
Free Tier:

5GB of logs ingested and 5GB of logs archived per month.

Additional Costs:

Ingested Log Data: $0.50 per GB ingested.
Archived Log Data: $0.03 per GB stored per month.

3. CloudWatch Alarms
Free Tier:

10 alarms per month.

Additional Costs:

Standard Resolution Alarms: $0.10 per alarm per month.
High-Resolution Alarms (1-second granularity): $0.30 per alarm per month.

4. CloudWatch Dashboards
Free Tier:

3 dashboards with up to 50 metrics per month.

Additional Costs:

Custom Dashboards: $3.00 per dashboard per month (after the free tier limit).

5. CloudWatch Events
Free Tier:

1 million events delivered per month.

Additional Costs:

$1.00 per million events after the free tier.

Example Cost Calculation:
Assume the following usage scenario:

5 custom metrics (e.g., CPU, memory, disk).
10 alarms (e.g., high CPU or memory).
1 dashboard to visualize these metrics.
5GB of logs ingested per month.

Cost Breakdown:

Metrics: $0.30 per metric per month after the free tier (10 custom metrics).
Alarms: 10 alarms are free, additional alarms cost $0.10 each per month.
Logs: Ingesting over 5GB of logs costs $0.50 per GB.
Dashboard: 1 dashboard with fewer than 50 metrics is free.

Monthly Costs Estimate:
Based on the free tier usage:

5 custom metrics: Free.
10 alarms: Free.
5GB logs ingested: Free.
1 dashboard: Free.

From on call discussions

Resource/utilization metrics:

implement metrics/alerts for disk and ram
look up best practices for cpu metrics/alerting: we don't want very frequent cpu alerts, we want to know if cpu starvation is happening on a regular basis so we can bump up the cpu

Custom metrics:

check if we can record these via aws free tier
if yes, what client libs can we use in our python code to send the timer stats to aws

@anmolsingh0219 @bprashanth To research about setting up custom metric on AWS for RAM and Disk

We want to same metrics we have for cpu (an alert if it crosses the 80% threshold) for ram and disk.
There should be a pre canned way to achieve this. If not we'll just have to do a custom metrics.
We also want a read latency RDS metric. We're assuming if the read latency spikes we can increase the RDS instance size to bring it back down. We don't think write latency matters much since our users will not be writing to RDS (most writes are when we ingest data).


Add two-way binding support.

Weird v-model inspired two-way binding for inputs and checkboxes
Syntax:

const state = useSenko();

// state has a name property
// use state.model.name

The name is: {state.name}

<input {...state.model.name} />

Looking epic! merging lmaooo


Improve error message for empty "zed lake log"

Repro is with Zed commit 8824189.
$ zed -version
Version: v0.29.0-503-g88241892

$ zed lake init
using environment variable ZED_LAKE_ROOT
lake created: /Users/phil/logs

$ zed lake create -orderby ts:desc logs
pool created: logs 1xoqIDTLBuvs5gHbhRrvWPIBj2X

$ zed lake checkout -p logs
Switched to branch "main" on pool "logs"

$ zed lake log
unknown pool metadata type: "log"

As of 12/25/2021, this is still a problem...

As of 3/24/2022, this is still a problem. 😉
Joking aside, the fact I seem to bump into this one each time I come back to the project makes me hope it will be addressed before the v1.0 release. There's too many times when I'm following the Zed READMEs and execute commands on an empty pool (e.g., the meta-data queries) and see these confusing error messages rather than some simpler hint that the pool is empty. I'm nervous of the impression it would give to a user coming to the project for the first time.

Embarrassing.  This is surely easy to fix... maybe a palette cleanser for @mattnibs ?

I think we should just change the compiler to not create a pool meta query when the commitID comes back null with no error from the ds.CommitObject() lookup in semPoolWithName.  Then make sure the backend returns "empty branch" when running a log metaquery on a null  commitID.

Verified in Zed commit eacf7f4.
Now when I query the log on the empty pool, we no longer see an error, which seems reasonable considering there's nothing in the pool to show in the log.
$ zed -version
Version: v1.2.0-127-geacf7f44

$ zed -lake lake init
lake created: lake

$ zed -lake lake create -orderby ts:desc logs
pool created: logs 2HZ0kxHhoEafOahQxQ26hW2kkWr

$ zed -lake lake use logs
Switched to branch "main" on pool "logs"

$ zed -lake lake log
[no output]

$ echo $?
0

Thanks @mattnibs!


SCM: Bring back SCM Providers view

From #102118
Let's bring back the SCM Providers view:

It should look and feel the same as before
Its selection should reflect the visibility of the repositories in the SCM View, instead of messing around with view panes

This will make it easier to manage many repositories.

Good news

The Source Control Repositories view is now back (it used to be called Source Control Providers. It lets you control visibility of multiple repos in the Source Control view.
The setting scm.repositories.visible is now back (it used to be called scm.providers.visible).
I've sprinkled visibility actions both in the context menu of the Source Control view as well as the ... menu, to make it easier to control the visibility without using the Source Control Repositories view.
This will all be available in the next Insiders, hopefully this week.

Bad news
I'm out on vacation until the end of the month so no more work will happen this month here apart from critical bugfixing. Here's the state for now:

The workbench opens the exact same way as today. On any given workspace, one must make the Source Control Repositories view visible manually. Once visible in a workspace, it will remain visible. I expect this to change and make the view visible depending on (1) the stored visibility state or (2) the number of repositories.
No repository visibility state is stored yet. On reload, they will all be loaded once again. I expect this to change to simply remember which repositories were visible since the last session, per workspace.

Very cool, I think this solution is elegant, will selfhost on it and report back if I find issues.

Thank you for this!
There were a lot of (justifiably) critical comments on #102118, so I just wanted to reiterate our appreciation for listening and bringing this functionality back.

@michaelhays Thanks for the kind words 🙏

Thank you, for bringing back the old View of the SCM panel, I really appreciate it 🙏
I still have one detail, that is bothering me a lot: in the old view, all the options and extensions were only visible on the "Changes" pane, leaving the different repos looking clean. My major problem with new look was this clean space got cluttered, and sadly this change doesn't really solve that.
I'm not sure if it is doable, but if it is, could we please have it back that all the various options are:
a) selectable (so I can turn it off, if I don't need it)
b) only appear on the selected Source Controls and not in the Source Control Repositories section.
for reference, this is how it looks like for me:

Until this can happen (or confirmed that it is impossible), I'm gonna go back to 1.46, hopefully temporary.

My thanks to you too for allowing us to choose which view we use. I much prefer the old UI.
However, I agree with everything @raschan said. The Source Control Provider list is way too cluttered with all those icons. Combined with a long branch name this results in it hiding the name of repo which makes it even more confusing. It also stops me from being able to easily select the repos I want to see. I just end up clicking the branch name by accident every time which brings up the branch selection drop-down.

My thanks to you too for allowing us to choose which view we use. I much prefer the old UI.
However, I agree with everything @raschan said. The Source Control Provider list is way too cluttered with all those icons. Combined with a long branch name this results in it hiding the name of repo which makes it even more confusing. It also stops me from being able to easily select the repos I want to see. I just end up clicking the branch name by accident every time which brings up the branch selection drop-down.

I also agree but this probably would be better to open as its own issue, @raschan, than to post here in this closed one.


ChildWorkflowFuture.Get hangs forever (and leaks a goroutine) if parent workflow times out

Describe the bug
If a workflow times out while calling Get on a child workflow future (as illustrated below), the Get call never returns and a goroutine is leaked.
func MyWorkflow(ctx workflow.Context) error {
    // .. snip
    future := workflow.ExecuteChildWorkflow(childCtx, childWorkflow)
    future.Get(childCtx, nil) // <- hangs forever if MyWorkflow exceeds START_TO_CLOSE timeout.
    // .. snip
}

Notably, all other involved "entities" behave the way (I think) they shuld:

The caller of the parent workflow (MyWorkflow above) correctly sees a TimeoutType: START_TO_CLOSE.
The child workflow (childWorkflow above) correctly sees a CanceledError.
Any activities started by the child workflow correctly see a context canceled.

Steps to reproduce the behavior:
Find a sample application attached (sample.tar.gz) that can be used to reproduce and illustrate the issue. Assuming that a Cadence cluster is serving a cadence-frontend on localhost:7833 the following steps can be used to reproduce the issue:

Start a workflow worker:go run ./worker/

Execute the parent workflow with a 60s start-to-close timeout:go run ./client/

After one minute the client will fail (as expected):
{"level":"info","time":"2024-12-03T09:26:42+01:00","message":"starting workflow ..."}
{"level":"info","time":"2024-12-03T09:26:42+01:00","message":"awaiting workflow<PHONE_NUMBER> ..."}
{"level":"error","error":"TimeoutType: START_TO_CLOSE","time":"2024-12-03T09:27:42+01:00","message":"parent workflow execution failed: TimeoutType: START_TO_CLOSE (*internal.TimeoutError)\n&internal.TimeoutError{timeoutType:0, details:internal.ErrorDetailsValues(nil)}"}

Looking at the worker output, we will see that the child workflow failed (as expected):
{"level":"error","error":"CanceledError","time":"2024-12-03T09:27:42+01:00","message":"ChildWorkflow.Run: doActivity failed: CanceledError (*internal.CanceledError)\n&internal.CanceledError{details:internal.ErrorDetailsValues(nil)}"}

Similarly, we will see that the activity timed out (as expected):
{"level":"error","error":"context canceled","time":"2024-12-03T09:27:56+01:00","message":"ChildWorkflow.doActivity: context done: context canceled (*errors.errorString)"}

But, and here is the big BUT, looking at the debug output from pprof on http://localhost:6060/debug/pprof/goroutine?debug=1 we will see that the parent workflow still hangs on the Get call. Something like:

1 @ 0x47672e 0x40b8dc 0x40b492 0xbf87df 0xbf780f 0xbf7787 0xbfc3f5 0xedae65 0x4d26c6 0x4d17d9 0xc03cb9 0xbeea52 0xbf6ecc 0xbf9119 0x47e781
# 0xbf87de  go.uber.org/cadence/internal.(*coroutineState).initialYield+0x5e      /home/peterg/go/pkg/mod/go.uber.org/cadence@v1.2.9/internal/internal_workflow.go:798
# 0xbf780e  go.uber.org/cadence/internal.(*coroutineState).yield+0x22e        /home/peterg/go/pkg/mod/go.uber.org/cadence@v1.2.9/internal/internal_workflow.go:808
# 0xbf7786  go.uber.org/cadence/internal.(*channelImpl).Receive+0x1a6       /home/peterg/go/pkg/mod/go.uber.org/cadence@v1.2.9/internal/internal_workflow.go:623
# 0xbfc3f4  go.uber.org/cadence/internal.(*decodeFutureImpl).Get+0x54       /home/peterg/go/pkg/mod/go.uber.org/cadence@v1.2.9/internal/internal_workflow.go:1301
# 0xedae64  main.(*ParentWorkflow).Run+0x144              /home/peterg/dev/cadence-bug/worker/parent_workflow.go:51

That call never returns, which I think violates the intended semantics (in the documentation) and results in a resource leak.
Expected behavior
I would expect the Get call made by the (timed out) parent workflow to eventually return with TimeoutError.

Excellent find, thank you!  We've been attempting to figure out a(?) leak for a while, but all the code it has been hitting internally have been incredibly complicated and nearly impossible to reproduce.
I'll see what I can find here ASAP.  Child workflow state handling is one of the more complicated and buggier sections of the core logic, so it seems plausible and this is by far the best lead I've seen.  Hopefully not too many distractions before I get to it :)

Ah.  This one is basically known, and kinda sorta "intended".  What's happening is:

0s: parent has an execution timeout of 1m
0s: child has an execution timeout of 5m
0s: child starts activity for ~1m30s
1m: parent times out, which tells the child to cancel

this is a server-side only event, because it doesn't trigger any "work".  it's a hard terminate.

1m: child told to cancel:

child tells activity to cancel
child's activity's future.Get returns immediately, because it isn't waiting for the activity's cancellation
child's workflow function returns

1m: child workflow ends ^ because the function returned
~1m30s: child's activity's context is canceled due to the deadline:

the select{...} unblocks
the activity's function returns
this fails to record because the workflow that started it is already completed and won't be modified any more, which is why you see errors like "WorkerType":"LocallyDispatchedActivityWorker","error":"EntityNotExistsError{Message: Workflow execution already completed., CurrentCluster: , ActiveCluster: }"} at this poin

The activity and child workflow are ending "normally", i.e. their functions are returning and they are returning values, so their call stack / program counter / etc have gone away naturally.
The parent workflow however is timing out and ending server-side, which stops everything...
... including new decision tasks.  Because all history changes end immediately.
So nothing ever actually communicates back to the worker that it's "done".  So it never finishes.
This workflow is still cached "normally" though, and when the "sticky workflow cache" runs out of space it'll evict in LRU order.
When this workflow is evicted, that internal.(*coroutineState).initialYield call will unblock, because it'll push this func into that channel: https://github.com/cadence-workflow/cadence-go-client/blob/9ffbb1f468c80fcb15bbcdd5ac3cf9dfe5d7e805/internal/internal_workflow.go#L851-L858
which executes it here: https://github.com/cadence-workflow/cadence-go-client/blob/9ffbb1f468c80fcb15bbcdd5ac3cf9dfe5d7e805/internal/internal_workflow.go#L800-L801
and that'll tear down all of the workflow's goroutines (in this case only one) due to calling runtime.Goexit().
You can simulate all this much more easily by setting a sticky cache size of like 1 or 2, and using a single workflow like this:
func work(ctx workflow.Context) error {
  workflow.GetSignalChannel(ctx, "ignored").Receive(ctx, nil) // and never send a signal
  return nil
}

and letting it time out.  It only needs to be a couple seconds.  Regardless of how many you start and with what timing, you shouldn't see the stuck-goroutines exceed the cache size.

So both good and bad news, and both unavoidable details and things we can / should obviously improve:
Good news: this doesn't actually block forever.  Just until your worker has handled tasks from (by default) 10,000 newer workflows.
Bad news: yes that's often quite a while later.
Unavoidable: even if we did schedule a decision task to "clean up", it wouldn't be guaranteed to clean up, because the worker may have lost the server-side cache.  This can happen if the worker is too slow to pick up the "next" task -> the server gives up on the sticky cache and sends to any random worker -> now there's an "old" goroutine on the old worker that nothing remembers, and a "new" one somewhere else.  We can't really hold "try to send cleanup tasks to every worker ever, forever" so at some point it has to give up and stuff can be left dangling.
Could improve:

We could obviously try to dispatch a cleanup-task, and that'd work great for most short-lived things like this, and maybe like 99% of all workflows in aggregate (widely varying by user patterns tho).  I'm not sure if we have any way to actually distribute this task though, since the workflow has ended, and that basically always means "stop everything"... so this might not be as easy as it sounds.
We've talked internally about building some kind of periodic "is this workflow still alive / am I an old worker?" check, and it'd be able to take care of this dangling cache eventually.  This would probably have to be on the order of minutes, but that's much better than hours/days/etc later.
We could have a client-side timeout that matches the server-side timeout, plus/minus some fuzz-factor to avoid clock skew.  I suspect we'll do this at some point, but for safety it'll probably ignore like an hour of skew (likely configurable), so small samples like this will still show it.

Sad news: unfortunately this wasn't the leak I was hoping for.  We appear to have a leak somewhere else that is truly leaking, e.g. can lead to > sticky cache size top-level goroutines hanging around.  AFAICT this isn't related tho.

Thanks for the thorough explanation!
The conclusion is a bit of a letdown though I must say.
I somehow feel like there is a lack of symmetry in the API semantics. "Everything" (caller, child workflow, activity) behaves as one would intuitively expect, except for the parent workflow which just hangs ...
Or, as you point out, technically it blocks (for a very long time, for some 10000 workflows to pass through the worker which would take a couple of months probably in our use case).
In practice that's a hang for our use-case at least, and generally speaking waiting for 10000 goroutines to build up before cleanup can take place sounds like a good way of ensuring that cleanup will never take place (the likelihood of the worker being restarted, for example following a rolling update, is signoficant, and I suppose then all hope is lost of a cleanup action?).
So I'm wondering what we can do to work around this issue.
We have some quite long-running parent workflows (they are normally limited to around a week) that we would like to guarantee cleanup after. It would be ideal if that could happen in the workflow code itself. I was hoping to catch a TimedoutError and then perform the cleanup in a detached workflow context.
From your reasoning it appears that the problem is that the parent workflow times out only on the cadence server, and the worker never hears again from the server. So can we somehow force server communication to wake up the timed out workflow? What about a workflow.Timer and a Select?
  future := workflow.ExecuteChildWorkflow(childCtx, wf.childWorkflow.Run)

  var wfErr error
  sel := workflow.NewSelector(wfCtx)
  sel.AddFuture(future, func(future workflow.Future) {
    // Workflow ended normally ...
  })

  timeout := time.Duration(workflow.GetInfo(wfCtx).ExecutionStartToCloseTimeoutSeconds)*time.Second - 1*time.Second
  sel.AddFuture(workflow.NewTimer(wfCtx, timeout), func(f workflow.Future) {
    // Workflow timed out
    // ... handle cleanup with a detached context ...
  })
  sel.Select(wfCtx)

Or is that still not guarenteed to work? Could Cadence being under pressure or the worker being late to pick up the timer result still lead to everything timing out only at the server?
Is there some prior art in this area? Perhaps even an idiomatic way of handling cleanup for a timed out long-running workflow? (ideally without resorting to some janitor goroutine that needs to query cadence for workflows)

Will attempt to add my 2 cents after reading this (quite fascinating) issue.
Would it make sense to borrow the "Heartbeat" semantics to child-Workflows as well, in the context of the worker cache?
I haven't looked in the code, but... can the worker associate a cache entry with a heartbeat for child workflows?
The only difference would be that the heartbeat check is done against the Cadence server?
If there's no workflow that's deemed "running" on the server (for example, it timed out), evict a cache entry?
Sorry in advance if this was a brain fart.

I was hoping to catch a TimedoutError and then perform the cleanup in a detached workflow context.

You can, you just can't do anything after your execution timeout - it's your hard cutoff, not a cooperative cancel / canceled context.  Otherwise we wouldn't have a hard cutoff and everything could run for infinite time.
The easy option is to take your execution timeout and subtract [some time] and cancel your own context at that time.  Then either use your original not-canceled context or create a NewDisconnectedContext if you're stuck deep in some call stack.
I think we might be missing a func workflow.With{Deadline,Timeout}(workflow.Context, ...) workflow.Context (that seems like an obvious API worth adding), but it's not hard to build:
ctx, cancel := workflow.WithCancel(ctx)
workflow.Go(func(ctx) {
  workflow.Sleep(ctx, timeout)
  cancel()
})

Basically just get your workflowCtx.Deadline() (every top-level workflow context will have a deadline... and hopefully disconnected too since it's a hard deadline, but I'm not sure OTOH) and sleep for deadline.Sub(workflow.Now()).Sub(time.Hour) to ensure you have an hour to do cleanup.  Or a few days if you want to be resistant to short outages.  You'll still be able to find ones that actually timed out, because they'll be "real" timeouts (Timed Out state) instead of normal success/fail exits.
When doing this though, I will broadly caution/remind that cancellation is cooperative.  Missing a ctx.Done() channel read in selectors is kinda common:
// normal go
func thing(ctx) {
  select {
  case <-doSomething:
  case <-etc:
  }
  // no `case <-ctx.Done()` so this does not unblock when canceled,
  // and might never unblock if other channels don't receive anything
}

// cadence
func thing(ctx) {
  // cancel ctx after 3h
  workflow.NewSelector(ctx).
    AddReceive(workflow.GetSignalChannel("something"), ...).
    AddReceive(workflow.GetSignalChannel("etc"), ...).
    Select(ctx)
  // same thing, nothing about ^ that says to unblock when canceled,
  // so it does not unblock, and probably locks up until ExecutionTimeout
}

This a bit of an awkward corner with Go because we need ctx to be able to unblock Select (and similar things) when appropriate, but we do not implicitly respect cancellation here to be more like plain select statements.  So it might be tickling those "ctx arg means cancelable" feelings and be easy to miss even though it isn't true.  More details: https://pkg.go.dev/go.uber.org/cadence/workflow#hdr-Canceled_workflow_Context_behavior

(the likelihood of the worker being restarted, for example following a rolling update, is significant, and I suppose then all hope is lost of a cleanup action?)

As long as it's in the workflow, no, it'll resume just like any other workflow code :)  Hence why you can't use the hard cutoff / ExecutionTimeout for it.  It'd be unreliable.

So can we somehow force server communication to wake up the timed out workflow?

Not with ExecutionTimeout, but internally yes.  Like that timer + select.

Or is that still not guarenteed to work? Could Cadence being under pressure or the worker being late to pick up the timer result still lead to everything timing out only at the server?

We can't guarantee there isn't some many-hours backlog or multi-day service outage (yours or Cadence), or some kind of deadlock in your code, so in that sense no.  It's why ExecutionTimeout exists: it stops work no matter what.  If you need time for cleanup, you need to do it within that time / expand the ExecutionTimeout long enough to ensure you have the time you need to make that stuff happen.

As far as the implied "this is confusing, can it be improved" question... yes probably :)
Both "soft timeout" and a "hard timeout" are useful and fairly common across languages (Go context deadlines and Java thread interrupts, vs a timer for total process death) and it makes sense to streamline it.  In Go that would probably just cancel your context at [a time], because that's the normal "stop work" signal for Go.
And yea, in retrospect it is a bit of a surprise that we don't have that already.
Client-side-only that's not too hard to build, e.g. a workflow interceptor could ensure you have an hour to clean up on everything with the ^ sample above, and that'll work today (with versioning).  I think it might make more sense to coordinate for a server-side CancelWorkflow timer though, and it can just have a custom cause/reason/details 🤔  I'm not sure how much work that'd take though.


Fix warning on failed dir deletion after running a Spark job

What changes are proposed in this pull request?
Fix #10365
Before:

After:

And I find that staging path also didn't exist with writing directly to hdfs.
Why are the changes needed?
See #10365
Does this PR introduce any user facing changes?
No

thanks for fixing this bug and completing a medium level task!
congratulations @ljl1988com !

alluxio-bot, merge this please

@ljl1988com @apc999 please comment on the unit test failure so we can confirm there are no new failures introduced by the PR.
FileOutStreamIntegrationTest.cancelWrite:248 expected:<0> but was:<4000>

@Xenorith Thanks for your advice. The unit test failure is not introduced by the PR.


Is there a way we can update existing webpart

Is there a way we can update existing web part? or do we have a PowerShell command which updates existing web part?

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

ID: bffb6769-cd46-08c6-2685-bf81ae5023ef
Version Independent ID: a58bc279-47f9-86b7-9709-19a8c210dcfb
Content: Add-PnPWebPartToWebPartPage (sharepoint-pnp)
Content Source: sharepoint/sharepoint-ps/sharepoint-pnp/Add-PnPWebPartToWebPartPage.md
GitHub Login: @techwriter40
Microsoft Alias: kirks

@officedocsbot assign @yogkumgit

Hello @ravick4u how are you?
Thanks for your feedback.
Currently, there is no cmdlet available to update an existing one, you can take a look at Set-PnpWebPartProperty though.
Hope this information helps you.

@get-itips  Thank you very much for the contribution and sharing this explanation. @ravick4u
Hope this comment is helpful for you. Thanks for taking out some time to open the issue. Appreciate and encourage you to do the same in future also.

@officedocsbot close


Mask attach commands force $tags to "mask"

With the new diff() defaults they should set $tags to "remove" instead.  But it also seems like they should add "remove" to the tags instead of obliterating any tags set by the user.

This is corrected now, where the mask attach commands set "remove" only if $tag is not already set.


Results sorted for invalid data under License order history.(Agent Panel)

Description of  the bug
When we entered the Invalid data and clicked on search button then able to see valid results.
To Reproduce
Steps to reproduce the behavior:

Go to 'https://www.pulseptt.com/agent.html'
Login with valid credential:- 1. User name: john 2. Password: 12345678
Navigate to license Management.
Click on License order history.
Enter Values(as shown in screenshots)
Click on Search Button.
See error.

Expected behavior
It must so Pop-up:- No Result found.
Screenshots

Desktop (please complete the following information):
OS: Windows 10
Browser :Version 100.0.4896.60 (Official Build) (64-bit)
Version [0.1.1]

This bug has not fixed. We are not getting pop-up:- "Result not found"

This bug hasn't fixed.