OpenBLAS threadsafety issues for downstream libraries (NumPy)

Since OpenBLAS is one of the most commonly used BLAS implementations with NumPy, there are currently two points being discussed within NumPy. One thing is the spawning of too many threads when using multi processing/python threads (although is probably something we need to find a solution for, but pointers are welcome!).
The main issue is the thread safety of OpenBLAS when multiple threads are used. This may not be problematic for many projects explicitly using OpenBLAS, but NumPy is a bit different:

NumPy does not actually know which BLAS is being used.
Thus, NumPy has no control on the number of threads (the system default is used).

Together this means NumPy will often use multi threaded OpenBLAS. Now if someone uses a numpy function within threads they might get silently incorrect results (https://github.com/numpy/numpy/issues/11046) and this seems true for OpenBLAS versions 0.2.18, 0.2.20, 0.3.0 (probably generally).
The possibility of silently wrong results deeply troubles me. Downstream users of NumPy are unlikely to be aware of such issues, or might not even notice that they are using BLAS at all. The problem is that there seems to be no easy solution.
We could use locking to disable threading, but that probably is incorrect/unnecessary often as well.
I have been talking with @mattip and others at NumPy, and hoped we can start a small discussion here. Maybe there are fixes/workarounds we can implement in NumPy, but maybe we can also provide help/resources to make OpenBLAS thread safe?

Spawning too many threads is not exactly thread safety issue, it is a configuration choice made by user.
The accuracy issue indeed reproduces even with OpenBLAS threading disabled (but not with ATLAS or reference BLAS)
btw numpy perfectly knows which blas is used, and can set threads as needed (at first sight - could be only problem is no support for OMP nesting in OpenBLAS, or that MKL gets some special treatment, or both)
python -c "import numpy; print(numpy.__config__.show())"
lapack_opt_info:
    libraries = ['openblas', 'openblas']
    library_dirs = ['/usr/lib64']
    define_macros = [('HAVE_CBLAS', None)]
    language = c
blas_opt_info:
    libraries = ['openblas', 'openblas']
    library_dirs = ['/usr/lib64']
    define_macros = [('HAVE_CBLAS', None)]
    language = c
openblas_info:
    libraries = ['openblas', 'openblas']
    library_dirs = ['/usr/lib64']
    define_macros = [('HAVE_CBLAS', None)]
    language = c
blis_info:
  NOT AVAILABLE
openblas_lapack_info:
    libraries = ['openblas', 'openblas']
    library_dirs = ['/usr/lib64']
    define_macros = [('HAVE_CBLAS', None)]
    language = c
lapack_mkl_info:
  NOT AVAILABLE
blas_mkl_info:
  NOT AVAILABLE
None

No, unless I am very very confused, that is incorrect. The config does not tell you what BLAS is being used. Systems such as debian will link to a library somewhere and which library this is actually can be changed at any time. That configuration gives you an idea about which numpy would be compiling against, but it does not know whether this is actually used.
The only way to find out what is actually being picked up at run time is to use ldd. In fact, we (or rather Anaconda) had fun bugs already where the import of things such as Qt, changed which BLAS was picked up from MKL to Accelerate.
Spawning too many threads is not. Personally I am more worried about the other issue. I do not see the incorrect results if I use OMP_NUM_THREADS=1 but maybe it is just less likely or depends on versions.

There have been several efforts since 0.2.18 to remove races, but there may be some still lurking in the level 3 BLAS code. One option to check this is to compile OpenBLAS with make USE_SIMPLE_THREADED_LEVEL3=1 - having a reproducer for the issue should help track this down.

Yup, alternatives did not change config output, I agree it is build config.
I see incorrect results with pthreads openblas, single thread via OPENBLAS_NUM_THREADS=1 or not. They go away with OMP_NUM_THREADS=1 which has no impact on pthread openblas, but probably serializes python multiprocessing?

@martin-frbg reproducer is in linked issue. No problem with netlib or atlas (ubuntu14) , Reproduces well with 0.3.3, incl setting archaic coretypes, have not tried develop version yet.

I am wondering what is shared gemm path that may pick or write something random - could be *_copy ?
The Repeater mentions small matrix sizes...

Does the problem go away with SIMPLE_THREADED_LEVEL3 ? (though if this keeps occuring even with OpenBLAS limited to a single thread, it could be multiple numpy threads each invoking OpenBLAS in parallel in a scenario similar to #1536)

@martin-frbg so this issue should be a specific one and not a general issue, at least with newer OpenBLAS versions? That would be good news! The FAQ read a bit like it might be a deeper/bigger issue.
About OMP/NUM_THREADs, I am not actually sure on the details (or on how the debian/arch Openblas is compiled). On my Arch system OPENBLAS_NUM_THREADS=1 seems also sufficient.

Yup, alternatives did not change config output, I agree it is build config.
I see incorrect results with pthreads openblas, single thread via OPENBLAS_NUM_THREADS=1 or not. They go away with OMP_NUM_THREADS=1 which has no impact on pthread openblas, but probably serializes python multiprocessing?

If I'm understanding this correctly, the issue just got even more troublesome. On my computer (1 CPU, 2 cores), OPENBLAS_NUM_THREADS=1 works perfectly as a workaround, and that is why we thought it's a conflict between python threading and OpenBLAS threading. But if the issue reproduces on some system even with OPENBLAS_NUM_THREADS=1, then there may be another bug hiding somewhere in the stack...

Yes, absolutely sure with opensuse pthread:
AMD A10-5750M APU/PILEDRIVER or SANDYBRIDGE or ATOM
Absolutely no problem with ubuntu OMP version:
Atom(TM) CPU N450/ATOM

@brada4 I don't know whether this is relevant, but I'm not sure about this part:

OMP_NUM_THREADS=1 which has no impact on pthread openblas

It seems from this part of code that it's the other way round:

pthread openblas looks at OMP_NUM_THREADS (as a fallback if it doesn't see OPENBLAS_NUM_THREADS or GOTO_NUM_THREADS), but
OpenMP openblas disregards OPENBLAS_NUM_THREADS completely.

@martin-frbg good, that makes me slightly less nervous :). Would like to still say that if there is somehow we may be able to help, please ask. Not that we have much resources, but if something is important enough maybe we can help out.
@bbbbbbbbba, @brada4 yeah, then my arch at least is just the pthread version, so it does not matter which one I use. I agree that OPENBLAS_NUM_THREADS=1 persistence makes it a lot worse, but frankly it is well above my pain threshold even without it. I would be surprised if half the numpy users even knows this switch exists and that will include those using threading, or using a library that uses threading...

@martin-frbg Sorry, SIMPLE_THREADED_LEVEL3=1 does not fix it for me, but I guess it might be a compile time option? In that case I would have come back later, or maybe Matti might.

Sorry I meant the make option I mentioned earlier.    There is no corresponding runtime option for this.
I am not really familiar with numpy - is it likely that there are several python threads each calling into OpenBLAS dgemm in parallel (and thereby perhaps unknowingly sharing a memory buffer) ?

Yes, the threads are probably calling into OpenBLAS dgemm in parallel. Python has a global interpreter lock, but some numpy routines specifically releases it.

Are there internal (not ones in the external interfaces) OpenBLAS memory buffers that are shared across calls to OpenBLAS functions?

There is a thread buffer pool that was shown to misbehave in some circumstances - the OpenMP side of it was fixed (or worked around) in #1536 (released with 0.3.0) by introducing another compile-time variable.

Right, but does that thread buffer pool even exist in non-OpenMP openblas? It was
static void * blas_thread_buffer[MAX_CPU_NUMBER];

(now static void * blas_thread_buffer[MAX_PARALLEL_NUMBER][MAX_CPU_NUMBER]) in blas_server_omp.c, and I don't see anything like that in blas_server.c.

That would help to oversubscribe cpu cores even better.

Now that I think of it, I don't know whether my own openblas (which comes with numpy) is built with OPENMP=1. What would be the easiest way to check?

You can change BLAS easily on ubuntu:
https://github.com/xianyi/OpenBLAS/wiki/faq#debianlts

After some diving into OpenBLAS code, I suspect that this buffer is the culprit.

threads are calling dgemv_
according to documentation provided with multiprocessing they are PROCESSES, so thread safety issues should not apply....

@bbbbbbbbba it will overflow "under conditions", but it is sized entire pages and strangely never hit any sorts of mprotect()

@brada4 The problem isn't overflowing, it's that as a global buffer, it's being shared by multiple threads in the multiprocessing.pool.ThreadPool.

malloc/free should work in this case, i am a bit confused if it does not damage performance too much (but random numerical effects are to be solved first before they lead to random discoveries)
Then I wonder why numpy uses gemv for dot, if it is that noticeably better then probably OpenBLAS could adapt the idea.
@bbbbbbbbba just that first paragraph of multiprocessing description states something opposite to what is happening here. Probably changing the statement to "processes or threads" should help to sort it out.
@martin-frbg steady failures with pthread versions on anything. OPENBLAS_NUM_THREADS=1 solves the problem. I just lunatically set it to =0 and wondered why it does not do anything.

@brada4 Actually multiprocessing.pool.ThreadPool is completely undocumented, so yeah.

why numpy uses gemv for dot

NumPy uses gemv for matrix @ vector, syrk for matrix @ matrix.T, and gemm for the general matrix @ matrix case

@mattip got the idea, it is not BLAS DOT
Regarding oversubscription problem - would be easy with processes, say all R parallel modules trigger "namespace hook" before loading where you can set all viable _NUM_THREADS=1, which obviously does not work with OMP (and we see MKL instrumenting OMP much better)
@martin-frbg I wonder if this can be tweaked s/max/num/1 to make life better?
#ifdef USE_OPENMP
openmp_nthreads=omp_get_max_threads();

@brada4 not convinced it would "make life better" - I suspect omp_get_num_threads() would typically return 1 there ?

OK, I finally got direct access to a computer with more than 2 cores, and managed to reduce the bug that has been bugging me for days into a minimal working example.
import numpy as np
import threading

def do_test(idx):
    for i in range(100 * idx, 100 * idx + 100):
        a = np.ones((1 << 20, 2)) * i
        b = np.eye(2)
        mat_0 = a.dot(b).reshape(-1)
        mat_1 = a.dot(b).reshape(-1)
        if np.any(mat_0 != mat_1):
            indices = np.nonzero(mat_0 != mat_1)[0]
            if len(indices) > 100: print('Error %d %d' % (i, len(indices)))
            else: print('Error %d %s' % (i, [(j, mat_0[j], mat_1[j]) for j in indices]))

for idx in range(2):
    threading.Thread(target=do_test, args=(idx,)).start()

On computers where it doesn't fail (which seems to be any computer with <= 2 cores), it doesn't. On those where it does fail, it fails with high probability.

omp_get_num_threads will return number of cores at top level, and ones when nested, seems mkl does exactly that

@bbbbbbbbba no need to strategically try to race same code more. Only thing I suspect is that not only gemv being affected, and with more processing per multiprocessing (not gemv/level3, but more like level 3 blas) thread it will just be much harder to race to failure.

Would be good to fix the direct issue in gemv, first! For the bigger picture (I am probably ignorant and just spending effort on making OpenBLAS more thread-safe is the solution):

Might it be very helpful to for example spend effort on annotating OpenBLAS for the clang analyzer, or try runtime race condition checkers?
My impression was that – unless the problem size is small – threading the single problem instead the multiple problems fed in by python threads is likely faster anyway due to cache locality? In that case it might not be totally bad to put a lock in place either inside OpenBLAS or at least NumPy (but it would have to be placed at all interfaces to BLAS), we might simply decide to only allow threaded execution if the BLAS is certainly not multithreaded.

I have no current experience with the clang analyzer, how much annotating would it need ? Part of the
problem with race conditions is that tools like helgrind(valgrind) get really confused by OpenMP.
And I am all for tackling the (now) known problem with gemv first before going after the unknown gremlins. Right now I am a bit behind the curve - is it gemv or dgemm (as suggested in the original numpy ticket, and where rebuilding OpenBLAS with USE_SIMPLE_THREADED_LEVEL3=1 might already help) ?

it is dgemv_ for particular case (np.dot is bot BLAS _DOT):
https://github.com/xianyi/OpenBLAS/issues/1844#issuecomment-435023349

@martin-frbg after a bit of messing about, I am now pretty sure that I got it right. With OpenBLAS config: NO_AFFINITY HASWELL MAX_THREADS=4 compiled with USE_SIMPLE_THREADED_LEVEL3=1 (no other options) the error still occurs. The specific bug here runs dgemv.

Perhaps good news is that gemv_thread seems to be the only code that has this static local buffer (as a result of an attempt to improve performance in issue #532 , around version 0.2.15 so not exactly recent but not classic K.Goto code either)

@bbbbbbbbba you are right, your code calls dgemm, though I could not spot it failing with 2 or 4 cores
Mind to open a new issue? It is certainly different from this one (different function).
Samples: 122K of event 'cycles', Event count (approx.):<PHONE_NUMBER>9, DSO: libopenblas_pthreads.so
Overhead  Comman  Symbol
22.40%  python  [.] dgemm_beta_NEHALEM
19.90%  python  [.] dgemm_kernel_NEHALEM
19.54%  python  [.] dgemm_oncopy_NEHALEM
2.72%  python  [.] blas_thread_server
1.49%  python  [.] dgemm_nn
0.07%  python  [.] exec_blas_async
0.05%  python  [.] exec_blas_async_wait
0.05%  python  [.] pthread_mutex_lock@plt
0.04%  python  [.] pthread_mutex_unlock@plt
0.03%  python  [.] sched_yield@plt
0.02%  python  [.] dgemm_itcopy_NEHALEM
0.00%  python  [.] cblas_dgemm
0.00%  python  [.] gemm_thread_mn
0.00%  python  [.] exec_blas

@seberg it is wildly cleaned up after clang analyzer. scan-build has no complaints whatsoever regarding threading code. Annotations are way too much work for nothing.
@martin-frbg it is as simple as running scan-build make and following instructions on the screen.


How do I read the current text font size while updated?

I need a way to update the state with the current text size (when it resizes I want to update an internal double variable so that I can use it on other areas (that are not auto resized) later on.
Is  there like an "onchange" method or something I can use?

It is not possible to get the font size. I'll think of a way to do it.
Currently AutoSizeText is not my top priority so if you need a fast solution, please open a PR :+1:

Ok, thanks!


Re-create full install instructions for PC or single server

Working with @inkuss to re-create full installation instructions for use in a single server or PC environment.

@inkuss The merge to singleserverupgrade.md was not a big deal, just the intro section.  I kept all of the changes made over the last few months, just

changed the heading to emphasize it's an upgrade
and replaced the bullet point about how to do a fresh full install with a link to the new instructions.

Ready for you!

Hi @sekjal , I reviewed this pull request and approve it. Will you merge it into the lotus branch ? Thank you


Choose S3 signer version

Hi
Is it possible to choose the S3 signer version, my backend only support previous ATM

Would be awesome to have since riak cs does still not support AWS 4 authentication.
Anybody did work on this? @waxzce @EECOLOR?

My fork should support it, but it's ugly...
If it doesn't, i can push the crapy things we build on a project...
But the point is : using AWS sdk is more simple in this case

Thanks for the informations, @waxzce.
Using the AWS SDK is what I did to accomplish my works. Although play-s3 provides a neat api for s3, using the official supported one feels a little more safe and future proof.

It should be a lot easier to support in the 6.0.0 branch: https://github.com/Rhinofly/play-s3/tree/6.0.0
We might be able to use the old Aws3Signer for inspiration: https://github.com/Rhinofly/play-aws-utils/blob/v2.4.2/app/fly/play/aws/auth/Aws3Signer.scala
As you might have noticed, my time to work on this project is very limited

We are not going to add this feature.
If there is any interest in an Aws3Signer, feel free to contribute. The following files can be used as a starting point:
S3Signer.scala
S3SignerSpec
Signer
The interface to implement is: AwsSigner
Note that the S3Signer class should use composition instead of inheritance to support another signer.


Create auto property analyzer and fix

I had to update the infrastructure to enable to set C# and VB language versions.
The first commit is just the analyzer, the second is the infrastructure changes.

Coverage increased (+0.1%) to 90.3% when pulling 84e1efcf77f0cef0da4814e592d7dd0f405a24be on giggio:autoprop into bf97c3aafb22ebe75379e5695b62e2e231406d1d on code-cracker:master.

Could you fix the merge?

@ElemarJR I have rebased on the new HEAD.

Coverage increased (+0.09%) to 91.0% when pulling f997e27589ec94c78b628aaec023b1a999a1eef5 on giggio:autoprop into 4df081f28bc43cc9c9c0b81bbffd04010a22edc2 on code-cracker:master.


fix: infinite loop on tls sock when BIO is full and client renegotiates the handshake

fixes the infinite loop cause by this corner case

I am also adding a test case in df repo for this :)

@romange I sincerely ask for the commit to include @chakaz as well! It was a tag team effort :rocket: :partying_face:

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 77.94%. Comparing base (d30de86) to head (753c286).
Report is 51 commits behind head on master.

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@            Coverage Diff             @@
##           master     #271      +/-   ##
==========================================
+ Coverage   77.60%   77.94%   +0.33%
==========================================
  Files         103      106       +3
  Lines        7824     7974     +150
==========================================
+ Hits         6072     6215     +143
- Misses       1752     1759       +7

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

@kostasrim  can you please sign your commits?


Macros emitted by other macros aren't found

macro_rules! item {
    ($item:item) => { $item }
}

item! {
    macro_rules! indirect_macro { () => {} }
}

indirect_macro!(); // rust-analyzer sees an error here, because it doesn't know of indirect_macro.

{
	"resource": "/Users/nox/src/ra-bug/src/lib.rs",
	"owner": "rustc",
	"code": {
		"value": "unresolved-macro-call",
		"target": {
			"$mid": 1,
			"external": "https://rust-analyzer.github.io/manual.html#unresolved-macro-call",
			"path": "/manual.html",
			"scheme": "https",
			"authority": "rust-analyzer.github.io",
			"fragment": "unresolved-macro-call"
		}
	},
	"severity": 8,
	"message": "unresolved macro call",
	"source": "rust-analyzer",
	"startLineNumber": 9,
	"startColumn": 1,
	"endLineNumber": 9,
	"endColumn": 15
}

I don't think this was ever reported, so here we are.

This might be because we don't do this correctly during name resolution, not necessarily a problem with the macro expansion engine

Yeah, and I remembered we handled this case in our fixed-point loop, so maybe a regression ?

Um.. I think I know the problem :

In first collecting phase, we collected item!() and indirect_macro!() macro_calls
When expanding item!(), we defined a new macro rules indirect_macro! in legacy scope.
When resolving indirect_macro, we only search for module scope. (Because we assumed it cannot be resolved in legacy scope in (1).

But I don't know what's the correct way to fix it ? @jonas-schievink any idea?

I think we should expand item! during collection phase, I believe that's closer to how legacy macros work in rustc anyways. This should always work for legacy macros since they don't need the fixed-point loop.
Not sure how difficult this is to implement, I might look into it later.

Turns out this was really easy, unless I missed something https://github.com/rust-analyzer/rust-analyzer/pull/8128


Blog Post: Daniele LTS Grant

Build Preview:

/blog/daniele-receives-lts-grant

Social Preview:

Looks good to me! @OpenSats/volunteers please do a sanity check. Would love to publish it today.


Component selector is unable to select element by id.

Please provide us with the following information:

OS?  Windows 7, 8 or 10. Linux (which distribution). Mac OSX (Yosemite? El Capitan?)
Ubuntu 14.04

Versions. Please run ng --version. If there's nothing outputted, please run
in a Terminal: node --version and paste the result here:
angular-cli: local (v1.0.0-beta.14, branch: master)
node: 6.4.0
os: linux x64

Repro steps. Was this an app that wasn't created using the CLI? What change did you
do on your code? etc.
Simply do this in your component

@Component({
    selector: '#top-navigation',
    templateUrl: './top-navigation.component.html',
    styleUrls: ['./top-navigation.component.scss']
})

The log given by the failure. Normally this include a stack trace and some
more information.
No error log

Mention any other details that might be useful.

It should work as a native css selector. It goes fine if I do this.
@Component({
    selector: '[id=top-navigation]',
    templateUrl: './top-navigation.component.html',
    styleUrls: ['./top-navigation.component.scss']
})

https://github.com/angular/angular seem like a better place for this issue, it doesn't seem CLI related.


Request for option to set Text Extractor default

Description of the new feature / enhancement
An option to set the default text extractor default to “make result single line” for instance, will be great. This way, users won’t need to keep selecting the option before selecting the image area each time the text extractor function is used. This will greatly increase productivity. Thanks, and kudos on the work so far.
Scenario when this would be used?
When repeatedly using the text extrator function, such as over the period of an online lecture which has many images containing text, over the course of an hour, or more.
Supporting information
No response

I will look into making the Single Line default a setting. In the mean time you can press the S key to turn it on quickly.

I will look into making the Single Line default a setting. In the mean time you can press the S key to turn it on quickly.

Great. Thanks. I tried the shortcut [S Key] you mentioned. Very thoughtful. Thanks so much. Good thought has been put into this module. I used it almost daily, multiple times a day.

Just coming to support this! I'm looking forward to not have to press S every single time :)
Thanks for all the time and effort put into these tools!!

Good idea

If this became an option under 'Activation shortcut' and 'preferred language' in Settings, my heart might explode from the excitement. I've got the shortcut changed to Win+c for speed, but my ring finger is cramping on the 's'.


Fix 6159 (Remove Unexpected Warning of PauliExpectation and AerPauliExpectation)

Summary
Resoleves #6159.
Previous (Aer)PauliExpectation converts a ListOp[PauliSumOp] into a ListOp[SummedOp[PauliOp]].
It raises the Warning.

@Cryoris Thanks.
https://github.com/Qiskit/qiskit-terra/pull/6281/files#diff-b8a5aada04fd2fa0a8762d5ec05e29127f958549d8b47b6daa89f3edb6e7c5d5R48
Sorry, this change has no reason.
https://github.com/Qiskit/qiskit-terra/pull/6281/files#diff-b8a5aada04fd2fa0a8762d5ec05e29127f958549d8b47b6daa89f3edb6e7c5d5R69
This change is necessary.
I was affected by the change below, so I changed the other parts as well, but it was not necessary in hindsight.
There is no difference between them, but it's an unnecessary change, so should I back?

I was affected by the change below, so I changed the other parts as well, but it was not necessary in hindsight.
There is no difference between them, but it's an unnecessary change, so should I back?

I think it's good for bugfixes to change only what's necessary, that makes it easier to review 😉 In this case I'm fine because you said it's not part of the bugfix 👍🏻


STRIPES-810: Ordered and bulleted lists are superimposed on the text …

Purpose
Ordered and bulleted lists are superimposed on the text when the user increases the indent in the "Body" field
Approach
Indent button adds text-indent css property to li tag. Li tag contains ::before pseudo element which is used to display li tag order in list. ::before pseudo element inherits text-indent css property value from li tag so we have to reset it to 0.
Refs
https://issues.folio.org/browse/STRIPES-810

yarn run v1.22.18
$ eslint .
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.


nginx_proxy/.conf and nginx_proxy_default.conf do not appear in Samba 'Share' folder

I have configured the Nginx SSL/TLS Proxy add-on with:
"customize": {
"active": true,
"default": "nginx_proxy_default*.conf",
"servers": "nginx_proxy/*.conf"
}
Nonetheless, the config files do not appear in the Samba folder 'Share' as prescribed here:
https://www.home-assistant.io/addons/nginx_proxy/
I have tried stopping and restarting the server, and even uninstalling and reinstalling the entire add-on, but I cannot locate the conf files to edit them.
My ultimate goal is to add a location to Nginx as described here:
https://www.home-assistant.io/components/notify.html5/
to support HTML5 notifications, which I have already added to my config, GCM, and Firebase.
Thanks.

They do not exist.
You can create them in case you'd like...


Pull in latest IVT changes

Discussed with Brendan and Juan; work is being done to create a murine Cedar spec that will replace the current table-schema in the IVT. As @libpitt has tested the HuBMAP base repo with our services we should be able to abandon the SenNet fork.

We have merged the required features into the base HuBMAP repository and will use that moving forward and abandon the SenNet fork


Failed: Update autorest version to prerelease 3.0.0-alpha.20240506.3

Triggered from pull request: https://github.com/Azure/autorest.csharp/pull/4432

API change check
API changes are not detected in this pull request.


[sil] Add a dump method for operand for use in the debugger.

It dumps the instruction, the value, the operand number, and whether or not the
operand is a type dependent operand.

@swift-ci smoke test


[Feature request]:

What would you like to be added?
Use the aws-iam-authenticator CLI to delete a role from the aws-auth configmap. For ex, aws-iam-authenticator delete role ...
Why is this needed?
With the addition of the add role function, it now makes sense for customers to use the tool's CLI instead of updating the configmap directly; this approach is also advocated in the EKS Best Practices Guide. So, naturally, customers should have the ability to also delete roles from the configmap.
Anything else we need to know?
No response

/remove-lifecycle stale


[SITE] start working on site.

Contents of this PR:

Creating an orphan branch gh_site, hosting the maven-site.
The maven-site is useful for the generated documentation. Maven users will want to see the generates goals documentation.
Adds a new profile docs which will generate javadoc documentation using dokka. I would recommend to move the source-plugin to this profile as well, you don't need it in your everyday verify goal as a developer. It is only needed for releases.

Not in the scope of this PR:

convert all of this stuff to jreleaser. 😃
move source-plugin to the docs profile.
Fix docs
Tests. I cannot test the release script easily, as I do not have push access. I might change the distribution URL  for testing, though. Consider this untested unless noted otherwise.

Codecov Report
Base: 68.27% // Head: 68.27% // No change to project coverage :thumbsup:

Coverage data is based on head (210510e) compared to base (5c06812).
 Consider uploading reports for the commit ca812c4 to get more accurate results

Additional details and impacted files
@@            Coverage Diff            @@
##             master      #51   +/-   ##
=========================================
  Coverage     68.27%   68.27%
  Complexity       40       40
=========================================
  Files            10       10
  Lines           186      186
  Branches         10       10
=========================================
  Hits            127      127
  Misses           51       51
  Partials          8        8

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.

This works for me locally after adding  -DskipStaging=true -DskipRemoteStaging=true to the release.sh script. It failed (as expected) on the git push command because I had set origin to Georg's url (instead of using origin for mine and upstream for Georg's).
Can be reviewed now. 😄


360° scene with multiple objects

thank for you great works!
And i am curious about whether sam3d could work on a 360° scene with multiple objects.if yes which config should i choose to get the best output?

Hi! You can try the figurines scene which contains multiple objects on a table. The config is configs/lerf/figurines.py.


302 Page has moved error with cpi

Environment: devstack pike
Test with both cpi v38 and v35
then when i run:
>     --state=state.json \
>     --vars-store=creds.yml \
>     -o /home/fadzi/tools/bosh-mcpi/bosh-deployment/openstack/cpi.yml \
>     -v director_name=bosh-mcpi \
>     -v internal_cidr=<IP_ADDRESS>/24 \
>     -v internal_gw=<IP_ADDRESS> \
>     -v internal_ip=<IP_ADDRESS> \
>     -v auth_url=http://<IP_ADDRESS>/identity/v3 \
>     -v az=default \
>     -v default_key_name=bosh \
>     -v default_security_groups="[bosh]" \
>     -v net_id=00a83edd-4175-46e1-845a-20960a5a15c8 \
>     -v openstack_password=xxx \
>     -v openstack_username=admin \
>     -v openstack_domain=default \
>     -v openstack_project=pcf \
>     -v private_key=/home/fadzi/tools/mcpi-work/bosh.pem \
>     -v openstack_tenant=pcf \
>     -v region=RegionOne
Deployment manifest: '/home/fadzi/tools/bosh-mcpi/bosh-deployment/bosh.yml'
Deployment state: 'state.json'

Started validating
  Downloading release 'bosh'... Skipped [Found in local cache] (00:00:00)
  Validating release 'bosh'... Finished (00:00:02)
  Downloading release 'bosh-openstack-cpi'... Skipped [Found in local cache] (00:00:00)
  Validating release 'bosh-openstack-cpi'... Finished (00:00:00)
  Validating cpi release... Finished (00:00:00)
  Validating deployment manifest... Finished (00:00:00)
  Downloading stemcell... Skipped [Found in local cache] (00:00:00)
  Validating stemcell... Finished (00:00:14)
Finished validating (00:00:18)

Started installing CPI
  Compiling package 'ruby_openstack_cpi/0eb22bdc9d49ce3255ea58890f9870dc5131501a'... Finished (00:00:00)
  Compiling package 'bosh_openstack_cpi/26c0f940f7cf631b040586aaa5cfed7b6c98cc11'... Finished (00:00:00)
  Installing packages... Finished (00:00:02)
  Rendering job templates... Finished (00:00:00)
  Installing job 'openstack_cpi'... Finished (00:00:00)
Finished installing CPI (00:00:03)

Starting registry... Finished (00:00:00)
Uploading stemcell 'bosh-openstack-kvm-ubuntu-trusty-go_agent/3541.10'... Failed (00:00:01)
Stopping registry... Finished (00:00:00)
Cleaning up rendered CPI jobs... Finished (00:00:00)

creating stemcell (bosh-openstack-kvm-ubuntu-trusty-go_agent 3541.10):
  CPI 'create_stemcell' method responded with error: CmdError{"type":"Unknown","message":"Expected([200, 204, 300]) \u003c=\u003e Actual(302 Found)\nexcon.error.response\n  :body          =\u003e \"\u003c!DOCTYPE HTML PUBLIC \\\"-//IETF//DTD HTML 2.0//EN\\\"\u003e\\n\u003chtml\u003e\u003chead\u003e\\n\u003ctitle\u003e302 Found\u003c/title\u003e\\n\u003c/head\u003e\u003cbody\u003e\\n\u003ch1\u003eFound\u003c/h1\u003e\\n\u003cp\u003eThe document has moved \u003ca href=\\\"http://<IP_ADDRESS>/dashboard/\\\"\u003ehere\u003c/a\u003e.\u003c/p\u003e\\n\u003chr\u003e\\n\u003caddress\u003eApache/2.4.27 (Ubuntu) Server at <IP_ADDRESS> Port 80\u003c/address\u003e\\n\u003c/body\u003e\u003c/html\u003e\\n\"\n  :cookies       =\u003e [\n  ]\n  :headers       =\u003e {\n    \"Connection\"     =\u003e \"close\"\n    \"Content-Length\" =\u003e \"286\"\n    \"Content-Type\"   =\u003e \"text/html; charset=iso-8859-1\"\n    \"Date\"           =\u003e \"Wed, 25 Apr 2018 20:56:03 GMT\"\n    \"Location\"       =\u003e \"http://<IP_ADDRESS>/dashboard/\"\n    \"Server\"         =\u003e \"Apache/2.4.27 (Ubuntu)\"\n  }\n  :host          =\u003e \"<IP_ADDRESS>\"\n  :local_address =\u003e \"<IP_ADDRESS>\"\n  :local_port    =\u003e 49628\n  :path          =\u003e \"/\"\n  :port          =\u003e 80\n  :reason_phrase =\u003e \"Found\"\n  :remote_ip     =\u003e \"<IP_ADDRESS>\"\n  :status        =\u003e 302\n  :status_line   =\u003e \"HTTP/1.1 302 Found\\r\\n\"\n","ok_to_retry":false}

Exit code 1

@voelzmo any idea why it's redirecting to dashboard?

@voelzmo @cppforlife - if you put the correct creds you get the redirect.
with wrong creds eg bad password you get 401 Authorized.
creating stemcell (bosh-openstack-kvm-ubuntu-trusty-go_agent 3541.10):
  CPI 'create_stemcell' method responded with error: CmdError{"type":"Bosh::Clouds::CloudError","message":"Unable to connect to the OpenStack Image Service API: Expected([201]) \u003c=\u003e Actual(401 Unauthorized)\nexcon.error.response\n  :body          =\u003e \"{\\\"error\\\": {\\\"message\\\": \\\"The request you have made requires authentication.\\\", \\\"code\\\": 401, \\\"title\\\": \\\"Unauthorized\\\"}}\"\n  :cookies       =\u003e [\n  ]\n  :headers       =\u003e {\n    \"Connection\"             =\u003e \"close\"\n    \"Content-Length\"         =\u003e \"114\"\n    \"Content-Type\"           =\u003e \"application/json\"\n    \"Date\"                   =\u003e \"Thu, 26 Apr 2018 01:56:41 GMT\"\n    \"Server\"                 =\u003e \"Apache/2.4.27 (Ubuntu)\"\n    \"Vary\"                   =\u003e \"X-Auth-Token\"\n    \"WWW-Authenticate\"       =\u003e \"Keystone uri=\\\"http://<IP_ADDRESS>/identity\\\"\"\n    \"x-openstack-request-id\" =\u003e \"req-09aaf182-61c7-4ab9-b8e6-6d2267b2045c\"\n  }\n  :host          =\u003e \"<IP_ADDRESS>\"\n  :local_address =\u003e \"<IP_ADDRESS>\"\n  :local_port    =\u003e 51401\n  :path          =\u003e \"/identity/v3/auth/tokens\"\n  :port          =\u003e 80\n  :reason_phrase =\u003e \"Unauthorized\"\n  :remote_ip     =\u003e \"<IP_ADDRESS>\"\n  :status        =\u003e 401\n  :status_line   =\u003e \"HTTP/1.1 401 Unauthorized\\r\\n\"\n. Check task debug log for details.","ok_to_retry":false}

Exit code 1


Add another core_array_equality to eurydice_glue.h

Add another core_array_equality function.

Cool, confirm that a1 and a2 are arrays, not slices? From the name it looks like the arguments may be slices.

Ha good catch. It's indeed a slice. I'll update later.


Not working example

After download zip file and run example there only works Key UP/DOWN on Popup.
Example not reacts on mouse  when i want  e.g change tabs

The main example (the one with the chess board) is keyboard-only.
That's because mouse handling is system specific and is not the main focus of this library.
But in the project called ConsoleGUI.MouseExample you can find a Windows specific example that introduces a MouseHandler class which provides support for mouse event processing.


Let's try this

Let's create, solve & reward a ton on github

/ton 100

/solution#152

/reward 152


" pigpio.error: 'pulsewidth not 0 or 500-2500' " error. PLEASE HELP

Whenever I put in the test command bg.test_pattern() the servos move a little bit and then I get this error:
raceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/pi/BrachioGraph/brachiograph.py", line 332, in test_pattern
    self.xy(bounds[0],   y,     wait, interpolate)
  File "/home/pi/BrachioGraph/brachiograph.py", line 475, in xy
    self.set_angles(angle_1, angle_2)
  File "/home/pi/BrachioGraph/brachiograph.py", line 501, in set_angles
    self.set_pulse_widths(pw_1 + self.active_hysteresis_correction_1, pw_2 + self.active_hysteresis_correction_2)
  File "/home/pi/BrachioGraph/brachiograph.py", line 548, in set_pulse_widths
    self.rpi.set_servo_pulsewidth(14, pw_1)
  File "/home/pi/.local/lib/python3.7/site-packages/pigpio.py", line 1677, in set_servo_pulsewidth
    self.sl, _PI_CMD_SERVO, user_gpio, int(pulsewidth)))
  File "/home/pi/.local/lib/python3.7/site-packages/pigpio.py", line 1009, in _u2i
    raise error(error_text(v))
pigpio.error: 'pulsewidth not 0 or 500-2500'

How would I fix this? Would appreciate any help! I am using the ES08MAII servos.

yes i get the same error. please fix this

Same, I got stuck on this error, please advise.

Yeah.

The bounds of the box you are trying to draw the test pattern in are too large, and the pulse-widths required to meet them exceed the allowed values (500-2500mS).
The new default BrachioGraph definition https://github.com/evildmp/BrachioGraph/blob/master/brachiograph.py#L19-L40 and clearer getting-started guide should ensure that you stay within limits.

I tried the new updated version and it worked. Thank you very much for the help!


Add crossorigin attribte to script tag

The crossorigin attribute defines how the browser should behave in cross origin request when fetching resources referenced by the tag. Setting this to "anonymous" prevents the browser from sending cookies or other credentials with the request and thus stops tracking.
https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/crossorigin
I thought it would be nice to have this.
We sadly cannot have integrity checks as those would require pinning a certain mermaid.js version, which seems impracticable.

Sounds great, thanks for the contribution, @themasch!

Sounds great, thanks for the contribution, @themasch!


fix: events page _id problem solved

Event page working fine

Thanks @AbhiPatel10 for fixing it! 👍

@nomadicmehul please add hacktoberfest label in this pr


chore: release main

:robot: I have created a release beep boop
fiber: 1.2.7
1.2.7 (2024-01-11)
Bug Fixes

refactor imports (b6c4a66)

This PR was generated with Release Please. See documentation.

:robot: Release is at https://github.com/pavophilip/react-shader-fiber/releases/tag/fiber-v1.2.7 :sunflower:


Add notification state abstraction for runtime-service

For commonMain, there needs to be an abstraction for managing the notification state based on observers that are subscribed with TorRuntime, much like with 1.x.x, updates to the state should be passed to the implementation's render function, which updates the view.
The abstraction should be testable without needing to reference any platform specific things.

In order to test with Android, need a bare minimum implementation for a Foreground Service that posts up a notification. Need to see functionality of the abstraction and how it reacts given different scenario of when the application is killed.


[Event Hubs] Remove need for ClientOptionsBase, make constructor easier to use

This PR refactors the way EventHubClient is created in order to simplify the API for the constructor.
We do have very helpful static helpers to create the EventHubClient, but the current constructor is not very user friendly as it uses the EventHubsConnectionConfig object which is more of an internal construct and one has to be aware of the amqp-common library to create it.
With the changes in this PR,

the constructor uses the the same signature as the createFromTokenProvider i.e host, event hub name and token provider
The static helper methods for creating an EventHubsClient using a connection string and AAD credentials remain as is. The one that uses the tokenProvider is removed, as the constructor provides the same value
Eventually, when we have the ability to work with Managed Identities better i.e no need for user to provide any secrets, we determine the identity from the application's environment, we will add an overload for the constructor with the tokenProvider argument removed from what is being proposed in this PR.
An added benefit of this approach is that we no longer need a separate ClientOptionsBase interface

An alternative to this design would have been to make the constructor private. But doing so would mean creating a new static helper method when we start supporting Managed Identities that doesn't need user to provide any secrets. I for one, cannot come up with a proper name for such a helper method other than createEventHubClient which doesn't sit well with the other three that use the createFrom prefix.
cc @bterlson and @amarzavery

Merging this PR in order to have the branch event-hubs-track2 used for the API proposal. Will add follow up items after offline discussions in #2718


Fixes and tweaks for navbar

Added a couple of app-specific config files to .gitignore too.

Why does in include merges from different branches back and forth? :P

Well, this new Tower software uses gitflow and I’ve been trying that.  Seems that when it closes off the “hotfix” it first merges into master and then from master to develop.  Not sure why.  In future I’ll just send pull requests from master where possible.
Honestly gotten myself so confused looking at merge histories and trying to straighten it out.  Tried rebasing from your master2 branch but now getting errors trying to sync! FML.  Going to close request, delete my develop branch and resend PR from master. /facepalm

On 4 May 2015, at 23:20, Hellowlol<EMAIL_ADDRESS>wrote:
Why does in include merges from different branches back and forth? :P
—
Reply to this email directly or view it on GitHub https://github.com/Hellowlol/HTPC-Manager/pull/157#issuecomment-98867635.

That has happend to me too when i tried some gui to git. Now i only use sublime github for windows and hub.
When i contributed to upstream i always branched off the default branch (master2 in this case) and dealt with all the merge conflicts in my own branch "master" branch. I have no idea if thats the best solution but that worked for me.
So if there are any git ninjas feel free to pitch in.

Command line.
On 05/04/2015 06:40 PM, Hellowlol wrote:

That has happend to me too when i tried some gui to git. Now i only
use sublime github for windows and hub.
When i contributed to upstream i always branched off the default
branch (master2 in this case) and dealt with all the merge conflicts
in my own branch "master" branch. I have no idea if thats the best
solution but that worked for me.
So if there are any git ninjas feel free to pitch in.
—
Reply to this email directly or view it on GitHub
https://github.com/Hellowlol/HTPC-Manager/pull/157#issuecomment-98875032.

Not everybody is a cli ninja @madclicker :D

You asked and I tell you: cli and stackexchange.
On 05/04/2015 06:48 PM, Hellowlol wrote:

Not everybody is a cli ninja @madclicker
https://github.com/madclicker :D
—
Reply to this email directly or view it on GitHub
https://github.com/Hellowlol/HTPC-Manager/pull/157#issuecomment-98878266.


Add support for duplex: "half" in RequestInit interface

Acknowledgement

[X] I acknowledge that issues using this template may be closed without further explanation at the maintainer's discretion.

Comment
Latest Chrome browser requires setting duplex: "half" flag for the construction of all requests with a streaming body:

However this option does not seem to exist in the RequestInit interface in lib.dom.d.ts, so users cannot construct a Request object with a ReadableStream body without causing an error when running in Chrome.
Currently the only workaround for this issue is to cast the RequestInit object to any, but it is not considered to be a proper solution.

const body: ReadableStream<any> = ...
const request = new Request("https://example.com/", {
  body: body,
  method: "POST",
  duplex: "half"
} as any);

Duplicate of https://github.com/microsoft/TypeScript-DOM-lib-generator/issues/1483.

Currently the only workaround for this issue is to cast the RequestInit object to any

Or use declaration merging and extend the type locally.

There's a lib change template, please use it.


Support Closures in the registration of Filament Panel Colors

[x] Changes have been thoroughly tested to not break existing functionality.
[x] New functionality has been documented or existing documentation has been updated to reflect changes.

This PR adds support for using closures in each of the colors passed as an array to the FilamentColor::register() method. This makes it possible to evaluate theme colors during the application's runtime, which is currently only possible using a custom Middleware. A good use case for this is in a multi-tenant app where tenants should be able to set their own theme colors as part of the tenant configuration.
With this change, the following color registration will be possible from any service provider's boot method:
use Filament\Support\Colors\Color;
use Filament\Support\Facades\FilamentColor;

FilamentColor::register([
    'primary' => fn() => tenant()?->primary_color ?: Color::Indigo,
    'info' => fn() => Filament::getTenant()?->info_color ?: Color::Amber,
]);

Additionally, it will also be possible to use closures in the $panel->colors() method as follows:
use Filament\Panel;
use Filament\Support\Colors\Color;

public function panel(Panel $panel): Panel
{
    return $panel
        // ...
        ->colors([
            'primary' => fn() => Filament::getTenant()?->danger_color ?: Color::Indigo, // Evaluate the color during runtime
            'info' => fn() => settings()->info_color ?: Color::Amber,
        ]);
}

Let's only accept a closure as the top-level argument, instead of per color. Offers the same flexibility and should be more performant.

That was my initial consideration.My only worry was: Will this still allow plugins to override only a single color without necessarily setting all the six colors at once especially via $panel->colors()? I have done tests and confirm this is still possible. Submitting the changes shortly.

Please run Pint

Please run Pint

Done.


Room._listen_task is not cancelled when server closes room

Issue Description
Overview
When the Livekit Server terminates a room and removes a Python client, the task responsible for listening (self._listen_task) does not properly conclude or cancel.
Background
We have set up a Python participant to join a specific room and listen to a particular track. If the track is no longer published, the Python participant leaves the room, completes all asynchronous tasks, and then the process exits. However, if the room is deleted, the Python participant struggles to disconnect and the _listen_task remains active.
Diagnostics
The Room.disconnect() method is designed to clear the task queue and wait for self._task to finish. But, if the Livekit Server deletes the room, the Room.disconnect() cannot complete as it fails the self.isconnected() check, resulting in self._task remaining in a running state.
if not self.isconnected():
            return

View the code segment here: Room.py Line 221
Requested Solution
We suggest introducing an aclose() function to manage disconnections and clean up any remaining asynchronous tasks. Currently, we have implemented the following in the object that utilizes the Room object:
    async def aclose(self):
        if self.is_closed():
            return
        try:
            for task in self._tasks:
                task.cancel()
            await asyncio.gather(*self._tasks, return_exceptions=True)
            await self._room.disconnect()
        except Exception as err:
            logger.error(f"Error shutting down transcript agent: {str(err)}")
        finally:
            if self._room._task:
                self._room._task.cancel()
                logger.warning("Room disconnect method failed to close _listen_task")
            self._closed = True

The correct implementation would be to always call self._room.disconnect like you do, the difference is that we're now awaiting the main task in https://github.com/livekit/python-sdks/pull/200. There is no need to cancel because the Rust SDK should send EOS which will break the infinite loop

I'm going to verify that is https://github.com/livekit/rust-sdks/blob/ea0bc40093ebcc7d308b2c4e8d088340557bdf46/livekit-ffi/src/server/room.rs#L566 is correctly ran if the disconnect comes from the server

Thanks for the quick reply and fix. Will also verify once merged :)


Complaint landing page - Move it into cfgov-refresh

Currently, the complaint satellite app only serves one page that's still in use: the Consumer Complaints Landing Page. This PR moves that landing page into cfgov-refresh, so that we can stop including the complaint satellite app and deprecate its repo.
Additions

A view, template, test file, and assets for the Complaint landing page. We ported all relevant functionality from the complaint repo with minor edits. See individual commit messages for details.

Removals

We no longer pull in the complaint satellite app

Testing

When running cfgov-refresh, view the page at http://localhost:8000/data-research/consumer-complaints/

Todos

[ ] ???

Checklist

[x] PR has an informative and human-readable title
[x] Changes are limited to a single goal (no scope creep)
[ ] Code can be automatically merged (no conflicts)
[x] Code follows the standards laid out in the development playbook
[x] Passes all existing automated tests
[x] Any change in functionality is tested
[x] New functions are documented (with a description, list of inputs, and expected output)
[x] Placeholder code is flagged / future todos are captured in comments
[ ] Visually tested in supported browsers and devices (see checklist below :point_down:)
[ ] Project documentation has been updated
[ ] Reviewers requested with the Reviewers tool :arrow_right:

Testing checklist
Browsers

[ ] Chrome
[ ] Firefox
[ ] Safari
[ ] Internet Explorer 8, 9, 10, and 11
[ ] Edge
[ ] iOS Safari
[ ] Chrome for Android

Accessibility

[ ] Keyboard friendly
[ ] Screen reader friendly

Other

[ ] Is useable without CSS
[ ] Is useable without JS
[ ] Flexible from small to large screens
[ ] No linting errors or warnings
[ ] JavaScript tests are passing

@mistergone your recent commit 4d4f15e modified numerous package-lock.json files. Is that intentional?

@chosak - There were conflicts in the file, so I made a new package-lock.json by running a fresh npm install.

@mistergone what version of npm are you using?
This change also seems to modify unrelated files from other projects, like analytics-gtm, owning-a-home, and changes explicitly pinned versions with version ranges in some places. I might be wrong (ping @anselmbradford @cfarm @Scotchester) don't we want to pin versions in those files so that builds always pull in specific tested versions?

I'm not sure why this PR would need to be changing any package-lock.json files. If I understand the purpose and workings of those, they should only change if something has changed in package.json, correct?

If I understand this issue, it looks like it has to do with a change in npm6 where the versions tracked in package-lock.json now used carats (^) in their notation.
Here's a relevant issue on the npm repo.
So nothing has actually changed here except the format of package.json due to my use of npm v6.1.0 and others using v5.x.x.
We're discussing next steps. 😀

All the package-lock.json files have been reverted to their npm v5 syntax! Thus, there should be no diffs in those files.


Login modal remains displayed after the login is finished

After clicking 'Sign in' (having entered all required credentials), the login modal remains in view until it gives way to the main stream view. We should instead immediately present the stream view to the user.

On 'Sign In' a fetch_api_key request is sent.
On success we redirect to main. On fail we remain on the screen.
I see no good reason why it should redirect to an empty screen that has no data yet, and in case of wrong password go back?

When I tested it on device, a successful sign in redirects to main but also pops open the navigation screen (for login) briefly. I meant we should fix that behavior


test car models: fix random hanging

Running locally, I reproduced a similar failure to the one seen in CI recently. It would get stuck downloading the front camera video, which was unnecessary, and was probably only done to make unlogger happy. Not having to download those videos each time should speed up the test a bit. Also added a timeout to the request so it doesn't just wait forever.
Fixes #1043

Nice! This should also significantly cut down on bandwidth cost to our commadataci bucket :)


Ubuntu 24.04 jobs directly fail after installing libssl-dev package

Description
I am adding gcc13 to ubuntu 24.04 using
 sudo apt-get --yes update
  sudo apt-get --yes install libxerces-c-dev libssl-dev g++-13

Directly after this the jobs all fail with
Restarting services...
 /etc/needrestart/restart.d/systemd-manager
 systemctl restart packagekit.service php8.3-fpm.service runner-provisioner.service systemd-journald.service systemd-networkd.service systemd-resolved.service systemd-udevd.service udisks2.service walinuxagent.service
Error: The operation was canceled.

See https://github.com/RemedyIT/taox11/actions/runs/9252204973/job/25449380677?pr=387
Platforms affected

[ ] Azure DevOps
[X] GitHub Actions - Standard Runners
[ ] GitHub Actions - Larger Runners

Runner images affected

[ ] Ubuntu 20.04
[ ] Ubuntu 22.04
[X] Ubuntu 24.04
[ ] macOS 11
[ ] macOS 12
[ ] macOS 13
[ ] macOS 13 Arm64
[ ] macOS 14
[ ] macOS 14 Arm64
[ ] Windows Server 2019
[ ] Windows Server 2022

Image version and build link
20240516.4.0
Is it regression?
Yes
Expected behavior
Job runs
Actual behavior
Job fails
Repro steps
See the taox11 repo at https://github.com/RemedyIT/taox11

Log file
job-logs.txt

I moved to 24.04 because on 22.04 gcc13 was removed, probably this will hit more users

I used "sudo apt install --no-upgrade ..." as workaround/solution.

Workafound --no-upgrade doesn't seem to work for me, at the moment the CI links with libssl it just failed with ##[error]The operation was canceled., no real error message

In the end I, ahem, did sudo apt remove needrestart...

This is IMO the only real solution for GitHub runners: Any package upgrade from openssl sources triggers a complete systemd restart, i.e. ALL running systemd services, due to needrestart. This naturally kills the connection to the runner. And OpenSSL/LibSSL (-dev) upgrades are common, as well as they are a dependency of many other packages, also for many builds, GitHub Actions are often used for. So whenever one installs libssl-dev for a build to link it, implicitly all OpenSSL/LibSSL packages or this source package will be upgraded, if any upgrade is available, crashing the runner.
So remove needrestart from the runner image, and all is good! Of course a general package update to bring all OpenSSL packages onto latest version along side with this change, makes sense as well.

Hi @jwillemsen ,
We're unable to re-produce the error , Please retry it now by forking the main branch .

@kishorekumar-anchala What?
I takes little effort to reproduce.
name: Test needrestart

on:
  push:

jobs:

  build:
    # Note: as of 2021-01-29, this only works for push, not for pull request
    #if: "!(contains(github.event.head_commit.message, 'skip') && contains(github.event.head_commit.message, 'ci'))"
    runs-on: ubuntu-24.04

    steps:
    - name: install libssl-dev
      run: |
        sudo apt update -qq
        sudo apt install -y libssl-dev
    - name: ok?
      run: |
        echo "ok"

https://github.com/jmarrec/test-Github-Actions/actions/runs/9316043037/job/25643443846

Hi @jmarrec ,
Could you please try with latest ubuntu image
build:
runs-on: ubuntu-latest

@kishorekumar-anchala
Of course the issue does not appear when you build a fresh image with up-to-date APT packages, since it appears when you upgrade OpenSSL source based packages during a workflow.
Within a GitHub Actions workflow run, it must never happen that all systemd services are restarted, the runner-provisioner.service in particular. Hence what needrestart does is naturally harmful for the GitHub runner use case: #9956

Hi @MichaIng ,
Thank you for your input, i have gone through your input and investigate . Also run the pipeline with the same it works. i have raised a PR with your input . credits to you 😊 . Thank you !
@jmarrec , You can review the @MichaIng input .

fixed and rolled now.


Plot.Add.Pie() adds multiple pie charts (and multiple legends)

This issue was emailed to me from Jeff Haley
The legend is duplicated after adding a pie chart: I looked at the PlottableList and noticed that the software had actually added 2 pie charts instead of just one. They were both referencing the same object. I have pasted the code containing the error below. Only the function called with the PieSlice list needs to add the pie chart to the plottable list as it is always called by the function with the double valued array below it. This may affect some of the other overridden functions. I hope this helps. In my project I have used RemoveAt on the PlottableList to remove the extra pie chart object. I think this is an excellent library, very fast and extremely useful. I hope I have helped in some small way.
The error is in this portion of the code:
https://github.com/ScottPlot/ScottPlot/blob/8c2ffc92305e2e198fe32b8d2ce929a6a24b04de/src/ScottPlot5/ScottPlot5/PlottableAdder.cs#L430-L454

Related: #2894

The author clarified, the issue is here:
https://github.com/ScottPlot/ScottPlot/blob/8c2ffc92305e2e198fe32b8d2ce929a6a24b04de/src/ScottPlot5/ScottPlot5/PlottableAdder.cs#L451-L452
The first line calls a method which already creates a Pie and adds it to the chart, and the second line adds it to the chart again.
This bug can be fixed by deleting that second line


Server create

Hi,
nice work. I played around with your sdk and can't create servers.
Uncaught HCGCloud\Pterodactyl\Exceptions\ValidationException: The given data failed to pass validation. in /var/www/testsite/vendor/hcgcloud/pterodactyl-sdk/src/MakesHttpRequests.php:110
My testfile is the following:
require_once("vendor/autoload.php");
$pterodactyl = new \HCGCloud\Pterodactyl\Pterodactyl('xLm12Vhbroswc0CODE2Ds0oLrzrfAtODQoVaqWqYBWOcKDReotFv', 'http://<IP_ADDRESS>/');
$nest_id = 1;
$egg_id = 5;
$location_id = 1;
$egg = $pterodactyl->egg($nest_id, $egg_id); //get docker_image and startup directly from egg
$server = $pterodactyl->createServer([
    "external_id" => 11,
    "name" => "test",
    "user" => 1,
    "egg" => $egg_id,
    "pack" => 0,
    "docker_image" => $egg->dockerImage,
    "skip_scripts" => false,
    "environment" => [],
    "limits" => [
        "memory" => 2048,
        "swap" => 0,
        "disk" => 20000,
        "io" => 0,
        "cpu" => 100
    ],
    "feature_limits" => [
        "databases" => 0,
        "allocations" => 0
    ],
    "startup" => $egg->startup,
    "description" => "",
    "deploy" => [
        "locations" => [$location_id],
        "dedicated_ip" => false,
        "port_range" => []
    ],
    "start_on_completion" => true
]);
print_r($server);

My node is on 0.6.12.
I am able to create servers right in the panel.
Also I'm playing with your newly created node support, there also I got the same errors.

Hi, have you replaced nest_id, egg_id, location_id to your panel's id?

Also the environment variables of the eggs should be set too.

Yes the id's are the same on my testpanel.
Your example is based on a standard fresh installed panel I guess.
Cause all IDs are the same.

try to use the following code:
try {
	$servers = $pterodactyl->createServer([
		///...
	]);
}catch(\Exception $e){
	print_r($e->errors());
}

then you can find which parameter failed to pass the validation.

my test panel is not fresh installed, the ids for me is Vanilla Minecraft eggs.
however it have two environment variables SERVER_JARFILE, VANILLA_VERSION, you should also pass them in your data array, though they have default value:
"environment" = > [
    "SERVER_JARFILE" => "...",
    "VANILLA_VERSION" => "..."
]

Got it...
externalID have to be a string...
Also IO has set between 10 and 1000.
I get node creation running, but need the keys hash from the configuration file.
Searching on the official documentation, I can't find a way to get them.

what's the mean of key hash?

If you add a node successfully, then you have to run ether the auto-deployment or use the given config for core.json.
In this config right at the bottom there is a "keys".
How I get this via API?

you mean the auto deploy of a server? I think it is unnecessary to get the keys of a daemon, it's just for the communication between panel and daemon, also you should not be able get this via api.

if you mean editing this:

you can check https://dashflo.net/docs/api/pterodactyl/v1/#edit-node, as our documentation about node is not finished yet. It's called public in api.

Short automatic procedure:

creating dedicated server via a api from my hoster
installing the os and pterodactyl daemon
creating node via your api

Now I have to link the panel with my node.
The only missing thing is this key to get it run without problems.

I think the api can't do this, you need to install it manually.

Hm, I'll create a issue at pterodactyl directly.
Thank you anyway.
Works perfect with your sdk!

I checked the panel routes just now, it seems that only this route can get the token:
https://github.com/pterodactyl/panel/blob/39f1392eee10d3256c793dba1ec9e2b5f3daefdf/routes/admin.php#L154

https://github.com/pterodactyl/panel/issues/1632
Same feature request already asked :D

Hello!
I want create TF2 server.
Whats wrong?


WIP: Hugo overhaul

https://github.com/HackSocNotts/hacksocnotts.github.io/pull/176#discussion_r660898158
Just pasting it in thread so @zac-garby can find it

Here's a HTML newsletter. See if that works better, and then I can regenerate them all for you.
newsletter-2021-06-29.zip
(Zipped becasue GitHub doesn't like HTML files.)

Here's a HTML newsletter. See if that works better, and then I can regenerate them all for you.
newsletter-2021-06-29.zip
(Zipped becasue GitHub doesn't like HTML files.)

That works perfectly. Image scaling works better than it did with the .md as well.

I think we just need to add photos now

do we have photos for everyone?

also i want to get the backlog of newsletters uploaded, and also i need to get the constitution links and stuff like that working because i don't think i linked them yet

@zac-garby Should we upload photos to this issue?
Also, shall I get you all of the newsletters' HTML?

I'll make a new PR for scaled down versions of the images

i'll actually make a new issue for the photo uploads, just to organise things a bit. and yeah if you could, thanks

having a fairly full backlog of newsletters would be great


Sorting view results

We need a way to sort the results of views.
For example, given the following view:
Question            gender
Values              @
Question    Values
q1          1       7.201447
            2       9.64925
            3       55.662665
            4       72.663656
            5       4.704566
            6       11.496034
            7       21.69883
            8       3.178551
            9       0.099151
            96      2.199429
            98      2.497416
            99      8.949005

We need a way to sort the index, including the ability to exclude or fix some values (for example, in this case the values 96, 98 and 99 which represent some form of non-response like "Don't know", "Prefer not to say", "None of these" and so on.
Question            gender
Values              @
Question    Values
q1          4       72.663656
            3       55.662665
            7       21.69883
            6       11.496034
            2       9.64925
            1       7.201447
            5       4.704566
            8       3.178551
            9       0.099151
            96      2.199429
            98      2.497416
            99      8.949005

We also need a way to apply the sorted order of on view onto other views using the same x-variable. For example in this case you would probably want all other links using q1 in the x-position to be similarly sorted.
Question            gender
Values              1           2
Question    Values
q1          4       36.38664    36.277016
            3       27.682186   27.980479
            7       11.310729   10.388101
            6       5.035425    6.460609
            2       5.187247    4.462003
            1       3.669028    3.532419
            5       2.403846    2.30072
            8       1.644737    1.533814
            9       0.075911    0.02324
            96      1.037449    1.16198
            98      0.986842    1.510574
            99      4.57996     4.369045

There are a few possible approaches here. A quick solution (the focus of this ticket) will be to take a stack and sort links permanently (until re-sorted). A more sophisticated approach would be to decide on sorting when calling a build (this will not be the approach at this time).

I'll implement this using column meta tags that are picked up by paint_dataframe. This means that cascade behaviour across a chain, for example, won't be needed.

I've implemented this in a new meta object called rules, using an option called sortx.
The rules object is a dict with x and y keys for axis-specific rules application. Internally sortx results in a call to a function of the same name. The contents of the slicex object becomes that function call's kwargs.
def sortx(df, sort_col='All', ascending=False, fixed=None):
    """
    Sort the index of df on a column, keeping margins and fixing values.

    This function sorts df, which is assumed to be a Quantipy-style
    view result with appropriate index/column structure, using
    a given column, while maintaining the position of margins if
    they exist, and also optionally fixing certain values at the
    bottom of the result without sorting them. Note that nested
    variable view results are not yet supported.

    Parameters
    ----------
    df : pandas.DataFrame
        The Quantipy-style view result to be sorted
    sort_col : str or int, default='All'
        The column (on the innermost level of the column's
        MultiIndex) on which to sort.
    ascending : bool, default=False
        Sort ascending vs. descending. Default descending for
        easier application to MR use cases.
    fixed : list-like, default=None
        A list of index values that should appear underneath
        the sorted index values.

    Returns
    -------
    df : pandas.DataFrame
        The sorted df.
    """

Given the following crosstab:
print crosstab(meta, data, 'income', 'income_cb')

Question                income_cb
Values                        All    1    2    3    4    5    6   7   8   9   10   11   12  901  902  903
Question    Values
income      All              2078  425  204  187  146  119  103  89  68  59  226  101  351  425  848  353
            1                 425  425    0    0    0    0    0   0   0   0    0    0    0  425    0    0
            2                 204    0  204    0    0    0    0   0   0   0    0    0    0    0  204    0
            3                 187    0    0  187    0    0    0   0   0   0    0    0    0    0  187    0
            4                 146    0    0    0  146    0    0   0   0   0    0    0    0    0  146    0
            5                 119    0    0    0    0  119    0   0   0   0    0    0    0    0  119    0
            6                 103    0    0    0    0    0  103   0   0   0    0    0    0    0  103    0
            7                  89    0    0    0    0    0    0  89   0   0    0    0    0    0   89    0
            8                  68    0    0    0    0    0    0   0  68   0    0    0    0    0    0   68
            9                  59    0    0    0    0    0    0   0   0  59    0    0    0    0    0   59
            10                226    0    0    0    0    0    0   0   0   0  226    0    0    0    0  226
            11                101    0    0    0    0    0    0   0   0   0    0  101    0    0    0    0
            12                351    0    0    0    0    0    0   0   0   0    0    0  351    0    0    0

Set up the sortx rules:
meta['columns']['AMA_qincome']['rules'] = {
    'x': {'sortx': {'fixed': [1, 12, 10, 11]}}
}

meta['columns']['AMA_qincome_cb']['rules'] = {
    'y': {'sortx': {'fixed': [901, 902, 903], 'ascending': True}}
}

Apply the rules using crosstab:
print crosstab(meta, data, 'income', 'income_cb', rules=True)

Question                income_cb
Values                        All   9   8   7   11    6    5    4    3    2   10   12    1  901  902  903
Question    Values
income      All              2078  59  68  89  101  103  119  146  187  204  226  351  425  425  848  353
            2                 204   0   0   0    0    0    0    0    0  204    0    0    0    0  204    0
            3                 187   0   0   0    0    0    0    0  187    0    0    0    0    0  187    0
            4                 146   0   0   0    0    0    0  146    0    0    0    0    0    0  146    0
            5                 119   0   0   0    0    0  119    0    0    0    0    0    0    0  119    0
            6                 103   0   0   0    0  103    0    0    0    0    0    0    0    0  103    0
            7                  89   0   0  89    0    0    0    0    0    0    0    0    0    0   89    0
            8                  68   0  68   0    0    0    0    0    0    0    0    0    0    0    0   68
            9                  59  59   0   0    0    0    0    0    0    0    0    0    0    0    0   59
            1                 425   0   0   0    0    0    0    0    0    0    0    0  425  425    0    0
            12                351   0   0   0    0    0    0    0    0    0    0  351    0    0    0    0
            10                226   0   0   0    0    0    0    0    0    0  226    0    0    0    0  226
            11                101   0   0   0  101    0    0    0    0    0    0    0    0    0    0    0

The rules object also supports slicex (#19) and dropx (#18), all of which may be used in any combination.

When drawing chains out of a stack, rules can be applied to what is extracted in the same way:
chains = stack.get_chain(..., rules=True)

rules will currently only be applied to chain items if the parameter post_process is also True (which it is by default).

Resolved by #40


No barcode printing with WinBond/Zjiang 5890

Hi,
I'm having trouble with getting barcode printing to work: only the code gets printed, not the bars. My printer is this one: http://www.aliexpress.com/item/Free-shipping-New-mini-58mm-thermal-receipt-printer-ticket-pos-58-thermal-printer-USB-black-white/856027185.html
It is identified as ATTRS{idVendor}=="0416", ATTRS{idProduct}=="aabb" and text/image printing work.
Where should I look for the problem? I can see two ways around it: find and fix the issue where barcode is handled, or work around it by rendering the barcode to an image and printing that. I think the first one is simpler, would you agree?

Hi @matiasw. Do you know whether the printer speaks "real" esc/pos?
Have you already solved the problem?

It took me a while to find the problem. My 5802LD from the same manufacture demands a NUL last in the data field. Python-escpos only sends 'self._raw(code)' NOT self._raw(code+'\0'). A work around is to use a line like: Zjiang.barcode('1324354657687\0','EAN13',64,2,'','') OBS! the '\0'. I'm also confused by "BARCODE_FONT_A  = '\x1d\x66\x00' # Barcode font"  In the Zjiang manual it is described as 'GS f n' and f is not x66. But the Zjiang is a topographical disaster with many errors!

You are right. Function type A detects the end of the code with a NUL. Function type B via a supplied length.
So, @DavisGoglin: could you maybe add this to #98 while you're at it? I think we only habe to add a \x00 in A-mode.

OK, I suspect this should be fixed in #98. If no one opposes I will close this issue at the latest after merging into master.

I have this printer http://www.amazon.de/gp/product/B00LUIST7W/ref=ask_ql_qh_dp_hza
which is also Zjiang ZJ-5890T, ID 0416:5011
Everything works except barcode. I tried both master and development branch. The description says that JAN13 (EAN 13) / JAN8 (EAN8) / CODE39 is supported. The programmer manual even says that all usual barcode types and function type A and B are supported.
I tested the demo-code on #98.
This is what it looks like:

Looks like something is wrong.

Hi @bondzo, the Text with a leading @ should go into a Barcode. So it looks like there is a fault somewhere.
Have you already tried to construct a raw control sequence from the manual and pass it directly to the printer with _raw()?

Yes, I tried several _raw sequences - no success.
Thanks for pointing out the barcode.bin file. Not a single barcode is printed. I tried both p.Usb(...) and p.File(/dev/usb/lp0) - same result. The programming manual looks equal.
I'm not dependent on bar codes. Just wanted to fix this. I'll tell you as soon as I found out.

Thank you for testing this! It seems to me that these printers do something very different or simply can't print barcodes :-(
A last resort for someone who really needs that feature could be creating pictures and printing them.

Based on my own tests on this printer, I can basically confirm the above: the ZJ5890T does not speak standard ESC/POS, despite what the manual says. It's likely to be software-based rendering or no-barcodes on this model I'm afraid.
Screen capture below of the PDF shipped with the printer.

I've tried using the pyBarcode library to generate barcode images for python-escpos
Printing "1234" in CODE39 showed a few bugs and missing features. Most of it's in the bug tracker, see bitbucket.
Example
Dependencies for this snippet:
pip install python-escpos pyBarcode

Hacky setup to get a PIL object out without writing to disk:
import barcode
from barcode.writer import ImageWriter

def get_barcode_image(codetype, content):
    """
    Get a PIL image object from a given barcode type and content.

    Note that barcode.PROVIDED_BARCODES contains the list of
    valid barcode types.
    """
    barcode_class=barcode.get_barcode_class(codetype)
    my_code=barcode_class(content, writer=ImageWriter())
    my_code.write("/dev/null")
    return my_code.writer._image

The idea being that you could print it:
from escpos.printer import File
a =  File("/dev/usb/lp0")
img = get_barcode_image("code39", "1234")

Unfortunately, no chance to set the size, and the output is buggy as anything. Debug time:
img.save(open("aa.png", "wb"), format="png")

Next up
In the absence of any other suggestions for getting barcodes on the ZJ5890, I think we can close this issue off.
For anyone dealing with a printer which does not support GS k correctly, your choices are basically to try a different printer, or to take this snippet as a starting point, looking up issues in the python-barcode issue tracker as you go.

@mike42, I tried your example with pyBarcode 0.8beta1 from their hg repository with a USB Mini 58mm POS Thermal Dot Receipt Bill Printer POS Z-5890C but nothing was printed (on /dev/usb/lp1). Is there anything missing from your example? Fortunately I don't need barcodes right now, but just fyi.

Please read the comment in detail: I'm pointing out that the generated barcode is un-usable!
In any case, edited the comment above, I forgot to include the call to image() that actually does the printing.

Thanks for the feedback. There's also a cups filter for this printer it seems (https://github.com/klirichek/zj-58) and during my tests it printed images/text. Haven't checked barcodes yet.

Thanks @mike42, with your new code it printed the barcode in your image (the 1234 was also printed, i just ripped didn't rip the paper correctly):

That means it's working right?

Get a copy of zxing/zxing for Android to test this.
Very few of the barcodes I generated could be scanned correctly. If you see those sorts of bugs, they should be replicated with a snippet that does not use python-escpos (write them to an image), and posted upstream to the pBarcode project.
I am also aware of the CUPS filter. The CUPS print pipeline makes an image out of an entire page for the filter to convert, so if you can print text/images, and you have barcodes in a HTML or PDF document, this may work for you.

I see. I've ordered a USB Laser Barcode Scanner X-9100 and will report back whether it can scan this barcode or not.

I have the same printer and was able to print legible bar codes using pyBarcode (last beta has code128). Beware that if the barcode is too long in length the printer with roll and roll a lot of paper. An image-too-large exception should be implemented too in order to not waste paper.
I propose a feature to add barcode software rendering in order to fix this problem. The issue should be created appart and this issue closed for simpler identification for contributors.

Thank you for the feedback. So the actual issue seems to be non-fixable.
See #218 for a follow-up.


hull disfunction after  timebar enabled

Describe the bug
Hull is working in below code.
But if we import timebar by adding "plugins: [timebar]" in  G6.Graph definition , the hull will be disfunction.
Your Example Website or App
https://codesandbox.io/s/timebar-hull-issue-in-g6-npft6?file=/index.js
Steps to Reproduce the Bug or Issue

visit the cdoe in https://codesandbox.io/s/timebar-hull-issue-in-g6-npft6?file=/index.js
the hull is working
Un-comment //plugins: [timebar] in line 84
Timebar showed but the hull is gone

Expected behavior
As a user, I expect to see hull even after timebar enabled
Screenshots or Videos
No response
Platform

OS: [Windows]
Browser: [Chrome]
Version: [96.0.4664.110]

Additional context
No response

find the centerNodes inside the 'afterlayout', and when the layout is done, the hull will show up.
let centerNodes = graph.getNodes().filter((node) => node.getModel().value < 30);
that is because  some of the centerNodes are filtered out by the timebar if you call it before 'afterlayout', and the hull cannot find them.

thanks, it is fixed

It is partly fixed to move hull members definition according to event "afterlayout" but a new issue coming:

success: the hull can be showed together with timebar
failed: the hull can not dynamically change with node moving

To fixe 2) , I added hull1.updateData for event "afterupdateitem" as  below code showed:
graph.on("afterlayout", () => {
  let centerNodes = graph
    .getNodes()
    .filter((node) => node.getModel().value < 30);
  const hull1 = graph.createHull({
    id: "centerNode-hull",
    type: "bubble",
    members: centerNodes,
    padding: 10
  });
  graph.on("afterupdateitem", (e) => {
    hull1.updateData(hull1.members);
  });
});

Steps to Reproduce the new issues

I forked a new v2 show this new issue, please visit the code in https://codesandbox.io/s/timebar-hull-issue-in-g6-v2-hdnef
moving one of the node in hull, the hull can be auto-fiting according the node change
Un-comment //plugins: [timebar] in line 84
Timebar showed but the hull is gone. An exception showed if I change the time bar:

TypeError
Cannot read properties of null (reading 'remove')
    at Hull.updateData (https://npft6.csb.app/node_modules/
antv/g6-core/es/item/hull.js:151:33
Graph.eval
/index.js:115:10
  112 |     padding: 10
  113 |   });
  114 |   graph.on("afterupdateitem", (e) => {
> 115 |     hull1.updateData(hull1.members);
      |          ^
  116 |   });
  117 | });
  118 |

fixed this issue after I reading a similar resoluton report from https://github.com/antvis/G6/issues/3022
graph.on("afterlayout", () => {
  let centerNodes = graph
    .getNodes()
    .filter((node) => node.getModel().value < 30);
  const hull1 = graph.createHull({
    id: "centerNode-hull",
    type: "bubble",
    members: centerNodes,
    padding: 10
  });
  graph.on("afterupdateitem", (e) => {
    const hulls = graph.getHulls();
        hulls && Object.keys(hulls).forEach(hullKey => {
          const hull = hulls[hullKey]
          hull.updateData(hull.members);
        })
  });
});


Permanent link for record2

See comments in #476

Please take a look at what @shinyichen did for recordset.

This issues is currently under review with PR #568.

Merged PR #568, closing this issue.


When I ran test_dataset. Py it did not report an error, but when I ran train.ty it reported the following error

cv2.error: OpenCV(4.1.0) /io/opencv/modules/imgproc/src/color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function 'cvtColor'
The Internet says the path is wrong, but my data set path setup is the same as the structure shown in README.


Allow the vault-env repository to be overridden.

Fixes issue #1075

Q
A

Bug fix?
no

New feature?
yes

API breaks?
yes

Deprecations?
yes

Related tickets
Fixes #1075

License
Apache 2.0

What's in this PR?
Allows the repository for the vault-env container, injected into deployments etc, to be overridden.  Primarily necessary in environments where dockerhub is not available due to firewalls or access rules.
Why?
My employer has secure environments where we need to use this chart, and make use of an Artifactory installation to serve our images.  We can't directly pull from docker.io, and upload images directly to our instance once they have been reviewed and approved.
Checklist

[ x] Code meets the Developer Guide
[ x] User guide and development docs updated (if needed)
[ x] Related Helm chart(s) updated (if needed)

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.Jon Bruno seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.

Hi @brewneaux, thanks for the PR, please bump the chart version as well (CI broke because of this).

Hi @bonifaido - thanks for the quick reply. I also can't figure out exactly what I'm missing in the PR template that is causing that check to fail

No problem, just fixed the description (Bug fix was broken).


Solution re-validation now takes too long

For example, I fixed something in the JS version of Century from Year. There are only ~800 JS solves, and yet it took like an hour before faulty solutions are shown to be invalid!
If 800 solves takes an hour, older katas with even more solves will easily take a few days or so. This is not something I'd say to be acceptable.

As far as I know, solution re-validations are processed by background jobs with low priority. It's not meant to give immediate results. If I remember correctly, this wasn't allowed before because it's known to take a long time.
And I don't think an hour for 800 solutions is that bad for this purpose. It might be shorter depending on the time of the day too (when there're less jobs with higher priority).
If solutions took 3s each on average (including various overheads), running 800 will take like 40 minutes. Jobs can be distributed to multiple machines to reduce this to few minutes, but again this is low priority background job.
I do want to improve it though (there're just too many things that I want to fix/improve.)

If solutions took 3s each on average

If #1348's finding is true, then re-validations are happening on non-Red clusters? That would explain the slowness since even requesting for a docker container on non-Red clusters is taking like 20s right now.
I don't think putting user traffic and re-validation traffic together is a good idea if non-Red cluster is already this slow.

I don't know the details, but I don't think there's a dedicated cluster for re-validations. I haven't looked into it yet, but the outage last night could've been caused by so many re-validations triggered.
I agree that it's not a good idea. There're many like this. Basically, Codewars have grown and things that used to be "ok" doesn't work anymore. And I've been trying to fix this little by little.

For Number of trailing zeros of N! I've added random tests and 1 fixed test to render this solution invalid but it's still there after 7 months.


Add Generate Button

Hi,
Thank you for the nice cloudApp.
Would it be possible to add the "Generate" button next (or below) the description field ?
For receiving journal issues, this app would be wonderful.

@OlivierBSA, could you provide more details of what this "Generate" button should do? Assuming the button would be under "Description" in the "Item Data" panel, would you expect the button to automatically generate the "Item Data" field values?
Is there equivalent functionality in Alma's existing receive workflow that does what this button should do? Thanks.

Hello,
The button generates a description using the enumeration and chronology fields. It exists in Alma in the physical item editor.

Thank you, @OlivierBSA.


Put the blog back up

Since we've changed this repo to be under rustasync https://rust-lang-nursery.github.io/wg-net/ is now down. https://rustasync.github.io/team/ now exists, but it's nowhere near rendered correctly.
We should find a way to put it back up, and think of a strategy for the future.

This has been fixed! https://rustasync.github.io/team/


Skip more tests if not root

The unit tests in this repository are ultimately run by the
go-test.sh script in the tests repository. This script actually runs
the unit-tests twice if it is invoked as a non-root user: once
as the non-root user and once as root. This is done to cover all
possible scenarios: certain tests require super-user privileges whilst
other tests are only valid when running as a non-privileged user. The
script then combines the test results to calculate a coverage
percentage.
The Travis test runs are currently failing (in the first non-root
"run") as some of the tests require root privileges.
Make extra calls to skipUnlessRoot() for those failing tests to allow
them to be skipped when run as a non-root user and then run as root
in the second "run".
Fixes #177.
Signed-off-by: James O. D. Hunt<EMAIL_ADDRESS>

LGTM

@bergwolf @laijs @egernst PTAL

LGTM


Push tags to quay

Preparing to build some release scripts. One idea is to let this workflow react to a tag push and push up a tagged image to quay.

it tags main pushes as main and latest (pick one?)
it tags tag pushes with the tag (so git tag v0.0.1 -> image tag v0.0.1)

I imagine a flow like:

run a new Release workflow_dispatch action, supplying the target version and new development version
the workflow updates the maven versions and any examples/docs to refer to the tag that will exist in future, tests that the docker build works (but does not execute the push), it pushes a commit with the new versions to main and tags that commit with the release version.
the workflow updates the maven versions and examples to the new development version (use latest?). pushes that commit to main.
Then this integration workflow reacts and creates the tagged image and pushes to quay.

tested in my fork.
main push: https://github.com/robobario/flink-sql-examples/actions/runs/11672537818/job/32501370908

#12 pushing manifest for ***/***/flink-examples-data-generator:main@sha256:6ed1f7580715062157f2bfc0db626d4d3eb22286f3a7ae184c1306167a5bab32
#12 pushing manifest for ***/***/flink-examples-data-generator:main@sha256:6ed1f7580715062157f2bfc0db626d4d3eb22286f3a7ae184c1306167a5bab32 11.5s done
#12 pushing layers
#12 pushing layers 0.3s done
#12 pushing manifest for ***/***/flink-examples-data-generator:latest@sha256:6ed1f7580715062157f2bfc0db626d4d3eb22286f3a7ae184c1306167a5bab32
#12 pushing manifest for ***/***/flink-examples-data-generator:latest@sha256:6ed1f7580715062157f2bfc0db626d4d3eb22286f3a7ae184c1306167a5bab32 5.3s done

tag push https://github.com/robobario/flink-sql-examples/actions/runs/11672564560/job/32501458695:

#12 pushing manifest for ***/***/flink-examples-data-generator:v0.0.1-test@sha256:bb2b1be02c86786690afbe01519fbccb2ac5466cd3590de97c3b0818fd59d622
#12 pushing manifest for ***/***/flink-examples-data-generator:v0.0.1-test@sha256:bb2b1be02c86786690afbe01519fbccb2ac5466cd3590de97c3b0818fd59d622 21.7s done

mm bit of pain here is that if we git push from another action using the supplied GIT_TOKEN, it won't trigger this workflow, https://github.com/orgs/community/discussions/25702. You have to use a PAT.
Maybe it's easier to just do the tagged image push from the release workflow, then try and reuse the code between them

I think for a start we should leave this action as is, publishing latest image on main push. Then have a manual release action that touches the versions, pushes up the image to quay tagged with the release version. There will be some duplication that we could resolve later.


Prevent nuxt from eager-loading pages

Hello,
so when I visit my nuxt app, the app automatically loads all the pages in the background. On content heavy sites with lots of pages, I want to prevent nuxt from loading the page before the user actually navigates to them. Is that somehow possible? It's just to save on bandwidth.

To explain this a bit better, when I add a .vue file in the pages directory, it's being downloaded even though it's not accessed. You can see it in the browser dev console. If my website is something like a blog, it's downloading lots of content even though it's never accessed. It would be nice if pages could be marked as "download on demand" or something like that.

https://nuxtjs.org/api/configuration-render#resourcehints

@gustojs riiight, something like this but on a per-page basis. maybe something like
<script>
export default {
  data: {..},
  preload: false
}
</script>

Found a duplicate https://github.com/nuxt/nuxt.js/issues/1838


[Bug] Failed to contact HTTPS GraphQL to fetch schema

Overview

Insomnia Version: 5.7.4
Operating System:  Windows 7
Summary:  Failed to contact https://graphql_endppoint to fetch schema

How To Reproduce
Please list all pertinent information and steps needed to reproduce the issue. For example:

Create new POST request to HTTPS GraphQL endpoints
Perform a request
You can see the results but the autocomplete feature is not working

Other Notes
The introspection queries run normally in graphiql.

Hi @tphan18,
Can you give this another try on 5.7.9? I made some improvements to GraphQL schema fetching in that release. Let me know if you're still having problems.

Thanks @gschier, 5.7.9 fixed the issue if the GraphQL endpoints are not protected by any authentication layer. I am not sure whether or not we should have another enhancement or feature issue. The desired behavior for schema fetching is that use the current authen config on the request to make introspection query.  I will close this issue because it might be to specific for my use cases. Thanks again.

@tphan18, authentication should be sent with the introspection query in the latest update. What type of authentication are you using?

Just simple bearer token. I see Fetching schema... forever.

I am using environment which the token is pulled from it.

Where are you using the token. In a header?

Under the auth tab, I chose the bearer. I got the results correctly. Let me try the header.

It doesn't work in 3 cases:

Use Auth -> Bearer
Manually Authorization: Bearer {{token}}
Use both

Mine also hangs on Fetching schema... forever. Endpoint is not protected by any authentication. Happened when I used an environment variable for the host.

Heya. Using Insomnia 5.9.6 and I'm still experiencing this issue. Sending an Authorization header with a JWT bearer token. Any idea what might be causing this?

Hi @driesvints. Can you verify that the Authorization header is indeed not making it to your server?

@gschier the authorization header gets sent along fine. What does insomnia expect back? It seems to just perform the call to the graphql endpoint that defined in the insomnia client. How does it know about the schema?

Also: how do you send along the operationName when you have multiple queries defined?

@driesvints there are to requests being sent in the case of GraphQL.

Schema Introspection Query

This request fetches the GraphQL schema using a GraphQL introspection query
Triggered when a new request is selected, when the URL is modified, or when you manually click the refresh button above the Query Variables pane
The result of this query is what powers autocomplete and linting of your queries

User-defined GraphQL query

This request sends your actual GraphQL query to the server just like a regular Insomnia request

This issue is related to request 1 (the introspection query) not working. Are you seeing a specific error like this in Insomnia?

If so, can you let me know what it is? If you are having problems with request 2, that should be submitted as a separate issue.

Also: how do you send along the operationName when you have multiple queries defined?

operationName is not currently supported by Insomnia.

@gschier hey Gregory. Thank you so much for the detailed explanation!
Currently, when I check the access log for nginx, these are all the calls that are being made:
<IP_ADDRESS> - - [17/Oct/2017:13:02:54 +0000] "GET /graphql?operationName=GetEvents HTTP/1.1" 200 5326 "-" "insomnia/5.9.6"
<IP_ADDRESS> - - [17/Oct/2017:13:02:56 +0000] "GET /graphql?operationName=GetEvents HTTP/1.1" 200 5327 "-" "insomnia/5.9.6"
<IP_ADDRESS> - - [17/Oct/2017:13:03:04 +0000] "GET /graphql?operationName=GetEvents HTTP/1.1" 200 97 "-" "insomnia/5.9.6"
<IP_ADDRESS> - - [17/Oct/2017:13:03:16 +0000] "GET /graphql?operationName=GetEvents HTTP/1.1" 200 97 "-" "insomnia/5.9.6"

I get this message:

Oh, I think I know what the issue is. Since you blanked out the start of the URL, I assume it does not have a protocol specified? Can you try adding http:// or https:// in front if there isn't one?

@gschier it does have the protocol in front of it. Sorry for obfuscating that part.

@driesvints what version of Insomnia are you using? That error message looks different from what is in the most recent codebase.

Oh, nvm. Looking in the wrong place. It looks like there is some extra error info printed to the console when that happens. Can you check it by going to View > Toggle DevTools > Console?

@gschier we found out what happened. Apparently something went wrong in the library we used to parse the query. We managed to fix the problem. Sorry for the hassle 😞

Well, I'm glad you figured it out! No worries 😄

Help me!
I get this message


WIP: User download tracking

This is functionally complete and fairly well-tested, but I left TODO comments scattered through the changes to reflect possible areas of improvement. It will also need unit testing.
In a nutshell, it generates/saves a Downloadable object whenever a file is made downloadable, containing the creator, provider, job, direct-download URL, and file size. It also generates/saves a UserDownload object whenever one of them is actually downloaded, which contains the user, date/time of download, and downloadable that was downloaded. Only the latter is currently viewable on the Django admin console.


Enable the user to specify the collapsed state in the initializer

When not specified, the standard value is still false.
Also, I switched the default state to false; in the project, it was
true.

Very nice! Thanks BasThomas!