KW_IsRectEmpty definition

Why do the x and y coordinates play a role in whether a KW_Rect is empty?  And why must both the width and height be zero?  Assuming a rectangle got a width of zero, but a non-zero height, the area it spans would still be zero, yet it wouldn't be considered empty...

Yeah, I agree it should be reviewed. I guess we need KW_GetRectArea() in this case, it is generally being used for that reason. What is an empty rect needs more debate, maybe KW_IsRectEmpty should be rename to KW_IsRectZeroed or something.

The reason I'm bringing this up is twofold, once it's because I'm pretty sure that the x and y coordinates aren't involved, the other is because the requirement of both the width and height being zero reminds me of the scrollbox scrollbar bug.

Actually, KW_IsRectEmpty can be removed, no one is using it.

Hm, grep disagrees here and found two hits in KW_label_internal.c and KW_renderdriver_sdl2.c.

My grep-fu failed me then.

Fixed in f40b56f
I removed the macro entirely. Turns out the x/y check was needed in the sdl2 renderdriver. An completely empty rectangle would mean to disable SDL clipping. Obviously even this assumption is wrong. I've also fixed that, now you need to explicitly pass a NULL KW_Rect pointer to KWSDL_setClipRect.


Multiple results not supported by the Admin UI

Running a query like:
SELECT value FROM cpu_load_short; SELECT value FROM cpu_load_short2

gets a correct response back from the server, but only displays a table for the first result in the set.
Here is an example of the response to the query:
{
    "results": [
        {
            "series": [
                {
                    "name": "cpu_load_short",
                    "columns": [
                        "time",
                        "value"
                    ],
                    "values": [
                        [
                            "2009-11-10T23:00:00Z",
                            0.64
                        ]
                    ]
                }
            ]
        },
        {
            "series": [
                {
                    "name": "cpu_load_short2",
                    "columns": [
                        "time",
                        "value"
                    ],
                    "values": [
                        [
                            "2009-11-10T23:00:00Z",
                            0.64
                        ]
                    ]
                }
            ]
        }
    ]
}

I'd like to contribute to this functionality but all the admin code is minified and in some cases obfuscated.
Is there a chance you release that code so it can be improved by others?

@marcosnils the admin code lives in its own open repo: https://github.com/influxdb/influxdb-admin.
We encourage you to make pull requests there, thanks!

@marcosnils also, that code will likely be completely rewritten in the next two weeks, so adding small features at this point may not be very valuable

Thx for the clarifications. I'll wait for the next release then

closing in favor of #3503


Failing GPU tests on CUDA 8

I'm running on a GTX 1070.  This is compiled with CUDA 8.0 release candidate.
The ./test_gpu script fails with the following error:
Running GPU tests
terminate called after throwing an instance of 'std::runtime_error'
  what():  Error: compute_ctc_loss in small_test, stat = execution failed
Aborted (core dumped)

Attaching a debugger, I see:
(gdb) run
Starting program: /warp-ctc/build/test_gpu
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Running GPU tests
[New Thread 0x7fffef84b700 (LWP 10325)]
[New Thread 0x7fffef04a700 (LWP 10326)]
terminate called after throwing an instance of 'std::runtime_error'
  what():  Error: compute_ctc_loss in small_test, stat = execution failed

Program received signal SIGABRT, Aborted.
0x00007ffff6d55c37 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
56  ../nptl/sysdeps/unix/sysv/linux/raise.c: No such file or directory.
(gdb) bt
#0  0x00007ffff6d55c37 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
#1  0x00007ffff6d59028 in __GI_abort () at abort.c:89
#2  0x00007ffff7660535 in __gnu_cxx::__verbose_terminate_handler() () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#3  0x00007ffff765e6d6 in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#4  0x00007ffff765e703 in std::terminate() () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#5  0x00007ffff765e922 in __cxa_throw () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#6  0x0000000000403e33 in throw_on_error (message=0x4097f8 "Error: compute_ctc_loss in small_test", status=<optimized out>) at /storage/deep_learning/warp-ctc/tests/test.h:11
#7  small_test () at /storage/deep_learning/warp-ctc/tests/test_gpu.cu:63
#8  0x000000000040360f in main () at /storage/deep_learning/warp-ctc/tests/test_gpu.cu:333

The default compilation flags don't compile for the Pascal architecture, you'll need to modify CMakelists.txt to include sm_60.

That worked, thank you!  For reference, here is what I added to CMakeLists.txt:
set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} -gencode arch=compute_60,code=sm_60")

I installed cuda10.1,  RTX 2080 GPU, but still have this problem.
`# need to be at least 30 or __shfl_down in reduce wont compile
set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} -gencode arch=compute_30,code=sm_30 -O2")
set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} -gencode arch=compute_35,code=sm_35")
set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} -gencode arch=compute_50,code=sm_50")
set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} -gencode arch=compute_52,code=sm_52")
IF (CUDA_VERSION GREATER 7.6)
set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} -gencode arch=compute_60,code=sm_60")
set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} -gencode arch=compute_61,code=sm_61")
set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} -gencode arch=compute_62,code=sm_62")
ENDIF()`


Strong return type when passing a bare Promise; return promise from preload

Hi! Very good and wonderful library, I made some changes to suit my project, maybe they're helpful?

Return type is now inferred when passing a bare Promise
preload now returns the cached Promise, so you can know when preloading is done

I would love to see the second change in particular propagate out to @react-three/fiber's useLoader, drei's useTexture etc! It allows more strategic preloading of assets (wait for high-priority assets to load before loading others).
This works in my project but I definitely haven't tested it exhaustively.

Approve this PR please. I need this futures.

Hey thanks for the contribution, you've changed a lot just to make return a stronger type – can you elaborate on why you've made the much larger changes?

no, i barely remember doing this! 🙃


Bump sbt version to 1.2.0

thanks!

Oops, gonna revert this for the time being.

yeah saw the comment from @eed3si9n 👍


Command failed: convert: unable to open image

When trying to run I get error ...
`bash-3.2$ cordova-splash
Checking Project & Splash
✓  platforms found: ios
✓  splash.png exists
✓  config.xml exists
Generating splash screen for ios
resize arg
arg 1242x2208
resize arg
arg 750x1334
resize arg
arg 640x1136
resize arg
arg 2208x1242
resize arg
arg 2048x1536
resize arg
arg 1536x2048
resize arg
arg 1024x768
resize arg
arg 768x1024
resize arg
arg 640x960
resize arg
arg 320x480
{ [Error: Command failed: convert: unable to open image platforms/ios/Plantar Fasciitis Treatment/Resources/splash/Default-Landscape~ipad.png': No such file or directory @ error/blob.c/OpenBlob/2702. convert: WriteBlob Failed platforms/ios/Plantar Fasciitis Treatment/Resources/splash/Default-Landscape~ipad.png' @ error/png.c/MagickPNGErrorHandler/1630.
] timedOut: false, killed: false, code: 1, signal: null }`

found the problem:
You need to switch to proper folder structure for 4.0.1 ios cordova lib
//splashPath : 'platforms/ios/' + projectName + '/Resources/splash/',
splashPath : 'platforms/ios/' + projectName + '/Images.xcassets/LaunchImage.launchimage/',
I just switched in my local module code, hadnt have time to proper check for ios lib version to create pull req :( Hope someone else has time ...

One more thing ... this only happens when using CORDOVA to build ... if I use PHONEGAP it is still Resources/splash as target dir

Thanks for opening this issue. Location has been changed with PR #17.


ZendeskAPI::Ticket appears to be using API v1?

Hey there. I'm getting Zendesk set up in our Rails app, and, following the documentation I've set up the client with basic auth, and attempt to create a ticket as follows:
ZendeskAPI::Ticket.create!(client, subject: "Test", comment: { value: "test" }, priority: "urgent")

The response I get back seems to indicate that ZendeskAPI::Ticket.create is using API v1, and is unable to authenticate me.
post https://MYURL.zendesk.com/tickets
  Accept: "application/json"
  Accept-Encoding: "gzip;q=1.0,deflate;q=0.6,identity;q=0.3"
  User-Agent: "ZendeskAPI Ruby 1.14.4"
{:ticket=>#<ZendeskAPI::SilentMash comment=#<ZendeskAPI::SilentMash value="test"> priority="urgent" subject="Test">}
Status 400
  server: "nginx"
  date: "Wed, 28 Jun 2017 21:18:43 GMT"
  content-type: "text/html; charset=UTF-8"
  content-length: "36"
  connection: "close"
  x-zendesk-api-version: "v1"
  x-zendesk-application-version: "v29.33"
  x-rate-limit: "400"
  x-rate-limit-remaining: "399"
  x-api-deprecated: "Please use /api/v1/tickets"
  set-cookie: "_zendesk_shared_session=STUFF; path=/; secure; HttpOnly, _zendesk_authenticated=; path=/; expires=Thu, 01-Jan-1970 00:00:00 GMT; secure; HttpOnly, _zendesk_cookie=STUFF; path=/; expires=Sun, 28-Jun-2037 20:26:37 GMT; secure; HttpOnly, _zendesk_session=STUFF"
  p3p: "CP=\"NOI DSP COR NID ADMa OPTa OUR NOR\""
  strict-transport-security: "max-age=31536000;"
  x-ua-compatible: "IE=Edge,chrome=1"
  cache-control: "no-cache"
  x-zendesk-origin-server: "app14.pod14.use1.zdsys.com"
  x-request-id: "a38eb0be-0d88-43a7-c3bb-12b5dccccec8"
  x-runtime: "0.179177"
  x-rack-cache: "invalidate, pass"
  x-zendesk-request-id: "c5617d6585fc16ad9521"
"api v1 basic auth access is disabled"

Making a request in Postman to /api/v2/users/me.json with the same basic auth credentials works just fine.
I'm using gem version 1.14.1, and I have an initializer set up for the client as follows:
require "zendesk_api"

module Zendesk
  def self.client
    @client ||= ZendeskAPI::Client.new do |config|
      config.url = "https://MYURLHERE.zendesk.com"

      # Basic / Token Authentication
      config.username = ENV.fetch("ZENDESK_USERNAME")
      config.token = ENV.fetch("ZENDESK_TOKEN")

      config.retry = true

      config.logger = Rails.logger
    end
  end
end

I'm also having similar issue with 1.14.4

@raquelxmoss Well, answering to your and my own problem.
Apparently in the readme it stated that we can manually specify it
bekicot.zendesk.com/api/v2

and then it will use api v2 as endpoint
Probably Zendesk kept bekicot.zendesk.com/tickets endpoint for backward compatibility which is also confuse me :)

I think this can be closed. The documentation states that you must specify an API url ending with /api/v2: https://github.com/zendesk/zendesk_api_client_rb/wiki/Configuration#mandatory-options


Add Function Calling

Can you please add function call feature to make function calls easier?
Feature description:
https://platform.openai.com/docs/guides/function-calling
Thank you

Function calling already exists, and has actually been depreciated by OpenAI, and replaced by Tool Calls.


Add state.cache property

Unused as of yet, should be used for internal optimisations in codecs.

2.9.0


chore: Define basic github actions for the repository

This should verify every PR and also build images for the operator and OLM bundle.

@mmelko - if this was part of the last sprint, don't forget to update the fields so it shows on the project board


Homepage: Current version outdated (1.15.0 superceded by 1.15.1)

According to the homepage, the current version is 1.15.0. This version was superceded by 1.15.1 in July: https://github.com/jzaefferer/jquery-validation/releases/tag/1.15.1
This issue occurs intermittently since at least October. At times, the right version is shown. This issue was previously reported in ticket #1881.

This is ancloudflare caching issue in my eyes.. the latest version is 1.16.0
Maybe some of you guys could also make some noise
https://twitter.com/markusstaab/status/827206737799286786


Can't type in chat

Hello. i can't send anything in chat. i might have been blocked or something, or i did that to my self somehow, if i did block myself on accident, what do i do?

in game im known as SSB

hmm, try just refreshing and changing your username


Add blocks support to RestKit

Is it possible that you will add blocks support to RestKit?
I've done a wrapper for RKClient to use it with blocks
https://gist.github.com/1000954

Done on development.


Shopware Theme compiler tmp css and js files

1. Why is this change necessary?
This change prevents zero content serves during the theme cache compile process.
2. What does this change do, exactly?
In default shopware is writing to the compiled theme cache files timestamp.css and timestamp.js.
With the default behaviour apache and nginx can't deilver the css and js file correctly while the files are written. If the files will be accessed while shopware is writing them zero content files will be served and it can also cause apache bus failures.
With this change shopware will generate tmp files instead of writing the generated files directly.
On theme cache compile tmp files will be written timestamp.css.tmp instead of timestamp.css and timestamp.js.tmp instead of timestamp.js
3. Describe each step to reproduce the issue or behaviour.

Disable theme cache
Access generated cache files with siege for example<PHONE_NUMBER>_2b2090eaa09b34311d796527ee91e5da.css)
Access any shopware page
Apache / nginx are not able to serve the cached files on writing process and will deliver a zero content file

Default behaviour:

Fixed behaviour:

4. Please link to the relevant issues (if any).
/
5. Which documentation changes (if any) need to be made because of this PR?
https://developers.shopware.com/developers-guide/shopware-5-performance-for-devs/#how-the-theme-cache-works
6. Checklist

[ ] I have written tests and verified that they fail without my change
[x] I have squashed any insignificant commits
[x] This change has comments for package types, values, functions, and non-obvious lines of code
[x] I have read the contribution requirements and fulfil them.

 :thinking:

Hey @linushstge, could you please fix your tests?

Hey @linushstge, could you please fix the tests?

done

Hello,
thank you for creating this pull request.
I have opened an issue on our Issue Tracker for you. See the issue link: https://issues.shopware.com/issues/SW-24317
Please use this issue to track the state of your pull request.

Thanks for your Contribution! :blue_heart:


⚠ GitLab Server has degraded performance

In d814fb5, GitLab Server (https://gitlab01.its-telekom.eu) experienced degraded performance:

HTTP code: 200
Response time: 9246 ms

Resolved: GitLab Server performance has improved in 7476932.


[Bug] Incompatibility with "Iron's Spells 'n Spellbooks" Curios Slot "Spellbook" [NeoForge 1.20.1]

The mod Iron's Spells 'n Spellbooks adds a curios slot for spellbooks. But when using Accessories and the Curios Compat Layer for Accessories, the additional curios slot does not appear. I cannot tell if it is added, but not visible in the UI, or if it simply is not being added.
Accessories version 1.0.0 beta .26 for NeoForge
Curios Compat Layer for Accessories version 7.4.0 beta.10 for NeoForge
Iron's Spells 'n Spellbooks version 3.4.0 for NeoForge
Steps to Reproduce:

With Accessories, Iron's Spells 'n Spellbooks, and the Curios Compat installed, add an  Iron's spellbook to your inventory
With the spellbook in hand, press 'V' to equip it
Spellbook disappears, and is not added to Accessories UI
Manually checking the Accessories UI, no "Spellbook" slot is present

Additional Information: latest.log
The log does not seem to have any useful information, but I've added it just in case there is something helpful in there that I'm not seeing.

Ah, seems like I forgot the needed Legacy Player binding required for curios. Should be a simple thing to update.

Pushed an update that fixes this issue


Tele5 (not a duplicate of issue 2303)

Checklist

[X] I'm reporting a broken site
[X] I've verified that I'm running yt-dlp version 2021.12.27. (update instructions)
[X] I've checked that all provided URLs are alive and playable in a browser
[X] I've checked that all URLs and arguments with special characters are properly quoted or escaped
[X] I've searched 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
Germany
Description
Tele 5 video download fails (worked until day before yesterday).
Site unterwent complete rebuild a week and half ago, breaking until-then method of download, but video download still generally worked, you only needed to go to the detail page for a movie/series rather than the overview page. Also, you could no longer download several episodes of a series in one go.
Now: Does not work at all any longer, no matter what.
Verbose log
[debug] Command-line config: ['--verbose', 'https://tele5.de/mediathek/fargo/die-schmutzige-strae/']
[debug] User config file: C:\Users\...\AppData\Roaming\yt-dlp\config.txt
[debug] User config: ['--compat-options', 'all', '--yes-playlist', '--fragment-retries', '100', '--no-check-certificate', '--buffer-size', '512M', '-c', '-N', '48', '--prefer-insecure', '--write-sub', '--sub-lang', 'en_US,ko_KR,en_GB,en,ko', '--embed-subs']
[debug] Encodings: locale cp1252, fs utf-8, out utf-8 (No ANSI), err cp1252 (No ANSI), pref cp1252
[debug] yt-dlp version 2021.12.27 [6223f67] (win_exe)
[debug] Compatibility options: list-formats, no-keep-subs, seperate-video-versions, no-live-chat, no-clean-infojson, format-sort, no-youtube-channel-redirect, playlist-index, embed-metadata, no-playlist-metafiles, multistreams, format-spec, no-attach-info-json, filename, no-direct-merge, abort-on-error, embed-thumbnail-atomicparsley, no-youtube-unavailable-videos
[debug] Python version 3.8.10 (CPython 64bit) - Windows-7-6.1.7601-SP1
[debug] exe versions: ffmpeg 2021-08-04-git-3b298640e1-full_build-www.gyan.dev (setts), ffprobe 2021-08-04-git-3b298640e1-full_build-www.gyan.dev
[debug] Optional libraries: Cryptodome, mutagen, sqlite, websockets
[debug] Proxy map: {}
[debug] Using fake IP <IP_ADDRESS> (DE) as X-Forwarded-For
[debug] [Tele5] Extracting URL: https://tele5.de/mediathek/fargo/die-schmutzige-strae/
ERROR: [Tele5] die-schmutzige-strae: Unable to extract jwplatform id; please report this issue on  https://github.com/yt-dlp/yt-dlp . Make sure you are using the latest version; type  yt-dlp -U  to update. Be sure to call yt-dlp with the --verbose flag and include its complete output.; please report this issue on  https://github.com/yt-dlp/yt-dlp . Make sure you are using the latest version; type  yt-dlp -U  to update. Be sure to call yt-dlp with the --verbose flag and include its complete output.
  File "yt_dlp\extractor\common.py", line 599, in extract
  File "yt_dlp\extractor\tele5.py", line 102, in _real_extract
  File "yt_dlp\extractor\tele5.py", line 91, in extract_id
  File "yt_dlp\extractor\common.py", line 1182, in _html_search_regex
  File "yt_dlp\extractor\common.py", line 1173, in _search_regex

Looks like #2303 to me. You didnt explain why you think it is not

With my yt-dl patch, this page gives the Missing deviceId in context error, so that may be the difference.

Can someone who has access to this video on browser confirm whether or not it is DRM? From what we discussed in the other issues, that error happens in case of DRM

Yeah, the linked video is using Widevine DRM.


add R.splitEvery

Supersedes #1050
This pull request differs from #1050 in several ways:

the implementation is significantly simpler;

this version of splitEvery throws if given a non-positive slice length; and

this version of splitEvery is defined in terms of slice so is defined for String as well as Array†.

† I'm picking up on a theme here: provide slice, get lots of things free.

† I'm picking up on a theme here: provide slice, get lots of things free.

Yes, but it also makes me nervous.  The implementation in #1050, with a suitable use of generators, could reasonably be turned into something that works on streams or other lazy structures; it would fit well with Transducers.  This version is now limited to types that implement slice or that themselves define splitEvery.  This makes me edgy.

Yes, but it also makes me nervous.

me too. Feels much more "easy" than "simple" in the Hickeyan sense.

I've updated this pull request.

I can live with this.
:herb:

This would be useful to me. My main concern is whether the user would assume splitEvery(2, [1,2,3]) === [[1,2],[3]] or [[1,2]]. The behavior of zip makes me think the later, but I guess that'd be lossy.


Invalid access token when attempting to annotate a build

I've been playing with the new annotation feature in buildkite-agent but I cannot seem to get it to authenticate with the v3 API. First I found it curious that the agent needed the --agent-access-token flag set (I thought it would pull it from the config), then I found it strange that the Authorization: header was either not being set or shown in the console when using the --debug --debug-http flags. I then attempted to make a manual request with telnet, setting the Authorization: header myself, but still got an error:
{"message": "Invalid access token"}

The access token I am using is directly from /etc/buildkite-agent/buildkite-agent.cfg. Is there another access token I should be using? Any idea what could be the issue?
I'm sending the request like so:
$ openssl s_client -connect agent.buildkite.com:443
...
... SSL handshake
...
---
POST /v3/jobs/<job id>/annotations HTTP/1.1
Host: agent.buildkite.com
User-Agent: buildkite-agent/<IP_ADDRESS>6 (linux; amd64)
Content-Length: 38
Content-Type: application/json
Authorization: Token <token>
Accept-Encoding: identity

{"body":"hello world","context":"random","style":"info"}

Hey @ox! Sorry you’re having trouble using the annotation gear.
Are you running the command from inside a build step? If so, it should pick up all the required env vars, including the agent session token. Or maybe you’re running it in Docker (or similar) and the env vars aren’t being passed through?
You’ll need to pass through:

BUILDKITE_AGENT_ACCESS_TOKEN
BUILDKITE_JOB_ID

Let us know if you need help doing that.
If you’re trying to create an annotation outside of a build step, you’ll need to use the GraphQL API.

Ahh interesting. I was running it as the buildkite-agent user on the build machine we have set up. Is it absolutely required to pass through the args as environment variables or will the buildkite-agent annotate flags do the job? I attempted to call the buildkite-agent, outside of a build step, like so:
 echo "hello world" | buildkite-agent annotate --job <job id> --style info  --agent-access-token "<access token>" --debug-http --debug

and got:
401 Invalid access token

Sorry yeah, I think that’s a different token. It requires a session (access) token which the agent sets up internally and exposes as the environment variable, whereas “agent start” requires a registration token (the one from your agent config file).
I can see how the docs and naming made this confusing.
If you want to call it outside of a build step, you’ll need to use the GraphQL API sorry.

Going to close this for now, let us know if you still need help @ox!


Update transitfeeds.com to reference the new API

On https://transitfeeds.com/

Update "Sign in with Github" to "Register for the new API" with https://mobilitydatabase.org/sign-up
Update "Report a Data Issue" link to point to https://github.com/MobilityData/mobility-database-catalogs
Update API page with new text:

"If you would like to use the new API with up-to-date GTFS feeds, go to https://mobilitydatabase.org/. The old TransitFeeds API can still be used for accessing historical data."
https://transitfeeds.com/about

Update Submit a feed or report an issue to point to https://github.com/MobilityData/mobility-database-catalogs

Banner on all pages

Update "TransitFeeds data is not regularly updated. Find up-to-date GTFS Schedule data on the the Mobility Database catalogs." to "TransitFeeds data is not updated. Find up to date GTFS data on the Mobility Database catalogs with the spreadsheet or API. "

Comp design here

All done ✅


Jason Kelce (combined)

This is the combined  Jason Kelce PRs from Red Hat Summit 2024.
This superseeds #1028 #946

I dare say that with your edits, @bjhargrave, you may have just created the "best" version to show as an example qna.yaml file for people to learn how to ask the questions.

@instructlab-bot precheck

Hi! :wave:
With the new update and release of 0.18.0, our base knowledge submissions have drastically changed. This has given us an opportunity to significantly improve the accuracy of our fine-tuned models, which is a major win for our community!
But alas, that has caused some changes that this PR isn't able to continue forward. We greatly appreciate the work you've put into this, and wish we could accept it but the amount of work to get it to be version: 3 is unrealistic for us to ask.
If you do want to do this, please don't hesitate to take the qna.yaml update it, and build it out. Otherwise, we hope you come back to our community with a new submission and help build out our Open Source community-driven LLM.
If you have any questions directly, please don't hesitate to comment on the PR or email me at awesomeATinstructlab.ai (yes, really), and I'll do my best to answer your questions.


Only the pirate bay still works.

The rest return no results.

Yeah, probably the domain is now blocking the access or things might have changed on the site.

OK. Thanks for writing it anyway!
On Tue, Nov 12, 2019, 17:50 Sumanjay<EMAIL_ADDRESS>wrote:

Yeah, probably the domain is now blocking the access or things might have
changed on the site.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/cyberboysumanjay/Torrent-Searcher/issues/1?email_source=notifications&email_token=AJVAJBCFCOVLTG4O2NY7ZHDQTLUFFA5CNFSM4JMGZA4KYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOED3EJTI#issuecomment-553010381,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AJVAJBBRILQTEWQ5YMDSPP3QTLUFFANCNFSM4JMGZA4A
.

BTW. None of them is working now. So I'll try to modify the codes for the optimal use.


Add ARP/NDP responders to external IP assigner

Apart from assigning IPs to the dummy interface, this commit will also create
raw sockets and listen for ARP requests packets (IPv4) and Neighbor Solicitation
packets (IPv6). This fixes the issue that Egress cannot work in IPv6 mode
as the system would not reply to Neighbor Advertisement from external
interfaces if the IP is assigned to the dummy interface. The IP assigner
will skip managing the dummy device if dummyDeviceName is empty. This avoids
the kernel creating a local route, which has a higher priority than the routes
installed by antrea-proxy in proxyAll mode.
Signed-off-by: Tianyi Huang<EMAIL_ADDRESS>

Codecov Report

Merging #3318 (91d822f) into main (15de4cf) will decrease coverage by 18.33%.
The diff coverage is 4.24%.

@@             Coverage Diff             @@
##             main    #3318       +/-   ##
===========================================
- Coverage   60.95%   42.62%   -18.34%
===========================================
  Files         266      239       -27
  Lines       26508    23982     -2526
===========================================
- Hits        16159    10223     -5936
- Misses       8597    12404     +3807
+ Partials     1752     1355      -397

Flag
Coverage Δ

kind-e2e-tests
42.62% <4.24%> (-5.21%)
:arrow_down:

unit-tests
?

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


WIP/DEBUG: Fix AppVeyor

Fixing failure like https://ci.appveyor.com/project/ChrisRackauckas/diffeqpy/builds/21165850

[ ] Remove commits with [DON'T MERGE]

This should be fixed once PyJulia 0.3 is out.


How can I listen to the event of click on label(both node label and edge label)?

I would to provide the user interface so they can modify label interactively.

@dash14 Sorry for the late response. The code snippet looks very clear, I'll try it later.

I close this issue for now.
If you have any questions, please re-open this or open a new issue.


Fix: background rect width of usernames, of other realtime users (pointer sharing)

Description
Fixed the problem in figuring out proper width of background box
Type of change

Bug fix (non-breaking change which fixes an issue)

How Has This Been Tested?

manual

Checklist:

[ ] My code follows the style guidelines of this project
[ ] I have performed a self-review of my own code
[ ] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[ ] My changes generate no new warnings
[ ] I have added tests that prove my fix is effective or that my feature works
[ ] New and existing unit tests pass locally with my changes

Test coverage results :test_tube:
:red_circle: Total coverage has decreased
// Code coverage diff between base branch:release and head branch: fix/bg-width-of-username-pointer-sharing

Status
File
% Stmts
% Branch
% Funcs
% Lines

:red_circle:
total
54.91 (-0.01)
36.93 (-0.01)
33.26 (0)
55.5 (0)

:green_circle:
app/client/src/pages/common/CanvasMultiPointerArena.tsx
61.96 (0)
12.82 (0.62)
56.25 (0)
63.22 (0)

:red_circle:
app/client/src/utils/autocomplete/TernServer.ts
50.47 (-0.24)
37.72 (-0.88)
36.21 (0)
55.08 (-0.27)

import export test is failing. Merging this as it is unrelated.


about clip and registration

Hello. After the features extracted by clip are converted by torch.load, there is only one key feat. However, when I continue the registration task, I notice that feat_1 and feat_2 are required in CLIp_featues. py. At the same time, I noticed that there are "clip_unified_pairs" in the path when you load data. May I ask if you still take some steps to pair them after extracting features with clip? These are steps I may not have taken.

Thanks for the question! For registration task, since we are registering two subsets of the point cloud (points observed from views #0 ∼ #31 and views #32 ~ #63), we need to first render two point clouds for each scene. Basically, you could modify the "img_dirs" in "fusion_scannet_dinov2.py", "fusion_scannet_lseg.py", etc. to contain only the #0 ∼ #31 / #32 ∼ #63 views, instead of all the images in the scene.
Then, as features coming from different foundation models could have slight differences on their valid points specified by ['mask_full'] in each feature, we need to find an intersection among the features from all the foundation models. Afterwards, we apply farthest point sampling (FPS) to select 4096 points for each point cloud (if their original number of points is larger than 4096). Notice, these selected 4096 points will be the same for all the foundation model features, for fair comparison.
The code below can be used for reference: (I haven't cleaned it up yet)
import os
import torch
import numpy as np
import fpsample

feature_list = ["dinov2", "lseg", "sd21", "sd21-l1", "svd", "svd-l1", "vjepa"]
scene_list = os.listdir("/scratch/bbsh/zsh/lexicon3d/dinov2_val/pcd2/dinov2_features/")

for scene_name in scene_list:
    feature_path = os.path.join("/scratch/bbsh/zsh/lexicon3d/", "dinov2", "pcd1", "dinov2" + "_features", scene_name)
    feature = torch.load(feature_path)['mask_full']
    feature_7 = torch.ones(feature.shape[0], dtype=torch.bool)

    pos_path = os.path.join("/scratch/bbsh/zsh/lexicon3d/", "dinov2", "pcd1", "dinov2" + "_points", scene_name.replace(".pt", ".npy"))
    pos_full_list = np.zeros((feature.shape[0], 3))
    pos = np.load(pos_path)

    pos_full_list[feature] = pos

    for feature_name in feature_list:
        feature_path = os.path.join("/scratch/bbsh/zsh/lexicon3d/", feature_name, "pcd1", feature_name + "_features", scene_name)
        feature = torch.load(feature_path)['mask_full']
        print(torch.sum(feature))
        feature_7 = torch.logical_and(feature, feature_7)

    pcd_1_intersect_idx = np.array(torch.argwhere(feature_7).squeeze())
    selected_pos_1 = pos_full_list[feature_7]

    if selected_pos_1.shape[0] > 4096:
        fps_samples_idx_1 = fpsample.fps_sampling(selected_pos_1, 4096)
        fps_samples_idx_1.sort()
        selected_idx_1 = pcd_1_intersect_idx[np.array(fps_samples_idx_1)]
    else:
        selected_idx_1 = pcd_1_intersect_idx

    feature_path = os.path.join("/scratch/bbsh/zsh/lexicon3d/", "dinov2", "pcd2", "dinov2" + "_features", scene_name)
    feature = torch.load(feature_path)['mask_full']
    feature_14 = torch.ones(feature.shape[0], dtype=torch.bool)

    pos_path = os.path.join("/scratch/bbsh/zsh/lexicon3d/", "dinov2", "pcd2", "dinov2" + "_points", scene_name.replace(".pt", ".npy"))
    pos_full_list = np.zeros((feature.shape[0], 3))
    pos = np.load(pos_path)

    pos_full_list[feature] = pos

    for feature_name in feature_list:
        feature_path = os.path.join("/scratch/bbsh/zsh/lexicon3d/", feature_name, "pcd2", feature_name + "_features", scene_name)
        feature = torch.load(feature_path)['mask_full']
        print(torch.sum(feature))
        feature_14 = torch.logical_and(feature, feature_14)

    pcd_2_intersect_idx = np.array(torch.argwhere(feature_14).squeeze())
    selected_pos_2 = pos_full_list[feature_14]

    if selected_pos_2.shape[0] > 4096:
        fps_samples_idx_2 = fpsample.fps_sampling(selected_pos_2, 4096)
        fps_samples_idx_2.sort()
        selected_idx_2 = pcd_2_intersect_idx[np.array(fps_samples_idx_2)]
    else:
        selected_idx_2 = pcd_2_intersect_idx

    overlap = torch.logical_and(feature_7, feature_14)
    overlap_1 = overlap[selected_idx_1]
    overlap_2 = overlap[selected_idx_2]

    saved_data = {"idx_1": selected_idx_1, "idx_2": selected_idx_2, "overlap_1": overlap_1, "overlap_2": overlap_2}

    torch.save(saved_data, os.path.join("./selection_info/", scene_name))

Basically the saved information in "./selection_info" tells you which points are selected for downsampling the point clouds to 4096 points.
After having this information, we could use it to downsample the point clouds rendered for the two subsets. You could refer to the code below:
import os
import numpy as np
import torch

scene_list = os.listdir("/scratch/bbsh/zsh/lexicon3d/dinov2/pcd1/dinov2_features/")

feature_list = ["dinov2", "lseg", "sd21", "sd21-l1", "svd", "svd-l1", "vjepa"]

for scene_name in scene_list:
    print(scene_name)
    select_info = torch.load(os.path.join("/scratch/bbsh/zsh/lexicon3d/selection_info/", scene_name))

    for feature_name in feature_list:
        feat_dic = torch.load(os.path.join("/scratch/bbsh/zsh/lexicon3d/", feature_name, "pcd1", feature_name + "_features", scene_name))
        pos = np.load(os.path.join("/scratch/bbsh/zsh/lexicon3d/", feature_name, "pcd1", feature_name + "_points", scene_name.replace(".pt", ".npy")))
        feat = feat_dic['feat']
        mask = feat_dic['mask_full']
        full_feat = np.zeros((mask.shape[0], feat.shape[1]))
        full_feat[mask] = feat

        full_pos = np.zeros((mask.shape[0], 3))
        full_pos[mask] = pos

        pos_1 = full_pos[select_info['idx_1']]
        feat_1 = full_feat[select_info['idx_1']]

        feat_dic = torch.load(os.path.join("/scratch/bbsh/zsh/lexicon3d/", feature_name, "pcd2", feature_name + "_features", scene_name))
        pos = np.load(os.path.join("/scratch/bbsh/zsh/lexicon3d/", feature_name, "pcd2", feature_name + "_points", scene_name.replace(".pt", ".npy")))
        feat = feat_dic['feat']
        mask = feat_dic['mask_full']
        full_feat = np.zeros((mask.shape[0], feat.shape[1]))
        full_feat[mask] = feat

        full_pos = np.zeros((mask.shape[0], 3))
        full_pos[mask] = pos

        pos_2 = full_pos[select_info['idx_2']]
        feat_2 = full_feat[select_info['idx_2']]

        saved_data = {"feat_1": feat_1, "pos_1": pos_1, "feat_2": feat_2, "pos_2": pos_2,
                    "idx_1": select_info['idx_1'], "idx_2": select_info['idx_2'], "overlap_1": select_info['overlap_1'], "overlap_2": select_info['overlap_2']}

        paired_data_save_dir = os.path.join("/scratch/bbsh/zsh/lexicon3d/", feature_name + "_unified_pairs", "feat_xyz_overlap")
        torch.save(saved_data, os.path.join(paired_data_save_dir, scene_name))

Afterwards, we need to self-create some poses to transform the second point cloud in each point cloud pairs:
import os
import numpy as np
import torch
#import pytorch3d

scene_list = os.listdir("/scratch/bbsh/zsh/lexicon3d/dinov2_unified_pairs/feat_xyz_overlap")

def quaternion_rotation_matrix(Q):
    """
    Covert a quaternion into a full three-dimensional rotation matrix.

    Input
    :param Q: A 4 element array representing the quaternion (q0,q1,q2,q3)

    Output
    :return: A 3x3 element matrix representing the full 3D rotation matrix.
             This rotation matrix converts a point in the local reference
             frame to a point in the global reference frame.
    """
    # Extract the values from Q
    q0 = Q[0]
    q1 = Q[1]
    q2 = Q[2]
    q3 = Q[3]

    # First row of the rotation matrix
    r00 = 2 * (q0 * q0 + q1 * q1) - 1
    r01 = 2 * (q1 * q2 - q0 * q3)
    r02 = 2 * (q1 * q3 + q0 * q2)

    # Second row of the rotation matrix
    r10 = 2 * (q1 * q2 + q0 * q3)
    r11 = 2 * (q0 * q0 + q2 * q2) - 1
    r12 = 2 * (q2 * q3 - q0 * q1)

    # Third row of the rotation matrix
    r20 = 2 * (q1 * q3 - q0 * q2)
    r21 = 2 * (q2 * q3 + q0 * q1)
    r22 = 2 * (q0 * q0 + q3 * q3) - 1

    # 3x3 rotation matrix
    rot_matrix = torch.tensor([[r00, r01, r02],
                                [r10, r11, r12],
                                [r20, r21, r22]])

    return rot_matrix

for scene_name in scene_list:
    RT = torch.zeros(4, 4)
    random_pose = torch.rand(4)
    norm_num = torch.norm(random_pose)
    random_pose_normalized = random_pose / norm_num
    random_r_matrix = quaternion_rotation_matrix(random_pose_normalized)
    translation = torch.rand(3) * 2. - 1.
    translation = torch.reshape(translation, (3, 1))
    RT[:3, :3] = random_r_matrix
    RT[:3, 3:] = translation
    RT[3:, 3:] = 1
    torch.save(RT, os.path.join("/scratch/bbsh/zsh/lexicon3d/unified_pose", scene_name))

Finally, use the above generated transformation matrices to transform the second point cloud:
import numpy as np
import torch
import os

scene_list = os.listdir("/scratch/bbsh/zsh/lexicon3d/unified_pose")

feature_list = ["dinov2", "lseg", "sd21", "sd21-l1", "svd", "svd-l1", "vjepa"]

for scene_name in scene_list:
    print(scene_name)
    pose = torch.load(os.path.join("/scratch/bbsh/zsh/lexicon3d/unified_pose", scene_name))
    for feature_name in feature_list:

        feat_xyz_overlap = torch.load(os.path.join("/scratch/bbsh/zsh/lexicon3d/", feature_name + "_unified_pairs", "feat_xyz_overlap", scene_name))
        pos_2 = torch.from_numpy(feat_xyz_overlap['pos_2']).float()
        ones = torch.ones(pos_2.shape[0], 1)
        pos_2_homo = torch.transpose(torch.cat((pos_2, ones), 1), 0, 1)
        pos_2_transformed = torch.transpose(torch.matmul(pose, pos_2_homo), 0, 1)
        pos_2_transformed_homo = pos_2_transformed / pos_2_transformed[:, 3:4]
        feat_xyz_overlap['pos_2_transformed'] = pos_2_transformed_homo[:, :3]
        torch.save(feat_xyz_overlap, os.path.join("/scratch/bbsh/zsh/lexicon3d/", feature_name + "_unified_pairs", "feat_xyz_overlap_transformed", scene_name))

So it is OK to generate a new set of poses for transformation yourself, but if you would like to have the same set of poses as our paper for fair comparison, I could also share with you the transformation poses generated by us, and the features used for the registration task.
Hope the above explanation could help!

Thank you very much for your reply. It was much faster than I expected. May I ask why there are structures like "pcd1" / "pcd2" (such as "dinov2", "pcd2", "dinov2" + "_features")? In the clip folder I generated, the next-level directories are clip_features, clip_points, and clip_voxels. There are no such structures as "pcd1" or "pcd2" in between, so I can't process the point cloud features for pcd1 and pcd2 separately and find the intersection. Have I missed any key steps?

Hi,
As mentioned previously, in the point cloud registration task, since we need to generate two sets of point clouds that represent two subset of views (points observed from views #0 ∼ #31 and views #32 ~ #63) of each scene, we need to modify the feature rendering code to save the features of the two point clouds into the corresponding folders with names "... pcd1 ..." / "... pcd2 ...".


Contact form does not work with other languages

can you confirm it in database what is stored there?

It's left after your fixes...
https://github.com/adr1enbe4udou1n/laravel-boilerplate/commit/88ee2545bc06d02e5c1af6fc312739d709da3624


feature: Bootstrapped Unit and Integration tests

PR Fixes:
Implementation of a Comprehensive Unit and Integration Testing Framework in the CMS Repository.
Changes Made:

Configuration Updates:

Added .env.test for test environment database configuration.
Updated package.json scripts to include unit and integration tests.

Scripts:

Created run-integration.sh for setting up the integration test environment.
Added wait-for-it.sh script to ensure database readiness.

Testing Setup:

Added mock database setup in src/db/mocks/index.ts.
Created resetDb helper for database cleanup in src/tests/helpers/reset-db.ts.
Set up global test configurations in src/tests/helpers/setup.ts and vitest.setup.ts.

Vitest Configuration:

Defined separate configs for unit (vitest.config.unit.ts) and integration tests (vitest.config.integration.ts).

Resolves #[Issue Number if there]
Checklist before requesting a review

[x] I have performed a self-review of my code
[x] I assure there is no similar/duplicate pull request regarding same issue

Hello @hkirat could you please review this PR?

/bounty $50


Check OTOS firmware against newest version

https://github.com/sparkfun/SparkFun_Optical_Tracking_Odometry_Sensor/tree/main/Firmware


Allow software selection to be exported to a file.

This is kinda like how Mintbackup exports the software list. A good idea would be to allow this to be re-imported to select packages to install. An option to export as a batch file in addition to just a plain list in a text file would be a good idea as well.

There's going to be a feature for this in winget, so I'll just use that. What I can do is have a file browse dialog show up when the user clicks the export button, and pass that path to winget with the export command. Likewise for import.

There's going to be a feature for this in winget, so I'll just use that. What I can do is have a file browse dialog show up when the user clicks the export button, and pass that path to winget with the export command. Likewise for import.

The menuitems and code are in there now, but I can't fully test it yet since the winget commands for import and export aren't ready yet.

It's been tested, so I can finally close this. Forgot it was still open.


vue-pagination-2 Combine with v-client page number issue in all browsers chrome IE

Vue.js version: 2
consumed using: (browserify/webpack)
FULL error message (including stack trace):
relevant code:
steps for reproducing the issue:

V-client is using vue-pagination-2 underneath for pagination. what i found is all of the sudden its pagination look is bad. not sure if it break and where it breaks. the pagination width looks good but some how it doesn't arrange it in a single row.

trying to add screen shot but its not allow me to do so.

Please see issue #44. I've made 2.0.3 latest in npm and forced it on vue-tables-2. Try to install vue-tables-2 again and it should pull the correct version

i tired npm update vue-table-2 but its still pointing to<EMAIL_ADDRESS>any idea, i am totally new to this world?.

i tired npm update vue-table-2 but its still pointing to<EMAIL_ADDRESS>any idea, i am totally new to this world?.

I think @matfish2 means<EMAIL_ADDRESS>while<EMAIL_ADDRESS>is the latest Vue Tables 2 release

Upgraded pagination package. Vue tables 2 is now referencing the latest


state.list is not being updated when CREATE method is used

Hi @JiriChara,
I've noticed that the state.list  object is being updated only when an item is deleted or updated, but not when created. Because of this my list is not being rerendered after an item is added.
I gues the code below should be added in the createSuccess callback of createMutations.js in order to fix this issue.
const listIndex = state.list.indexOf(id);

if (listIndex < 0) {
  Vue.set(state.list, state.list.length, id);
}

Hey @tonymihay,
this is done by design. If you are currently dispaying a list of resources that are paginated and sorted in certain way, you probably don't want that newly created resource just appears on the bottom, because you might not be sure if it belongs there. If you need to update the list of resources displayed, you have to call fetchList right after the create.

Closing this for now.


11/6 Publish

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

api/overview/azure/virtualmachines.md
:white_check_mark:Succeeded
View

xml/Microsoft.ServiceBus.Messaging/EventData.xml
:white_check_mark:Succeeded

xml/System.Fabric/FabricClient.xml
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


Impossible to add email in Codacy. Can you remove symbols from auto generated email?

HI!
But I saw when dependabot generate new PR it also generate email like this<EMAIL_ADDRESS>but in this case we cannot pass validation HTML5 specification for email. And when i am trying to add email to Codacy i can't do it.
Is there anyway that dependabot can use a valid HTML5 specification email address?
Do you have any workaround for this?

I think this was probably fixed by the migration from and app to being built into GitHub, so I'll close this. But please reopen if still an issue!


Default synchronous connection pool blocks forever?

We've been using clj-http version 3.5 for a while, and are very happy with it.  But today, we ran into an issue we haven't seen before.   A specific pattern of requests--I can't figure out yet how to isolate this into a unit test--hangs, in what appears to be a wait for a connection to become available from the PoolingHttpClientConnectionManager.
The thread's stack looks like this (with some elision--I am using default middleware):
        java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0x00000000f0ce9c70> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
        at org.apache.http.pool.AbstractConnPool.getPoolEntryBlocking(AbstractConnPool.java:377)

       ...

        at clj_http.core$request.invoke(core.clj:412)
        at clj_http.core$request.invoke(core.clj:347)
        at clojure.lang.Var.invoke(Var.java:379)
        at clj_http.client$wrap_request_timing$fn__3085.invoke(client.clj:1030)
        at clj_http.client$wrap_async_pooling$fn__3093.invoke(client.clj:1063)

      ...

        at clj_http.client$request_STAR_.invoke(client.clj:1165)
        at clj_http.client$get.doInvoke(client.clj:1171)

There are no other threads actively requesting network content.
I enabled pool logging, and here's the end of the console log from the pool:
DEBUG: (PoolingHttpClientConnectionManager.java:320)  Connection [id: 2][route: {}->http://bit.ly:80] can be kept alive indefinitely
DEBUG: (PoolingHttpClientConnectionManager.java:326)  Connection released: [id: 2][route: {}->http://bit.ly:80][total kept alive: 3; route allocated: 1 of 2; total allocated: 3 of 10]
DEBUG: (PoolingHttpClientConnectionManager.java:255)  Connection request: [route: {}->http://www.gov.mb.ca:80][total kept alive: 3; route allocated: 0 of 2; total allocated: 3 of 10]
DEBUG: (PoolingHttpClientConnectionManager.java:288)  Connection leased: [id: 3][route: {}->http://www.gov.mb.ca:80][total kept alive: 3; route allocated: 1 of 2; total allocated: 4 of 10]
DEBUG: (DefaultHttpClientConnectionOperator.java:139)  Connecting to www.gov.mb.ca/<IP_ADDRESS>:80
DEBUG: (DefaultHttpClientConnectionOperator.java:146)  Connection established <IP_ADDRESS>:48939<-><IP_ADDRESS>:80
DEBUG: (LoggingManagedHttpClientConnection.java:88)  http-outgoing-3: set socket timeout to 5000
DEBUG: (PoolingHttpClientConnectionManager.java:320)  Connection [id: 3][route: {}->http://www.gov.mb.ca:80] can be kept alive for 5.0 seconds
DEBUG: (PoolingHttpClientConnectionManager.java:326)  Connection released: [id: 3][route: {}->http://www.gov.mb.ca:80][total kept alive: 4; route allocated: 1 of 2; total allocated: 4 of 10]
DEBUG: (PoolingHttpClientConnectionManager.java:255)  Connection request: [route: {}->http://bit.ly:80][total kept alive: 4; route allocated: 1 of 2; total allocated: 4 of 10]
DEBUG: (PoolingHttpClientConnectionManager.java:288)  Connection leased: [id: 2][route: {}->http://bit.ly:80][total kept alive: 3; route allocated: 1 of 2; total allocated: 4 of 10]
DEBUG: (PoolingHttpClientConnectionManager.java:320)  Connection [id: 2][route: {}->http://bit.ly:80] can be kept alive indefinitely
DEBUG: (PoolingHttpClientConnectionManager.java:326)  Connection released: [id: 2][route: {}->http://bit.ly:80][total kept alive: 4; route allocated: 1 of 2; total allocated: 4 of 10]
DEBUG: (PoolingHttpClientConnectionManager.java:255)  Connection request: [route: {s}->https://bitly.com:443][total kept alive: 4; route allocated: 0 of 2; total allocated: 4 of 10]
DEBUG: (PoolingHttpClientConnectionManager.java:288)  Connection leased: [id: 4][route: {s}->https://bitly.com:443][total kept alive: 4; route allocated: 1 of 2; total allocated: 5 of 10]
DEBUG: (DefaultHttpClientConnectionOperator.java:139)  Connecting to bitly.com/<IP_ADDRESS>:443
DEBUG: (DefaultHttpClientConnectionOperator.java:146)  Connection established <IP_ADDRESS>:57998<-><IP_ADDRESS>:443
DEBUG: (PoolingHttpClientConnectionManager.java:255)  Connection request: [route: {}->http://bit.ly:80][total kept alive: 4; route allocated: 1 of 2; total allocated: 5 of 10]
DEBUG: (PoolingHttpClientConnectionManager.java:288)  Connection leased: [id: 2][route: {}->http://bit.ly:80][total kept alive: 3; route allocated: 1 of 2; total allocated: 5 of 10]
DEBUG: (PoolingHttpClientConnectionManager.java:320)  Connection [id: 2][route: {}->http://bit.ly:80] can be kept alive indefinitely
DEBUG: (PoolingHttpClientConnectionManager.java:326)  Connection released: [id: 2][route: {}->http://bit.ly:80][total kept alive: 4; route allocated: 1 of 2; total allocated: 5 of 10]
DEBUG: (PoolingHttpClientConnectionManager.java:255)  Connection request: [route: {s}->https://bitly.com:443][total kept alive: 4; route allocated: 1 of 2; total allocated: 5 of 10]
DEBUG: (PoolingHttpClientConnectionManager.java:288)  Connection leased: [id: 5][route: {s}->https://bitly.com:443][total kept alive: 4; route allocated: 2 of 2; total allocated: 6 of 10]
DEBUG: (DefaultHttpClientConnectionOperator.java:139)  Connecting to bitly.com/<IP_ADDRESS>:443
DEBUG: (DefaultHttpClientConnectionOperator.java:146)  Connection established <IP_ADDRESS>:57999<-><IP_ADDRESS>:443
DEBUG: (PoolingHttpClientConnectionManager.java:255)  Connection request: [route: {}->http://bit.ly:80][total kept alive: 4; route allocated: 1 of 2; total allocated: 6 of 10]
DEBUG: (PoolingHttpClientConnectionManager.java:288)  Connection leased: [id: 2][route: {}->http://bit.ly:80][total kept alive: 3; route allocated: 1 of 2; total allocated: 6 of 10]
DEBUG: (LoggingManagedHttpClientConnection.java:88)  http-outgoing-2: set socket timeout to 5000
DEBUG: (PoolingHttpClientConnectionManager.java:320)  Connection [id: 2][route: {}->http://bit.ly:80] can be kept alive indefinitely
DEBUG: (PoolingHttpClientConnectionManager.java:326)  Connection released: [id: 2][route: {}->http://bit.ly:80][total kept alive: 4; route allocated: 1 of 2; total allocated: 6 of 10]
DEBUG: (PoolingHttpClientConnectionManager.java:255)  Connection request: [route: {s}->https://bitly.com:443][total kept alive: 4; route allocated: 2 of 2; total allocated: 6 of 10]

I was able to work around the problem by wrapping the code related to this scenario with a (with-connection-pool ...) wrapper.  I just wonder why this was necessary.  Never seen this before.  It isn't obvious that there's more than one outgoing request when the thread blocks indefinitely.
I do wonder about the Connection [id: 2][route: {}->http://bit.ly:80] can be kept alive indefinitely.  Are these connections not being released?
For what it's worth, there was no difference if I tried clj-http 3.7.0.
Thanks,
Eric

Interesting, how are you invoking the http call? Are you passing in your own connection manager then?

I wasn't using an explicit connection manager, and the workaround works if I simply use a unique connection pool in the context of the call that was hanging. I'm wondering naively if this could be a redirection chain that's just too deep for the default pool.

I'm wondering naively if this could be a redirection chain that's just too deep for the default pool.

If you disable redirection on the clj-http level does the problem still occur?

Good question.  I can give that a try.  I can't reproduce the behavior in isolation, but can implement my own redirection following to see if problem recurs when the system is used in normal production.

@ejschoen have you had a chance to try this again?

Apologies.  I haven't had time to try implementing my own redirection here.  I did pull the latest 3.8.0-SNAPSHOT this morning, and am testing in a development branch (primarily to confirm that #416 is fixed), without the explicit connection pool workaround I described above.
Do you think any work you have done between 3.7.0 and now would have addressed this issue?

Do you think any work you have done between 3.7.0 and now would have addressed this issue?

That is possible but I can't say for sure. I did have another question, can you share the code you're invoking clj-http with? (or a reasonable replica). Also, how are you consuming the body of the response?

Not sure this'll help, but abstractly, the code is used to scrape content from pages.
(let [request-headers (merge headers {"User-Agent" (str "i2kconnect/" @i2ksource-version)})
        page (assoc
                      (client/get url (merge
                                                   {:socket-timeout 15000
                                                    :insecure? insecure?
                                                    :throw-exceptions false
                                                    :headers request-headers
                                                    :conn-timeout 15000
                                                    :cookie-store cookie-store}
                                                  (when as {:as as})))
                        :request-headers request-headers)]
 ...)

The as parameter is normally nil, insecure is normally false, and cookie-store is from (clj-http.cookies/cookie-store).   So the body comes back as a string and we feed it into JSoup and snacktory when we get a good :status value.

The as parameter is normally nil

When you say "normally", what is the other option? Something I was originally
wondering about was whether the body could be returned as a stream that was not
being consumed, leading to consuming all of the available connection pool.
The other weird this is that a Pooling connection manager would be used at all,
looking at the code, if no connection pool is specified, a
BasicHttpClientConnectionManager should be used instead:
https://github.com/dakrone/clj-http/blob/6574e0ac0143866c749ca31962e394a903b249ae/src/clj_http/conn_mgr.clj#L183-L192
Is it possible someone has bound *connection-manager* or is providing one to
the request?

This sounds kinda similar to the issues in https://github.com/dakrone/clj-http/issues/251. Basically you need to take special care to cleanup connections after the reading of a response is interrupted otherwise that response continues to be downloaded (consuming one of the available pool threads).

Apologies for not responding sooner.  Two answers:

I looked back at our code from when I originally reported this, and I can confirm that none of our code was binding *connection-manager* at that time.
The :as parameter in the clj-http.client/get call is :stream when we are fetching an RSS feed.  We pass the stream onto feedparser-clj's parse-feed function.  So... if we get a bad feed (e.g., bad XML that can't parse) and feedparser-clj fails and throws an exception, does the cleanup that Paul mentioned above happen?

So... if we get a bad feed (e.g., bad XML that can't parse) and feedparser-clj fails and throws an exception, does the cleanup that Paul mentioned above happen?

It does not, in that case, the stream would still be around and the connection pool can't close until the stream has been read, see:
https://github.com/dakrone/clj-http/blob/master/src/clj_http/core.clj#L347-L358
Where the connection pool is only closed when the stream is closed.
Does this still occur if you use with-open to handle closing the stream in the event an exception is thrown, such as:
(let [request-headers (merge headers {"User-Agent" (str "i2kconnect/" @i2ksource-version)})
      page (assoc
            (client/get url (merge
                             {:socket-timeout 15000
                              :insecure? insecure?
                              :throw-exceptions false
                              :headers request-headers
                              :conn-timeout 15000
                              :cookie-store cookie-store}
                             (when as {:as as})))
            :request-headers request-headers)]
  (with-open [stream (:body page)]
    (parse-feed stream))

This all makes sense, but I'm still worried that I haven't found the case that was causing the pool starvation.
Here is some test code (warn, error, etc are from com.taoensso/timbre):
(defn- show-cm
  [cm message]
  (let [stats (.getTotalStats cm)]
    (println "*****" message)
    (println "***** Available connections:" (.getAvailable stats))
    (println "***** Leased connections:" (.getLeased stats))
    (println "***** Max connections:" (.getMax stats))
    (println "***** Pending:" (.getPending stats))))

(defn test-rss-feed
  [feed-uri]
  (http-client/with-connection-pool {:timeout 5 :threads 4 :insecure? true :default-per-route 4}
    (try (let [cs (cookies/cookie-store)
               feed (try
                      (http-client/get feed-uri {:throw-exceptions false
                                                 :cookie-store cs
                                                 :insecure? true
                                                 :as :stream
                                                 :headers {"User-Agent" (str "i2kconnect/" @i2ksource-version)}})
                      (catch Exception e
                        {:status 500 :body (.getMessage e)}))
               feed-stream (when (= (:status feed) 200) (:body feed))]
           (if (nil? feed-stream)
             (do (error "No content for RSS feed returned.")
                 (error (format "Status %d, body %s" (:status feed) (:body feed))))
             (with-open [stream feed-stream]
               (let [cm conn/*connection-manager*
                     _ (show-cm cm "Before feedparser")
                     entries (try (:entries (feedparser/parse-feed stream))
                                  (catch java.lang.IllegalArgumentException e
                                    (error (format "Unable to parse feed: %s" (.getMessage e)))
                                    (error feed-stream)
                                    []))]
                 (info (format "Found %d entries in feed" (count entries)))
                 (doseq [entry entries
                         ;; to repro with this code, define fix-entry-url to be identity
                         :let [url (fix-entry-url entry)]]
                   (try (let [result (http-client/get url {:throw-exceptions false
                                                           :cookie-store cs
                                                           :headers {"User-Agent" (str "i2kconnect/" @i2ksource-version)}})]
                          (if (= 200 (:status result))
                            (info (format "%s: OK" url))
                            (warn (format "%s: Not OK, status %d" url (:status result)))))
                        (catch Exception e
                          (error (format "Unable to fetch entry at %s: %s" url (.getMessage e))))))))))
         (finally
           (show-cm conn/*connection-manager* "In cleanup")))))

I tried this with a feed that our system thinks is bad:  http://feeds.feedburner.com/gigalaw
Here's what got printed on the console:
***** Before feedparser
***** Available connections: 0
***** Leased connections: 1
***** Max connections: 4
***** Pending: 0
18-Mar-29 14:16:09 debian-monster ERROR [i2ksource.rss] - Unable to parse feed: Invalid document
18-Mar-29 14:16:09 debian-monster ERROR [i2ksource.rss] - clj_http.core.proxy$java.io.FilterInputStream$ff19274a@34414ffc
18-Mar-29 14:16:09 debian-monster INFO [i2ksource.rss] - Found 0 entries in feed
***** In cleanup
***** Available connections: 1
***** Leased connections: 0
***** Max connections: 4
***** Pending: 0

This is what I'd expect.  The with-open scope closes the stream, and what was the leased connection from the pool becomes available.  However, if I change the with-open to let, I get exactly the same output, even though nothing is closing the stream when the feedparser throws the illegal argument exception.  I did look into the source for feedparser up through com.sun.syndication.io.WireFeedInput and I can't see any code along that call chain that closes the stream in the case of an exception.  (I don't think I can test the actual proxy FilterInputStream that clj-http creates for being open to confirm this, can I?)

This all makes sense, but I'm still worried that I haven't found the case that was causing the pool starvation.

Okay, let's try to get some logging from Apache, I've documented how to hook up the apache client's http logging at https://github.com/dakrone/clj-http/#logging can you give that a try with DEBUG logging turned on, that should give us intimate details about connection reuse, closing, etc for the connection pool and request objects.