[YouTube] Channel about page parsing broken parse pop up request instead

DO NOT REMOVE OR SKIP THE ISSUE TEMPLATE

[X] I understand that I will be blocked if I intentionally remove or skip any mandatory* field

Checklist

[X] I'm reporting that yt-dlp is broken on a supported site
[X] I've verified that I have updated yt-dlp to nightly or master (update instructions)
[X] I've checked that all provided URLs are playable in a browser with the same IP and same login details
[X] I've checked that all URLs and arguments with special characters are properly quoted or escaped
[X] I've searched known issues and the bugtracker for similar issues including closed ones. DO NOT post duplicates
[X] I've read the guidelines for opening an issue
[ ] I've read about sharing account credentials and I'm willing to share it if required

Region
No response
Provide a description that is worded well enough to be understood
Previously yt-dlp was able to parse channel about pages. Since YT technically removed the /about page and replaced it with a pop up, yt-dlp will throw an error This channel does not have a about page, even though you can still access the about page in the browser, YT will just open the pop up right away.
Would it be feasible to parse that popup response? This way we could access:

Channel View Count, aka view_count
Video count, aka playlist_count

I did some investigation, looks like the pop up is populated with a secondary POST request to https://www.youtube.com/youtubei/v1/browse?key=<INNERTUBE_API_KEY>&prettyPrint=false that then returns the aboutChannelViewModel which contains viewCountText and videoCountText. From my observation, these just needs some parsing but returns the actual number, not just the next rounded 1000 or similar, e.g. viewCountText: "518,108,427 views" and videoCountText: "276 videos".
I would suggest to parse that for all channel requests, to have that metadata available. Additionally this would also solve the current limitation of not knowing how many videos a channel has without scraping all pages.
Tube Archivist users would greatly appreciate that. :-)
Provide verbose output that clearly demonstrates the problem

[X] Run your yt-dlp command with -vU flag added (yt-dlp -vU <your command line>)
[ ] If using API, add 'verbose': True to YoutubeDL params instead
[X] Copy the WHOLE output (starting with [debug] Command-line config) and insert it below

Complete Verbose Output
~ ❯ yt-dlp -vU --dump-json 'https://www.youtube.com/@LinusTechTips/about'                                                       ⏎
[debug] Command-line config: ['-vU', '--dump-json', 'https://www.youtube.com/@LinusTechTips/about']
[debug] Encodings: locale UTF-8, fs utf-8, pref UTF-8, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version<EMAIL_ADDRESS>from yt-dlp/yt-dlp [24f827875]
[debug] Python 3.11.5 (CPython x86_64 64bit) - Linux-6.1.62-1-lts-x86_64-with-glibc2.38 (OpenSSL 3.1.4 24 Oct 2023, glibc 2.38)
[debug] exe versions: ffmpeg 6.0 (setts), ffprobe 6.0
[debug] Optional libraries: certifi-2023.07.22, requests-2.31.0, sqlite3-3.44.0, urllib3-1.26.15
[debug] Proxy map: {}
[debug] Request Handlers: urllib
[debug] Loaded 1901 extractors
[debug] Fetching release info: https://api.github.com/repos/yt-dlp/yt-dlp/releases/latest
Latest version<EMAIL_ADDRESS>from yt-dlp/yt-dlp
yt-dlp is up to date<EMAIL_ADDRESS>from yt-dlp/yt-dlp)
[youtube:tab] Extracting URL: https://www.youtube.com/@LinusTechTips/about
[youtube:tab] @LinusTechTips/about: Downloading webpage
[debug] [youtube:tab] Selected tab: 'featured' (home), Requested tab: 'about'
ERROR: [youtube:tab] @LinusTechTips: This channel does not have a about tab
  File "/usr/lib/python3.11/site-packages/yt_dlp/extractor/common.py", line 715, in extract
    ie_result = self._real_extract(url)
                ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/yt_dlp/extractor/youtube.py", line 4623, in wrapper
    info_dict = func(self, url, smuggled_data)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/yt_dlp/extractor/youtube.py", line 6575, in _real_extract
    raise ExtractorError(f'This channel does not have a {original_tab_id} tab', expected=True)

Please keep in mind the the number of videos listed there can be much larger than the actual total number of videos you'll see on all channel tabs, because it also includes things like age-restricted videos that aren't listed on the channel pages, unless you are logged in with an age-verified account.

Previously yt-dlp was able to parse channel about pages.

What did this used to return? Do you have a sample infojson?

Unfortunately I didn't keep any sample output from the before times, but it would return something similar as it does now on the main channel page, or at least that's how I have been using it to extract channel metadata. E.g.
obs = {"playlist_items": "0,0"}
url = "https://www.youtube.com/@primitivetechnology9550"
yt_dlp.YoutubeDL(self.obs).extract_info(url)

At the moment this returns:
{
    "id": "UCAL3JXZSzSm8AlZyD3nQdBA",
    "channel": "Primitive Technology",
    "channel_id": "UCAL3JXZSzSm8AlZyD3nQdBA",
    "title": "Primitive Technology - Videos",
    "availability": null,
    "channel_follower_count": 10800000,
    "description": "Primitive technology is a hobby where <trimmed for clarity>",
    "tags": [],
    "thumbnails": ["<trimmed for clarity>"],
    "uploader_id": "@primitivetechnology9550",
    "uploader_url": "https://www.youtube.com/@primitivetechnology9550",
    "channel_is_verified": true,
    "modified_date": null,
    "view_count": null,
    "playlist_count": null,
    "uploader": "Primitive Technology",
    "channel_url": "https://www.youtube.com/channel/UCAL3JXZSzSm8AlZyD3nQdBA",
    "_type": "playlist",
    "entries": [],
    "extractor_key": "YoutubeTab",
    "extractor": "youtube:tab",
    "webpage_url": "https://www.youtube.com/@primitivetechnology9550/videos",
    "original_url": "https://www.youtube.com/@primitivetechnology9550",
    "webpage_url_basename": "videos",
    "webpage_url_domain": "youtube.com",
    "requested_entries": [],
    "epoch":<PHONE_NUMBER>
}

But it would be able to extract view_count, which is an nice statistic to have. And by recreating the popup post request, this could now potentially also extract playlist_count, which before would always be empty.
For reference, archive.org example how the old about page looked like: https://web.archive.org/web/20230305221909/https://www.youtube.com/@primitivetechnology9550/about

I had a very brief look into this the other day. It seems like they have removed the tab altogether.
from a quick look there appears to be a new browse request to this this info, with a token. I imagine the token comes from the channel header.
off the top of my head, some possible approaches to look into:

provide compat and manually add support for making this request when /about tab is provided to yt-dlp

worth checking what youtube responds with in the initial data when this is passed

request the about data for every channel url

I don't really have time myself to work on youtube support atm, so if not for another maintainer, someone can feel free to take a crack at this. Feel free to @ me on discord to pull information re: innertube and youtube extractor out of me.

This is one of those things that just happened to work because of how relaxed our parser is. Making additional request for the popup is a slippery slope imo, and I'm not sure it's worth it. As a general rule of thumb, we do not support pages that don't have videos; and if this weren't working before, I'd have immediately closed it as out of scope.
Extracting "something similar as it does now on the main channel page" is trivial, but that way it wouldn't be able to extract view_count. The only way to get that is to perform special handling for the about page.
As for playlist_count, we can't extract it anyways. The "playlist" being extracted is the about page, and it's correct length is zero, not the channel's video count. We'd have to make a separate field for channel video count.

OK, I understand not wanting to to do make this additional request for the about popup, let's discard that.
As before, every channel would have an about tab, and that was an reliable way to extract channel metadata. At the moment, the above request against the main channel page will fail if the channel doesn't have any videos with a message: This channel has no uploads. This makes sense if you want to download videos from a channel, but to just extract info, this should be allowed to pass so it can return the rest of the metadata. For TubeArchivist, a channel might still have playlists for example... Unfortunately using the option ignoreerrors doesn't seem to apply here. Strangely enough, requests against the /featured page, will succeed.
Example on a channel without videos:
obs = {
    "playlist_items": "0,0",
    "verbose": True,
}
url = "https://www.youtube.com/@NoMagicVideos"
yt_dlp.YoutubeDL(obs).extract_info(url)

will fail with
[debug] Encodings: locale UTF-8, fs utf-8, pref UTF-8, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version<EMAIL_ADDRESS>from yt-dlp/yt-dlp [24f827875] (pip) API
[debug] params: {'playlist_items': '0,0', 'verbose': True, 'compat_opts': set(), 'http_headers': {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.85 Safari/537.36', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'Accept-Language': 'en-us,en;q=0.5', 'Sec-Fetch-Mode': 'navigate'}}
[debug] Python 3.11.3 (CPython x86_64 64bit) - Linux-5.15.0-89-generic-x86_64-with-glibc2.31 (OpenSSL 1.1.1n  15 Mar 2022, glibc 2.31)
[debug] exe versions: ffmpeg N-112890-g0a13178de8-20231202 (setts), ffprobe N-112890-g0a13178de8-20231202
[debug] Optional libraries: Cryptodome-3.19.0, brotli-1.1.0, certifi-2023.11.17, mutagen-1.47.0, requests-2.31.0, sqlite3-3.34.1, urllib3-2.1.0, websockets-12.0
[debug] Proxy map: {}
[debug] Request Handlers: urllib, requests
[debug] Loaded 1901 extractors
[youtube:tab] Extracting URL: https://www.youtube.com/@NoMagicVideos
[youtube:tab] @NoMagicVideos: Downloading webpage
[debug] [youtube:tab] Selected tab: 'featured' (home), Requested tab: ''
[youtube:tab] Downloading all uploads of the channel. To download only the videos in a specific tab, pass the tab's URL
ERROR: [youtube:tab] @NoMagicVideos: This channel has no uploads
  File "/root/.local/lib/python3.11/site-packages/yt_dlp/extractor/common.py", line 715, in extract
    ie_result = self._real_extract(url)
                ^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.local/lib/python3.11/site-packages/yt_dlp/extractor/youtube.py", line 4623, in wrapper
    info_dict = func(self, url, smuggled_data)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.local/lib/python3.11/site-packages/yt_dlp/extractor/youtube.py", line 6550, in _real_extract
    raise ExtractorError('This channel has no uploads', expected=True)

meanwhile
obs = {
    "playlist_items": "0,0",
    "verbose": True,
}
url = "https://www.youtube.com/@NoMagicVideos/featured"  ## <-- note the 'featured' path here
yt_dlp.YoutubeDL(obs).extract_info(url)

will succeed:
[debug] Encodings: locale UTF-8, fs utf-8, pref UTF-8, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version<EMAIL_ADDRESS>from yt-dlp/yt-dlp [24f827875] (pip) API
[debug] params: {'playlist_items': '0,0', 'verbose': True, 'compat_opts': set(), 'http_headers': {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.85 Safari/537.36', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'Accept-Language': 'en-us,en;q=0.5', 'Sec-Fetch-Mode': 'navigate'}}
[debug] Python 3.11.3 (CPython x86_64 64bit) - Linux-5.15.0-89-generic-x86_64-with-glibc2.31 (OpenSSL 1.1.1n  15 Mar 2022, glibc 2.31)
[debug] exe versions: ffmpeg N-112890-g0a13178de8-20231202 (setts), ffprobe N-112890-g0a13178de8-20231202
[debug] Optional libraries: Cryptodome-3.19.0, brotli-1.1.0, certifi-2023.11.17, mutagen-1.47.0, requests-2.31.0, sqlite3-3.34.1, urllib3-2.1.0, websockets-12.0
[debug] Proxy map: {}
[debug] Request Handlers: urllib, requests
[debug] Loaded 1901 extractors
[youtube:tab] Extracting URL: https://www.youtube.com/@NoMagicVideos/featured
[youtube:tab] @NoMagicVideos/featured: Downloading webpage
[debug] [youtube:tab] Selected tab: 'featured' (home), Requested tab: 'featured'
[download] Downloading playlist: NoMagic - Home
[youtube:tab] Playlist NoMagic - Home: Downloading 0 items
[debug] The information of all playlist entries will be held in memory
[download] Finished downloading playlist: NoMagic - Home

then holds the expected channel metadata as above.
Honestly that's a good enough workaround for now. But would it make sense to align these behavior? As in if you extract info on a channel, it's fine to not have any videos? That would future prove things, who knows if YT is going to remove the /featured endpoint some day...

iirc we had discussed plans to revert that error behaviour (i.e not raise an error when there are no videos). Just never for around to implementing it

Now both /about page and channels without videos return an empty playlist with channel metadata instead of erroring


Azure DevOps /w Scale Sets & Custom Images: Instances not coming up

Agent Version and Platform
Version of your agent? v2.198.3
OS of the machine running the agent? Windows Custom Image via Azure Image Builder
Azure DevOps Type and Version
dev.azure.com
If dev.azure.com, what is your organization name? https://dev.azure.com/Car-Software-Organisation
What's not working?
My goal is to set up a scale set that is managed by Azure DevOps trough the Azure Pipelines Agent.
The image for the scale set is a custom one generated with the Azure Image Builder.
The base image used is:
"publisher": "microsoftvisualstudio",
"offer": "visualstudio2019latest",
"sku": "vs-2019-ent-latest-ws2019",
"version": "latest"
The only things happening throughout the image configuration is to remove AzureRm and install Az, as well as installing the latest Windows Updates. Afterwards the Image gets sysprepped, generalized and uploaded to an Azure Compute Gallery.
From there it is then referenced in the scaleset.
When I now create the scaleset the instances start up and quickly reach the state "Running" after a minute or so.
But when I now add the scaleset as an agent pool in Azure DevOps the instances go back to the state "Creating (Running)" and stay there.
Running the diag shows a ping error but the instance has outbound internet connectivity.
The download of the files required for the agent seems to work as the folder C:\agent exists and has content.
I do not see the pipelines agent service running on the instance when looking in services.msc
Could this be a windows permission issue that prohibits the extension from running the pipelines agent as a service?
What I tried so far:

use a the generic base image in the same subnet and automatically add the scaleset as an agent pool -> works
use a generic vm in the same subnet and manually add the scaleset as an agent pool -> works
log onto the custom image scale set instance and configure the agent manually -> works (instance stays in state "Creating (Running)" but is detected in ADO and can serve pipelines)

I would appreciate some help with troubleshooting.
Agent and Worker's Diagnostic Logs
[2022-02-21 09:25:17Z INFO AgentProcess] Agent package win-x64.
[2022-02-21 09:25:17Z INFO AgentProcess] Running on Windows (X64).
[2022-02-21 09:25:17Z INFO AgentProcess] RuntimeInformation: Microsoft Windows 10.0.17763.
[2022-02-21 09:25:17Z INFO AgentProcess] Version: 2.198.3
[2022-02-21 09:25:17Z INFO AgentProcess] Commit: 0b39ab9a35348f4f3ea8e021d25be2f311f03225
[2022-02-21 09:25:17Z INFO AgentProcess] Culture: en-US
[2022-02-21 09:25:17Z INFO AgentProcess] UI Culture: en-US
[2022-02-21 09:25:17Z INFO HostContext] Well known directory 'Bin': 'C:\agent\vsts-agent-win-x64-2.198.3\bin'
[2022-02-21 09:25:17Z INFO HostContext] Well known directory 'Root': 'C:\agent\vsts-agent-win-x64-2.198.3'
[2022-02-21 09:25:17Z INFO AgentProcess] Validating directory permissions for: 'C:\agent\vsts-agent-win-x64-2.198.3'
[2022-02-21 09:25:17Z INFO PowerShellExeUtil] Generation: '1'
[2022-02-21 09:25:17Z INFO PowerShellExeUtil] Key name 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine', value name 'PowerShellVersion': '2.0'
[2022-02-21 09:25:17Z INFO PowerShellExeUtil] Unsupported version. Skipping.
[2022-02-21 09:25:17Z INFO PowerShellExeUtil] Generation: '3'
[2022-02-21 09:25:17Z INFO PowerShellExeUtil] Key name 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine', value name 'PowerShellVersion': '5.1.17763.1'
[2022-02-21 09:25:17Z INFO PowerShellExeUtil] Key name 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine', value name 'ApplicationBase': 'C:\Windows\System32\WindowsPowerShell\v1.0'
[2022-02-21 09:25:17Z INFO AgentProcess] Key name 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework', value name 'InstallRoot': 'C:\Windows\Microsoft.NET\Framework64\'
[2022-02-21 09:25:17Z INFO AgentProcess] Key name 'SOFTWARE\Microsoft\NET Framework Setup\NDP' contains sub keys:
[2022-02-21 09:25:17Z INFO AgentProcess]  'CDF'
[2022-02-21 09:25:17Z INFO AgentProcess]  'v3.0'
[2022-02-21 09:25:17Z INFO AgentProcess]  'v4'
[2022-02-21 09:25:17Z INFO AgentProcess]  'v4.0'
[2022-02-21 09:25:17Z INFO AgentProcess] Key name 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.0', value name 'Version' is null.
[2022-02-21 09:25:17Z INFO AgentProcess] Key name 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.0', value name '' is null.
[2022-02-21 09:25:17Z INFO AgentProcess] Key name 'SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.0' contains sub keys:
[2022-02-21 09:25:17Z INFO AgentProcess]  'Setup'
[2022-02-21 09:25:17Z INFO AgentProcess] Key name 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.0\Setup', value name 'Version' is null.
[2022-02-21 09:25:17Z INFO AgentProcess] Key name 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4', value name 'Version' is null.
[2022-02-21 09:25:17Z INFO AgentProcess] Key name 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4', value name '' is null.
[2022-02-21 09:25:17Z INFO AgentProcess] Key name 'SOFTWARE\Microsoft\NET Framework Setup\NDP\v4' contains sub keys:
[2022-02-21 09:25:17Z INFO AgentProcess]  'Client'
[2022-02-21 09:25:17Z INFO AgentProcess]  'Full'
[2022-02-21 09:25:17Z INFO AgentProcess] Key name 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Client', value name 'Version': '4.7.03190'
[2022-02-21 09:25:17Z INFO AgentProcess] Key name 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Client', value name 'Install': '1'
[2022-02-21 09:25:17Z INFO AgentProcess] Key name 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Client', value name 'InstallPath': 'C:\Windows\Microsoft.NET\Framework64\v4.0.30319\'
[2022-02-21 09:25:17Z INFO AgentProcess] Key name 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Client', value name 'Release': '461814'
[2022-02-21 09:25:17Z INFO AgentProcess] Type is System.Int32
[2022-02-21 09:25:17Z INFO AgentProcess] Interpreted version: 4.7.0
[2022-02-21 09:25:17Z INFO AgentProcess] Key name 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full', value name 'Version': '4.7.03190'
[2022-02-21 09:25:17Z INFO AgentProcess] Key name 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full', value name 'Install': '1'
[2022-02-21 09:25:17Z INFO AgentProcess] Key name 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full', value name 'InstallPath': 'C:\Windows\Microsoft.NET\Framework64\v4.0.30319\'
[2022-02-21 09:25:17Z INFO AgentProcess] Key name 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full', value name 'Release': '461814'
[2022-02-21 09:25:17Z INFO AgentProcess] Type is System.Int32
[2022-02-21 09:25:17Z INFO AgentProcess] Interpreted version: 4.7.0
[2022-02-21 09:25:17Z INFO AgentProcess] Key name 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4.0', value name 'Version' is null.
[2022-02-21 09:25:17Z INFO AgentProcess] Key name 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4.0', value name '': 'deprecated'
[2022-02-21 09:25:17Z INFO AgentProcess] Found 2 versions:
[2022-02-21 09:25:17Z INFO AgentProcess]  4.7.0
[2022-02-21 09:25:17Z INFO AgentProcess]  4.7.0
[2022-02-21 09:25:17Z INFO AgentProcess] Testing for min NET Framework version: '4.5'
[2022-02-21 09:25:17Z INFO HostContext] Well known directory 'Bin': 'C:\agent\vsts-agent-win-x64-2.198.3\bin'
[2022-02-21 09:25:17Z INFO HostContext] Well known directory 'Root': 'C:\agent\vsts-agent-win-x64-2.198.3'
[2022-02-21 09:25:17Z INFO CommandSettings] Run {
  "Commit": false,
  "Diagnostics": true,
  "RunOnce": false,
  "StartupType": null,
  "Help": false,
  "Version": false
}
[2022-02-21 09:25:17Z INFO AgentProcess] Arguments parsed
[2022-02-21 09:25:17Z INFO HostContext] Well known directory 'Bin': 'C:\agent\vsts-agent-win-x64-2.198.3\bin'
[2022-02-21 09:25:17Z INFO HostContext] Well known directory 'Root': 'C:\agent\vsts-agent-win-x64-2.198.3'
[2022-02-21 09:25:17Z INFO HostContext] Well known config file 'Proxy': 'C:\agent\vsts-agent-win-x64-2.198.3\.proxy'
[2022-02-21 09:25:17Z INFO VstsAgentWebProxy] No proxy setting found.
[2022-02-21 09:25:18Z INFO HostContext] Well known directory 'Bin': 'C:\agent\vsts-agent-win-x64-2.198.3\bin'
[2022-02-21 09:25:18Z INFO HostContext] Well known directory 'Root': 'C:\agent\vsts-agent-win-x64-2.198.3'
[2022-02-21 09:25:18Z INFO HostContext] Well known config file 'Certificates': 'C:\agent\vsts-agent-win-x64-2.198.3\.certificates'
[2022-02-21 09:25:18Z INFO AgentCertificateManager] No certificate setting found.
[2022-02-21 09:25:18Z INFO Agent] ExecuteCommand
[2022-02-21 09:25:18Z INFO ConfigurationStore] currentAssemblyLocation: C:\agent\vsts-agent-win-x64-2.198.3\bin\Agent.Listener.dll
[2022-02-21 09:25:18Z INFO HostContext] Well known directory 'Bin': 'C:\agent\vsts-agent-win-x64-2.198.3\bin'
[2022-02-21 09:25:18Z INFO ConfigurationStore] binPath: C:\agent\vsts-agent-win-x64-2.198.3\bin
[2022-02-21 09:25:18Z INFO HostContext] Well known directory 'Bin': 'C:\agent\vsts-agent-win-x64-2.198.3\bin'
[2022-02-21 09:25:18Z INFO HostContext] Well known directory 'Root': 'C:\agent\vsts-agent-win-x64-2.198.3'
[2022-02-21 09:25:18Z INFO ConfigurationStore] RootFolder: C:\agent\vsts-agent-win-x64-2.198.3
[2022-02-21 09:25:18Z INFO HostContext] Well known directory 'Bin': 'C:\agent\vsts-agent-win-x64-2.198.3\bin'
[2022-02-21 09:25:18Z INFO HostContext] Well known directory 'Root': 'C:\agent\vsts-agent-win-x64-2.198.3'
[2022-02-21 09:25:18Z INFO HostContext] Well known config file 'Agent': 'C:\agent\vsts-agent-win-x64-2.198.3\.agent'
[2022-02-21 09:25:18Z INFO ConfigurationStore] ConfigFilePath: C:\agent\vsts-agent-win-x64-2.198.3\.agent
[2022-02-21 09:25:18Z INFO HostContext] Well known directory 'Bin': 'C:\agent\vsts-agent-win-x64-2.198.3\bin'
[2022-02-21 09:25:18Z INFO HostContext] Well known directory 'Root': 'C:\agent\vsts-agent-win-x64-2.198.3'
[2022-02-21 09:25:18Z INFO HostContext] Well known config file 'Credentials': 'C:\agent\vsts-agent-win-x64-2.198.3\.credentials'
[2022-02-21 09:25:18Z INFO ConfigurationStore] CredFilePath: C:\agent\vsts-agent-win-x64-2.198.3\.credentials
[2022-02-21 09:25:18Z INFO HostContext] Well known directory 'Bin': 'C:\agent\vsts-agent-win-x64-2.198.3\bin'
[2022-02-21 09:25:18Z INFO HostContext] Well known directory 'Root': 'C:\agent\vsts-agent-win-x64-2.198.3'
[2022-02-21 09:25:18Z INFO HostContext] Well known config file 'Service': 'C:\agent\vsts-agent-win-x64-2.198.3\.service'
[2022-02-21 09:25:18Z INFO ConfigurationStore] ServiceConfigFilePath: C:\agent\vsts-agent-win-x64-2.198.3\.service
[2022-02-21 09:25:18Z INFO HostContext] Well known directory 'Bin': 'C:\agent\vsts-agent-win-x64-2.198.3\bin'
[2022-02-21 09:25:18Z INFO HostContext] Well known directory 'Root': 'C:\agent\vsts-agent-win-x64-2.198.3'
[2022-02-21 09:25:18Z INFO HostContext] Well known config file 'Autologon': 'C:\agent\vsts-agent-win-x64-2.198.3\.autologon'
[2022-02-21 09:25:18Z INFO ConfigurationStore] AutoLogonSettingsFilePath: C:\agent\vsts-agent-win-x64-2.198.3\.autologon
[2022-02-21 09:25:18Z INFO HostContext] Well known directory 'Bin': 'C:\agent\vsts-agent-win-x64-2.198.3\bin'
[2022-02-21 09:25:18Z INFO HostContext] Well known directory 'Root': 'C:\agent\vsts-agent-win-x64-2.198.3'
[2022-02-21 09:25:18Z INFO HostContext] Well known config file 'Options': 'C:\agent\vsts-agent-win-x64-2.198.3\.options'
[2022-02-21 09:25:18Z INFO ConfigurationStore] RuntimeOptionsFilePath: C:\agent\vsts-agent-win-x64-2.198.3\.options
[2022-02-21 09:25:18Z INFO HostContext] Well known directory 'Bin': 'C:\agent\vsts-agent-win-x64-2.198.3\bin'
[2022-02-21 09:25:18Z INFO HostContext] Well known directory 'Root': 'C:\agent\vsts-agent-win-x64-2.198.3'
[2022-02-21 09:25:18Z INFO HostContext] Well known config file 'SetupInfo': 'C:\agent\vsts-agent-win-x64-2.198.3\.setup_info'
[2022-02-21 09:25:18Z INFO ConfigurationStore] SetupInfoFilePath: C:\agent\vsts-agent-win-x64-2.198.3\.setup_info
[2022-02-21 09:25:18Z INFO Terminal] WRITE LINE:
  ___                      ______ _            _ _
 / _ \                     | ___ (_)          | (_)
/ /_\ \_____   _ _ __ ___  | |_/ /_ _ __   ___| |_ _ __   ___  ___
|  _  |_  / | | | '__/ _ \ |  __/| | '_ \ / _ \ | | '_ \ / _ \/ __|
| | | |/ /| |_| | | |  __/ | |   | | |_) |  __/ | | | | |  __/\__ \
\_| |_/___|\__,_|_|  \___| \_|   |_| .__/ \___|_|_|_| |_|\___||___/
                                   | |
        agent v2.198.3             |_|          (commit 0b39ab9)

[2022-02-21 09:25:18Z INFO Terminal] WRITE LINE: Running Diagnostics Only...
[2022-02-21 09:25:18Z INFO Terminal] WRITE LINE:
[2022-02-21 09:25:18Z INFO Terminal] WRITE LINE: ----- Diagnostics for Networking -----
[2022-02-21 09:25:18Z INFO Terminal] WRITE LINE: *** DnsTest ***
[2022-02-21 09:25:18Z INFO Terminal] WRITE LINE: GetHostEntry: www.bing.com returns:
[2022-02-21 09:25:18Z INFO Terminal] WRITE LINE:     <IP_ADDRESS>
[2022-02-21 09:25:18Z INFO Terminal] WRITE LINE:     <IP_ADDRESS>
[2022-02-21 09:25:18Z INFO Terminal] WRITE LINE: *** DnsTest Succeeded ***
[2022-02-21 09:25:18Z INFO Terminal] WRITE LINE:
[2022-02-21 09:25:18Z INFO Terminal] WRITE LINE: *** PingTest ***
[2022-02-21 09:25:18Z INFO Terminal] WRITE LINE: Attempt to Ping: www.bing.com with timeout 10000
[2022-02-21 09:25:27Z INFO Terminal] WRITE LINE: Address: <IP_ADDRESS>
[2022-02-21 09:25:27Z INFO Terminal] WRITE LINE: Status: TimedOut
[2022-02-21 09:25:27Z INFO Terminal] WRITE LINE: Round trip time: 0
[2022-02-21 09:25:27Z ERR  Terminal] WRITE ERROR: Unsuccessful status response from www.bing.com.  Verify internet connection is working
[2022-02-21 09:25:27Z ERR  Terminal] WRITE ERROR: *** PingTest Failed ***
[2022-02-21 09:25:27Z INFO Terminal] WRITE LINE:
[2022-02-21 09:25:27Z INFO Terminal] WRITE LINE: *** MtuInfo ***
[2022-02-21 09:25:27Z INFO Terminal] WRITE LINE: IP interface information for adpgrsage00005G.adpgrsage00005G
[2022-02-21 09:25:27Z INFO Terminal] WRITE LINE:
[2022-02-21 09:25:27Z INFO Terminal] WRITE LINE: Microsoft Hyper-V Network Adapter #3
[2022-02-21 09:25:27Z INFO Terminal] WRITE LINE:   IPv4 MTU ............................... : 1500
[2022-02-21 09:25:27Z INFO Terminal] WRITE LINE:   IPv6 MTU ............................... : 1500
[2022-02-21 09:25:27Z INFO Terminal] WRITE LINE: Software Loopback Interface 1
[2022-02-21 09:25:27Z INFO Terminal] WRITE LINE:   IPv4 MTU ............................... : -1
[2022-02-21 09:25:27Z INFO Terminal] WRITE LINE:   IPv6 MTU ............................... : -1
[2022-02-21 09:25:27Z INFO Terminal] WRITE LINE: *** MtuInfo Completed ***
[2022-02-21 09:25:27Z INFO Terminal] WRITE LINE:
[2022-02-21 09:25:27Z INFO Terminal] WRITE LINE: Networking 1 or more diagnostics tests FAILED!
[2022-02-21 09:25:27Z INFO Terminal] WRITE LINE:
[2022-02-21 09:25:27Z INFO Terminal] WRITE LINE:
[2022-02-21 09:25:27Z INFO Terminal] WRITE LINE: ----- Diagnostics for Disk Health -----
[2022-02-21 09:25:27Z INFO Terminal] WRITE LINE: *** DiskInfo ***
[2022-02-21 09:25:27Z INFO Terminal] WRITE LINE: Agent running on Drive C:\
[2022-02-21 09:25:27Z INFO Terminal] WRITE LINE: Drive A:\
[2022-02-21 09:25:27Z INFO Terminal] WRITE LINE:   Drive type: Removable
[2022-02-21 09:25:28Z INFO Terminal] WRITE LINE:   Drive is not Ready
[2022-02-21 09:25:28Z INFO Terminal] WRITE LINE: Drive C:\
[2022-02-21 09:25:28Z INFO Terminal] WRITE LINE:   Drive type: Fixed
[2022-02-21 09:25:28Z INFO Terminal] WRITE LINE:   Volume label: Windows
[2022-02-21 09:25:28Z INFO Terminal] WRITE LINE:   File system: NTFS
[2022-02-21 09:25:28Z INFO Terminal] WRITE LINE:   Available space to current user:     76,596,680 KB
[2022-02-21 09:25:28Z INFO Terminal] WRITE LINE:   Total available space:               76,596,680 KB
[2022-02-21 09:25:28Z INFO Terminal] WRITE LINE:   Total size of drive:                132,656,124 KB
[2022-02-21 09:25:28Z INFO Terminal] WRITE LINE: Drive D:\
[2022-02-21 09:25:28Z INFO Terminal] WRITE LINE:   Drive type: Fixed
[2022-02-21 09:25:28Z INFO Terminal] WRITE LINE:   Volume label: Temporary Storage
[2022-02-21 09:25:28Z INFO Terminal] WRITE LINE:   File system: NTFS
[2022-02-21 09:25:28Z INFO Terminal] WRITE LINE:   Available space to current user:     30,407,768 KB
[2022-02-21 09:25:28Z INFO Terminal] WRITE LINE:   Total available space:               30,407,768 KB
[2022-02-21 09:25:28Z INFO Terminal] WRITE LINE:   Total size of drive:                 33,552,380 KB
[2022-02-21 09:25:28Z INFO Terminal] WRITE LINE: Drive E:\
[2022-02-21 09:25:28Z INFO Terminal] WRITE LINE:   Drive type: CDRom
[2022-02-21 09:25:28Z INFO Terminal] WRITE LINE:   Drive is not Ready
[2022-02-21 09:25:28Z INFO Terminal] WRITE LINE: *** DiskInfo Completed ***
[2022-02-21 09:25:28Z INFO Terminal] WRITE LINE:
[2022-02-21 09:25:28Z INFO Terminal] WRITE LINE: *** FolderPermissionInfo ***
[2022-02-21 09:25:28Z INFO Terminal] WRITE LINE: Checking for Read & Write Permissions
[2022-02-21 09:25:28Z INFO Terminal] WRITE LINE: C:\agent\vsts-agent-win-x64-2.198.3                                         True
[2022-02-21 09:25:28Z INFO Terminal] WRITE LINE: C:\agent\vsts-agent-win-x64-2.198.3\bin                                     True
[2022-02-21 09:25:28Z INFO Terminal] WRITE LINE: C:\agent\vsts-agent-win-x64-2.198.3\externals                               True
[2022-02-21 09:25:28Z INFO Terminal] WRITE LINE: C:\agent\vsts-agent-win-x64-2.198.3\_diag                                   True
[2022-02-21 09:25:28Z INFO Terminal] WRITE LINE: C:\agent\vsts-agent-win-x64-2.198.3\config.cmd                              True
[2022-02-21 09:25:28Z INFO Terminal] WRITE LINE: C:\agent\vsts-agent-win-x64-2.198.3\run.cmd                                 True
[2022-02-21 09:25:28Z INFO Terminal] WRITE LINE: *** FolderPermissionInfo Completed ***
[2022-02-21 09:25:28Z INFO Terminal] WRITE LINE:
[2022-02-21 09:25:28Z INFO Terminal] WRITE LINE:
[2022-02-21 09:25:28Z INFO Terminal] WRITE LINE:

Hi @fblix this question is more about scale set/image generation, although this repo is mostly for agent-related questions - I would suggest to open a ticket in https://developercommunity.visualstudio.com/search?space=21 to get right eyes on it.

Is there a way to get more diagnostic information about the startup procedure of the extension?
The reason why I opened the ticket here is that I am able to install the Azure DevOps Pipeline Agent manually without any issues. That would exclude a networking issue or missing software on the Scale Set for me.
I just want to be able to troubleshoot the extension behavior, so I am able to see if it's maybe a permission issue or something similar.

Hello,
Past 2 years any result? i face the same issue, there is no sense to use basic image, then install visual studio if this image is available on marketplace.
I would really appreciate if there any fix for this bug.
:)


[Windows] duty tasks fail without error message

Hi - not sure if this is s.th. you want to investigate as everyone hates Windows (sadly have to use sometimes). It is ok to just tell me to screw Windows and move on.  :-D
Very brief error description:
After successful setup, make format fails with make: *** [Makefile:28: format] Error 1.
When running pdm run duty format it cancels without error message. When starting debugging on the command, the error raises from the make script here. In the subprocess command I get OSError: [WinError 6] The handle is invalid
I see that tests are passing also in Windows, so this could be s.th. wrong on my system. Do you have any idea?

Another issue is, that make vscode is not working with that error:
'cp' is not recognized as an internal or external command, operable program or batch file.

Love the first sentence haha.
So, I don't have a machine with The Annoying Operating System installed, but indeed the template from which this project is generated is tested against TAOS. Let say the requirement to work on a project generated with this template on TAOS is to at least use a Bash shell, and preferably do so in WSL, where things are less annoying.
Still, when I converted my make script from Bash to Python, it lost the ability to output error messages in some cases. This I should fix absolutely.

Can totally confirm. On TAOS with WSL there are no issues!
Close as "will not fix" on pure TAOS.


Refactor sysctl to use generic reconciler

Refactor the sysctl package using the statedb table and the generic
reconciler. The sysctl specific reconciler operations are in charge of
syncing the desired state with the actual kernel sysctl parameters.
To be backward compatible with the old sysctl interface, the exported
methods are kept synchronous, so they'll wait for the reconciliation to
actually happen before returning to the caller.
Moreover, ReadSysctl and WriteSysctl offer a low-level "direct"
implementation to change sysctl parameters without relying on the
reconciler. They are meant to be used ONLY in binaries that are not
based on the "hive and cells" framework, IOW where a statedb and the
reconcilers are not available (e.g: cilium-health and cilium-cni).

/test

/test

/test

/test

/test

/test

Merged into feature/devices-reconciliation-v1.16.


refactor: generate signal button in signal app is missing loading icon

when pressing generate signal, it takes a few seconds before anything appears on the screen. Should add loading icon to button to indicate that something is actually happening.

not relevant anymore


Error while using custom Signing Suite for issue credential

I get the below error when I use the custom Signing Suite:
(node:3383) UnhandledPromiseRejectionWarning: TypeError: "suite.verificationMethod" property is required.
    at Object.issue (/Users/sradha/PhD_Research_2020/digitalbazaar_experiments/vc-js/lib/vc.js:119:11)
    at issueCredential (/Users/sradha/PhD_Research_2020/digitalbazaar_experiments/index.js:231:31)
    at /Users/sradha/PhD_Research_2020/digitalbazaar_experiments/index.js:253:9
    at <anonymous>
    at process._tickDomainCallback (internal/process/next_tick.js:229:7)
    at Function.Module.runMain (module.js:696:11)
    at startup (bootstrap_node.js:204:16)
    at bootstrap_node.js:625:3

When i try to print the verificationMethod in the signing suite, I get the below result:
suite method

 did:web:craftofscience.xyz#z6MkpTSqkUdN66k37jCVDKqKKmZJ5Dq7aZGZCsFUCGbrpNr6

This is my signing Suite :
signing suite Ed25519Signature2018 {
  type: 'Ed25519Signature2018',
  creator: undefined,
  verificationMethod: 'did:web:craftofscience.xyz#z6MkpTSqkUdN66k37jCVDKqKKmZJ5Dq7aZGZCsFUCGbrpNr6',
  proof: undefined,
  useNativeCanonize: undefined,
  alg: 'EdDSA',
  LDKeyClass: [Function: Ed25519KeyPair],
  signer: { sign: [AsyncFunction: sign] },
  key:
   Ed25519KeyPair {
     passphrase: null,
     id: 'did:web:craftofscience.xyz#z6MkpTSqkUdN66k37jCVDKqKKmZJ5Dq7aZGZCsFUCGbrpNr6',
     controller: undefined,
     owner: undefined,
     type: 'Ed25519VerificationKey2018',
     privateKeyBase58: 'removed from here',
     publicKeyBase58: 'B1BoAENvkZFa1EMnXksUUg1JFeZGAg2CWrLYMzdquA4i' },
  verifier: { verify: [AsyncFunction: verify] },
  requiredKeyType: 'Ed25519VerificationKey2018' }

Below is the issueCredential code:
async function  issueCredential () {

 console.log("Credential issuing service...\n");

 const credentialString = fs.readFileSync("/Users/sradha/PhD_Research_2020/digitalbazaar_experiments/credential.json").toString();
 //console.log(credentialString);
 //console.log(JSON.parse(credentialString));
 const credential = JSON.parse(credentialString);

 credential.issuer = issuerKeyDid.id;
 credential.credentialSubject.id = subjectKeyDid.id
 //console.log("credential issuer id", credential.issuer.id);
 //console.log("credential subject id", credential.credentialSubject.id);
 credential.issuanceDate = (new Date()).toISOString()
 const verMethod = 'did:web:craftofscience.xyz#' + issuerKeyPair.fingerprint();
 console.log("!!! assertion proof !!!", (new AssertionProofPurpose()));
// console.log("issuerKeyDid", issueKeyDid);
 const signingSuite = new Ed25519Signature2018({

  //verificationMethod: getAssertionMethod(issuerKeyDid),
  purpose: new AssertionProofPurpose(),
  key: issuerKeyPair,
  verificationMethod: issuerKeyPair.id
});
console.log("suite method\n\n", signingSuite.verificationMethod);
console.log("\nsigning suite", signingSuite);
 //console.log("verification method", signingSuite.verificationMethod);
  const issuedCred = await vc.issue({credential:credential,signingSuite,documentLoader});
   //console.log(issueCred);
//  console.log("issuedCredential", vc.issue({credential, suite: signingSuite}));
  /*console.log("Issued Credential:\n", JSON.stringify(issuedCred), "\n")
  fs.writeFile("./issuedCredential.json", JSON.stringify(issuedCred, null, 4), (err) => {
  if (err) {
        console.error(err);
        return;
  }});*/
};

Your call to vc.issue() is passing the suite using the name signingSuite but it should just be suite.
@dmitrizagidulin, @aljones15 -- We should also probably improve this error checking by splitting it into two checks so that it would say suite is missing instead:
https://github.com/digitalbazaar/vc-js/blob/master/lib/vc.js#L118-L120

on your line that reads
const issuedCred = await vc.issue({credential:credential,signingSuite,documentLoader});```
should be:

const issuedCred = await vc.issue({credential, suite: signingSuite, documentLoader});

Thank you. i think that resolved the suite error. But, now I am getting the error related to jsonld url:
(node:3468) UnhandledPromiseRejectionWarning: jsonld.InvalidUrl: Dereferencing a URL did not result in a valid JSON-LD object. Possible causes are an inaccessible URL perhaps due to a same-origin policy (ensure the server uses CORS if you are using client-side JavaScript), too many redirects, a non-JSON response, or more than one HTTP Link Header was provided for a remote context.
i have the custom document Loader as below:
'use strict';

// This is built on https://github.com/digitalbazaar/vc-js

// We're exploring using did:web, so we can add value to DOIs...
// https://w3c-ccg.github.io/did-method-web/
// https://github.com/decentralized-identity/web-did-resolver

// (Also useful: https://github.com/digitalbazaar/did-cli)

var fs = require("fs");
const {extendContextLoader} = require('jsonld-signatures');
const vc = require('vc-js');
//const myCustomContext = require('./myCustomContext');
const jsigs = require('jsonld-signatures');
const {AssertionProofPurpose} = jsigs.purposes;
const {CredentialIssuancePurpose} = require('vc-js');

//const didContext = require('./lib/contexts');
const {keyToDidDoc} = require('did-method-key').driver();
const {Ed25519KeyPair} = require('crypto-ld');

const {Ed25519Signature2018} = jsigs.suites;
const {defaultDocumentLoader} = vc;
const driver = require('did-method-key').driver();
const request = require('request');

// on the actual issuer I believe this would be an ed25519
// key pair that a wallet has authorized the issuer to use.

let issuerKeyPair, issuerKeyDid = null;
let subjectKeyPair, subjectKeyDid = null;

// just gets the assertion method from the did key.
const getAssertionMethod = didKey => {
  return didKey.assertionMethod[0];
};

// This is really an admin function of vc-js in order to resolved DIDdocs from keys, etc.
// Should really be in its own file...

const documentLoader = extendContextLoader(async url => {
  // this fetches the entire did document
  // this fetches a specific a key from a did doc by fingerPrint

  // IB: This is how DIDs are resolved to their DIDdocs...
  // console.log("Looking for " + url)

  // Don't think this top block is used by me so far - I think it resolves different DID types
  if(issuerKeyDid['@context'] === url) {
    return {
      contextUrl: null,
      documentUrl: url,
      // this did key's context should resolve
      // to the latest did-context
      document: didContext.contexts.get('https://w3id.org/did/v1')
    };
  }

  // The next two clauses resolved a did:key document, which is self resolvable to its DIDdoc/JSON-LD
  if(url.startsWith('did:key') && url.includes('#')) {
    const did = url.split('#')[0];

    const didKey = await driver.get({did});
    let doc = null;
    for(const prop in didKey) {
      const property = didKey[prop];
      if(Array.isArray(property)) {
        [doc] = property.filter(p => p.id === url);
      }
      if(property.id === url) {
        doc = didKey[prop];
      }
      if(doc) {
        break;
      }
    }
    doc['@context'] = 'https://w3id.org/security/v2';
    return {
      contextUrl: null,
      documentUrl: url,
      document: doc
    };
  }

  if(url.startsWith('did:key')) {
    const did = url.split('#')[0];
    const doc = await driver.get({did});
    doc['@context'] = 'https://w3id.org/security/v2';

    return {
      contextUrl: null,
      documentUrl: url,
      document: doc
    }
  }

  // this adds schema.org's JSON-LD context to the documentLoader
  // the demo credential's type is from schema.org
  // IB - I haven't used this yet...
  if(url === 'https://schema.org/') {
    return {
      contextUrl: null,
      documentUrl: url,
      document: myCustomContext
    };
  }

   if(url === 'did:web:craftofscience.xyz') {
    console.log("I am here in this resolver");
    url = "http://www.craftofscience.xyz/did.json"

    let docString = await downloadPage(url)

    let doc = JSON.parse(docString);
    console.log("did doc from url", doc);

    doc['@context'] = 'https://w3id.org/security/v2';

    console.log("DID Doc fetched from did:web URL:\n", doc, "\n")

    return {
      contextUrl: null,
      documentUrl: url,
      document: doc
    };
  }

  return defaultDocumentLoader(url);

});

I see you've added logging to your implementation, are you seeing logging from your documentLoader in relationship to the operation you are attempting to perform?

Unfortunately, the logging i try from the documentLoade for example:  console.log("DID Doc fetched from did:web URL:\n", doc, "\n") doesn't get printed at all. I suspect the URL match is not happening there. But, I am not sure which URL is being used when documentLoader is called from the vc.issue function.

Adding logging at the very top of your document loader (which I believe I saw) will help determine what URLs are being requested.  I'm wondering if you're passing the documentLoader into the vc-js API properly?

that is what I get when I print at the top of documentLoader
Looking for https://www.w3.org/2018/credentials/v1
Looking for http://www.craftofscience.xyz/custContext.jsonld

Ok. I gave the url in the there:
`if(url === 'http://www.craftofscience.xyz/custContext.jsonld') {
console.log("I am here in this resolver");
url = "http://www.craftofscience.xyz/did.json"
let docString = await downloadPage(url)

let doc = JSON.parse(docString);
console.log("did doc from url", doc);

doc['@context'] = 'https://w3id.org/security/v2';

console.log("DID Doc fetched from did:web URL:\n", doc, "\n")

return {
  contextUrl: null,
  documentUrl: url,
  document: doc
};

}`
Now i get this:
did doc from url { '@context': 'https://w3id.org/did/v1',
  id: 'did:web:craftofscience.xyz',
  authentication:
   [ { id: 'did:web:craftofscience.xyz#z6MkpTSqkUdN66k37jCVDKqKKmZJ5Dq7aZGZCsFUCGbrpNr6',
       type: 'Ed25519VerificationKey2018',
       controller: 'did:web:craftofscience.xyz',
       publicKeyBase58: 'B1BoAENvkZFa1EMnXksUUg1JFeZGAg2CWrLYMzdquA4i' } ],
  assertionMethod:
   [ { id: 'did:web:craftofscience.xyz#z6MkpTSqkUdN66k37jCVDKqKKmZJ5Dq7aZGZCsFUCGbrpNr6',
       type: 'Ed25519VerificationKey2018',
       publicKeyBase58: 'B1BoAENvkZFa1EMnXksUUg1JFeZGAg2CWrLYMzdquA4i' } ],
  verificationMethod:
   [ { id: 'did:web:craftofscience.xyz#z6MkpTSqkUdN66k37jCVDKqKKmZJ5Dq7aZGZCsFUCGbrpNr6',
       type: 'Ed25519VerificationKey2018',
       publicKeyBase58: 'B1BoAENvkZFa1EMnXksUUg1JFeZGAg2CWrLYMzdquA4i' } ] }
DID Doc fetched from did:web URL:
 { '@context': 'https://w3id.org/security/v2',
  id: 'did:web:craftofscience.xyz',
  authentication:
   [ { id: 'did:web:craftofscience.xyz#z6MkpTSqkUdN66k37jCVDKqKKmZJ5Dq7aZGZCsFUCGbrpNr6',
       type: 'Ed25519VerificationKey2018',
       controller: 'did:web:craftofscience.xyz',
       publicKeyBase58: 'B1BoAENvkZFa1EMnXksUUg1JFeZGAg2CWrLYMzdquA4i' } ],
  assertionMethod:
   [ { id: 'did:web:craftofscience.xyz#z6MkpTSqkUdN66k37jCVDKqKKmZJ5Dq7aZGZCsFUCGbrpNr6',
       type: 'Ed25519VerificationKey2018',
       publicKeyBase58: 'B1BoAENvkZFa1EMnXksUUg1JFeZGAg2CWrLYMzdquA4i' } ],
  verificationMethod:
   [ { id: 'did:web:craftofscience.xyz#z6MkpTSqkUdN66k37jCVDKqKKmZJ5Dq7aZGZCsFUCGbrpNr6',
       type: 'Ed25519VerificationKey2018',
       publicKeyBase58: 'B1BoAENvkZFa1EMnXksUUg1JFeZGAg2CWrLYMzdquA4i' } ] }

That did not go well.
(node:3517) UnhandledPromiseRejectionWarning: jsonld.SyntaxError: Invalid JSON-LD syntax; tried to redefine a protected term.

I guess the json ld file has some syntax error. I will take a look at it..

It does not appear you have loaders set up for either one of those URLs
You can use credentials context for that one: https://www.npmjs.com/package/credentials-context

Thanks. Now, I am able to get the did doc as below:
DID Doc fetched from did:web URL:
 { '@context': 'https://w3id.org/security/v2',
  id: 'did:web:craftofscience.xyz',
  authentication:
   [ { id: 'did:web:craftofscience.xyz#z6MkpTSqkUdN66k37jCVDKqKKmZJ5Dq7aZGZCsFUCGbrpNr6',
       type: 'Ed25519VerificationKey2018',
       controller: 'did:web:craftofscience.xyz',
       publicKeyBase58: 'B1BoAENvkZFa1EMnXksUUg1JFeZGAg2CWrLYMzdquA4i' } ],
  assertionMethod:
   [ { id: 'did:web:craftofscience.xyz#z6MkpTSqkUdN66k37jCVDKqKKmZJ5Dq7aZGZCsFUCGbrpNr6',
       type: 'Ed25519VerificationKey2018',
       publicKeyBase58: 'B1BoAENvkZFa1EMnXksUUg1JFeZGAg2CWrLYMzdquA4i' } ],
  service: [ {} ] }

(node:3539) UnhandledPromiseRejectionWarning: jsonld.SyntaxError: Invalid JSON-LD syntax; tried to redefine a protected term.

There was a conflict two terms defined in the context.


How do I get the rotation of L515?

Required Info

Camera Model
{ L515 }

Firmware Version
(Open RealSense Viewer --> Click info)

Operating System & Version
{Win (10) / Linux (Ubuntu 18.04)

Kernel Version (Linux Only)
(e.g. 4.14.13)

Platform
PC/ NVIDIA Jetson NX

SDK Version
{ legacy / 2.41.0 }

Language
{C/C++/opencv }

Segment
{UE4/VR/AR/others }

Issue Description
Hi,
I want to get the rotation of the L515, what do I need to do?Only one L515 will be used?
I want to get the L515 rotation data like the T265 rotation data?I have tried some methods, but nothing works. Is there any way?
What do I need to do to fulfill my needs?
Looking forward to your effective reply. Thank you very much!

Hi @jack-wlj
So you are looking for a SLAM solution using the L515 camera instead of just using the raw IMU data that is provided from the L515 camera.  The T265 was purpose built for SLAM tracking with it's core algorithm.  The L515 does not have native SLAM capability which means that a 3rd party solution would need to be investigated.  Not familiar with 3rd party SLAM for L515.

嗨@ jack-wlj
因此，您正在寻找使用L515摄像机而不是仅使用L515摄像机提供的原始IMU数据的SLAM解决方案。T265的核心算法专门用于SLAM跟踪。L515不具有本地SLAM功能，这意味着需要研究第三方解决方案。不熟悉L515的第三方SLAM。

Thanks for your reply!I don't use SLAM, I just want to get the rotation of L515 itself, such as looking down at 45° manually,How do I get the value of 45°?
Since the depth data of L515 is highly accurate, I want to use the depth value and its own rotation to calculate the height of L515 from the ground, so I need the L515's own rotation. I hope you can help me solve this problem. Thank you again.

Hi @jack-wlj
There is nothing specific in our SDK that provides this information for the L515.  You may have to look at a few factors, the actual extrinsic of the camera, meaning the mechanical information of the camera itself that is outlined in the datasheet and the CAD model
https://dev.intelrealsense.com/docs/lidar-l500
You may also be able to use the intrinsic and extrinsic calibration information provided by the APIs, an example in getting this information is in the rs-enumerate-devices sample - https://github.com/IntelRealSense/librealsense/tree/master/tools/enumerate-devices
Hope this helps

Hi @jack-wlj
There is nothing specific in our SDK that provides this information for the L515. You may have to look at a few factors, the actual extrinsic of the camera, meaning the mechanical information of the camera itself that is outlined in the datasheet and the CAD model
https://dev.intelrealsense.com/docs/lidar-l500
You may also be able to use the intrinsic and extrinsic calibration information provided by the APIs, an example in getting this information is in the rs-enumerate-devices sample - https://github.com/IntelRealSense/librealsense/tree/master/tools/enumerate-devices
Hope this helps

I have read all the information, but it is a pity that there is no information I need. I don't understand why L515 can't get quaternions？


Here's some research on this this:
To repro:
bundle exec rake run_rspec:examples
cd gen-examples/examples/basic-server-rendering
rails s -e test
tail -f log/test.log

The problem is that the server-bundle.js is getting generated with chunks. The SSR only pulls in the top level file. It doesn't deal with chunks.
{
  "entrypoints": {
    "hello-world-bundle": {
      "assets": {
        "js": [
          "/packs-test/js/runtime.js",
          "/packs-test/js/134.js",
          "/packs-test/js/hello-world-bundle.js"
        ],
        "css": [
          "/packs-test/css/hello-world-bundle.css"
        ]
      }
    },
    "server-bundle": {
      "assets": {
        "js": [
          "/packs-test/js/runtime.js",
          "/packs-test/js/134.js",
          "/packs-test/js/server-bundle.js"
        ],
        "css": [
          "/packs-test/css/server-bundle.css"
        ]
      }
    }
  },
  "hello-world-bundle.css": "/packs-test/css/hello-world-bundle.css",
  "hello-world-bundle.js": "/packs-test/js/hello-world-bundle.js",
  "js/134.js": "/packs-test/js/134.js",
  "js/134.js.LICENSE.txt": "/packs-test/js/134.js.LICENSE.txt",
  "runtime.js": "/packs-test/js/runtime.js",
  "server-bundle.css": "/packs-test/css/server-bundle.css",
  "server-bundle.js": "/packs-test/js/server-bundle.js"
}

The root cause was the updated bin/webpacker binstub causes a search for config/webpack/test.js which didn't exist.
Then the default webpack config was used which used code-splitting.
We really need a better SSR failure message when this happens!
Puma caught this error: wrong number of arguments (given 1, expected 0) (ActionView::Template::Error)
/Users/justin/shakacode/react-on-rails/react_on_rails_2/lib/react_on_rails/prerender_error.rb:12:in `initialize'
/Users/justin/shakacode/react-on-rails/react_on_rails_2/lib/react_on_rails/helper.rb:486:in `exception'
/Users/justin/shakacode/react-on-rails/react_on_rails_2/lib/react_on_rails/helper.rb:486:in `raise'
/Users/justin/shakacode/react-on-rails/react_on_rails_2/lib/react_on_rails/helper.rb:486:in `rescue in server_rendered_react_component'
/Users/justin/shakacode/react-on-rails/react_on_rails_2/lib/react_on_rails/helper.rb:482:in `server_rendered_react_component'
/Users/justin/shakacode/react-on-rails/react_on_rails_2/lib/react_on_rails/helper.rb:424:in `internal_react_component'
/Users/justin/shakacode/react-on-rails/react_on_rails_2/lib/react_on_rails/helper.rb:57:in `react_component'
/Users/justin/shakacode/react-on-rails/react_on_rails_2/gen-examples/examples/basic-server-rendering/app/views/hello_world/index.html.erb:2:in `_app_views_hello_world_index_html_erb__1506071207523435023_13680'
/Users/justin/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/actionview-7.0.2/lib/action_view/base.rb:244:in `public_send'
/Users/justin/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/actionview-7.0.2/lib/action_view/base.rb:244:in `_run'
/Users/justin/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/actionview-7.0.2/lib/action_view/template.rb:157:in `block in render'
/Users/justin/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/activesupport-7.0.2/lib/active_support/notifications.rb:208:in `instrument'
/Users/justin/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/actionview-7.0.2/lib/action_view/template.rb:361:in `instrument_render_template'
/Users/justin/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/actionview-7.0.2/lib/action_view/template.rb:155:in `render'
/Users/justin/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/actionview-7.0.2/lib/action_view/renderer/template_renderer.rb:65:in `block (2 levels) in render_template'
/Users/justin/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/activesupport-7.0.2/lib/active_support/notifications.rb:206:in `block in instrument'
/Users/justin/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/activesupport-7.0.2/lib/active_support/notifications/instrumenter.rb:24:in `instrument'
/Users/justin/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/activesupport-7.0.2/lib/active_support/notifications.rb:206:in `instrument'
/Users/justin/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/actionview-7.0.2/lib/action_view/renderer/template_renderer.rb:60:in `block in render_template'
/Users/justin/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/actionview-7.0.2/lib/action_view/renderer/template_renderer.rb:75:in `block in render_with_layout'
/Users/justin/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/activesupport-7.0.2/lib/active_support/notifications.rb:206:in `block in instrument'
/Users/justin/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/activesupport-7.0.2/lib/active_support/notifications/instrumenter.rb:24:in `instrument'
/Users/justin/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/activesupport-7.0.2/lib/active_support/notifications.rb:206:in `instrument'
/Users/justin/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/actionview-7.0.2/lib/action_view/renderer/template_renderer.rb:74:in `render_with_layout'
/Users/justin/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/actionview-7.0.2/lib/action_view/renderer/template_renderer.rb:59:in `render_template'
/Users/justin/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/actionview-7.0.2/lib/action_view/renderer/template_renderer.rb:11:in `render'
/Users/justin/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/actionview-7.0.2/lib/action_view/renderer/renderer.rb:61:in `render_template_to_object'
/Users/justin/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/actionview-7.0.2/lib/action_view/renderer/renderer.rb:29:in `render_to_object'
/Users/justin/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/actionview-7.0.2/lib/action_view/rendering.rb:117:in `block in _render_template'
/Users/justin/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/actionview-7.0.2/lib/action_view/base.rb:270:in `in_rendering_context'
/Users/justin/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/actionview-7.0.2/lib/action_view/rendering.rb:116:in `_render_template'
/Users/justin/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/actionpack-7.0.2/lib/action_controller/metal/streaming.rb:216:in `_render_template'
/Users/justin/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/actionview-7.0.2/lib/action_view/rendering.rb:103:in `render_to_body'
/Users/justin/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/actionpack-7.0.2/lib/action_controller/metal/rendering.rb:46:in `render_to_body'
/Users/justin/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/actionpack-7.0.2/lib/action_controller/metal/renderers.rb:142:in `render_to_body'
/Users/justin/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/actionpack-7.0.2/lib/abstract_controller/rendering.rb:25:in `render'
/Users/justin/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/actionpack-7.0.2/lib/action_controller/metal/rendering.rb:30:in `render'
/Users/justin/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/actionpack-7.0.2/lib/action_controller/metal/instrumentation.rb:22:in `block (2 levels) in render'
/Users/justin/.rbenv/versions/3.0.3/lib/ruby/3.0.0/benchmark.rb:308:in `realtime'
/Users/justin/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/activesupport-7.0.2/lib/active_support/core_ext/benchmark.rb:14:in `ms'
/Users/justin/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/actionpack-7.0.2/lib/action_controller/metal/instrumentation.rb:22:in `block in render'
/Users/justin/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/actionpack-7.0.2/lib/action_controller/metal/instrumentation.rb:91:in `cleanup_view_runtime'
/Users/justin/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/actionpack-7.0.2/lib/action_controller/metal/instrumentation.rb:21:in `render'
/Users/justin/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/actionpack-7.0.2/lib/action_controller/metal/implicit_render.rb:35:in `default_render'
/Users/justin/.rbenv/versions/3.0.3/lib/ruby/gems/3.0.0/gems/actionpack-7.0.2/lib/action_controller/metal/basic_implicit_render.rb:6:in `block in send_action'
<internal:kernel>:90:in `tap'

Fixed by #1431


Adding quick pulse functionality by default and make it configurable

Addressed it in https://github.com/Microsoft/ApplicationInsights-aspnetcore/pull/187


GEODE-1958: Removing PasswordUtil

View the original JIRA ticket here.
PasswordUtil.java contained methods used to encrypt a password to be stored in cache.xml, which was an unsafe way to handle security. As a result, most methods in PasswordUtil.java were removed except decrypt(String password), since we want to maintain backwards compatibility. decrypt(String password) has been deprecated, and references to encrypting passwords have been removed.
Thank you for submitting a contribution to Apache Geode.
In order to streamline the review of the contribution we ask you
to ensure the following steps have been taken:
For all changes:

[x] Is there a JIRA ticket associated with this PR? Is it referenced in the commit message?

[ ] Has your PR been rebased against the latest commit within the target branch (typically develop)?

[x] Is your initial contribution a single, squashed commit?

[ ] Does gradlew build run cleanly?

[ ] Have you written or updated unit tests to verify your changes?

[ ] If adding new dependencies to the code, are these dependencies licensed in a way that is compatible for inclusion under ASF 2.0?

Note:
Please ensure that once the PR is submitted, you check travis-ci for build issues and
submit an update to your PR as soon as possible. If you need help, please send an
email to<EMAIL_ADDRESS>

Precheckin is mostly green, with one (seemingly unrelated) test failure! I'm rerunning the test and looking into the failure now.


Use openrpc-react to host some docs

Both @ansermino  and I have had a look at https://github.com/open-rpc/docs-react/, and hit a wall, would be nice to host some OpenRPC docs like the playground does at docs.forest.chainsafe.io

https://github.com/ChainSafe/forest-docs-v2/issues/29


Improve Formatter for Semicolon Rule

Adressing #136
This PR improves the SemicolonAnalyzer in cases when semicolons are to be replaced with newlines (formerly option never) and renames the option to replace_with_newline to be more self-explanatory
New behavior:

there's no reformatting at all when there are no semicolons (as that is fully unexpected)
linebreaks will only be inserted when there was a semicolon previously (previous behavior was source of the above mentioned issue in that case), the reported issue would not happen anymore
the option to enable this behavior is now named replace_with_newline to avoid wrong expectations

Not changed:

when there was weird formatting left behind after the SemicolonAnalyzer, another formatting-run will change the result again, but not initiated by the SemicolonAnalyzer (e.g. fixing indents)
behavior on previously tested code combinations

Also, this PR does not include a "new" never option we discussed, as simply deleting semicolons out of lines may lead to syntax errors or semantic issues, which one probably does not wish from a formatter. If they are automatically fixed by another formatting run, the result is likely the same as using replace_with_newline.

I understand that my node and token design is too lightweight, making it difficult to see what is what during the debugging process. You can modify the Test2 project for debugging purposes, just make sure not to upload it. By default, the Test2 project will print the syntax tree of the debugged text.

Thanks your pr


[Book] Make it easy to follow along with the examples

It would be nice to add instructions on how to follow along with the 1.0 version of the book. At the moment it just points to The embedded rust book.
I followed all the examples from The embedded rust book previously, so I have all the tools installed. However, just using the cortex-m-quickstart and pasting the code of the first example to main.rs will not work out of the box. It leaves me to solve all the compile errors caused by missing packages and unstable features.
It would be nice to have a similar template as cortex-m-quickstart for rtic, and/or a bit more elaborate instructions on what to do if you want to follow along with the examples.
Some of the issues are:

missing panic-semihosting in Cargo.toml
missing systick-monotonic in Cargo.toml
panicking in constants is unstable (currently stuck here)

Hi
We have a similar template for RTIC. https://github.com/rtic-rs/defmt-app-template
In general it should be no need for unstable features, RTIC as such compiles and runs under stable rust since a long time.
/Per

Hi, the panic you are getting is because you use an old compiler.
Update to the latest stable and it will work.

@korken89 You are right, I updated from 1.56 to 1.58 and I don't get that warning anymore.
Now I have issues with the device in the example, lm3s6965. The trait core::marker::Copy is not implemented for Interrupt.

Regarding the book, the book refers to the template suggested by @perlindgren, but if you have further suggestions we're all ears
https://rtic.rs/1.0/book/en/by-example/starting_a_project.html

Okay, now it starts to make sense. I was reading the book in sequential order, so I didn't get to that chapter yet.
I think it would be wise to mention that page in 1. RTIC by example

I see. Surely there are many ways of approaching this reading material, but for my understanding of your approach, you've already read the Embedded Rust book, tried cortex-m-quickstart at some point, and then tried to combine examples/common.rs into a new "project" created with quickstart?
All examples in examples/ folder come prepared to run with QEMU, the template linked is not bound to any specific hardware, to make it QEMU runnable requires the users to know which dependencies to add, so maybe not the first step.
The idea with that template is to have hardware agnostic but still desirable components "pre-packaged", naturally that still requires some DIY assembly :D
RTIC v1.0 is edition = "2021", meaning >= 1.56, for more details see announcing Rust Edition 2021

@AfoHT Yes, that is right. However, running the lm3s6965 device in Qemu requires the right dependency, since RTIC needs those dispatcher names. In The embedded rust book, it was not necessary to add a dependency related to lm3s6965, since no device-specific features are used there. Which dependency needs to be added to make the lm3s6965 example work in Qemu, because I was not able to figure it out. The crate lm3s6965 did not do the trick for me.
And about the Rust version required, the book states that the 2018 version is used. Is the book outdated?

I see. The examples uses Cargo.toml and in the end of the file a patched version is used, I suggest you do the same.
About the edition, you are correct, this is an error and needs an update in the book, thanks for pointing it out!
If you'd like this is an excellent first issue to tackle


Lb/dqt integration

Context
We need to be able to retrieve a teacher form DQT using the teacher's TRN.
Changes proposed in this pull request

Dqt Client base class
Service class for retrieving a teacher using a trn from the Dqt client
Env variables added to the appropriate terraform environments, example env file.
Secrets have been added to MS Azure qa and review app environments

Guidance to review
Add the required env vars to your local env file (let me know, I'll give you the DQT_API_KEY for preprod)
Using rails console, retrieve a teacher with the trn "1234567" by calling: Dqt::GetTeacher.call(trn: "1234567"). You should get a successful response with a teacher object
Then try calling the service with an invalid trn ("2222222" will work). You should receive an error with status code 404.
You should be able to replicate this in the review environment as well.
Link to Trello card
https://trello.com/c/pohWgS9G
Things to check

[ ] If the code removes any existing feature flags, a data migration has also been added to delete the entry from the database
[ ] This code does not rely on migrations in the same Pull Request
[ ] If this code includes a migration adding or changing columns, it also backfills existing records for consistency
[ ] If this code adds a column to the DB, decide whether it needs to be in analytics yml file or analytics blocklist
[ ] API release notes have been updated if necessary
[ ] If it adds a significant user-facing change, is it documented in the CHANGELOG?
[x] Required environment variables have been updated or added to the Azure KeyVault

Screenshots

 DQT integration


go: add version 1.7 [WIP]

TODO: figure out if godoc will end up in the right place
Currently stuck on
misc/cgo/testcarchive
--- FAIL: TestExtar (1.42s)
	carchive_test.go:478: # libgo4
		/nix/store/6gkzwcp486ay95m4am846kpcj2vj05l3-go-1.7/share/go/pkg/tool/linux_amd64/link: running /nix/store/6gkzwcp486ay95m4am846kpcj2vj05l3-go-1.7/share/go/misc/cgo/testcarchive/testar failed: fork/exec /nix/store/6gkzwcp486ay95m4am846kpcj2vj05l3-go-1.7/share/go/misc/cgo/testcarchive/testar: no such file or directory

	carchive_test.go:479: exit status 2

going to work on this more tomorrow, bedtime rn

@nathan7 looks like I fix it in #17805

sorry, I kinda dropped the ball on this one — what'd you change specifically, @avnik?

@nathan7 actually I do my own from scratch ;) https://github.com/NixOS/nixpkgs/pull/17805/files#diff-8b69266ad55fc928935ddca9ea548397R52 actually ;)

@nathan7 I would like to propose closing this in favour of @avnik's https://github.com/NixOS/nixpkgs/pull/17805 since that one already builds fine. Is that OK with you?

@rushmore sure thing.


Create a migration that fixes CountedMap counts.

A continuation of https://github.com/paritytech/substrate/pull/13214.
Basically anybody who's been using set on a CountedMap before the aforementioned PR was merged needs to call initialize_counter on that map.

None of our runtimes had an issue regarding this. So while I agree that we need to communicate this to the outer world in case they did use the wrong function, I don't think having an issue here is the right way.
This issue should be closed by someone writing a recalculate method for counted maps that re-generates the counter.

@kianenigma afaik recalculate already exists, will confirm and close

Yep, here it is: initialize_counter. I think we can close this.

This issue has been mentioned on Polkadot Forum. There might be relevant details there:
https://forum.polkadot.network/t/polkadot-release-analysis-v0-9-38/2122/1


Android library for minSdkVersion

'com.trustwallet.walletcore:walletcore:0.10.0'
The current android support minsdk is 23, I want to know why? My project right now is 19, and will be suit for most of android devices, I'm afraid of lead some problem for me change to 19
looking for help, thanks

I would highly recommend using Android 6 and higher for providing a wallet with a better security mechanism.
We do not plan to support outdated Android SDK's


cmd/cgo: building fully statically linked executable for Android fails when cgo is enabled

What version of Go are you using (go version)?

go version go1.20.3 linux/amd64

Does this issue reproduce with the latest release?
Yes
What operating system and processor architecture are you using (go env)?
GO111MODULE="auto"
GOARCH="arm64"
GOBIN=""
GOCACHE="/home/leleliu008/.cache/go-build"
GOENV="/home/leleliu008/.config/go/env"
GOEXE=""
GOEXPERIMENT=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOINSECURE=""
GOMODCACHE="/home/leleliu008/go/pkg/mod"
GONOPROXY=""
GONOSUMDB=""
GOOS="android"
GOPATH="/home/leleliu008/go"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/home/linuxbrew/.linuxbrew/Cellar/go/1.20.3/libexec"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/home/linuxbrew/.linuxbrew/Cellar/go/1.20.3/libexec/pkg/tool/linux_amd64"
GOVCS=""
GOVERSION="go1.20.3"
GCCGO="gccgo"
AR="/home/leleliu008/.ndk-pkg/android-ndk-r23b/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar"
CC="/home/leleliu008/.ndk-pkg/core/bin/proxy-target-cc"
CXX="/home/leleliu008/.ndk-pkg/core/bin/proxy-target-c++"
CGO_ENABLED="1"
GOMOD="/home/leleliu008/.ndk-pkg/installing/android-31/arm64-v8a/yq/src/go.mod"
GOWORK=""
CGO_CFLAGS="--sysroot /home/leleliu008/.ndk-pkg/android-ndk-r23b/toolchains/llvm/prebuilt/linux-x86_64/sysroot -Qunused-arguments -fPIC -fno-common -Os"
CGO_CPPFLAGS="-I/home/leleliu008/.ndk-pkg/installing/android-31/arm64-v8a/yq/include --sysroot /home/leleliu008/.ndk-pkg/android-ndk-r23b/toolchains/llvm/prebuilt/linux-x86_64/sysroot -Qunused-arguments -include /home/leleliu008/.ndk-pkg/installing/android-31/arm64-v8a/yq/include/ndk-pkg-common.h -DNDEBUG"
CGO_CXXFLAGS="--sysroot /home/leleliu008/.ndk-pkg/android-ndk-r23b/toolchains/llvm/prebuilt/linux-x86_64/sysroot -Qunused-arguments -fPIC -fno-common -Os"
CGO_FFLAGS="-O2 -g"
CGO_LDFLAGS="-L/home/leleliu008/.ndk-pkg/installing/android-31/arm64-v8a/yq/lib --sysroot /home/leleliu008/.ndk-pkg/android-ndk-r23b/toolchains/llvm/prebuilt/linux-x86_64/sysroot -Wl,--as-needed -Wl,-z,muldefs -Wl,--allow-multiple-definition -static --static -ffunction-sections -fdata-sections -Wl,--gc-sections -Wl,--no-dynamic-linker -Wl,-S"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -pthread -fno-caret-diagnostics -Qunused-arguments -Wl,--no-gc-sections -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build155171888=/tmp/go-build -gno-record-gcc-switches"

What did you do?
go build -trimpath -v -ldflags ' -s -w -linkmode external "-extldflags=-static"' -tags release

What did you expect to see?
successfully built
What did you see instead?
/home/linuxbrew/.linuxbrew/Cellar/go/1.20.3/libexec/pkg/tool/linux_amd64/link: running /home/leleliu008/.ndk-pkg/core/bin/proxy-target-cc failed: exit status 1
ld: error: undefined symbol: __android_log_vprint
>>> referenced by gcc_android.c
>>>               /tmp/go-link-1481358754/000008.o:(fatalf)

ld: error: undefined symbol: dlopen
>>> referenced by gcc_android.c
>>>               /tmp/go-link-1481358754/000008.o:(inittls)

ld: error: undefined symbol: dlsym
>>> referenced by gcc_android.c
>>>               /tmp/go-link-1481358754/000008.o:(inittls)

ld: error: undefined symbol: dlclose
>>> referenced by gcc_android.c
>>>               /tmp/go-link-1481358754/000008.o:(inittls)
clang-12: error: linker command failed with exit code 1 (use -v to see invocation)

more
https://github.com/golang/go/blob/master/src/runtime/cgo/gcc_android.c
gcc_android.c rely on liblog.so and libdl.so
Note: Android NDK do not provides liblog.a
statically linked executable can not use functions in libdl.
to get runtime os SDK API Level, I usually use follwoing code:
char buff[PROP_VALUE_MAX];

int n = __system_property_get("ro.build.version.sdk", buff);

if (n > 0) {
    return 0;
} else {
    return -1;
}

(CC @golang/android)

In triage, we're not sure if building a fully static Android executable is supported. Assigned to the only person in @golang/android for more thoughts and details.

Android command-line app can be built as fully statically linked executable or position independent dynamically linked execuable.
Android apk only use dynamically linked library.
It would be cool if this feature could be implemented.

Rust don't support building as fully stattically linked executable for Android as well, but I can hack it. https://github.com/rust-lang/cargo/issues/10765
I din't find a way to do so for golang.

workaround https://github.com/termux/termux-packages/pull/21667/commits/10e3b958b614e42272eded008745a40bfe589358

@eliasnaur would you mind take a look on this? Current implementation on Android use dlopen which causes two problems:

impossible to build static executable
runc deadlock on dlopen for some reason https://github.com/termux/termux-packages/pull/21667


how to use it in c++?

is there any work to conver this project in c++, and work with c++ environment?

is there any work to conver this project in c++, and work with c++ environment?

i want to deploy it on cpu with c++, so any body can help me?


Something went wrong during completion. Reason: 'parse_mode'

this response is given by the bot to any request to the artist

Do you still face this problem?


Add AutoFit feature to FluentDataGrid component

Pull Request
📖 Description
Introduced the AutoFit property to the FluentDataGrid component, enabling columns to auto-fit the grid width using JavaScript. Updated XML documentation and added a new demo section in DataGridPage.razor to showcase this feature. Created DataGridAutoFit.razor component for demonstration purposes.
Modified FluentDataGrid.razor and FluentDataGrid.razor.cs to implement AutoFit functionality, including invoking a JavaScript function to adjust column widths. Simplified SortByColumnAsync methods using ternary operators.
Updated CSS in FluentDataGrid.razor.css and FluentDataGridCell.razor.css to support AutoFit, ensuring proper styling and visibility of grid cells. Added autoFitGridColumns JavaScript function in FluentDataGrid.razor.js. Removed redundant CSS rules and adjusted formatting for consistency.
🎫 Issues
#2495
👩💻 Reviewer Notes
Not much to this.
📑 Test Plan
This is mostly client side code.
✅ Checklist
General

[ ] I have added tests for my changes.
[x] I have tested my changes.
[x] I have updated the project documentation to reflect my changes.
[x] I have read the CONTRIBUTING documentation and followed the standards for this project.

Component-specific

[ ] I have added a new component
[ ] I have added Unit Tests for my new component
[x] I have modified an existing component
[ ] I have validated the Unit Tests for an existing component

⏭ Next Steps

Can you explain how do you compute the column width?
And why do you use a JavaScript code to do that, and why not use the Flex `auto' property? One problem with using a JS is there are some side effects, like "the columns are not resized with the browser resize" or "the column sizes are recalculated when the user clicks on the col header to sort", ...

Can you explain how do you compute the column width?
And why do you use a JavaScript code to do that, and why not use the Flex `auto' property? One problem with using a JS is there are some side effects, like "the columns are not resized with the browser resize" or "the column sizes are recalculated when the user clicks on the col header to sort", ...

My skill in CSS is limited, so I don't know much about Flex or other CSS abilities which is why I didn't go that route. Also, there is the grid-template-columns attribute, which I've never heard of, so wasn't sure how that works.
Here's how my solution works:
I start by overriding some CSS with the .auto-fit class on the data grid that disables the overflow and text-overflow properties of the cells. I also set the visibility to hidden to temporarily hide the ugliness of the process. This is a technique I've used in the past (Internet Explorer days). It makes the cells invisible but takes up the space it needs to render the content.
Here's the JS pseudo code:

Get the available width for the grid
Loop through the columns and find (flatMap) the biggest width of each cell of the column
Add up those values to see how much room the cell widths exceed the overall available width
Calculate the ratio and apply said ratio to each column width while building the grid-template-columns string

Scenario:

Grid width: 800px
Column widths (needed to render full content): 100px, 100px, 50px, 750px = 1000px
Ratio is 800/1000 = 0.8
New column widths: 80px, 80px, 40px, 600px = 800px

For me, this was a simple way to make that first render better. This could be broadened to execute on resize pretty easily. I don't think it's too necessary on sort/pagination as the content typically would be similar in length. This also does not interfere with column resizing by the UI. It simply sets the widths, and the user can resize columns as they see fit.
I implemented this in my project and thought the community could start with this and make it better. If you, or anyone else, has suggestions, I'm happy to learn and would apply changes that make it better.

That's interesting, I think you should add this explanation above the examples, to explain how these column widths are calculated:

Get the available width for the grid
Loop through the columns and find the biggest width of each cell of the column
Add up those values to see how much room the cell widths exceed the overall available width
Calculate the ratio and apply said ratio to each column width while building the GridTemplateColumns string

Next, you need to find a way to avoid "duplicating the configuration": you should only use AutoFit="true" but not force the developer to define GridTemplateColumns. When using AutoFit, GridTemplateColumns should be ignored.
<FluentDataGrid Items="@people" GridTemplateColumns="auto-fit" AutoFit="true">

I also wonder how this "calculation with cells temporarily rendered invisible" functionality will behave on platforms such as MAUI, or with the Virtualization feature. Could you check these two cases?
On the other hand, there's the fit-content attrribute which might help. But I don't think it would be a viable solution.

Other points.

Can you round off the calculated value to avoid unnecessary precision? Which is copied on all lines.
grid-template-columns="160.18437118437117px<PHONE_NUMBER>892552px<PHONE_NUMBER>957265px<PHONE_NUMBER>306472px
=> grid-template-columns="160px 174px 180px 517px

Why not use the fr unit instead of px? This allows the display to be calculated proportionally when the page is loaded, but adapted if the user resizes the screen.
grid-template-columns="160fr 174fr 180fr 517fr

That's interesting, I think you should add this explanation above the examples, to explain how these column widths are calculated:

Get the available width for the grid
Loop through the columns and find the biggest width of each cell of the column
Add up those values to see how much room the cell widths exceed the overall available width
Calculate the ratio and apply said ratio to each column width while building the GridTemplateColumns string

Next, you need to find a way to avoid "duplicating the configuration": you should only use AutoFit="true" but not force the developer to define GridTemplateColumns. When using AutoFit, GridTemplateColumns should be ignored.
<FluentDataGrid Items="@people" GridTemplateColumns="auto-fit" AutoFit="true">

I also wonder how this "calculation with cells temporarily rendered invisible" functionality will behave on platforms such as MAUI, or with the Virtualization feature. Could you check these two cases?
On the other hand, there's the fit-content attrribute which might help. But I don't think it would be a viable solution.

I tested with virtualization and, no surprise, it doesn't work there. OnAfterRenderAsync is called before the data is rendered. Is there an event/callback after the virtualized rows are rendered? I see that RenderRow is called for each row but don't see where we can know when all rows are done rendering. Maybe disallow auto-fit when Virtualized is turned on?
I've never done a MAUI project so I can't test quickly there. If I have time I can try. Maybe for now just note that it's untested in MAUI?
One thing I noticed with grid-template-columns is that its use here seems atypical. The W3Schools site has a more basic implementation so it doesn't line up with what's going on with FluentDataGrid. This auto-fit wouldn't be necessary (and may not be) if the implementation was more basic. However, this component isn't basic, so I understand that it may have evolved beyond the original CSS design.

Other points.

Can you round off the calculated value to avoid unnecessary precision? Which is copied on all lines.
grid-template-columns="160.18437118437117px<PHONE_NUMBER>892552px<PHONE_NUMBER>957265px<PHONE_NUMBER>306472px
=> grid-template-columns="160px 174px 180px 517px
Why not use the fr unit instead of px? This allows the display to be calculated proportionally when the page is loaded, but adapted if the user resizes the screen.
grid-template-columns="160fr 174fr 180fr 517fr

As I was addressing this, I realized that there was no need to calculate the ratio and all that mess. Basically the fr unit will do that for the browser. So, I reduced it down to loop and build the string using the full max width of each column and using the fr unit instead. I refactored the .js code to make it cleaner.


Add My University

Hi there!My university's official website is: https://www.joongbu.ac.kr
My student email domain name is: jmail.ac.kr
I am a new student and need to apply for JetBrains benefits, but it shows that I am not eligible and need to add the school. I hope you can help me apply successfully. At the same time, I also understand that our school may have been added to the abuse list for some reasons before, but now I understand that our school has restricted many IPs. Most of the time, only students from this campus can access it. I hope to be able to review and assess whether it can be restored. Thank you!

@kkduunless lib/domains/abused.txt: this request has an incorrect file path format, please ensure that you are familiar with     this repository rules located at the bottom of this page and change     your request accordingly. If you don't know how to change request, close it and open a new one.     If you are not able to make the pull request according the instructions, please send us an email to<EMAIL_ADDRESS>Please mention this request URL in the message.

@kkduunless I am sorry, this domain has been previously abused. Please enroll to GitHub Student Developer Program at https://education.github.com/discount_requests/application. Then apply for JetBrains educational subscription with your GitHub account (GitHub tab at https://www.jetbrains.com/shop/eform/students).
I have to close this request without merging.
Thank you for your understanding!


Custom Dialog Design

Hi Rey,
Thanks for the amazing library.
I have used the DialogFragment in my app at many places. However, i have scenario to build a dialog which is similar to the playstore rating dialog. Anyone has built it in this way? Actually when i specify the my layout in contentview for builder, the layout is embedded inside dialog but i need the layout to be like the playstore rating.
Please find below screenshots.

Thanks

@rey5137
Can you please suggest how can i create a custom design for the dialog?
Thanks


10Mbps limit download speeds via ws4w

IS there a 10mbs limit if so, anyway to overcome it ?

Hi @Anik1134, WS4W certainly does not impose any bandwidth limitations. WireGuard might have an option to do so, but I'm not aware of it. The server's internet connection should be shared with peers, so you shouldn't have any other limitations except the connection between the peer and the server.


扩展主机意外终止。请重新加载窗口以恢复。

VSCode Version: Code 1.11.2 (6eaebe3b9c70406d67c97779468c324a7a95db0e, 2017-04-13T08:03:11.395Z)
OS Version: Windows_NT ia32 10.0.15063
Extensions: none

Steps to Reproduce:

The extended host terminated unexpectedly. Please reload the window to restore.

Translation according to Google Translate, for anybody else who was curious.
@qq12020306
There is not enough information.
没有足够的信息。

Likely #25175


Set env COMPOSER_ALLOW_SUPERUSER to 1

Hey, cool image, thank you!
Using it to run my unit tests that need composer and the zip extension.
Do you mind adding ENV COMPOSER_ALLOW_SUPERUSER 1 to the Dockerfile? This will disable the composer warning, see https://getcomposer.org/doc/03-cli.md#composer-allow-superuser

Hey @Toflar ! Sorry I forgot to answer you sooner. Thanks for your interest in this project!
Seems a good idea… just wondering if there could be any unintended side effects…? 🤔

Nah, it just disables the warning that‘s all :)


Exception when rel table is not imported

Environment: OSX 11.7 (binary) and Ubuntu 20 (debug)
An exception occurs when executing the following steps:

Create a node table User
Create a relationship table Follows,
Import demo-db/user.csv
Query MATCH (a:User)-[f:Follows]->(b:User)

The exception does not occur if step 3 is executed before step 2 (importing user.csv before creating the relationship table Follows). Rather, the result return empty, which I assume is the desired output.
➜  shell git:(master) ✗ ./kuzu_shell -i db
Opened the database at path: db
Enter ":help" for usage hints.
kuzu> CREATE NODE TABLE User(name STRING, age INT64, PRIMARY KEY (name));
-------------------------------------
| NodeTable: User has been created. |
-------------------------------------
(1 tuple)
Time: 6.40ms (compiling), 9.51ms (executing)
kuzu> CREATE REL TABLE Follows(FROM User TO User, since INT64);
---------------------------------------
| RelTable: Follows has been created. |
---------------------------------------
(1 tuple)
Time: 1.70ms (compiling), 10.66ms (executing)
kuzu> MATCH (a:User)-[f:Follows]->(b:User) RETURN a.name, b.name, f.since;
-----------------------------
| a.name | b.name | f.since |
-----------------------------
(0 tuples)
Time: 45.32ms (compiling), 1.83ms (executing)
kuzu> COPY User FROM "user.csv";
------------------------------------------------------
| 4 number of tuples has been copied to table: User. |
------------------------------------------------------
(1 tuple)
Time: 0.69ms (compiling), 15.31ms (executing)
kuzu> MATCH (a:User)-[f:Follows]->(b:User) RETURN a.name, b.name, f.since;
kuzu_shell: /home/rfdavid/Devel/waterloo/kuzu/src/storage/storage_structure/disk_array.cpp:346: U& kuzu::storage::BaseInMemDiskArray<U>::operator[](uint64_t) [with U = unsigned int; uint64_t = long unsigned int]: Assertion `apCursor.pageIdx < this->header.numAPs' failed.
[1]    224357 abort (core dumped)  ./kuzu_shell -i db

Hi David!
Thanks for reporting the bug to us.
The reason for this bug is that:
The adjLists which stores in the Follows relTable for the nodes that you added through COPY User FROM "user.csv"; is not initialized properly. We will fix this bug as soon as possible.


Configuration file precedence/hierarchy

Hi,
scenario is:

Vagrantfile allows user custom configuration based on nugrant
Vagrantfile should stay as simple as possible
User should not be forced to configure all variables available

My understanding for the .vagrantuser file within the same directory as Vagrantfile would be to define default values IF a user does not configure those in his/her custom ~/.vagrantuser.  I'd favor something like:
# Vagrantfile
...
if Vagrant.has_plugin?('nugrant')
  config_vm_box = config.user.vagrant.vm.box
  config_vm_box_check_update = config.user.vagrant.vm.box_check_update
else
  config_vm_box = 'ubuntu/trusty64'
  config_vm_box_check_update = false
end
...
config.vm.box = ENV['VAGRANT_BOXNAME'] || config_vm_box
config.vm.box_check_update = confg_vm_box_check_update

# ~/.vagrantuser (note: this does not configure box update check
vagrant:
  vm:
    box: centos/7

# .vagrantuser (within the same dir as Vagrantfile)
vagrant:
  vm:
    box: ubuntu/trusty64         # this SHOULD NOT win over ~/.vagrantuser -> centos/7
    box_check_update: false

My understanding would be to use .vagrantuser for sane defaults IF a user does not define some configuration variables, but not to overwrite user specific configuration (which this plugin is for).
My real issue is Vagrantfile getting complex if any nested YAML from .vagrantuser file needs to get sanitized for availability. afaik if there is a nested key referenced in Vagrantfile which is not configured in ~/.vagrantuser, vagrant up fails.
What do you think?

The current hierarchy/precedence follows other "implicit" conventions usually used by tools like git. For example, a config specific to a particular repository always win over the user home configuration file. In this optic, for example, I often used my work email in my default user home configuration git config --global user.email<EMAIL_ADDRESS>Then, when I work on a personal project from the same computer, in the actual toy repository I do git config --local user.email<EMAIL_ADDRESS>The --local is stored in the repository (like ./.vagrantuser) while the global one is in my home directory (similar to ~/.vagrantuser). This means a commit in this specific toy repository picks up me personal email which effectively overrides my "global" config.
To provide sane defaults, you can specify them directly in your Vagrantfile using config.user.defaults:
if Vagrant.has_plugin?('nugrant')
  config.user.defaults = {
    vagrant: {
      vm: {
        box: 'ubuntu/trusty64',
        box_check_update: false
      }
    }
  }

  config_vm_box = config.user.vagrant.vm.box
  config_vm_box_check_update = config.user.vagrant.vm.box_check_update
else
  config_vm_box = 'ubuntu/trusty64'
  config_vm_box_check_update = false
end
...
config.vm.box = ENV['VAGRANT_BOXNAME'] || config_vm_box
config.vm.box_check_update = confg_vm_box_check_update

This would cause a default to be set (in a nested fashion) which would fix the undefined keys problem when a user does not explicitly define the key anywhere. Since you make nugrant optional, you could even "factorize" defaults value differently so they are repeated only once:
  defaults = {
    vagrant: {
      vm: {
        box: 'ubuntu/trusty64',
        box_check_update: false
      }
    }
  }

  if Vagrant.has_plugin?('nugrant')
    config.user.defaults = defaults
  else
      config_vm_box = defaults[:vagrant][:vm][:box]
      config_vm_box_check_update =  defaults[:vagrant][:vm][:box_check_update]
  end

I'm even wondering if there would be a way to "inject" new things in config directly when nugrant is not available, something like:
  if Vagrant.has_plugin?('nugrant')
    config.user.defaults = defaults
  else
      # I doubt this actually works, but there might be a possibility to make it work, not sure ...
      config[:user] = defaults
  end

  # Then you could also use config.user.vagrant.vm.box even when `nugrant` is not available

Of course, if you enforce usage of nugrant, Vagrantfile would be a bit less complicated. If that would be the case, I could even add a fifth level which would pick configuration from the ENV variable that would override everything. In fact, I think adding this could be a good feature.
Feel free to correct me if I did not get what you meant correctly :O
Regards,
Matt

Thanks for pointing out the defaults section again, I just missed that. Great!

Glad it's now sorted out :)


autofill nickname with filename

I think the concept of a nickname is still sort of confusing to users. Maybe we should make it less prominent, like a checkbox or something that says "change nickname".

lol
uhhhhh
lol

( ͡° ͜ʖ ͡°)


cannot create jira issues

I'm not really sure how to help debug, but please let me know. jira list works just fine, but when I attempt jira create -v --project="Platform Tooling" I just get:
ERROR Invalid Usage: 400 Bad Request

Figured it out thanks to @danrjohnson
given you're logging in w/ your email address:
email address<EMAIL_ADDRESS>~/.jira.d/config.yml should be
endpoint: https://someorg.atlassian.net
user: someone
login<EMAIL_ADDRESS>authentication-method: api-token

The user field is the username people @mention you on JIRA tickets.
and in your ENV VARS: set JIRA_API_TOKEN to the API token generated at id.atlassian.com.
Atlassian why do you make this so complicated 🙃


Benchmark fails sometimes.

ab -c 2 -n 2000 <IP_ADDRESS>:8000/
This is ApacheBench, Version 2.3 <$Revision: 1748469 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking <IP_ADDRESS> (be patient)
Completed 200 requests
Completed 400 requests
Completed 600 requests
Completed 800 requests
Completed 1000 requests
Completed 1200 requests
Completed 1400 requests
Completed 1600 requests
Completed 1800 requests
apr_pollset_poll: The timeout specified has expired (70007)
Total of 1999 requests completed

Even for as less as 2000 get requests with only 2 concurrency the benchmark is failing.
The kitura code is
import Kitura
import HeliumLogger
import LoggerAPI
import SwiftyJSON

HeliumLogger.use()

let router = Router()

router.all(middleware: BodyParser())

router.get("/"){
    request, response, _ in
    try response.send(json: JSON(["message": "Hello World"])).end()
}

Kitura.addHTTPServer(onPort: 8000, with: router)
Kitura.run()

Is there some problem with multithreading inside Kitura?

@sujaykakkad It's possible you are running out of ephemeral ports.  Are you running on a Mac?
It appears that by default, ApacheBench does not use keepalive, so will open a new socket connection to Kitura for each request.  On Mac, there are 16k available port numbers by default (49152 - 65535).  After each request completes, the socket remains in TIME_WAIT state until a period of time has elapsed.
If I repeat your command 9 times in quick succession, I get the same result.
Can you try running ab with the -k (Keep-alive) flag and see if this solves your problem?

Yes I am using mac. I tried with keep alive and now it is working without any timeout. Also I will have to use -k command on linux as well?

Also whenever anyone want to use my swift api keep-alive header is compulsory?

Keep alive is not compulsory. Kitura works perfectly well without keep alive.
Your problem was that you ran out of sockets on the client side of things on your mac. This is a mac related issue and not a Kitura related issue. Even on the mac it's only an issue if you are trying to open lots and lots of sockets, which is what you were doing without keep alive.

Closing this as not a Kitura issue.

Ok thanks.


Modification to work in a multi-window

We have a unique situation that involves moving between 2 normal window level windows using makeKeyAndVisible.
We found that we needed to modify the updateViewHierarchy() call at line 594 as follows:
BOOL windowIsVisible = !window.hidden && window.alpha > 0 && window.keyWindow;
to prevent showing the HUD on a non-key window.
Version 2.0.3

Pull requests are always welcome.

I have the same issue. Two windows, one for the main app, the other as a passcode view.
Someone has submitted a pull request here, https://github.com/SVProgressHUD/SVProgressHUD/pull/571/commits/a7fd2752849e4d9f2a7d521f670e6e5f93d67280

@jamiecurran Thanks man! It just work！


Improve the UI for better User Interaction and experience

The UI consists of colors that are not feasible for an easy look and vision, hence the theme needs to be updated.

Also the footer needs to be fixed too.

ok so  try to make it and raise PR