github-policy bot should look for issues with "needs: upvote" that cross specific thresholds and set a special label accordingly

Right now, we don't have visibility over issues that are getting a lot of upvotes other than to check-in manually on an ad-hoc basis. Would like the bot to make this visible to us. For example, we could have a rule that says "if an issue goes from 4->5 upvotes, add back needs: triage"

The GET issue API response returns reaction counts, so I think it should be possible to create a custom GitHub workflow:
// GET https://[api.github.com/repos/Azure/bicep/issues/comments/1782264734
{
    "url": "https://api.github.com/repos/Azure/bicep/issues/12261",
    "repository_url": "https://api.github.com/repos/Azure/bicep",
    "labels_url": "https://api.github.com/repos/Azure/bicep/issues/12261/labels{/name}",
    "comments_url": "https://api.github.com/repos/Azure/bicep/issues/12261/comments",
    "events_url": "https://api.github.com/repos/Azure/bicep/issues/12261/events",
    "html_url": "https://github.com/Azure/bicep/issues/12261",
    "id":<PHONE_NUMBER>,
    "node_id": "I_kwDOD7S9ks50vfrG",
    "number": 12261,
    "title": "Decorator formater",
    "user": {
        "login": "tehho",
        "id": 1776012,
        "node_id": "MDQ6VXNlcjE3NzYwMTI=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1776012?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/tehho",
        "html_url": "https://github.com/tehho",
        "followers_url": "https://api.github.com/users/tehho/followers",
        "following_url": "https://api.github.com/users/tehho/following{/other_user}",
        "gists_url": "https://api.github.com/users/tehho/gists{/gist_id}",
        "starred_url": "https://api.github.com/users/tehho/starred{/owner}{/repo}",
        "subscriptions_url": "https://api.github.com/users/tehho/subscriptions",
        "organizations_url": "https://api.github.com/users/tehho/orgs",
        "repos_url": "https://api.github.com/users/tehho/repos",
        "events_url": "https://api.github.com/users/tehho/events{/privacy}",
        "received_events_url": "https://api.github.com/users/tehho/received_events",
        "type": "User",
        "site_admin": false
    },
    "labels": [
        {
            "id":<PHONE_NUMBER>,
            "node_id": "MDU6TGFiZWwyMDU2ODM2OTQz",
            "url": "https://api.github.com/repos/Azure/bicep/labels/enhancement",
            "name": "enhancement",
            "color": "a2eeef",
            "default": true,
            "description": "New feature or request"
        },
        {
            "id":<PHONE_NUMBER>,
            "node_id": "LA_kwDOD7S9ks7O6SYs",
            "url": "https://api.github.com/repos/Azure/bicep/labels/Needs:%20Upvote",
            "name": "Needs: Upvote",
            "color": "196135",
            "default": false,
            "description": "This issue requires more votes to be considered"
        }
    ],
    "state": "open",
    "locked": false,
    "assignee": null,
    "assignees": [],
    "milestone": null,
    "comments": 3,
    "created_at": "2023-10-24T06:35:38Z",
    "updated_at": "2023-11-01T19:17:17Z",
    "closed_at": null,
    "author_association": "NONE",
    "active_lock_reason": null,
    "body": "I would like a format decorator that takes a function so that you can format input to a standard\r\n\r\n**Is your feature request related to a problem? Please describe.**\r\nNetwork security rules accept per spec only Captital case protocol, ie '*' | 'Ah' | 'Esp' | 'Icmp' | 'Tcp' | 'Udp'.\r\nWhy can't i just add a `@format(x) => '${toUpper(substring(nsg.name, 0, 1))}${toLower(substring(nsg.name, 1, length(nsg.name) - 1))}')` to format the protocol from 'tcp' or 'TCP' to 'Tpc' etc.\r\nThis should also work on ints `@format(x => min(max(x, 20), 3)` eg **set** min 3 vmss instances but max 20 without error\r\n\r\n**Describe the solution you'd like**\r\nPlease support 😄 \r\n",
    "closed_by": null,
    "reactions": {
        "url": "https://api.github.com/repos/Azure/bicep/issues/12261/reactions",
        "total_count": 2,
        "+1": 2,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
    },
    "timeline_url": "https://api.github.com/repos/Azure/bicep/issues/12261/timeline",
    "performed_via_github_app": null,
    "state_reason": null
}

Will need to allocate more free time to dedicate to this project. If anyone is interested in implementing this, please feel free to take over.

Don't know if this is what you mean by "check-in manually on an ad-hoc basis" but a low-effort start could be to periodically review the issue list with a search like is:issue state:open  sort:reactions-+1-desc label:"Needs: Upvote" filtered on one or more labels.


[regresion] 0.64 ask to enable experimental flag

Is there an existing issue for this?

[X] I have searched the existing issues

Current Behavior
We use an env var to allow pass flags to a makefile. This usually is empty, this behavior works with 0.62 (and all CLI we have tested). After the update to 0.64 the program exists with a warning.
WARNING: The 'oci registry' feature requires the flag --experimental to be set

Expected Behavior
The pipeline must run as it does with <=0.62
Steps To Reproduce

create a pipeline test.yml

---
# yaml-language-server: $schema=https://www.updatecli.io/schema/latest/config.json
name: test
pipelineid: test

sources:
  one:
    name: 'Check {{ $updateChannel }} channel'
    kind: shell
    spec:
      command: echo 1
targets:
  one:
    name: 'Check {{ $updateChannel }} channel'
    kind: shell
    spec:
      command: echo 1

run the commands

UPDATECLI_OPTS=""
updatecli apply $(UPDATECLI_OPTS) --config config.yml

or
updatecli apply "" --config config.yml

the program exist with code 1 and a warning

WARNING: The 'oci registry' feature requires the flag --experimental to be set

Environment
- OS: linux/macOS
- updatecli: 0.64

Anything else?
The workaround is to set a flag in the env var to no pass ""
UPDATECLI_OPTS="--clean"
updatecli apply $(UPDATECLI_OPTS) --config config.yml

The arguments list contains one empty argument so the condition at this point pass
https://github.com/updatecli/updatecli/blob/main/cmd/root.go#L223

Thanks for opening this issue, I think changing the condition to
if slices.Equal(policyReferences, []string{""}) || slices.Equal(policyReferences, []string{}) {
	return nil
}

Should be enough, would you have some time to open a PR?


Why does CPUFIT run for more iterations than GPUFIT in 64-bit mode?

With the same input data, CPUFIT runs for more iterations, on average, than GPUFIT.  It is a significant number - for 10^6 fits CPUFIT takes 4.35 iterations per fit and GPUFIT takes 3.9 iterations per fit.
Is the data being treated the same, internally?  Are the same types being used?

I am labeling this as a bug, because if the two codes have the same algorithm, then the number of iterations should be the same.

Note that this is for CPUFIT_PROFILE.  It looks like CPUFIT doesn't show this behavior.

the tolerance of GPUfit_profile was set to a constant value, input tolerance was ignored. fixed.


Show more infos about tier sets

Show which tier pieces a character has equiped.
e.g. show number of tier pieces in a new column and then show in the tooltipp which exact tier piece is equiped.
Bonus: show a summary how many helms, shoulders, chests, ... are missing for the whole group.
Super-Bonus: Only count those characters which don't have minimum 4 set pieces.

T-Sets are great and give a big buff, but i don't want to add a new column to the Table. I don't want to make the table to width. Now we have 8 instances and Blizzard decided in the last 2 expansions that in S3 / S4 that we have 10 instances for mythic+. So the width is almost on limit with 10 dungeons and the column width. :<
We can put a little more detailed information on T-Sets in the Tooltip as an alternativ, but adding columns needs a lot of testing that we dont have to scroll or its looks bad on mobile devices.

Actually i force the table to be 100% on screen and the only column without force a fixed size is "Player".
Score is 8%
every dungeon is 8%
actually we have 8% * 8% + 8% = 72% width fixed. (Player field is really big now.)
but if we add 2 instances, its gets really small.... i did a lot of testings in the beginning and if i remember correct i got a line break if i did Instances down to 7%, but i'm not 100% sure. (this is something we need to watch out for.)
If you have a good example of it or ideas how we can manage it better (i don't now a lot of HTML tables) than let me know.

Good point that we don't neglect table size.
But I doubt that they will do another season with more than 8 dungeons. SL-S4 was also a 8-Dungeon-Season.
Their new strategy is: 4 new Dungeons + 4 old Dungeons

Issue is solved. I think the Bonus-Tasks are currently not required.


Update release process documentation wrt bintray removal and new usage of ASF JFrog Artifactory

@ekaterinadimitrova2 up for a review?

merged manually with https://github.com/apache/cassandra/commit/ab91b1fdc7ce253fa00a8b68d45e4710b8819bd8


Update my TODOs

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

0 of 0   changed or added relevant lines in 0 files are covered.
1 unchanged line in 1 file lost coverage.
Overall coverage remained the same at 94.566%

Files with Coverage Reduction
New Missed Lines
%

src/Schema.php
1
78.72%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
818

Relevant Lines:
865

💛  - Coveralls

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

0 of 0   changed or added relevant lines in 0 files are covered.
1 unchanged line in 1 file lost coverage.
Overall coverage remained the same at 94.566%

Files with Coverage Reduction
New Missed Lines
%

src/Schema.php
1
78.72%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
818

Relevant Lines:
865

💛  - Coveralls


⚠ Jenkins Plugins Artifactory has degraded performance

In c292884, Jenkins Plugins Artifactory (https://get.jenkins.io/plugins/artifactory/) experienced degraded performance:

HTTP code: 200
Response time: 1223 ms

Resolved: Jenkins Plugins Artifactory performance has improved in 3efcc6e after 12 minutes.


formatter delete blank line between comment.

Bug Report
Following is a example:
require "socket"

# line 1

# line 2

After save, it formatted to:
require "socket"

# line 1
# line 2

I consider this is not a correct behavior, because the commented line probably is commented code, it should't change commented code.
Thanks

Note that this only happens for single comment lines.
Blocks of multiple comments are not merged:
# line 1
# line 2

# line 3
# line 4

If the latter comment is a doc comment, the empty line is not removed either:
# line 1

# line 2
def foo
end

So I'm wondering if this might be at least semi-intended behaviour?
I don't see a real benefit though, and I probably wouldn't expect the formatter to remove the empty line.


Default logrotate_croninterval invalid

The default logrotate_croninterval="1 0 0 0 * *" (at https://github.com/blacklabelops/logrotate/blob/fe817d461a3a2f7c26d697a7f435822e3027dd24/docker-entrypoint.sh#L245) seems to be invalid. This value is used when LOGROTATE_CRONSCHEDULE is not set. It results in no invocations of logrotate and the following error message:
2016/11/21 16:40:23 Beginning of range (0) below minimum (1): 0

The 4th (day of month) can not be 0, it must be in range 1-31.
I am unsure what the intended value is, but I think it must be at least hourly looking at the lowest possible logrotate interval. If this is the case a cron interval of 0 0 * * * * would work. (every hour at 0 minutes and 0 seconds).
I am working around this by providing a valid LOGROTATE_CRONSCHEDULE as environment var.

Your right, the default cron seems to be faulty. The default job schedule is daily, therefore I will change it to 1 0 0 * * * (first second each day).


Migrate OSC/bc_osc_jupyter to use Dynamic JavaScript.

Migrate to use Dynamic JavaScript.
Child ticket of https://github.com/OSC/ondemand/issues/1657

migration completed


Added List Emotlies features.

Added models, rest api manager and tableviewcontroller for get_emolties rest api method.
Added tests and uitest that use a fake rest api manager.
Added an NSDate extention for managing relative dates.

Also some general observation:

please add a license deed header on every file you've authored
please add a LICENSE or LICENSE.txt in the root
Remove all the boiler-plate code and comments
Document a bit what you do: one or two lines comments on the less-trivial blocks would be very handy.

And thank you very much for all this work!

Assigning this to @ggc87 for second review.


Is title supported as param?

Hello
The github CLI support passing a title -t: https://cli.github.com/manual/gh_release_create
However I don't see it listed in inputs: https://github.com/softprops/action-gh-release?tab=readme-ov-file#inputs

Yes it’s the name input which lines up with what it’s called in GitHubs api


Fix check failure in Accelerator.save_state using multi-gpu

This happens occasionally when you run the merge test with multi-gpu. Here is the log of a failure ci-test link:
https://github.com/huggingface/accelerate/actions/runs/5601414096/job/15173828704#step:4:1472
The code caused failure is mainly from https://github.com/huggingface/accelerate/blob/a2d8f540c3ab37c8f84d616be1300a0572b69cf8/src/accelerate/accelerator.py#L2580-L2585
In some test (e.g. tests/test_state_checkpointing.py::CheckpointTest::test_map_location) and using multi-gpu environment, multi process would check whether output_dir is created. If one process A runs very fast and finishes making dir in L2585 above, another process B runs very slow and only finishes L2580, in case process B would raise error in L2582 above.
The solution is simple, add a barrier as this commit does. Please review whether this small change could affect other components.

The docs for this PR live here. All of your documentation changes will be reflected on that endpoint.


Allow user to set non-default username/password pair for database connectors

In this case I think it would be cleaner to use the pick() function to set the value instead of wrapping each connection string in the if/else. For example, in manifests/init.pp
mysql_user_keystone => pick(hiera(openstack::mysql::keystone::user, undef), 'keystone')
mysql_pass_keystone => pick(hiera(openstack::mysql::keystone::pass, undef), hiera(openstack::mysql::service_password))
...
mysql_user_keystone => pick($mysql_user_keystone, 'keystone')
mysql_pass_keystone => pick($mysql_pass_keystone, $mysql_service_password)

Then using the values would just be
$user_keystone = $::openstack::config::mysql_user_keystone
$pass_keystone = $::openstack::config::mysql_pass_keystone
$keystone   = "mysql://${user_keystone}:${pass_keystone}@${management_address}/keystone"

What do you think?

umm... it have been reset to undef in config.pp already, do we need double protection for these values?
and more, if we do a undef protection for this case, should we do the same trick for the other parameters in init.pp, e.g. nova_password,
or maybe we should create another pull request to do these jobs.
what's your opinion for that?

The undef I put in the hiera function is only there because otherwise hiera would fail if it wasn't there. Then the pick() function can set the correct value, e.g. 'keystone' or the keystone password, if the hiera function didn't find the value. My suggestion is not double protection, it's to make sure the value is set prior to being used in openstack::resources::connectors. Then we no longer need the if/else statements to check whether it is set to undef in openstack::resources::connectors, we can just use it normally because we know it was set to the correct value in init.pp.

got you piont! changes committed.

I found an issue with the mongo pr that I think is present here as well. The connection string is changed, but the database is still set to use the old password. To fix this, I think we need to add
$user = getvar("::openstack::config::mysql_user_${title}")
$pass = getvar("::openstack::config::mysql_pass_${title}")

to openstack::resources::database and change the user and password parameters to use those values instead of $title and $::openstack::config::mysql_service_password.

thanks for pointing out the issue,
but I would leave dbname to be untouched, $title, in openstack::resources::database, since we don't have a customizable option for that.


lineNumberContainerStyle doesn't seem to working as expected

I was facing his issue while bumping react-syntax-highlighter from v10 to v15.
Actually we were using lineNumberContainerStyle to give some custom styling to line number container.
But styling is not getting applied to line number container.
To Reproduce
Steps to reproduce the behavior:
This is how I am trying --
<SyntaxHighlighter
        lineNumberContainerStyle={{ color: 'blue', backgroundColor: 'red' }}
        showLineNumbers={true}
        language={language}
        useInlineStyles={true}
    >
        {text}
    </SyntaxHighlighter>

Expected behavior
lineNumberContainerStyle should get applied to line number container.
Screenshots

Desktop (please complete the following information):

OS: Any
Browser: Any
Version [e.g. 22]

Additional context
Not sure if this an issue with the reac-syntax-highlighter or am I missing something. But styling is getting applied perfectly in reac-syntax-highlighter v10

Same here, lineNumberContainerStyle  does not work


Integration tests

Coverage increased (+0.2%) to 93.4% when pulling eeb7c79ec14d3aeb09bd62bacda0cfbbabf8edcc on integration_tests into 80af31d2abe0e72b7ce35ff9556ee9d4e494cfee on dev.


Features for the mock data

Create features for the mock android phone battery level and android phone step count data.
The features will be:-

Daily steps summary.
Daily charging and discharging time
step count when battery is low (< 20%) and when battery is high (>80%).

I think these features would give us an idea how we can integrate complex features in the pipeline.

I have created the mock-features repo hhere - https://github.com/RADAR-base-Analytics/mock-features


Incompatible or Mismatched C/C++ Extension Binaries

Does this issue occur when all extensions are disabled?: Yes/No

VS Code Version:
OS Version:

Steps to Reproduce:

@joaomoreno Our C/C++ team has verified that our extension is correctly published to the marketplace with the correct binary -- our guess is that there is some VS Code or marketplace bug that is causing the wrong vsix to sometimes be installed.

@joaomoreno Users are able to download/install our vsix manually from https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools or https://github.com/microsoft/vscode-cpptools/releases/tag/v1.10.5 so the bug appears to be with VS Code and/or the Remote WSL extension.

@sean-mcmanus can you reproduce this problem? If yes can you file a new issue with reproducable steps?
The issue is not 100% clear to us from this description. Thank you

@isidorn Our C/C++ team has not been able to reproduce the problem yet. I'm guessing there's some random or unusual requirement, maybe involving a previous cached installation. I'm not familiar with what sort of install logging would be important for users who repro it to get, which is why I was thinking the issue should be tracked by VS Code and not our team. I'm aware of 4 user reports -- there could be more reported against VS Code that I'm not aware of.

@rashmi05pathak If you can let us know what the remote OS is and what the TargetPlatform property is set to in the .vscode-server[-insiders]/extensions/ms-vscode.cpptools-[version][os-description]/.vsixmanifest file that could help us identify the problem.

@sean-mcmanus yes getting more details here would be helpful. If you get a chance to repro the problem do let us know. Appreciate it!

@isidorn A user reports that our .vsixmanifest file shows TargetPlatform="win32-x64" on a Linux-x64 remote machine (with Win-x64 host), which indicates that VS Code or the Remote extension or marketplace is somehow causing a download/install of the host platform's vsix instead of the remote one. I'm not familiar with what the next steps are in terms of diagnostics, but it seems like at least there should be an open VS Code (or Remote extension) bug to track this, since currently there are just 4 or so closed issues.

I'm the reporter of https://github.com/microsoft/vscode-cpptools/issues/9433.

maybe involving a previously cached installation when an upgrade from version 1.9.8 to 1.10.5 of our extension occurs.

This is not the case for me as I have installed the C/C++ extension for the first time. I don't usually use VS Code but just tried it to reproduce another problem https://github.com/akinomyoga/ble.sh/issues/196 reported by a user. Also, as far as I remember, this is the first time for me to connect to a remote workspace using VS Code.
Something that might be related is the version of VS Code. I think I have originally installed VS Code back in October 2021. After that, I hadn't updated the VS Code for a long time because I'm not using it. This time, I think I first tried to install the C/C++ extension with the old version of VS Code and failed. After that, I updated VS Code to the latest version from the main menu of the VS Code, which didn't solve the problem. I'm not sure if this is really related, but is it unsupported to update VS Code from an old version (8-month old) in a single update (i.e., without any intermediate versions)? For example, some migration steps to update the cache or database format would be skipped?
We might be able to ask other reporters about their situations?
@eshaved78 (#149096), @Baigz00 (#150656), @rashmi05pathak (this issue): How's the situation? Did you experience the problem in the remote workspace such as in WSL? Have you recently updated VS Code? When have you updated VS Code previously?

@sean-mcmanus I am using the VS code(version 1.67) in Ubuntu 16.04 LTS (64 bit OS) which is hosted VM in Oracle VM virtual box. While trying to install C/C++ extension in the VS code, it was not proceeding and VS code suggested to download it from the website and install it via vsix. So, I have done the same. The installation of extension was successful but later during debugging, it has mentioned that wrong/incompatible binaries.
please let me know if anymore information is required.

@akinomyoga I was not using remote workspace WSL. I am just trying to use VS code for client side code at my local VM.

cc @sandy081

@rashmi05pathak Your issue might be different? You installed the Linux x64 vsix, right? What is the TargetPlatform property set to in the .vscode[-insiders]/extensions/ms-vscode.cpptools-[version][os-description]/.vsixmanifest file? It should say "linux-x64". What version of the C/C++ extension are you installing? Our team is able to debug with the Linux x64 vsix so we don't know what could be going wrong yet.

Sorry that I am late to the party. It would be great if I can get summary of the issue? Does it happen to be reproducible?

This issue has been closed automatically because it needs more information and has not had recent activity. See also our issue reporting guidelines.
Happy Coding!

@sandy081 I have been thinking that you have checked the linked issues, but let me comment in case you haven't noticed them. I have already described the details about my situation in my initial report https://github.com/microsoft/vscode-cpptools/issues/9433. If needed, I can just copy and paste the comment to here. Nevertheless, I can answer additional questions about my situation if any. We may also find some information by the OP of this issue in https://github.com/microsoft/vscode/issues/151921#issuecomment-1155946658.

The problem is, as I have reported in vscode-cpptools#9433 (comment), VS Code seems to wrongly download the VSIX of TargetPlatform="win32-w64" in Ubuntu 20.04/WSL2 instead of the VSIX of TargetPlatform="linux-x64". I have tried several times VS Code's install button with different configurations for both VS Code and VS Code Insiders, but all failed in the same way.

Got it. Thanks for update.
Can you please share us with a gif/video of what you are doing so that we can understand more about the issue? Can you please share us with the following logs after reproducing the issue?

F1 > Open View... > Log (Window)
F1 > Open View... > Log (Remote)

Can you please share us with a gif/video of what you are doing so that we can understand more about the issue?

I tried  to upload it to here but couldn't do it due to the size limit. I have instead uploaded it to YouTube:
https://youtu.be/pdfn8WPNEAk

Can you please share us with the following logs after reproducing the issue?

F1 > Open View... > Log (Window)

Log (Window)
[2022-06-27 19:44:02.254] [renderer1] [info] Invoking resolveAuthority(wsl)
[2022-06-27 19:44:09.034] [renderer1] [info] resolveAuthority(wsl) returned '<IP_ADDRESS>:61472' after 6781 ms
[2022-06-27 19:44:13.703] [renderer1] [warning] No search provider registered for scheme: vscode-remote, waiting
[2022-06-27 19:45:10.324] [renderer1] [error] [Extension Host] (node:80) [DEP0005] DeprecationWarning: Buffer() is deprecated due to security and usability issues. Please use the Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() methods instead.
(Use `node --trace-deprecation ...` to show where the warning was created)

F1 > Open View... > Log (Remote)

I cannot find such a view. Instead, I see Log (Remote Server) and Log (Remote Extension Host):
Log (Remote Server)
[2022-06-27 19:44:09.434] [remoteagent] [info] Extension host agent started.
[2022-06-27 19:44:09.850] [remoteagent] [info] [<IP_ADDRESS>][f10c87c8][ManagementConnection] New connection established.
[2022-06-27 19:44:09.893] [remoteagent] [info] [<IP_ADDRESS>][7ceec505][ExtensionHostConnection] New connection established.
[2022-06-27 19:44:09.906] [remoteagent] [info] [<IP_ADDRESS>][7ceec505][ExtensionHostConnection] <80> Launched Extension Host Process.
[2022-06-27 19:44:58.136] [remoteagent] [info] Installing extension: ms-vscode.cpptools
[2022-06-27 19:45:08.559] [remoteagent] [info] Extracted extension to /home/murase/.vscode-server/extensions/.e269d3f3-586c-47d4-9b6f-d324defb8f21: ms-vscode.cpptools
[2022-06-27 19:45:08.587] [remoteagent] [info] Renamed to /home/murase/.vscode-server/extensions/ms-vscode.cpptools-1.10.5
[2022-06-27 19:45:08.622] [remoteagent] [info] Extracting completed. ms-vscode.cpptools
[2022-06-27 19:45:08.623] [remoteagent] [info] Extension installed successfully: ms-vscode.cpptools

Log (Remote Extension Host)
[2022-06-27 19:44:13.144] [exthost] [info] Extension host with pid 80 started
[2022-06-27 19:44:13.323] [exthost] [info] Lock '/home/murase/.vscode-server/data/User/workspaceStorage/cdcab91fd6379d3da41b6c0f13f7a6c9/vscode.lock': Lock acquired.
[2022-06-27 19:44:13.972] [exthost] [info] ExtensionService#_doActivateExtension vscode.debug-auto-launch, startup: true, activationEvent: '*'
[2022-06-27 19:44:14.019] [exthost] [info] ExtensionService#_doActivateExtension vscode.git-base, startup: true, activationEvent: '*', root cause: vscode.git
[2022-06-27 19:44:14.052] [exthost] [info] ExtensionService#_doActivateExtension vscode.ipynb, startup: true, activationEvent: '*'
[2022-06-27 19:44:14.219] [exthost] [info] ExtensionService#_doActivateExtension vscode.git, startup: true, activationEvent: '*'
[2022-06-27 19:44:14.579] [exthost] [info] ExtensionService#_doActivateExtension vscode.github, startup: true, activationEvent: '*'
[2022-06-27 19:44:15.075] [exthost] [info] ExtensionService#_doActivateExtension vscode.emmet, startup: false, activationEvent: 'onStartupFinished'
[2022-06-27 19:44:15.111] [exthost] [info] ExtensionService#_doActivateExtension vscode.merge-conflict, startup: false, activationEvent: 'onStartupFinished'
[2022-06-27 19:44:15.123] [exthost] [info] Eager extensions activated
[2022-06-27 19:45:09.572] [exthost] [info] ExtensionService#_doActivateExtension ms-vscode.cpptools, startup: false, activationEvent: 'onLanguage:cpp'
[2022-06-27 19:45:15.910] [exthost] [info] ExtensionService#_doActivateExtension vscode.markdown-language-features, startup: false, activationEvent: 'onCommand:markdown.showPreview'
[2022-06-27 19:45:16.367] [exthost] [info] ExtensionService#_doActivateExtension vscode.extension-editing, startup: false, activationEvent: 'onLanguage:markdown'
[2022-06-27 19:45:17.257] [exthost] [info] ExtensionService#_doActivateExtension vscode.markdown-math, startup: false, activationEvent: 'api', root cause: vscode.markdown-language-features

Which version of VS Code are you using?

As I have reported in https://github.com/microsoft/vscode-cpptools/issues/9433, I have confirmed the behavior in 1.68.0 and 1.69.0-insider. Further details are found in https://github.com/microsoft/vscode-cpptools/issues/9433. As it does not seem to reproduce in every environment, I guess some other factors in my environment causes the problem.
Version: 1.68.0 (user setup)
Commit: 4af164ea3a06f701fe3e89a2bcbb421d2026b68f
Date: 2022-06-08T11:44:16.822Z
Electron: 17.4.7
Chromium: 98.0.4758.141
Node.js: 16.13.0
V8: <IP_ADDRESS>-electron.0
OS: Windows_NT x64 10.0.19044

Version: 1.69.0-insider (user setup)
Commit: ab6ba241145bb81c8bc0f323453bbec45fd66109
Date: 2022-06-10T05:16:34.957Z
Electron: 17.4.7
Chromium: 98.0.4758.141
Node.js: 16.13.0
V8: <IP_ADDRESS>-electron.0
OS: Windows_NT x64 10.0.19044

Instead of downloading from the installed section, can you please try searching for the extension, say by typing c++ in the search input and install?
Does it work if you uninstall the extension and install again?

I now noticed these additional comments. I'll try them when I get back home.

Instead of downloading from the installed section, can you please try searching for the extension, say by typing c++ in the search input and install?

This installs the correct version of the extension.

Does it work if you uninstall the extension and install again?

What is the correct way to uninstall the extension from the remote?

(a) As explained in https://github.com/microsoft/vscode-cpptools/issues/9433, I have already tried many times removing the remote extension---by deleting the directory ~/.vscode-server{,-insiders}/extensions/* as suggested in Reinstalling the Extension.md---and installing it again. But they didn't change anything.

(b) When I select the C/C++ extension from the installed section and press the [Unintall] button (see below), the remote extension is still located under ~/.vscode-server/extensions, but the local extension instead seems to be uninstalled.

(c) Also, when I type c++ in the search input, select the C/C++ extension, and press the [Uninstall] button (see below), the remote extension is still there, and the local extension is instead uninstalled.

This installs the correct version of the extension.

So it means you are getting incompatible C++ extension when you use the button Install in WSL:....  ?
In both above screenshots, pressing Uninstall will uninstall locally as the extension seems to be installed locally. So, please try pressing uninstall button and install the extension again?

So it means you are getting incompatible C++ extension when you use the button Install in WSL:.... ?

Yes.

In both above screenshots, pressing Uninstall will uninstall locally as the extension seems to be installed locally. So, please try pressing uninstall button and install the extension again?

I had already tried that many times. The result doesn't change; It again installs an incompatible version as far as I use the button [Insall in WSL: Ubuntu 20.04].

I had already tried that many times. The result doesn't change; It again installs an incompatible version as far as I use the button [Insall in WSL: Ubuntu 20.04].

Can you please provide following logs while trying this?

Enable log level to trace - F1 > Set Log Level
Share F1 > Open View... > Log (Remote)
Share F1 > Open View... > Log (Window)

Here, I attach the logs: vscode-issue-151921-reinstall-log.zip
This time, (1) I first attempted to install the extension by pressing [Install in WSL: Ubuntu 20.04]. (2) Then reopen the extension page, press [Uninstall] and reloaded the VS Code. (3) Then, I again attempted to install the extension from the [Install in WSL: Ubuntu 20.04] button. In the zip archive, the following files are included:

FirstInstall-Log-Window.txt --- This includes the log of Log (Window) in step (1) described above.
FirstInstall-Log-RemoteServer.txt --- This includes the log of Log (Remote Server) in step (1).
ReInstall-Log-Window.txt --- This includes the log of Log (Window) in step (2).
ReInstall-Log-RemoteServer.txt --- This includes the log of Log (Remote Server) in step (2).
ReInstall-Log-RemoteExtensionHost.txt --- This includes the log of Log (Remote Extension Host) in step (2).

Thanks for the logs and I think I know the root cause of this issue. It seems in your case the extension is being copied from local client (Windows) to remote (WSL) and hence the bits are being incompatible. This happens if VS Code cannot find a matching installed extension in the Marketplace. In this case, VS Code falls back to copy the extension.
Fixed it as follows:
Before using the fallback to copy

Try again to get the matching extension from the Marketplace
In the fallback check if the local extension is compatible with the remote platform.

This fix does not covers if you have manually installed an extension that does not exist in the Marketplace and is platform specific.

This bug has been fixed in the latest release of VS Code Insiders!
@rashmi05pathak, you can help us out by commenting /verified if things are now working as expected.
If things still don't seem right, please ensure you're on version 052d5b0027f6c9d64c8ca35955cb5117ba94d5d7 of Insiders (today's or later - you can use Help: About in the command palette to check), and leave a comment letting us know what isn't working as expected.
Happy Coding!


model_pipeline: set a default configuration for "dummy"

Set a default configuration structure for the "dummy" api type and
adjust the codebase to use Python Comprehensive when possible.

LGTM 👍
Thanks again for fixing my Java-style.

It's more a matter of style, but when it's possible we prefer to use comprehensive to initialize dict and list. Also,lambda are avoidable (Guildo actually said that he recreates the decision to add the keyword) and in general it's better to just use a nested function (See: https://peps.python.org/pep-0008/).


$breadcrumbs-item-color-current	does not appear to do anything.

Looking at the code,
li {
float: #{$global-left};
color: $breadcrumbs-item-color-current;
...
}
a {
color: $breadcrumbs-item-color;
}
Setting the color on the LI doesn't seem to do anything as the color is overridden on the A.

@ken-spencer By default, $breadcrumbs-item-color-current takes this initial value $black, the $black is also the default value for the global color, therefore your li's color is still black ($black) even if you pass $breadcrumbs-item-color-current to it, unless you change the color of $breadcrumbs-item-color-current then it will hold the new color wherever you use it.

@abdullahsalem don't see how this could override $breadcrumbs-item-color on the a tag.

The idea is the current item won't be a link. There is an example of the markup here: http://foundation.zurb.com/sites/docs/breadcrumbs.html

Thanks, makes sense now, apologies for bogus report.


override function metatable with lua code

Hi,
I was wondering if it is possible to override a usertype function metatable at runtime using Lua code?
I'm trying to bind a GUI library (Juce) with a base type of Component which features a paint function that takes a Graphic context

lua.new_usertype<Graphics>("Graphics"
                               , "fillAll", sol::overload(sol::resolve<void(void) const>(&Graphics::fillAll), sol::resolve<void(Colour) const>(&Graphics::fillAll))
                               );

lua.new_usertype<Component>("Component"
                                , sol::constructors<Component()>()
                                , sol::call_constructor, sol::constructors<Component()>()
                                , "paint", &Component::paint
                                );

and in lua do something like that
local comp = Component()
comp.paint = function(self, g)
	g:fillAll(Colour(0xffFF0000))
end

Right now I have the following error
attempt to index a sol.juce::Component value (local 'comp')
Should it work ? if not, is there a proper way to support this ?
Thanks !

You cannot override on a per-object basis. At least, you can't do that by default. sol2 allows you to mess with the overall metatable for the ENTIRE class (using function Component:paint ( ... ) .... end).
If you want table-like semantics, you'll need to do some hooking-up of the index function. There are examples of how to do this: https://github.com/ThePhD/sol2/blob/develop/examples/usertype_dynamic_getter_setter.cpp#L16
The logic only shows how it works for local v = obj.member and obj.member = blah, but you can extend the syntax to support also retrieving functions.
I need to write some more examples for this...

Will check this.
 sol::object ComponentGetter(juce::Component *pThis, sol::stack_object key, sol::this_state L)
  {
    return sol::object(L, sol::in_place, sol::lua_nil);
  }

  void ComponentSetter(juce::Component *pThis, sol::stack_object key, sol::stack_object value, sol::this_state L)
  {
  }

, sol::meta_function::index, &ComponentGetter
 , sol::meta_function::new_index, &ComponentSetter

Is this supposed to work as well with non member function ?
because right now this do not compile (cannot convert from 'sol::stack::check_getter<Tu,void>...)
as my goal is to add this support to juce::Component in a non intrusive way.

In any way I need to do some c++ wrapper as the c++ will need to find the new virtual function one way or another ;)

I don't quite know what that does from looking at the LuaBind examples. Do you have a better description of what it's supposed to do?

The paint member function of a Component is a c++ virtual member function that draws the widget.
My goal is to be able to override this drawing method in Lua like that
local comp = Component()
comp.paint = function(self, g)
	g:fillAll(Colour(0xffFF0000))
end

so I need a C++ class that wrap the original c++ Component instantiated from Lua where I can again call Lua code if it has been overridden.
wrap_base allows to have access to lua context inside the wrapped Component object.
Let me know if this is still unclear.

@otristan when you set the paint function like that from lua, does it get overwritten for all Component objects or just that one instance (comp)?

I mean ideally, in your scenario, not currently.

just that one instance

in LuaBind, this looks like that
struct ComponentWrapper : public Component, public wrap_base
{
  ComponentWrapper(): Component() {}
  ComponentWrapper(const juce::String &name): Component(name) {}

  virtual void resized()
  {
    call<void>("resized");
  }

  static void default_resized(Component *p)
  {
    p->Component::resized();
  }

  virtual void paint(Graphics &g)
  {
    call<void>("paint", boost::ref(g));
  }

  static void default_paint(Component *p, Graphics &g)
  {
    p->Component::paint(g);
  }
};

 module(L)[
 class_<Component, ComponentWrapper>("Component")
 .def("paint", &Component::paint, &ComponentWrapper::default_paint)
];

In that case, if I'm understanding correctly, you want sol to individually manage vtables for bound usertype objects?
In implementation terms, if you want to do it transparently from both C++ and Lua, I guess this would mean:

Having a way of marking usertypes and bound functions as "overridable", which would require said functions to be virtual.
For said "overridable" usertypes, creating a copy of the original vtable and pointing the vtable pointer of the bound object to it, per object (is there even a way to reliably determine the size of a vtable?).
Introduce a storage mechanism for lua functions when assigned on a usertype object (lifetime management?).
For each overridable virtual function assigned from lua, overwrite the corresponding entry in the vtable to point to a proxy function that calls the stored lua function (can the index of the function pointer in the vtable be reliably determined?) and returns the results (exception handling?).

Just some thoughts, there might be a better way to do this.

Not asking for something magic, but at least for something similar to what LuaBind offers would be good enough.

I believe you can already achieve what you're trying to do with the current version of sol2. You can try something like this:
Your class:
class Component
{
public:
    void Paint()
    {
        if (!customPaint)
            return PaintInternal();

        paint();
    }

    void PaintInternal() { ... }

    void Setter(sol::stack_object key, sol::stack_object value, sol::this_state)
    {
        // Add more checks here.
        if (key.as<std::string>() == "paint")
        {
            customPaint = true;
            paint = value.as<sol::protected_function>();
        }
    }
private:
    bool customPaint;
    sol::protected_function paint;
};

And then bind it as:
lua.new_usertype<Component>("Component"
    "paint", &Component::Paint,
    sol::meta_function::new_index, &Component::Setter
);

#define SOL_CHECK_ARGUMENTS 1
#define SOL_USE_BOOST 1
#include <sol.hpp>
#include <string>

#include <iostream>

int main() {

	struct thingy {
		sol::function paint;

		thingy(sol::this_state L) : paint(sol::make_reference<sol::function>(L.lua_state(), &thingy::default_paint)) {
		}

		void default_paint() {
			std::cout << "p" << std::endl;
		}

	};

	sol::state lua;
	lua.open_libraries(sol::lib::base);

	lua.new_usertype<thingy>("thingy",
		sol::constructors<thingy(sol::this_state)>(),
		"paint", &thingy::paint);

	sol::string_view code = R"(
obj = thingy.new()
obj:paint()
obj.paint = function (self) print("g") end
obj:paint()
function obj:paint () print("s") end
obj:paint()
)";

	lua.safe_script(code);

	return 0;
}

This is one way that "just works". Note that you're spending storage every time you create a new function to hold the lua_State* and the int index (along with an inner sol::reference for the error handler, if SOL_SAFE_FUNCTION is defined).
Also note that both syntaxes to define a function work using the object itself.
If you want something more complicated, again, you can simply go the route of writing your own indexing table and calling functions as you see fit, as @OrfeasZ is showing off.

This looks good.
Will check this.
Thanks a lot !


[TEST] Test setting up correct systemd file for nfs-ganesha

Don't merge this.
Test to see if we copy over the nfs-ganesha-lock.service.debian8 file
properly, whether the Xenial CI job will work.
The upstream download.ceph.com nfs-ganesha package should be fixed for
xenial (which is in progress).

we know it works :) we just need to wait for the package to get fixed in download.ceph.com

@andymcc This is a good workaround, the real fix should reside in the package though


fix GeospatialAppHasHierarchyInteractive example

Fix geospatial app interactive example.
See http://vis.academy/#/building-a-geospatial-app/visualization-guidelines/do-use-hierarchy
Component is not displayed due to wrong name.

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


Ensure grid has at least a shape of 2 by 2 points

This ensure the grid has at least a shape of 2 by 2 points.
To do:

[x] Modify script
[ ] Update all sample data

@stefsmeets Maybe you could check if this solves your regridding problems with the scheme='linear' regridder? As an alternative, you could choose the 'nearest' scheme for nearest neighbour regridding. See here for the available options.

Already downloaded all data


Add the basic support for BYTE opcode

This pull request adds the basic support for BYTE opcode. The symbolic byte offset is however not supported yet.

That's awesome, thanks @hzzhang


[Enhancement] Replace CCP´s SDE with new DB build from ESI endpoints - WIP

This is a long term project. It would be cool to get rid of the SDE export and create all required static tables from existing ESI endpoints.
Advantages:

Reduce dependencies from other data sources, and use ESI as the only source.
Reduce the DB size for static data. Just import the relevant data for Pathfinder.

This issue holds all commits, so far....
The current state:

Wormhole type ("Pulsar", "Black Hole",...) information is not available on ESI.

This issues was finished a long time ago...


AttributeError: 'WindowsPath' object has no attribute '_str'

here is the error,I dont know how to solve please help,I dont know if its diffusers library problem or here,can somehow help debug?
Seed set to 42
Loading diffusion model ...
Traceback (most recent call last):
  File "D:\actpydevenv\Python311\Lib\pathlib.py", line 540, in __str__
    return self._str
           ^^^^^^^^^
AttributeError: 'WindowsPath' object has no attribute '_str'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "D:\ai\img_proc\InstantMesh-main\run.py", line 114, in <module>
    pipeline = DiffusionPipeline.from_pretrained("sudo-ai/zero123plus-v1.2",custom_pipeline="zero123plus",torch_dtype=usertorchdtype)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\actpydevenv\Pyaivenv\Lib\site-packages\huggingface_hub\utils\_validators.py", line 119, in _inner_fn
    return fn(*args, **kwargs)

Did you modify the run.py? It looks different from our official code.

yeah,i added code to auto detect gpu type and use the best torch float type,because some gpu i have cannot support float16.

I'm sorry but we did not test the code in Windows environment and the provided traceback does not provide enough information.

I see its fine, I also have no idea,I will just close this issue and give up trying for now,maybe comeback a few months later and see.


/cli is missing in SDK

There are no implementations for https://manual.manticoresearch.com/Connecting_to_the_server/HTTP#/cli and json version
Would be a great enhancement for UtilsApi

/cli and /cli_json are NOT to be used programmatically. There's /sql for that and the client includes it - https://github.com/manticoresoftware/manticoresearch-typescript/blob/master/docs/UtilsApi.md#sql


LibreOfficeWriter Includes

There are several files missing from being included in LibreOfficeWriter file, should they be added?

LibreOfficeWriter_Char.au3
LibreOfficeWriter_Cursor.au3
LibreOfficeWriter_Font.au3
LibreOfficeWriter_Num.au3
LibreOfficeWriter_Page.au3
LibreOfficeWriter_Par.au3

Also, can they alphabetically ordered?

sure.
#AutoIt3Wrapper_Au3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 -w 7

#include-once
; common include for Writer
#include "LibreOfficeWriter_Constants.au3"
#include "LibreOfficeWriter_Internal.au3"
#include "LibreOfficeWriter_Helper.au3"

; other include for writer
#include "LibreOfficeWriter_DirectFormating.au3"
#include "LibreOfficeWriter_Doc.au3"
#include "LibreOfficeWriter_Cell.au3"
#include "LibreOfficeWriter_Char.au3"
#include "LibreOfficeWriter_Cursor.au3"
#include "LibreOfficeWriter_Field.au3"
#include "LibreOfficeWriter_Font.au3"
#include "LibreOfficeWriter_FootEndNotes.au3"
#include "LibreOfficeWriter_Frame.au3"
#include "LibreOfficeWriter_Images.au3"
#include "LibreOfficeWriter_Num.au3"
#include "LibreOfficeWriter_Page.au3"
#include "LibreOfficeWriter_Par.au3"
#include "LibreOfficeWriter_Shapes.au3"
#include "LibreOfficeWriter_Table.au3"

btw.
All this "SubInclude" can also be reordered.

If you wana make PR please follow the form for submiting PR.

Okay. Sounds good. Wanted to check if there was a reason you left it out.

Done #64


Live Update

I am going to use Chartist in my project to show the chart. I want to know how to make it to be live view   or refreshing after new record is add.

You may want to check the official documentation, I can't help with that. Alternatively, ask the question here.


Make vaulting and other do_afters not cancel when you take damage

Description
There should be some way for do after to treat different sources of damage differently. Or maybe combat should just have some way of interrupting do_afters without relying on damage.
For example. You should be able to try to break out of handcuffs while suffocating or starving, but it should be interrupted when someone punches you. Similarly, you should be able to vault tables to try to escape out of a low-pressure room.
Additional context
Based on https://github.com/space-wizards/space-station-14/issues/5203#issuecomment-962775679

theres a bool for TryChangeDamage calls to ignore resistances, can probably use something similar to block doafters/not block doafters

closed by #5459
certain damage types should no longer interrupt do-afters


Minor changes from the freshness review

I realized that I made this change through the public repo. Closing this and will create another one in the azure-content-pr repo. Thanks!


Fix memory leak due to early return in usrsctp_connect()

The clang static analyzer detects a memory leak due to an early return  in usrsctp_connect().
More info in this bug and patch from the WebKit project:
https://bugs.webkit.org/show_bug.cgi?id=186009
https://trac.webkit.org/changeset/232236
Note that the leak from user_mbuf.c in clust_constructor_dup() was fixed differently upstream, and the leak in mb_ctor_clust() doesn't currently happen due to commented-out code.

Regarding the change to usrsctp_connect():
We're also seeing this report in our CI system.
I think you fixed a false positive.
The memory for the sa pointer is allocated within the getsockaddr() function.
If the copyin() operation fails, the allocated memory gets freed before getsockaddr() returns.
See: https://github.com/sctplab/usrsctp/blob/master/usrsctplib/user_socket.c#L695

Yep, missed that originally. Feel free to close this then.

Thanks for the feedback. Closing it...


[json-rpc] add chain id, latest ledger version and timestamp to http response header

Motivation
These information is in JSON response body too, but when the request is batch request, client side need decode the array of the response first to get single response object for accessing the information.
These information are useful to determine whether the server response is stale or not, use response header will be easier to decode and can ignore body if client found the ledger version is stale (client side tracks latest known version).
Have you read the Contributing Guidelines on pull requests?
Yes
Test Plan
Unit and integration test

This PR may have modified JSON-RPC server code.
Breaking changes policy:

Chaning JSON-RPC method signatures or removing/modifying fields
in the response in /V1 will not be accepted.
Adding fields is ok.
Adding a new JSON-RPC method is ok.

Please ensure you have also done the following to update the docs:

Update json-rpc/API-CHANGELOG.md.
Add/update type/method documentation under json-rpc/docs.

/land


Deploy challenges once per domain, not once per altname

example.com www.example.com something.example.com
Current flow:

Request example.com challenge
Deploy example.com challenge response
Verify example.com challenge response
Clean example.com challenge response
Request www.example.com challenge
Deploy www.example.com challenge response
Verify www.example.com challenge response
Clean www.example.com challenge response
Request something.example.com challenge
Deploy something.example.com challenge response
Verify something.example.com challenge response
Clean something.example.com challenge response
Request certificate

Proposed flow:

Request example.com challenge
Request www.example.com challenge
Request something.example.com challenge
Deploy example.com www.example.com something.example.com challenge responses
Verify example.com challenge response
Verify www.example.com challenge response
Verify something.example.com challenge response
Clean example.com www.example.com something.example.com challenge responses
Request certificate

This is more useful with DNS challenges, since DNS may take extra time to update, and you can touch the DNS record once for all subdomains.
However, this can also apply to HTTP challenges, where maybe your upload/copy script can push all challenges once, or maybe you need to reload your web server config only once, etc.

I see why this would be useful, but it seems that quite a lot would have to be written differently to support this...
Didn't really take a look at the DNS verification, but I think you actually should be able to generate your challenge response in advance and just add it as some kind of wildcard in your zonefile.

If it's not the direction you want to go, that's fine. I already have it working in my fork (just ignore all that PHP crap). I thought I'd suggest it and get your take on it.
Thanks so much for your script. :)

erorus's patch looks pretty tiny/clean - would be nice to see this. Would isolating it into a self contained PR work?

Submitted PR: https://github.com/lukas2511/letsencrypt.sh/pull/114
I defaulted it to current behavior so as not to break existing scripts.

I just looked at the commit and have a question. In line 403, the challenge_token is removed if you use http-01. Why do you do it again in the lines 423 - 428?

I think he's doing that because if the challenges are all generated up front, and then the process is interrupted in middle due to error - that will insure that the leftover ones are cleaned up (the ones for which the cleanup hook wasn't fired.)

It seems that the script just iterates (batches) and calls the HOOK handler for each domain/subdomain.  Is there a way to signal the handler that we have received the last iterative domain?  Reason being is on the last subdomain, our HOOK handler will invoke a "wait for DNS validation" to ensure that all TXT entries are now being seen by our three authoritative (djbdns) DNS servers.  We batch up DNS changes and push them out to the primary/secondaries every 60 seconds (or less).  Possibly add a configurable "magic" value that is send after the last domain.

@TerraTech if you use HOOK_CHAIN=yes in your config all challenge deployments and cleanups (for 1 certificate) are done within one hook call each, and this should be relatively easy to parse within your hook script. see docs/hook_chain.md


Digest auth lib update

This PR updates the digest auth library from archived library github.com/xinsnake/go-http-digest-auth-client to its fork github.com/yesoreyeram/go-http-digest-auth-client
Also updates the plugin SDK to latest

do you think it would make sense to later move https://github.com/yesoreyeram/go-http-digest-auth-client to github/grafana ?


guest interactions with member

need url scheme for the display of member-avatars as opposed to the logged-in variant currently built

/avatars/:avatarid

display if avatar exists
display if open to public, i.e., consensual arrangement between presumed visitor and object handshake

core flag property and avatar flag property for whether to display to public

unclear if we are into the settings mechanics yet or not, I don't think so

captured better in other modern tickets


Re-apply the partially reverted output improvements from PR#625

Fix: https://github.com/istio/istio/issues/19451
Fix: https://github.com/istio/istio/issues/18892
Re-apply the partially reverted output improvements from PR#625

/cherrypick release-1.4

@elfinhe: #672 failed to apply on top of branch "release-1.4":
error: Failed to merge in the changes.
Using index info to reconstruct a base tree...
M	cmd/mesh/manifest-common.go
M	cmd/mesh/manifest-generate.go
Falling back to patching base and 3-way merge...
Auto-merging cmd/mesh/manifest-generate.go
CONFLICT (content): Merge conflict in cmd/mesh/manifest-generate.go
Auto-merging cmd/mesh/manifest-common.go
CONFLICT (content): Merge conflict in cmd/mesh/manifest-common.go
Patch failed at 0001 Re-apply the partially reverted output improvements from PR#625

In response to this:

/cherrypick release-1.4

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.


Question: Using microsoft configure option methods with child containers causes root container configure option delegates to be invokes after child.

I use custom multitenancy where i have some common confituration which is manged in root container and for each tenant individually I have tenant specific configs and/or overrides of parent.
Using microsoft configure option methods with child containers causes root configure option delegates to be invokes after child delegates in child container.
// registrations
Having stashbox configured with root (container using microsoft interfaces via service provider factory but i assume that same would apply for stashbox plain interfaces)
// register parent options
rootservices.Configure(, fooConfigSection);
// register child (happens in multitenancy middleware on tenant configuration initialization)
childContainerServices.Configure(, childFooConfigSection);
// resolutions
var optionsInstance = childContainer.GetRequiredService<IOptionsMonitor>().Get(); // here i get effectively parent options instead of child options.
I assume this is because OptionsFactory has c-tor accepting IEnumerable<IConfigureOptions> which makes child delegates to have higher priority then parent so they are resolved prior to parent in ienumerable.
There are workarounds obviously like not using same type and/or options name but out of curiosity what are your suggestions how to handle this behavior?
Thanks

Hi @vladimir-ilnytskyi, thank you for reaching out! I'm not sure I fully understand the issue, could you please share a whole snippet that describes the problem? Thanks!

Sure! Here i'll provide code for multitenant container - basically my implementation of dynamic multitenancy ( where tenant configurations are stored on remote source and can be added dynamically and also they change dynamically, so i will also skip here some pieces like how i get IConfiguration from tenant object...

Approx code snippet in program.cs (.net8) :

var services = builder.Services;
var configuration = builder.Configuration;

// public class Foo { public string Property1 {get; set;} public string Property2 {get; set;} }

services.Configure<Foo>(configuration.GetSection("Foo")); // configure in parent container - e.g. root configuration is from appsettings and it binds Property1 here, which i want to override for some tenants from their configuration a bit below

var tenantContainerConfigureAction = (IServiceCollection tenantServices, IConfiguration tenantConfiguration) => {

// tenantConfiguration - is completely isolated remote config that has some stuff that i want to override/add so instances of IOptionsMonitor<Foo> give me updated value for that tenant

tenantServices.Configure<Foo>(tenantConfiguration.GetSection("Foo")); // configure in tenant (child) container. Here i want to override Property1 from Foo section

....register some services etc...
};

builder.UseServiceProviderFactory(context =>
        {
            var rootContainer = new StashboxContainer();
            if (context.HostingEnvironment.IsDevelopment())
            {
                rootContainer.Configure(config => config.WithLifetimeValidation());
            }

            return new MultiTenantServiceProviderFactory(new MultiTenantContainer(tenantContainerConfigureAction, rootContainer));
        });

Problem

when i'm already in controller and using child container services when i resolve
IOptionsMonitor optionsMonitor and get my instance of options
optionsMonitor.CurrentValue - this one is constructed by OptionsFactory (microsoft options class) with not expected for me order. This OptionsFactory has c-tor that accepts IEnumerable<IConfigureOptions>
So it first runs child configure delegates, then parent...
I guess stashbox resolves all registrations of IConfigureOptions if it is  IEnumerable<IConfigureOptions> combining them - first from child then from parent.

Some classes for general understanding...

Middleware that swaps request services in httpcontext based on current tenant
public async Task InvokeAsync(HttpContext context, RequestDelegate next)
    {
        // if current request context is configured to ignore multitenancy call the next middleware
        if (_options.Value.IgnoreMultitenancy?.Invoke(context) ?? false)
        {
            await next(context);
            return;
        }

        var tenantResolutionStrategy = _tenantResolutionStrategy;
        var endpointMeta = context.GetEndpoint()?.Metadata;
        if (endpointMeta != null)
        {
            var isMultitenancyDisabled = endpointMeta?.Any(m => m is DisableMultitenancyAttribute);
            if (isMultitenancyDisabled ?? false)
            {
                await next(context);
                return;
            }

            var overrideResolutionStrategyType = endpointMeta?.Select(meta =>
            {
                if (meta is TenantResolutionStrategyOverrideAttibute tenantResolutionStrategyAttribute)
                {
                    return tenantResolutionStrategyAttribute.ResolutionStrategyType;
                }

                return null;
            }).FirstOrDefault(x => x != null);

            if (overrideResolutionStrategyType != null)
            {
                tenantResolutionStrategy = (ITenantResolutionStrategy)context.RequestServices.GetService(overrideResolutionStrategyType) ?? _tenantResolutionStrategy;
            }
        }

        var tenantId = await tenantResolutionStrategy.GetTenantIdAsync(context.RequestAborted);
        if (string.IsNullOrWhiteSpace(tenantId))
        {
            var error = new { Error = "Tenant ID is not provided." };
            _logger.LogInformation(error.Error);
            context.Response.StatusCode = StatusCodes.Status400BadRequest;
            await context.Response.WriteAsJsonAsync(error);
            return;
        }

        if (_tenantAccessor.Tenant == null)
        {
            var tenant = await _tenantStore.GetOrRetrieveAsync(tenantId, context.RequestAborted);
            if (tenant != null)
            {
                _tenantAccessor.Tenant = tenant;
            }
            else
            {
                context.Response.StatusCode = StatusCodes.Status404NotFound;
                var noTenantError = new { Error = $"No tenant was found with ID:{tenantId}" };
                _logger.LogInformation(noTenantError.Error);
                await context.Response.WriteAsJsonAsync(noTenantError);
                return;
            }

            if (!tenant.TryGetConfigurationForService(out _))
            {
                var error = $"Tenant {tenant.Label} with ID: {tenant.Id} has no configuration for service: {Tenant.AssemblyName}";
                throw new TenantServiceConfigurationMissingException(error);
            }
        }

        var tenantContainer = _distributor.GetTenantContainer(_tenantAccessor);
        if (tenantContainer == null)
        {
            await next(context);
            return;
        }

        IServiceProvidersFeature? originalFeature = null;
        try
        {
            var feature = new RequestServicesFeature(context, new StashboxServiceScopeFactory(tenantContainer));

            context.Response.RegisterForDisposeAsync(feature);

            originalFeature = context.Features.Get<IServiceProvidersFeature>();
            context.Features.Set<IServiceProvidersFeature>(feature);

            await next(context);
        }
        finally
        {
            context.Features.Set(originalFeature);
        }
    }

public class MultiTenantContainer : IMultiTenantContainer
{
    private int _disposed;
    private readonly object _sync = new();

    //This is the base application container
    public IStashboxContainer RootContainer { get; }

    //This action configures a container builder
    private readonly Action<IServiceCollection, IConfiguration> _configureTenantTenantContainer;

    public MultiTenantContainer(Action<IServiceCollection, IConfiguration> configureTenantContainer, IStashboxContainer rootContainer = null)
    {
        RootContainer = rootContainer ?? new StashboxContainer();
        _configureTenantTenantContainer = configureTenantContainer;
    }

    public IDependencyResolver? GetTenantContainer(ITenantAccessor tenantAccessor)
    {
        var tenant = tenantAccessor?.Tenant;
        if (tenant == null)
        {
            return null;
        }

        var tenantId = tenant.Id.ToString();

        var tenantContainer = RootContainer.GetChildContainer(tenantId);
        if (tenantContainer != null)
        {
            return tenantContainer;
        }

        lock (_sync)
        {
            tenantContainer = RootContainer.GetChildContainer(tenantId);
            if (tenantContainer != null)
            {
                return tenantContainer;
            }

            var services = new ServiceCollection();
            var tenantConfiguration = tenant.GetServiceTenantConfiguration();
            _configureTenantTenantContainer(services, tenantConfiguration);

            tenantContainer = RootContainer.CreateChildContainer(tenantId, attachToParent: true);
            services.AddSingleton(tenantContainer);
            services.CreateBuilder(tenantContainer);
            tenantContainer.Validate();
        }

        return tenantContainer;
    }

    /// <inheritdoc />
    public void Dispose()
    {
        if (Interlocked.CompareExchange(ref _disposed, 1, 0) != 0)
        {
            return;
        }

        RootContainer.Dispose();
    }

    /// <inheritdoc />
    public ValueTask DisposeAsync()
    {
        if (Interlocked.CompareExchange(ref _disposed, 1, 0) != 0)
        {
            return new ValueTask(Task.CompletedTask);
        }

        return RootContainer.DisposeAsync();
    }
}

public class MultiTenantServiceProviderFactory : IServiceProviderFactory<IMultiTenantContainer>
{
    private readonly IMultiTenantContainer _multitenantContainer;

    /// <summary>
    /// Constructs a <see cref="MultiTenantServiceProviderFactory"/>.
    /// </summary>
    /// <param name="multitenantContainer">The tenant distributor.</param>
    public MultiTenantServiceProviderFactory(MultiTenantContainer multitenantContainer)
    {
        _multitenantContainer = multitenantContainer;
    }

    /// <inheritdoc />
    public IMultiTenantContainer CreateBuilder(IServiceCollection services)
    {
        var container = services.CreateBuilder(_multitenantContainer.RootContainer);
        container.RegisterInstance(_multitenantContainer);
        container.ReMap<IServiceScopeFactory>(c => c.WithFactory(r => new StashboxServiceScopeFactory(r)));
        return _multitenantContainer;
    }

    /// <inheritdoc />
    public IServiceProvider CreateServiceProvider(IMultiTenantContainer containerBuilder)
    {
        return new StashboxServiceProvider(containerBuilder.RootContainer);
    }
}

Hey @vladimir-ilnytskyi, thank you for the snippets! I've released a new version of the main package (v5.17.0) and of the extensions (v5.7.0) that should fix this issue. IEnumerable<> services are resolved in the correct order now.
Also, based on your usage, you might find the Stashbox.AspNetCore.Multitenant package interesting. It is specifically designed for these kinds of multitenant scenarios. Let me know what you think!

Thanks a lot for the fast fix! Really appriciate how fast you reply comparing to other public repo owners =)
I remember i have tried to adopt this package but there are certain things that didn't fit:

Our tenants are not known before first request, so basically that first call will load tenant from tenant service where we store some tenant configuration based on which there might be different configurations involved (basically we use same service set for all of them) so tenant container is needed to have service options per database basically, and some per-tenant redis caching involved as well
tenant configuration often changes, so i need a mechanism how to fetch new configuration + inform all IOptionsCache to invalidate cached version and force recreate new instance.


error when accessing configuration via web UI (+PW)

Describe the bug
Error shows up in the log on GET requests (websocket connection)
Steps to reproduce

open webUI
access config enter PW
error appears in log
...

Configuration details
network:
  # schema is the HTTP schema
  # setting to `https` does not enable https, it only changes the way URLs are generated
  schema: http
  # host is the hostname or IP address
  # if the host name contains a `.local` suffix, the name will be announced on MDNS
  # docker: MDNS announcements don't work. host must be set to the docker host's name.
  host: evcc.local
  # port is the listening port for UI and api
  # evcc will listen on all available interfaces
  port: 7070

interval: 30s # control cycle interval. Interval <30s can lead to unexpected behavior, see https://docs.evcc.io/docs/reference/configuration/interval

# database configuration for persisting charge sessions and settings
# database:
#   type: sqlite
#   dsn: <path-to-db-file>

# sponsor token enables optional features (request at https://sponsor.evcc.io)
sponsortoken:  <nothing to see here>
# telemetry enables aggregated statistics
plant: <nothing to see here>
telemetry: true

# log settings
log: info
levels:
  site: info
  lp-1: info
  lp-2: info
  cache: error
  db: error

# modbus proxy for allowing external programs to reuse the evcc modbus connection
# each entry will start a proxy instance at the given port speaking Modbus TCP and
# relaying to the given modbus downstream device (either TCP or RTU, RS485 or TCP)
modbusproxy:
  #  - port: 5200
  #    uri: solar-edge:502
  #    # rtu: true
  #    # readonly: true

# meter definitions
# name can be freely chosen and is used as reference when assigning meters to site and loadpoints
# for documentation see https://docs.evcc.io/docs/devices/meters
#meters:
#  - name: Netz
#    type: template
#    template: e3dc
#    usage: grid
#    host: <nothing to see here> # IP-Adresse oder Hostname
#    port: 502 # Port (optional)
#    id: 2
# !do not uncomment!   power: Power # default value, optionally override # !do not uncomment!
# !do not uncomment!   energy: Sum # default value, optionally override # !do not uncomment!
#  - name: PV
#    type: template
#    template: e3dc
#    usage: pv
#    host: <nothing to see here> # IP-Adresse oder Hostname
#    port: 502 # Port (optional)
#  - name: HausAkku
#    type: template
#    template: e3dc
#    usage: battery
#    capacity: 24.5 #Akkukapazität netto in kWh (optional)
#    host: <nothing to see here> # IP-Adresse oder Hostname
#    port: 502 # Port (optional)

# charger definitions
# name can be freely chosen and is used as reference when assigning charger to vehicle
# for documentation see https://docs.evcc.io/docs/devices/chargers
chargers:
  - name: WallboxGarage
    type: template
    template: bender
    host: <nothing to see here> # IP-Adresse oder Hostname
    port: 502 # Port (optional)

  - name: carport
    type: template
    template: shelly
    host: <nothing to see here> # IP-Adresse oder Hostname
    user: <nothing to see here> # Benutzerkonto (bspw. E-Mail Adresse, User Id, etc.) (optional)
    password: "<nothing to see here>" # Passwort des Benutzerkontos (bei führenden Nullen bitte in einfache Hochkommata setzen) (optional)
    channel: 0 # optional
    standbypower: 100 # Leistung oberhalb des angegebenen Wertes wird als Ladeleistung gewertet (optional)

vehicles:
  - name: "<nothing to see here>"
    type: template
    template: evnotify
    title: "<nothing to see here>"
    icon: car
    akey: <nothing to see here>
    token: <nothing to see here>
    capacity: 28 # Akkukapazität in kWh (optional)
    phases: 1
    minCurrent: 6
    maxCurrent: 32

# site describes the EVU connection, PV and home battery
site:
  title: Home # display name for UI
  residualPower: 300 # additional household usage margin
  maxGridSupplyWhileBatteryCharging: 0 # ignore battery charging if AC consumption is above this value

  # loadpoint describes the charger, charge meter and connected vehicle
loadpoints:
  - title: <nothing to see here> # display name for UI
    charger: WallboxGarage # charger
#    meter: bender # charge meter
    mode: "pv" # set default charge mode, use "off" to disable by default if charger is publicly available
    vehicle: "<nothing to see here>" # Referenz auf Standardfahrzeug
    phases: # electrical connection (normal charger: default 3 for 3 phase, 1p3p charger: 0 for "auto" or 1/3 for fixed phases)
    mincurrent: 6 # minimum charge current (default 6A)
    maxcurrent: 32 # maximum charge current (default 16A)
    # remaining settings are experts-only and best left at default values
    priority: 0 # relative priority for concurrent charging in PV mode with multiple loadpoints (higher values have higher priority)
    soc:
      # polling defines usage of the vehicle APIs
      # Modifying the default settings it NOT recommended. It MAY deplete your vehicle's battery
      # or lead to vehicle manufacturer banning you from API use. USE AT YOUR OWN RISK.
      poll:
        # poll mode defines under which condition the vehicle API is called:
        #   charging: update vehicle ONLY when charging (this is the recommended default)
        #   connected: update vehicle when connected (not only charging), interval defines how often
        #   always: always update vehicle regardless of connection state, interval defines how often (only supported for single vehicle)
        mode: always
        # poll interval defines how often the vehicle API may be polled if NOT charging
        interval: 1m
      estimate: true # set false to disable interpolating between api updates (not recommended)
    enable: # pv mode enable behavior
      delay: 1m # threshold must be exceeded for this long
      threshold: 0 # grid power threshold (in Watts, negative=export). If zero, export must exceed minimum charge power to enable
    disable: # pv mode disable behavior
      delay: 3m # threshold must be exceeded for this long
      threshold: 0 # maximum import power (W)
    guardDuration: 5m # switch charger contactor not more often than this (default 5m)

  - title: Carport # display name for UI
    charger: carport # charger
# electrical connection (normal charger: default 3 for 3 phase, 1p3p charger: 0 for "auto" or 1/3 for fixed phases)
    mode: "pv" # set default charge mode, use "off" to disable by default if charger is publicly available
    # phases: 0 # electrical connection (normal charger: default 3 for 3 phase, 1p3p charger: 0 for "auto" or 1/3 for fixed phases)
    #minCurrent: 6 # minimum charge current (default 6A)
    #maxCurrent: 32 # maximum charge current (default 16A)
    #vehicle: "Ioniq" # Referenz auf Standardfahrzeug
    phases: 1
    mincurrent: 10
    maxcurrent: 10
    # remaining settings are experts-only and best left at default values
    priority: 0 # relative priority for concurrent charging in PV mode with multiple loadpoints (higher values have higher priority)
    soc:
      # polling defines usage of the vehicle APIs
      # Modifying the default settings it NOT recommended. It MAY deplete your vehicle's battery
      # or lead to vehicle manufacturer banning you from API use. USE AT YOUR OWN RISK.
      poll:
        # poll mode defines under which condition the vehicle API is called:
        #   charging: update vehicle ONLY when charging (this is the recommended default)
        #   connected: update vehicle when connected (not only charging), interval defines how often
        #   always: always update vehicle regardless of connection state, interval defines how often (only supported for single vehicle)
        mode: charging
        # poll interval defines how often the vehicle API may be polled if NOT charging
        interval: 60m
      estimate: true # set false to disable interpolating between api updates (not recommended)
    enable: # pv mode enable behavior
      delay: 1m # threshold must be exceeded for this long
      threshold: 0 # grid power threshold (in Watts, negative=export). If zero, export must exceed minimum charge power to enable
    disable: # pv mode disable behavior
      delay: 3m # threshold must be exceeded for this long
      threshold: 0 # maximum import power (W)
    guardDuration: 5m # switch charger contactor not more often than this (default 5m)

# tariffs are the fixed or variable tariffs
tariffs:
  currency: EUR # three letter ISO-4217 currency code (default EUR)
  grid:
    # either static grid price (or price zones)
    #type: fixed
    #price: 0.294 # EUR/kWh
    #zones:
    #  - days: Mon-Fri
    #    hours: 2-5
    #    price: 0.2 # EUR/kWh
    #  - days: Sat,Sun
    #    price: 0.15 # EUR/kWh

    # or variable tariffs
     type: awattar
     region: at # optional, choose at for Austria
     charges: 0.015 # optional, additional charges per kWh
     tax: 0.25 # optional, additional tax (0.1 for 10%)

  feedin:
    # rate for feeding excess (pv) energy to the grid
    type: custom
    price:
      source: http
      uri: <nothing to see here>
      method: GET # default HTTP method
      headers:
        - content-type: application/json
        - Authorization: 'Bearer <nothing to see here>'
        - connection: keep-alive
      timeout: 30m # timeout in golang duration format, see https://golang.org/pkg/time/#ParseDuration
      jq: .state #.tuples[0][1] # parse response json
co2:

#     type: electricitymaps # https://app.electricitymaps.com/map
#     uri: <nothing to see here>
#     token: <nothing to see here>
#     zone: AT

# influx database
influx:
   url: http://<nothing to see here>:8086
   database: <nothing to see here>
   user: <nothing to see here>
   password: <nothing to see here>

# push messages
messaging:
  events:
    start: # charge start event
      title: Charge of {{.vehicleTitle}} started
      msg: |
        Wallbox {{.title}} started charging {{.vehicleTitle}} in {{ toString .mode | upper }} mode.
        --------------------------
        evcc Status {{printf `(%d-%02d-%02d %02d:%02d:%02d)` now.Year now.Month now.Day now.Hour now.Minute now.Second}}
        Netz-Leistung: {{round (divf .gridPower 1000) 3 }} kW
        Solar-Leistung: {{round (divf .pvPower 1000) 3 }} kW
        Eigenverbrauch: {{round (divf .homePower 1000) 3 }} kW
        {{if .batteryConfigured}}Batteriespeicher-Status: {{round (divf .batteryPower 1000) 3 }} kW ({{.batterySoC }} %){{end}}
    stop: # charge stop event
      title: Charge of {{.vehicleTitle}} finished
      msg: |
        Wallbox {{.title}} finished charging {{.vehicleTitle}}
        with {{round (divf .chargedEnergy 1000) 2 }} kWh in {{.chargeDuration}}.
        --------------------------
        evcc Status {{printf `(%d-%02d-%02d %02d:%02d:%02d)` now.Year now.Month now.Day now.Hour now.Minute now.Second}}
        Netz-Leistung: {{round (divf .gridPower 1000) 3 }} kW
        Solar-Leistung: {{round (divf .pvPower 1000) 3 }} kW
        Eigenverbrauch: {{round (divf .homePower 1000) 3 }} kW
        {{if .batteryConfigured}}Batteriespeicher-Status: {{round (divf .batteryPower 1000) 3 }} kW ({{.batterySoC }} %){{end}}
    connect: # vehicle connect event
      title: "{{.vehicleTitle}} connected on wallbox {{.title}}"
      msg: |
        {{.vehicleTitle}} connected on wallbox {{.title}} at {{round (divf .pvPower 1000) 2 }} kW PV.
        --------------------------
        evcc Status {{printf `(%d-%02d-%02d %02d:%02d:%02d)` now.Year now.Month now.Day now.Hour now.Minute now.Second}}
        Netz-Leistung: {{round (divf .gridPower 1000) 3 }} kW
        Solar-Leistung: {{round (divf .pvPower 1000) 3 }} kW
        Eigenverbrauch: {{round (divf .homePower 1000) 3 }} kW
        {{if .batteryConfigured}}Batteriespeicher-Status: {{round (divf .batteryPower 1000) 3 }} kW ({{.batterySoC }} %){{end}}
    disconnect: # vehicle connected event
      title: "{{.vehicleTitle}} disconnected of wallbox {{.title}}"
      msg: |
        {{.vehicleTitle}} disconnected of wallbox {{.title}} after {{.connectedDuration}}.
        --------------------------
        evcc Status {{printf `(%d-%02d-%02d %02d:%02d:%02d)` now.Year now.Month now.Day now.Hour now.Minute now.Second}}
        Netz-Leistung: {{round (divf .gridPower 1000) 3 }} kW
        Solar-Leistung: {{round (divf .pvPower 1000) 3 }} kW
        Eigenverbrauch: {{round (divf .homePower 1000) 3 }} kW
        {{if .batteryConfigured}}Batteriespeicher-Status: {{round (divf .batteryPower 1000) 3 }} kW ({{.batterySoC }} %){{end}}
  services:
    - type: telegram
      token: "<nothing to see here>"
      chats:
      - <nothing to see here>

Log details
http: panic serving <IP_ADDRESS>:34346: runtime error: index out of range [0] with length 0\ngoroutine 1470 [running]:\nnet/http.(*conn).serve.func1()\n\tnet/http/server.go:1898 +0xbe\npanic({0x2c1c7a0?, 0xc0018eea08?})\n\truntime/panic.go:770 +0x132\ngithub.com/evcc-io/evcc/util/logstash.element.areaLevel({0xc00117e300?, 0xc001ae7570?})\n\tgithub.com/evcc-io/evcc/util/logstash/element.go:16 +0xd9\ngithub.com/evcc-io/evcc/util/logstash.(*logger).Areas(0x10?)\n\tgithub.com/evcc-io/evcc/util/logstash/log.go:88 +0x1e5\ngithub.com/evcc-io/evcc/util/logstash.Areas(...)\n\tgithub.com/evcc-io/evcc/util/logstash/log.go:17\ngithub.com/evcc-io/evcc/server.logAreasHandler({0x3b09490, 0xc001820a20}, 0x6?)\n\tgithub.com/evcc-io/evcc/server/http_site_handler.go:251 +0x2b\nnet/http.HandlerFunc.ServeHTTP(0xc0017a7560?, {0x3b09490?, 0xc001820a20?}, 0x41d745?)\n\tnet/http/server.go:2166 +0x29\ngithub.com/gorilla/handlers.(*cors).ServeHTTP(0xc0010fd320, {0x3b09490, 0xc001820a20}, 0xc0006807e0)\n\tgithub.com/gorilla/handlers@v1.5.2/cors.go:54 +0x335\ngithub.com/gorilla/handlers.CompressHandler.CompressHandlerLevel.func1({0x3b05180, 0xc000936c40}, 0xc0006807e0)\n\tgithub.com/gorilla/handlers@v1.5.2/compress.go:141 +0x576\nnet/http.HandlerFunc.ServeHTTP(0xc0006807e0?, {0x3b05180?, 0xc000936c40?}, 0x2b60360?)\n\tnet/http/server.go:2166 +0x29\ngithub.com/evcc-io/evcc/server.(*HTTPd).RegisterSystemHandler.ensureAuthHandler.func2.1({0x3b05180, 0xc000936c40}, 0xc0006807e0)\n\tgithub.com/evcc-io/evcc/server/http_auth.go:140 +0x94\nnet/http.HandlerFunc.ServeHTTP(0x2b95860?, {0x3b05180?, 0xc000936c40?}, 0xc?)\n\tnet/http/server.go:2166 +0x29\ngithub.com/evcc-io/evcc/server.jsonHandler.func1({0x3b05180, 0xc000936c40}, 0xc0006807e0)\n\tgithub.com/evcc-io/evcc/server/http_site_handler.go:72 +0xf6\nnet/http.HandlerFunc.ServeHTTP(0xc0006806c0?, {0x3b05180?, 0xc000936c40?}, 0x50630f?)\n\tnet/http/server.go:2166 +0x29\ngithub.com/gorilla/mux.(*Router).ServeHTTP(0xc000a84840, {0x3b05180, 0xc000936c40}, 0xc0015a9e60)\n\tgithub.com/gorilla/mux@v1.8.1/mux.go:212 +0x1e2\nnet/http.serverHandler.ServeHTTP({0xc0017a7530?}, {0x3b05180?, 0xc000936c40?}, 0x6?)\n\tnet/http/server.go:3137 +0x8e\nnet/http.(*conn).serve(0xc0010fd0e0, {0x3b0c528, 0xc001659a70})\n\tnet/http/server.go:2039 +0x5e8\ncreated by net/http.(*Server).Serve in goroutine 1\n\tnet/http/server.go:3285 +0x4b4

What type of operating system are you running?
Linux
Version
HaaS OS

selbes problem mit der version 1.126.0 , braucht ihr was von mir oder reicht euch die info das ich das problem auch habe.

Schau mal bitte in die Browser Netzwerkkonsole- gibts da einen API-Aufruf vorher? Welchen?

Closed in https://github.com/evcc-io/evcc/commit/7a3390a06a4032370555fa6f9b6f88ce3370ab27


Weekly newsletter section/category

Hi @Leocardoso94 ,
I think we should add weekly newsletter category on the website like the other languages/frameworks have. This weekly newsletter would contain all possible weekly newsletter subscription sites like https://nodeweekly.com, etc. This will help users to learn from reading the newsletter and keep them stay updated.
Please let me know what is your view on this so that I will add the category and the possible weekly newsletter links.

H @bhaskarmac
I loved the idea.
I'll leave you in charge, okay?
Any doubt you have can let me know.
Thanks!

@Leocardoso94
Thank you for this. Yes, I will add the category and start adding the newsletter links :+1:  :)

Hi @Leocardoso94
Added the category and first newsletter link. I will be adding many other links as I get time :) :fireworks:

#78


GitPOAP has notified same user at least 4 times on one repo this year

https://github.com/trufflesuite/ganache/pull/3890
https://github.com/trufflesuite/ganache/pull/4003
https://github.com/trufflesuite/ganache/pull/3351
https://github.com/trufflesuite/ganache/pull/4003
Maybe something weird is going on in their account?
Or maybe they haven't claimed and this is intended behavior of the GitPOAP bot? If that's the case, it's a bit annoying -- as the user might not want to (or can't) claim, and this notification comes off as nagging.

Five times

Twice today

we are on it - we'll be changing this behavior to make it less nagging.
definitely apologize for the annoyance on this - i too don't like getting notified too many times for the same thing.
cc @burz ~ are the changes released?

Hey all, we've just now updated the bot so it won't re-notify a user for PRs that were merged, unless they were explicitly tagged by an owner of the repository. Essentially this means that a user will be notified the first time they become eligible, but won't be notified again on additional merged PRs even if they haven't completed the claim.

Awesome! Thanks so much!

thank you for the valuable feedback btw!
all feedback is a gift 🎁 in our eyes.


Allow for cyclical node graphs

Requested by @positlabs in #93, for creating feedback loops and for feeding output back into nodes as sort of an "undo" function.
The algorithm for tracing back through the network from the target nodes will mark each node as rendered for the current pass, to prevent infinite loops. As a result, looped inputs will be one frame behind the current render pass. (I believe puredata works similarly.)

Will need to check for loops in all method calls that signal forward or backward:

render
resize
setReady?
setUnready?
setDirty?

setDirty doesn't seem to be a problem since it already checks its state. Same for ready/unready.


reset MER bit after mass erase

otherwise all subsequent erases before turning off the power will be mass erases

Looks good to me, but I'm wondering why the flash loader itself doesn't take care of resetting the MER flag?

why the flash loader itself doesn't take care of resetting the MER flag?

yes may be it will be better to reset this flag before ordinary erase.

Sorry for the late reply, thanks!


Waifu2x in real time

Hello!
I'am guessing nagadomi is the creator of Waifu2x?
Anyway, I have something I want to discuss.
Waifu2x is the best tool I have ever seen to upscale old PS1 pre-rendered backgrounds. I don't know if you have played these games, I don't even know if you are a gamer. But remember that the originals were rendered in somewhere around 320x240 pixels. That is such a low resolution even phones ten year back put it to shame.
In this batch you can see some examples of backgrounds upscaled and filtered with Waifu2x and highest noise reduction.
http://imgur.com/a/p4hxg
No filter for any emulator does it as good as this. So I'am extremely interested in getting this ported as a shader or such for PS1 emulation.
Now I have asked around at different githubs and have got very different answers from people who do this kind of work. It seems that it actualy could be possible, however it would be alot of hard work.
One issue is how demanding the Waifu2x is. I'am gonna pretend that you are not a gamer now just in case. I have a gtx 980Ti wich is at the moment one of the strongest gpu's in the world. It takes about 0.2 - 0.6 seconds for it to do one picture. (Waifu cafe) But then you gotta remember that we talk about PC-hardware wich always evolves fast. Sometime this year Nvidia will realese even stronger GPU's.
So I'am wondering how well optimized is Waifu2x? Can it be rewritten to do it faster?
I have also opened a Kickstarter for this. It is not yet approved. But if it gets succesfull there will be credits to get for those involved in this. I'am also wondering if it would be ok with you to do this? It is after all your code (I think).
I'am looking forward for an answer!  :)
/Mike

Currently, I am developing a new model that is 2x faster than current model and better upscaling quality.
(on GTX760 and 320x240 image, current model 0.77 sec, new model 0.41 sec)
But it is not reached realtime (30FPS=0.033sec, 60FPS=0.0166sec).
If you train a small(shallow) CNN model, It will be faster(quality down a little) but it cannot reach reailtime, I think.

So with the new model, if it would take 0.41 with one certain picture on a 760, it could theoreticly be done in twice the time, about 0.20 sec on a 980Ti. Pherhaps even faster. Also there has been talk about a gtx 1080Ti coming this year, wich will give even more gpu power. Besides most PS1 games run in around 20fps :) So how would you feel if your code were used for such a project? This is good news :)

waifu2x is licensed under the MIT License. You can free to use my code under the MIT License.

Ok, thank you very much. If this ever happens, I will tell you :)
One more thing, when do you think the new version will be finnished?

new version is available at https://github.com/nagadomi/waifu2x/tree/upconv (models/upconv_7/art).
Now this model has problem in a rare case(small pixel art). I will release the fixed versin in a few months.

Ok, again, thanx!

Sorry for necromancing. But is this now possible with RTX cards’ tensor cores on a 2080Ti?

Sorry for necromancing. But is this now possible with RTX cards’ tensor cores on a 2080Ti?

I don't believe so.
First, according to a comment on tensorflow issue tracker, their computation power is limited.
Second, waifu2x's models aren't that deep. A shallow network cannot utilize all computational power of GPU because it is specialized in doing infrequent large calculations, not frequent small calculations.
I might be wrong, but it definetely won't be fast enough for real time uses.

@min050820 I'm still a bit confused though as someone else stated it's not limited.
Oh well I guess inb4 I'm able to waste 6500GBP on an RTX 8000, one can only keep dreaming

@Naville Sorry for the confusion. By 'limited', I meant it not being powerful enough. Maybe if waifu2x gets more shallow (=lightweight) model, it could be possible to run in real-time, just like ESPCN, which claims to be able to run in real time with Titan X.


Associated paper for academic citation?

I'd like to refer to this project in a paper I'm working on - is there a specific reference I should use?

Thanks for contacting me.
Unfortunately, we did not publish a citable whitepaper for this project. You could provide the link to this repository as a citation. If you still wish to cite a paper, the closest publication you could use is the one describing the multi-GPU framework that powers the high-level tests: https://dl.acm.org/citation.cfm?id=2807611

Some of the micro-benchmarks (L1) are reported here as well: https://dl.acm.org/citation.cfm?id=3018756 (Section 2.1)

Great, I'm closing this issue then.

@michaelsutton, sorry to revive this issue. In the paper you mentioned, what evaluation system was used to generate figure 2? Section 5 in the paper mentions 2 systems. I'd be happy to converse over email if you prefer<EMAIL_ADDRESS>Thanks!


Add support for hllsketch aggregates

I think we should add support for a --force-hll option similar to the --force-theta option.  It looks like newer versions of plywood have built some support for this (>=0.20.8).

Please note that this project is now deprecated. Please see the Druid SQL docs for information on using SQL syntax with Druid.


serverReadyAction has a very short description

Refs: #69313
Hover over serverReadyAction - you get "Server Ready options". I suggest to put a more elaborate description of what this attribute is actually used for.
Inside the serverReadyAction all the attributes have a nice description and those are great.

I'm now using this description:
"Open a URI externally when a server program sends output of the form 'listening on port 3000' or 'Now listening on: https://localhost:5001' to the debug console."

Cool.


Function node: Monaco editor does not allow top level async / await

Current Behavior
When using the Monaco editor, top level async / await statements cause validation errors:

'await' expressions are only allowed at the top level of a file when that file is a module, but this file has no imports or exports. Consider adding an empty 'export {}' to make this file a module.(1375)
Top-level 'await' expressions are only allowed when the 'module' option is set to 'esnext' or 'system', and the 'target' option is set to 'es2017' or higher.(1378)

But since function nodes always run asynchronous, async / await should be valid. The ACE editor does not have this issue, and flows run without issues when deployed with errors.
Expected Behavior
Async / await should be usable in the top-level context of a function node.
Steps To Reproduce
Configure Node-RED to use the Monaco editor, add a new function node and add the following line:
await Promise.resolve();

This causes a validation error.
Example flow
No response
Environment

Node-RED version: 2.0.6
Node.js version: 14.17
npm version: 7
Platform/OS: MacOS
Browser: any

@Steve-Mcl can you take a look at this at some point?
The Function node's code is implicitly wrapped in an async function so we can support top-level await. Is there a way to get monaco to cope with that?

I would say as long as they are non-breaking then yes... don't want to get too far behind then get caught out with a massive update.

Thanks @Steve-Mcl
As part of the update we need to get your Monaco build repository into the Node-RED org and add some automation around it to help with future upgrades. Will pick that up in the week.

Ok Nick no problem let me know if you need any info or help.


docs: Add information about dynamic static split server islands

Description (required)

This PR is the documentation follow-on to this PR which adds the ability to serve the server islands from a separate domain.

For Astro version: 5.1. See astro PR 12560.

First-time contributor to Astro Docs?
jake_roberts

Lunaria Status Overview
🌕 This pull request will trigger status changes.

Learn more
By default, every PR changing files present in the Lunaria configuration's files property will be considered and trigger status changes accordingly.
You can change this by adding one of the keywords present in the ignoreKeywords property in your Lunaria configuration file in the PR's title (ignoring all files) or by including a tracker directive in the merged commit's description.

Tracked Files

File
Note

en/reference/integrations-reference.mdx
Source changed, localizations will be marked as outdated.

Warnings reference

Icon
Description

🔄
The source for this localization has been updated since the creation of this pull request, make sure all changes in the source have been applied.


chore: align config constructor pattern across instrumentations

There are dozens of instrumentations in this repo, written at different times by different people.
Few different patterns emerged on how to handle the config object in Instrumentation constructor. This PR aims to introduce a common pattern to have consistency across the repo.
This PR aligns all the instrumentations to use:
  constructor(config: FooInstrumentationConfig = {}) {
    super('@opentelemetry/instrumentation-foo', VERSION, config);
  }

After https://github.com/open-telemetry/opentelemetry-js/pull/4659 lands, we can introduce even more consistency and cleanups on the handling of config in instrumentations.
This PR only targets the constructor and super invocation usage

Looks like we are just missing Mongoose and Koa, feel free to grab this commit if it's easiest. Otherwise this looks good.

right! I missed those. thanks for spotting. added them to the PR

The TAV test for Node.js v16 failed on instr-undici with<EMAIL_ADDRESS>https://github.com/open-telemetry/opentelemetry-js-contrib/actions/runs/8899428327/job/24438782853?pr=2162
-- required packages<EMAIL_ADDRESS>-- installing<EMAIL_ADDRESS>-- running test "npm run test" with undici (env: {})

><EMAIL_ADDRESS>test
> nyc ts-mocha -p tsconfig.json test/**/*.test.ts

  UndiciInstrumentation `fetch` tests
    disable()
      - should not create spans when disabled
    enable()
      - should create valid spans even if the configuration hooks fail
      - should create valid spans with empty configuration
      - should create valid spans with the given configuration
      - should not create spans without parent if required in configuration
      - should not create spans with parent if required in configuration
      - should capture errors using fetch API
      - should capture error if fetch request is aborted

  UndiciInstrumentation metrics tests
    with fetch API
      - should report "http.client.request.duration" metric
      - should have error.type in "http.client.request.duration" metric

  UndiciInstrumentation `undici` tests
    disable()
      ✓ should not create spans when disabled (38ms)
    enable()
      ✓ should ignore requests based on the result of ignoreRequestHook
      - should create valid spans for different request methods
      ✓ should create valid spans for "request" method
      ✓ should create valid spans for "fetch" method
      ✓ should create valid spans for "stream" method
      ✓ should create valid spans for "dispatch" method
      ✓ should create valid spans even if the configuration hooks fail
      ✓ should not create spans without parent if required in configuration
      ✓ should create spans with parent if required in configuration
      1) should capture errors while doing request
      ✓ should capture error if undici request is aborted

  10 passing (2s)
  11 pending
  1 failing

  1) UndiciInstrumentation `undici` tests
       enable()
         should capture errors while doing request:
     Error: Timeout of 2000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves. (/home/runner/work/opentelemetry-js-contrib/opentelemetry-js-contrib/plugins/node/instrumentation-undici/test/undici.test.ts)
      at listOnTimeout (node:internal/timers:559:17)
      at processTimers (node:internal/timers:502:7)

I'll re-run that test. I can't see how this PR would ahve caused it.