[CSL-117] Split spending key to separate spending key, block signing key

@georgeee
I.e. we would have 2 keys:
Separate spending key, block signing key, vss key
Idea proposed by Roman in Riga and yet to be discussed

@gromak
I have asked about it in #paper-pos.

@gromak
My question:

One more usage of something similar to proxy signature is splitting spending key into separate spending key and block signing key to increase security. This idea was proposed by @roman.oliynykov, but it was presented only as an idea, not a requirement. What is current state of it? Do you think we should do it? If yes, then it would be nice to have a more formal specification in implementation notes.
Answer from Bernardo:
This only makes sense in a scenario where users are assumed to store a "spending key" and a "block key" in separate devices. Otherwise, if both of these keys are in the same device, a hacker who owns the device can just extract both keys and there's no benefit in doing that. Actually our delegation protocol supports the creation of a "block key" by any user if we take into consideration delegated stake when checking if a verification key is eligible to participate in the protocol through the threshold mechanism, the user just has to create a new signing and verification key pair (sk',vk') with no funds and delegate block generation to this new verification key.

So basically this answer contains two points:

It only makes sense in a scenario where users are assumed to store a "spending key" and a "block key" in separate devices.
My thoughts about it:
• should we distinguish between key stored in RAM and key stored on disk? Is it easier for hacker to steal key stored in memory? Note that we store secret key in RAM for the whole running time (inside NodeContext), so if it's easier to steal it from RAM, then we should modify code and load secret key only when necessary. This needs to be investigated, I am not an expert in this area.
• Cold storage is related. We can really store spending key in cold storage and sometimes sign «block key».
Delegation protocol supports the creation of a "block key" by any user if we take into consideration delegated stake when checking if a verification key is eligible to participate in the protocol through the threshold mechanism.
Yes, but I see at least two problems:
• whether this if holds is still not clear. If it doesn't hold, then it simply doesn't work.
• If we prohibit further delegation of delegation (i. e. one can't create proxy signing key for proxy signing key), then such approach has disadvantage that I can't delegate «block key». And currently such delegation is not supported. But at the same time I think it's not really a concern, because if you want to delegate your block creation power, you can just do it w/o creating «block key».

@gromak

whether this if holds is still not clear. If it doesn't hold, then it simply doesn't work.
Apparently it will hold sooner or later anyway, w/o it everything will be sad.

@gromak

And currently such delegation is not supported.
And won't be supported, AFAIU.

@gromak
Interesting question is whether it can be added with softwork if we decide to do it for whatever reason. I suppose it can :)


Issue with _currentConfiguration being null after the first call

Summary:
We ran into an issue with our Azure Function that has a very high throughput. With high volume functions a lot of new function  instances start and go. Sometime on the startup of a new instance, the very first call to the GetConfigurationAsync fails (e.g. OKTA server was unavailable).
This causes all the subsequent calls to fail for the next 5 minutes.
Details:
When this line var configuration = await _configRetriever.GetConfigurationAsync(MetadataAddress, _docRetriever, CancellationToken.None).ConfigureAwait(false); fails, the exception is caught and _syncAfter is set to now + 5 mins. However, _currentConfiguration is still null.
On the subsequent calls the condition if (_syncAfter <= now) is true and the code falls through to this line https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/blob/614642a18baf304d67a4a6e711074efb71262c35/src/Microsoft.IdentityModel.Protocols/Configuration/ConfigurationManager.cs#L209
causing the another exception.
This keeps happing for 5 mins until _syncAfter becomes > than now
In our case this behavior causes 10 - 50K exceptions in 5 min timeframe.
Proposed fix:
add || _currentConfiguration == null condition to the following if statement:
https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/blob/614642a18baf304d67a4a6e711074efb71262c35/src/Microsoft.IdentityModel.Protocols/Configuration/ConfigurationManager.cs#L170
Something like this:
if (_currentConfiguration == null || _syncAfter <= now)
Question:
Before this is fixed, is there any workaround that you could suggest?
Disclaimer:
All this analysis is done just by reviewing the code, so I might have overlooked something. Let me know if this sounds correct to you.

@dmitrymal we are modifying this so that until configuration is obtained, we will retry at a 30 second interval 4 times.
Does this seem reasonable?

@dmitrymal we are modifying this so that until configuration is obtained, we will retry at a 30 second interval 4 times. Does this seem reasonable?

It is your call, but personally, I would have left it up to the client to decide what retry strategy to use. '30 second interval 4 times' seems just a random decision and may not work for all clients. For instance, in our case with the rate of 10K requests per minute, we might end up with 40K queued requests waiting for a retry (which is probably not good).
After all, the issue is not about not being able to get the configuration or retry logic. The issue is in the code which does not check whether or not the _currentConfiguration is null.
In my opinion, the code should check if currentConfiguration == null and if it is, try to get it. The code should not simply throw an exception leaving the client without any option to fix the issue. This logical bug should be fixed regardless of retry logic. The easiest and quickest way to fix it is to have it something like this:
if (_currentConfiguration == null || _syncAfter <= now)
I can create a PR with the proposed changes if that would help.

@dmitrymal A request has arrived and we need to validate the token. Metadata may be needed since TokenValidationParameters.ConfigurationManager is not null the user must have set it.
If metadata cannot be obtained, we may not be able to validate the token, but we will try.
It seems correct that if ConfigurationManger never obtained metadata, we should try again next time through.
A simple change would be to not set _syncAfter in the exception block here.
I need to circle back with the team to understand why continuous attempts without a throttle were not acceptable.

@dmitrymal we discussed this as a team and landed on exponential backoff.

The retry logic might help (in some cases). However, the client code should have control of the retry logic. Otherwise, it might lead to more issues. At the very least the client should be able to set/define retry parameters.
Anyway, all this (the retry discussion) is a separate concern and has nothing to do with the reported issue in the code.
If _currentConfiguration ends up to be null even after retries, the client would still run into the same issue.
Any thoughts on fixing that?

@dmitrymal we have implemented a exponential increase in this PR https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/pull/2052
We should leave this open to add the ability for users to set their own algorithm as you are correct in that we can assume to understand all the scenarios.


[Event Request] Codeunit 1 - new events and code refactoring

Add new events in Codeunit 1. We additionally need some code refactoring. See attached files for details.
COD1_orig.TXT
COD1_upd.TXT

Can you please stop attaching files but describe what you need in text?


make out of MonomerPattern.repr deterministic

Especially noticable when exporting models to pysb_flat. Currently, ordering of sites in MonomerPatterns seems to be changing arbitrarily.

Can you provide an example which demonstrates non-deterministic ordering? MonomerPattern.__repr__ prints sites in the order of monomer.sites, which is a list and hence should preserve the order that sites are specified when the monomer is instantiated. Are you seeing the site order vary in the Monomers themselves?

Nondeterminancy in had indeed upstream origins, nothing related to pysb.


add save button as last screen in OMK

Users find the current save button hard to find.

In the middle of working on this one via #15


Set OMP_NUM_THREADS to 1 to avoid high system cpu usage

I've been experiencing a really high system cpu usage with skopt, preventing me to practically run multiple skopt instances in parallel.
Even for a simple branin optimization I had every core up to 100% usage (with n_jobs=1) and most of the consumption was system.
This simple code:
from skopt import gp_minimize
from skopt.benchmarks import branin

r = gp_minimize(branin, [[-10.0, 5.0],[-5.0,15.0]], n_jobs=1)

already shows the problem:
time python test.py
real    2m18,329s
user    2m41,741s
sys     3m48,756s

However, if we reduce the number of threads for openmp to one, the system time goes down:
time OMP_NUM_THREADS=1 python test.py
real    1m48,608s
user    1m46,486s
sys     0m2,080s

openmp should be used by blas, which I think skopt just use to handle the GP matrix, but I've never seen the benefit of multithreaded blas using skopt (even with many points and many dimensions) so I think that everybody should benefit from this

I think it is something numpy does, so I think they should provide a way to turn it on/off for users to decide. I don't think as a project we should meddle with the settings a user chose. We should document that this happens and point people to the right bit of documentation to influence the behaviour of numpy.

@stefanocereda are you perhaps using openblas with numpy? I've noticed that openblas tries to fire up threads even for small matrices in its "level 3" blas/lapack functions (at least for gbtrf).

I agree we should not change this value ourselves. This is clearly an issue with Numpy and its dependencies.

Yes, I'm using openblas, I will try other libraries in the next weeks.
I too agree that skopt should not change this setting on its own, I was thnking about a note in the documentation stating that this is the recommended setting.

I've tried to use intel mkl instead of openblas. Interestingly, openblas is the winner (I'm using an intel i5-6200U with 2 physical cores and 4 threads thanks to hyperthreading)
The tested code is simply:
from skopt import gp_minimize
from skopt.benchmarks import branin
gp_minimize(branin, [[-5.0, 10.0],[0.0,15.0]], verbose=False)

Intel MKL (default 2 cores)
real    1m23,733s
user    2m29,051s
sys     0m2,912s

Intel MKL with MKL_NUM_THREADS=1
real    1m31,155s
user    1m29,165s
sys     0m1,976s

Intel MKL with MKL_NUM_THREADS=4 (it still spawns just 2 threads, I think MKL is doing some kind of optimization here and just cap the number of threads to the number of cores)
real    1m22,847s
user    2m23,357s
sys     0m3,023s

OPENBLAS (default 4 cores)
real    1m43,049s
user    2m6,550s
sys     2m51,066s

OPENBLAS with OMP_NUM_THREADS=2
real    1m24,110s
user    1m31,603s
sys     0m47,043s

OPENBLAS with OMP_NUM_THREADS=1
real    1m15,711s
user    1m13,608s
sys     0m2,092s

My conclusion is that the two libraries are equivalent, the only important thing is to reduce the number of threads to the number of cores you have.


[Bug]: Test cases TestCreateESSecretsError, TestExtractSecretsToFile_Err and TestWriteToWorkingDir are failing in ppc64le architecture

What happened?
When we run make test in ppc64le architecture, below 3 test cases are failing and these three test cases contain a below comment saying these are OS dependent.
Failing test cases:
TestWriteToWorkingDir
TestExtractSecretsToFile_Err
comment:
// Avoid assertions on OS-dependent error messages which may differ between OSes.
Console output for the testcases
--- FAIL: TestCreateESSecretsError (0.00s)
    elasticsearch_secrets_test.go:27:
                Error Trace:    /jaeger-operator/pkg/storage/elasticsearch_secrets_test.go:27
                Error:          Error message not equal:
                                expected: "error running script /foo: exit status 127"
                                actual  : "error running script /foo: exit status 126"
                Test:           TestCreateESSecretsError
--- FAIL: TestExtractSecretsToFile_Err (0.00s)
    elasticsearch_secrets_test.go:119:
                Error Trace:    /jaeger-operator/pkg/storage/elasticsearch_secrets_test.go:119
                Error:          Should be true
                Test:           TestExtractSecretsToFile_Err
--- FAIL: TestWriteToWorkingDir (0.00s)
    elasticsearch_secrets_test.go:171:
                Error Trace:    /jaeger-operator/pkg/storage/elasticsearch_secrets_test.go:171
                Error:          Not equal:
                                expected: *reflect.rtype(&reflect.rtype{t:abi.Type{Size_:0x8, PtrBytes:0x8, Hash:0xb2f46202, TFlag:0x9, Align_:0x8, FieldAlign_:0x8, Kind_:0x36, Equal:(func(unsafe.Pointer, unsafe.Pointer) bool)(0x19260), GCData:(*uint8)(0x1606530), Str:77326, PtrToThis:0}})
                                actual  : <nil>(<nil>)
                Test:           TestWriteToWorkingDir
    elasticsearch_secrets_test.go:171:
                Error Trace:    /jaeger-operator/pkg/storage/elasticsearch_secrets_test.go:171
                Error:          Not equal:
                                expected: *reflect.rtype(&reflect.rtype{t:abi.Type{Size_:0x8, PtrBytes:0x8, Hash:0xb2f46202, TFlag:0x9, Align_:0x8, FieldAlign_:0x8, Kind_:0x36, Equal:(func(unsafe.Pointer, unsafe.Pointer) bool)(0x19260), GCData:(*uint8)(0x1606530), Str:77326, PtrToThis:0}})
                                actual  : <nil>(<nil>)
                Test:           TestWriteToWorkingDir
FAIL
coverage: 95.8% of statements
FAIL    github.com/jaegertracing/jaeger-operator/pkg/storage    5.873s

Steps to reproduce
Run make test in pp64le architecture
Expected behavior
All test cases need to pass
Relevant log output
No response
Screenshot
No response
Additional context
No response
Jaeger backend version
No response
SDK
No response
Pipeline
No response
Stogage backend
No response
Operating system
No response
Deployment model
No response
Deployment configs
cat /etc/os-release
NAME="Red Hat Enterprise Linux"
VERSION="8.9 (Ootpa)"
ID="rhel"
ID_LIKE="fedora"
VERSION_ID="8.9"
PLATFORM_ID="platform:el8"
PRETTY_NAME="Red Hat Enterprise Linux 8.9 (Ootpa)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:redhat:enterprise_linux:8::baseos"
HOME_URL="https://www.redhat.com/"
DOCUMENTATION_URL="https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8"
BUG_REPORT_URL="https://bugzilla.redhat.com/"

REDHAT_BUGZILLA_PRODUCT="Red Hat Enterprise Linux 8"
REDHAT_BUGZILLA_PRODUCT_VERSION=8.9
REDHAT_SUPPORT_PRODUCT="Red Hat Enterprise Linux"
REDHAT_SUPPORT_PRODUCT_VERSION="8.9"

Related #2189

@vinodk99 would you like to create a PR?

Hi @iblancasa i don't have access to raise a PR.

You can fork this repository and create a PR @vinodk99


System report should include "ci:" tags when running in CI/CD environments

Some of our customers build software that's intended to run in CI/CD pipelines. It is important for them to have a good sense of which CI/CD tools their users are using their software in.
Most of our customers would also like to be able to filter on events fired from CI/CD or filter them out of their analyses.
I propose that, when we generate system tags, we try to detect whether we are running in a CI/CD environment and add the (inferred) name of the CI/CD provider (e.g. GitHub Actions, CircleCI, TravisCI, etc.) as a tag of the form ci:<provider>.
Each CI/CD platform has certain environment variables that it uses to configure internal processes:

GitHub Actions
Circle CI
Travis CI

Note that all of them seem to set CI=true. So at the very least we should use that. We can also use the presence or absence of other environment variables to infer which specific CI provider we are working with.

We need to define names for each of the CI environments:

GitHub Actions: github
Circle CI: circle
Travis CI: travis

Will keep this list up-to-date until we release this feature.


Add check box for config the treeview

I want know which node in the tree I have select, the template do not have checkbox option, do you mind I push my change which contain the checkbox configuration into your repo?

Seems you already have checkbox option


How to get the detailed geometry of the face

How to get the detailed geometry of the face，like this

Please refer to the "Generating media" section in EG3D repository: https://github.com/NVlabs/eg3d
We get this results using UCSF Chimerax (https://www.cgl.ucsf.edu/chimerax/).

Please refer to the "Generating media" section in EG3D repository: https://github.com/NVlabs/eg3d
We get this results using UCSF Chimerax (https://www.cgl.ucsf.edu/chimerax/).

thanks for your answer！
The parameter z is required to generate media in EG3D, how to get the parameter z in our project。

The parameter “z” and “conditioning_param” is used to calculate the latent code. It can be replaced into the predicted latent code based on sketch. Hope this can help you.


Memory leak while using anthropic python sdk 0.3.10

We have a server implemented with FastAPI to cal Anthropic through Python, but when run the following experiments, the memory kept increasing and not released after stop sending request to the server.

a client sending http requests continuously to the server
concurrency 20
running duration 2mins

Sample server code logic
chat = Anthropic(api_key=api_key)
completion = chat.completions.create(
                model="claude-2",
                max_tokens_to_sample=20,
                prompt=f"{HUMAN_PROMPT} what is {passed_in_number} {AI_PROMPT}",
            )
return completion

When I replaced the Anthropic python sdk with httpx request directly, the memory kept low and stable during the same experiment.
Same issue when using 0.3.11 as well.
Would be great if you can help to take a look.

Are you reinstantiating the client on every request?
If so, could you move it outside your handler, like so?

chat = Anthropic(api_key=api_key)

@app.get("/")
async def my_handler():
  completion = chat.completions.create(
    model="claude-2",
    max_tokens_to_sample=20,
    prompt=f"{HUMAN_PROMPT} what is {passed_in_number} {AI_PROMPT}",
  )
  return completion

If the API key changes per request, you might consider a with block:
@app.get("/")
async def my_handler():
  with Anthropic(api_key=api_key) as client:
    completion = chat.completions.create(
      model="claude-2",
      max_tokens_to_sample=20,
      prompt=f"{HUMAN_PROMPT} what is {passed_in_number} {AI_PROMPT}",
    )
    return completion

Do either of those work for you?

In summary, yes I've tried all the approaches as mentioned above, but unfortunately still got the same memory issue. Would be great if you can help to reproduce the same issue on your side.

@yuliu-eric can you share a minimal reproduction? I can't fully reproduce what you're seeing.
Running this script:
import psutil
import anthropic
from anthropic import Anthropic

base_url = "http://<IP_ADDRESS>:4010"  # local mock server

for _ in range(1000):
    print(f"total mem usage: {psutil.virtual_memory().percent}")

    prompt = "\n\nHuman: This is a test prompt. Return some randome text\n\nAssistant:"
    client = Anthropic(base_url=base_url)
    client.completions.create(
        prompt=prompt,
        stop_sequences=[anthropic.HUMAN_PROMPT],
        model="claude-instant-1.2",
        max_tokens_to_sample=100,
    )

Results in a total memory usage increase of 54.7% -> 55.5% and eventually results in this error
OSError: [Errno 24] Too many open files
Exception ignored in: <function Anthropic.__del__ at 0x107569dc8>
Traceback (most recent call last):
  File "/Users/robert/stainless/stainless/dist/anthropic-python/src/anthropic/_client.py", line 224, in __del__
  File "/Users/robert/stainless/stainless/dist/anthropic-python/src/anthropic/_base_client.py", line 691, in close
AttributeError: 'Anthropic' object has no attribute '_client'

However this would be considered a bug in the user-code, you shouldn't be instantiating a client in a loop like this and if you really need to you should call client.close() or use the context manager that was previously mentioned.
For example:
    client.completions.create(
        prompt=prompt,
        stop_sequences=[anthropic.HUMAN_PROMPT],
        model="claude-instant-1.2",
        max_tokens_to_sample=100,
    )
    client.close()

This results in memory usage steadily increasing from 56.3% to a peak of 58% where it then sharply drops back down to 56.3%, this is presumably because the gc hasn't been able to free up the created client instances until the script is nearly finished running.

@yuliu-eric could you make a modification to the script above that reproduces the error?

@RobertCraigie @rattrayalex
Thank you so much for the effort!
However, I think there might be a misunderstanding here, let me try to rephrase it and below is our scenario:

we have a server (let's name it as S here) that communicates with Anthropic using python sdk
we have client (let's name it as C) that sending concurrent requests to S continuously, which in turn S sends python calls to Anthropic, processes the results from Anthropic, and returns data back to C

We observed that the server S's memory kept increasing in the above case, but no problem when replacing Anthropic python sdk by directly sending http requests in S.

Thanks for the explanation @yuliu-eric . Unfortunately, I don't think there's much we can do to help here without a reproducible script. Can you try to compose one that demonstrates the issue?

Thanks for the explanation @yuliu-eric . Unfortunately, I don't think there's much we can do to help here without a reproducible script. Can you try to compose one that demonstrates the issue?

I will test tonight and let you know the reult .

FYI I'm also getting a resource leak when using the Anthropic client where open file count climbed monotonically due to connections to *.googleusercontent.com. In our case it turned out to be because of code like this (slightly cursed code, sorry):
def make_prediction():
        limits = httpx.Limits(max_connections=1, max_keepalive_connections=1)
        with closing(Anthropic(connection_pool_limits=limits)) as anthropic:
            completion = anthropic.with_options(max_retries=12).completions.create(
                model=some_model_name,
                prompt=some_prompt,
                temperature=temperature,
                max_tokens_to_sample=max_length_tokens,
            )
        return completion.completion

We didn't realize that with_options was creating a new client each time. It seems like those clients weren't getting GC'd at all so they never cleaned up their resources. If we take out the unnecessary .with_options() (and move max_retries into the Anthropic() constructor), then everything works fine (no more leak of connections), even though we're creating and closing a new client on each function call. Perhaps this will be useful for tracking down where the leak is? I didn't notice any obvious circular refs in .with_options()/.copy(), but I also only spent a minute on this.
(Also IMO using __del__ to clean up open files is a massive footgun and the client should probably be a context manager instead; I've had to deal with so much deadlocked multiprocessing code where things break because they rely on __del__ to be called as soon as the object falls out of scope and in the right order relative to other finalizers, which often does not happen.

Yes I agree that __del__ is not an ideal way to cleanup but our intention with it is to help protect against people forgetting to call .close() themselves when not using a context manager.

the client should probably be a context manager instead;

The client does support being used as a context manager, did this not work for you or were you unaware?
I've also just realised that we don't document the client as being a context manager or .close() in the README but we probably should!

We didn't realize that with_options was creating a new client each time. It seems like those clients weren't getting GC'd at all so they never cleaned up their resources. If we take out the unnecessary .with_options() (and move max_retries into the Anthropic() constructor), then everything works fine (no more leak of connections), even though we're creating and closing a new client on each function call. Perhaps this will be useful for tracking down where the leak is? I didn't notice any obvious circular refs in .with_options()/.copy(), but I also only spent a minute on this.

This is helpful context, thanks!
It is very surprising that those clients are not being cleaned up... will look into it.
Creating a new client on every with_options() call is not ideal, we'll look into improving this but it should be noted that due to the nature of how httpx works, passing certain options such as connection_pool_limits will require that a new httpx instance is created. However in your example max_retries wouldn't require a new client.

completion = anthropic.with_options(max_retries=12).completions.create(

Out of curiosity is there a reason you set max_retries to 12? Have you ran into instability in the SDK / API?

Yes I agree that __del__ is not an ideal way to cleanup but our intention with it is to help protect against people forgetting to call .close() themselves when not using a context manager
The client does support being used as a context manager, did this not work for you or were you unaware?

Thanks for clarifying, I totally missed the context manager support. I took a quick look at the Anthropic class in vscode and didn't see the context manager methods, but I should have checked the base class as well. Using it as a context manager works great :+1:

Creating a new client on every with_options() call is not ideal, we'll look into improving this but it should be noted that due to the nature of how httpx works, passing certain options such as connection_pool_limits will require that a new httpx instance is created. However in your example max_retries wouldn't require a new client.

FWIW our use case didn't truly need to make use of this method & it was easy to move the extra option up to the place where the client is constructed. If it wasn't for the GC issue then I don't think anyone would have noticed (efficiency is not much of a concern for the batch job we're running).

Out of curiosity is there a reason you set max_retries to 12? Have you ran into instability in the SDK / API?

No, we're just doing something hacky to parallelize our requests (using a pool of 10 threads), which leads to lots of rate limit issues. If we did things properly with asyncio then this would not have been a problem.

I don't think we've been able to repro a memory leak, so I'm going to close this, but we do plan to investigate resource leaks more deeply and we'd still appreciate a code snippet that can reproduce an issue!

Thank you for taking the effort look into this! I'll try to provide a minimal working snippet later to reproduce the problem.

This might've been fixed by https://github.com/anthropics/anthropic-sdk-python/commit/5e51ebdbc6e5c23c8c237b5e0231ef66f585f964.


Unity PeerConnection AutoInitializeOnStart?

So I noticed in the code here:
https://github.com/microsoft/MixedReality-WebRTC/blob/9d1b34cd2047c876fc5af250417114f450865b6b/libs/unity/library/Runtime/Scripts/PeerConnection.cs#L263
It says:
        /// This method must be called once before using the peer connection. If <see cref="AutoInitializeOnStart"/>
        /// is <c>true</c> then it is automatically called during MonoBehaviour.Start().

This implies to me there should be a serialized bool to enable/disable the auto calling of this method and that this method should be public. But the method is not public, and there is no way to enable/disable it from being called OnEnable.
Is this comment out of date? Or representative of an expected change? Because I actually need this functionality right now, for the purpose of restarting a PeerConnection.
Right now I assume I should make InitializeAsync and Uninitialize public. Add in a bool to disable InitializeAsync from being auto called from OnEnable. Then if I called Uninitialize followed by InitializeAsync it should reset the PeerConnection and start a new one. Is that a correct assumption?

The comment is out of date, the methods are correctly private, we do not support anymore manual init outside OnEnable/OnDisable, this was overly complex and partially broken, without any sensible way to fix. You do not need to do anything other than enable the component to initialize it and disable it to clean it up. I think you shouldn't need anything else to restart the connection than just do some:
pc.enabled = false;
pc.enabled = true;

@fibann has been recently working on this, including peer connection restart, and might shed more light on it, and/or correct me.

Thank you. That will work. A restart method would be probably be useful.


[BUG] Add VM image via URL - "invalid argument" in post-download checksum of image compressed with XZ

Describe the bug

Checksum error "invalid argument" occurs when adding a VM image with XZ compression via a URL
To Reproduce
Steps to reproduce the behavior:

via dashboard, navigate to Images > Create
Select Basics:URL option
URL used: https://cdn.download.clearlinux.org/releases/36010/clear/clear-36010-kvm.img.xz
After image is downloaded, the checksum runs and produces this error Failed to calculate checksum for file /data/tmp/default-image-8tz4z-170fbb4c.tmp getting the file from source: read /data/tmp/default-image-8tz4z-170fbb4c.tmp: invalid argument
It appears to only happen with images compressed with XZ, e.g: *.img.xz and *.qcow2.xz

Expected behavior

Post-download checksum runs without "invalid argument" error on XZ compressed images
Support bundle

Environment:

Harvester ISO version: harvester-v1.0.0-amd64.iso
Underlying Infrastructure: baremetal with 3 nodes

Additional context

compressed format image is not supported in the current version, will require a feature enhancement.

It would be fantastic if Harvester would take compressed images. Especially Tar compression would help downloading images directly from OBS without having to download them to a computer running an X server first.


Change GH issues label in readme

Noticed after going through issues that "help-wanted" is the more frequently used label for first time contributors as opposed to "noob-friendly".

Thanks @anjor. And I see you signed the CLA already so we're good to go.


"Not Authorised" when directly applying Prisma generated migrations to Cloudflare D1 with PRAGMA foreign_key_check;

Bug description
When we change a column in a table with foreign keys, Prisma CLI generates the migrations properly when we run migrate diff but a particular line is inserted in the sql statements that are output:
PRAGMA foreign_key_check;
When you try to apply these migrations to either Cloudflare D1 local or remote databases, it fails with the error "not authorized". The above line is where this error is happening. The rest of the sql statements generated work perfectly.
How to reproduce
Create a simple prisma schema with 2 tables dependent on each other (maybe User and Session tables)
Generate migrations and apply to local and remote databases of Cloudflare D1
You can use this link for detailed instructions on how to do that: https://www.prisma.io/docs/orm/overview/databases/cloudflare-d1
Change something in the session table like a column name from userId to user_id
And regenerate migrations. Again, details on how here: https://www.prisma.io/docs/orm/overview/databases/cloudflare-d1#3-generate-sql-statements-using-prisma-migrate-diff-1
View the generated migrations sql file. If you try and apply the migrations, you will get the error.
It looks like this in the console:

Expected behavior
It should ideally allow us to run PRAGMA foreign_key_check;
Current workaround, apply migrations line by line manually or remove the line causing issues.
Prisma information
Initial Prisma Schema:
generator client {
  provider = "prisma-client-js"
  previewFeatures = ["driverAdapters"]
}

datasource db {
  provider = "sqlite"
  url      = env("DATABASE_URL")
}

model User {
  id    String  @id
  email String  @unique
  name  String?
  sessions Session[]
}

model Session {
  id        String   @id
  userId    String
  expires_at DateTime
  user      User     @relation(references: [id], fields: [userId], onDelete: Cascade)
}

Modified Prisma Schema:
generator client {
  provider = "prisma-client-js"
  previewFeatures = ["driverAdapters"]
}

datasource db {
  provider = "sqlite"
  url      = env("DATABASE_URL")
}

model User {
  id    String  @id
  email String  @unique
  name  String?
  sessions Session[]
}

model Session {
  id        String   @id
  user_id    String
  expires_at DateTime
  user      User     @relation(references: [id], fields: [user_id], onDelete: Cascade)
}

Environment & setup

OS: macOS
Database: Cloudflare D1
Node.js version: v 20.11.0
Wrangler version: v 3.47.0

Prisma Version
5.12.1

Considering this may be related to wrangler cli from Cloudflare not giving us the necessary permissions, have added an issue there: https://github.com/cloudflare/workers-sdk/issues/5598

PRAGMA foreign_key_check is not one of the supported pragmas by Cloudflare D1: https://developers.cloudflare.com/d1/build-with-d1/d1-client-api/#pragma-statements
Currently, the workaround is to remove this from the generated migration SQL file. That should allow you to apply the migration successfully and will most probably not cause any problems.
We are currently investigating how we can avoid this problem.

Hi, this should be fixed now in a dev (unstable) version of Prisma: 5.14.0-dev.53.
@sakettawde, can you please give it a try as well?
For production usage, we recommend waiting for the next stable version, Prisma 5.14.0, scheduled for release in ~7 days.
Thanks!

Thank you 🙏🏼


Fields not rendered in XML fragment on phone when scrolling down

When I add fields in an xml fragment and show this in phone (emulate / Chrome), only the first few visible fields are shown, but when I scroll down the fields below are not rendered.

Code is just basic code for including a fragment
<IconTabFilter icon="sap-icon://hint" id="detailInfoTab" text="{i18n>TabGeneralText}" key="Algemeen" >
	<content>
		<core:Fragment fragmentName="com.creetion.inc.view.detail.DetailInfo" type="XML" />
	</content>
</IconTabFilter>

Hello Bert,
can you please follow up with us on this issue? We would like to fix it but we still cannot reproduce it.
If we cannot get a working example to reproduce the issue i'm afraid we have to close it.
Cheers,
Michael

Original author does not seem to be interested or cannot provide an example - since we cannot reproduce the issue, I am closing this one.


GSD Request

--- GSD JSON ---
{
  "vendor_name": "Linux",
  "product_name": "Kernel",
  "product_version": "versions from v5.12 to before v5.15.7",
  "vulnerability_type": "unspecified",
  "affected_component": "unspecified",
  "attack_vector": "unspecified",
  "impact": "unspecified",
  "credit": "",
  "references": [
    "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=9ec03d7f1ed394897891319a4dda75f52c5d292d",
    "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=2931db9a5ed219546cf2ae0546698faf78281b89"
  ],
  "extended_references": [
    {
      "type": "commit",
      "value": "9ec03d7f1ed394897891319a4dda75f52c5d292d",
      "note": "introduced"
    },
    {
      "type": "commit",
      "value": "2931db9a5ed219546cf2ae0546698faf78281b89",
      "note": "fixed"
    }
  ],
  "reporter": "joshbressers",
  "reporter_id": 1692786,
  "notes": "",
  "description": "drm/vc4: kms: Clear the HVS FIFO commit pointer once done\n\nThis is an automated ID intended to aid in discovery of potential security vulnerabilities. The actual impact and attack plausibility have not yet been proven.\nThis ID is fixed in Linux Kernel version v5.15.7 by commit 2931db9a5ed219546cf2ae0546698faf78281b89, it was introduced in version v5.12 by commit 9ec03d7f1ed394897891319a4dda75f52c5d292d. For more details please see the references link."
}
--- GSD JSON ---

This issue has been assigned GSD-2021-1002571


Sphinx integration

@jacobfeder Here's the the new docs/ directory to maintain all documentation going forward and the Makefile for sphinx to generate the files. Some installation instructions have been added to index.rst as an example of documentation markup.
Resolves #4

Looks great! Merging.


nix fmt does not work with symlinked projectRoot

Describe the bug
If the projectRoot is a symlink, nix fmt fails
[WARN]: Ignoring path ., it is not in the project root
[WARN]: Aborting, no paths to format

To Reproduce
# ~/scratch/proja/flake.nix
{
  inputs = {
    nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
    flake-parts.url = "github:hercules-ci/flake-parts";
    treefmt-nix.url = "github:numtide/treefmt-nix";
  };

  description = "treefmt-nix broken on flakes";

  outputs = inputs @ {flake-parts, ...}:
  flake-parts.lib.mkFlake {inherit inputs;} {
      systems = ["x86_64-linux"];
      imports = [inputs.treefmt-nix.flakeModule];
      perSystem = {
        treefmt = {
          projectRootFile = "flake.nix";
          programs.alejandra.enable = true;
        };
      };
    };
}

> ln -s ~/scratch/proja ~/scratch/projb
> cd ~/scratch/proja
> nix fmt

traversed 2 files
matched 1 files to formatters
left with 0 files after cache
of whom 0 files were re-formatted
all of this in 1ms

> cd ~/scratch/projb
> nix fmt
[WARN]: Ignoring path ., it is not in the project root
[WARN]: Aborting, no paths to format

It's using test -f to check the existence of the file over here: https://github.com/numtide/treefmt-nix/blob/819dd7f076832838bba238eceef9a3dbfc63f5d0/module-options.nix#L105
I believe test -f returns 0 if the file is a symlink that points to a file, at least that's what I tested locally.
Can you run test -f flake.nix; echo $?

Another option that I use sometimes is to set projectRoot = ".git/config";.

Hmm, no, but I guess the problem happens in treefmt itself. Here's a an overridden treefmt-nix:
❯ git diff
diff --git a/module-options.nix b/module-options.nix
index a4fab90..589fe78 100644
--- a/module-options.nix
+++ b/module-options.nix
@@ -99,6 +99,7 @@ in
         default =
           let
             x = pkgs.writeShellScriptBin "treefmt" ''
+              set -x
               find_up() {
                 ancestors=()
                 while true; do

And its output (different path, but still a symlink to a directory)
++ find_up flake.nix
++ ancestors=()
++ true
++ [[ -f flake.nix ]]
++ echo /home/sarah/pex
++ exit 0
+ tree_root=/home/sarah/pex
+ exec /nix/store/zfhsh797srxf3ppar5yv1ywbkn01pm2d-treefmt-0.5.0/bin/treefmt --config-file /nix/store/ldvwxlczhfhrjf3zswqfsbyzs6qg2jz8-treefmt.toml . --tree-root /home/sarah/pex
[WARN]: Ignoring path ., it is not in the project root
[WARN]: Aborting, no paths to format

Ah yes, this looks broken. I'll move this issue later.
https://github.com/numtide/treefmt/blob/main/src/engine.rs#L59-L63

symlinks are a nightmare :sweat:


Feat: Layout border

Filename
Size
Change

dist/chart.esm.js
69.7 kB
+278 B (0%)

dist/chart.js
88.5 kB
+313 B (0%)

dist/chart.min.js
63 kB
+193 B (0%)

dist/chunks/helpers.segment.js
19.8 kB
+1 B (0%)

Filename
Size
Change

dist/chart.esm.js
69.7 kB
+302 B (0%)

dist/chart.js
88.5 kB
+332 B (0%)

dist/chart.min.js
63 kB
+187 B (0%)

dist/chunks/helpers.segment.js
19.8 kB
+1 B (0%)

Decided to add sample plugin instead.


Reduce number of file system errors reported on error website.

A major source of errors on the error website right now is the file system errors. We should decide whether there is a way to reduce those if not implement ErrorNoTelemetry and continue to debug the scenarios which ErrorNoTelemetry does not work.

/closedWith f152032bb722643fedc2e0eaee4d3f675b1efd79


Removing metrics

Removed metrics the from Notification hubs part
Deleted the helper classes used for metrics.
Removed references to metrics in MainForm and ContainerForm.
Removed handling of Azure subscription id and certificate thumbprint since they were not used anymore

This should resolve the code part of #212. However rebasing needs to be done.

:white_check_mark: Build ServiceBusExplorer 4.0.110-PullRequest0229.34.build.414 completed (commit https://github.com/paolosalvatori/ServiceBusExplorer/commit/a69ee64d06 by @ErikMogensen)


Merge to live!

Docs Build status updates of commit 6fe74f9:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs/outlook/compare-outlook-add-in-support-in-outlook-for-mac.md
:white_check_mark:Succeeded

docs/reference/requirement-sets/office-add-in-requirement-sets.md
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching in the Docs contributor and Admin GuideSee the frequently asked questionsPost your question in the Docs support channel


Update gophercloud version

The binaries affected:
IMPORTANT: Please also add the binary name in the title, e.g.
[openstack-cloud-controller-manager]: Add UDP protocol support
unless the PR affects multiple binaries.

[ ] openstack-cloud-controller-manager
[ ] cinder-csi-plugin
[ ] k8s-keystone-auth
[ ] client-keystone-auth
[ ] octavia-ingress-controller
[ ] manila-csi-plugin
[ ] manila-provisioner
[ ] magnum-auto-healer
[ ] barbican-kms-plugin

What this PR does / why we need it:
This PR updates gophercloud version to include the fix https://github.com/gophercloud/gophercloud/pull/1829
Which issue this PR fixes:
fixes #923
Special notes for reviewers:

Release note:

NONE

/lgtm

@ramineni could you please take a look at the cloud-provider-openstack-e2e-test-csi-cinder job failure?

/test cloud-provider-openstack-e2e-test-csi-cinder

@lingxiankong that test failed time to time ... @ramineni informed me about the root cause is timeout

/approve


Router failed to send response

Applying load to the frontpage of Kitura-Sample, the log shows repeated errors:
 INFO: spiListen(socket:port:) HttpServerSpi.swift line 53 - Accepted connection from: <IP_ADDRESS>:58659
 INFO: spiListen(socket:port:) HttpServerSpi.swift line 53 - Accepted connection from: <IP_ADDRESS>:58660
 INFO: spiListen(socket:port:) HttpServerSpi.swift line 53 - Accepted connection from: <IP_ADDRESS>:58662
 INFO: spiListen(socket:port:) HttpServerSpi.swift line 53 - Accepted connection from: <IP_ADDRESS>:58665
 INFO: spiListen(socket:port:) HttpServerSpi.swift line 53 - Accepted connection from: <IP_ADDRESS>:58666
 INFO: spiListen(socket:port:) HttpServerSpi.swift line 53 - Accepted connection from: <IP_ADDRESS>:58668
 INFO: spiListen(socket:port:) HttpServerSpi.swift line 53 - Accepted connection from: <IP_ADDRESS>:58670
 INFO: spiListen(socket:port:) HttpServerSpi.swift line 53 - Accepted connection from: <IP_ADDRESS>:58672
 INFO: spiListen(socket:port:) HttpServerSpi.swift line 53 - Accepted connection from: <IP_ADDRESS>:58674
 INFO: spiListen(socket:port:) HttpServerSpi.swift line 53 - Accepted connection from: <IP_ADDRESS>:58676
 INFO: spiListen(socket:port:) HttpServerSpi.swift line 53 - Accepted connection from: <IP_ADDRESS>:58678
 INFO: handle(request:response:next:) main.swift line 46 - Authorization: nil
 INFO: handle(request:response:next:) main.swift line 46 - Authorization: nil
 INFO: handle(request:response:next:) main.swift line 46 - Authorization: nil
 INFO: handle(request:response:next:) main.swift line 46 - Authorization: nil
 ERROR: handle(request:response:) Router.swift line 676 - Failed to send response to the client
 ERROR: handle(request:response:) Router.swift line 676 - Failed to send response to the client
 INFO: spiListen(socket:port:) HttpServerSpi.swift line 53 - Accepted connection from: <IP_ADDRESS>:58680
 ERROR: handle(request:response:) Router.swift line 676 - Failed to send response to the client
 ERROR: handle(request:response:) Router.swift line 676 - Failed to send response to the client

I tried to recreate this on master on commits<PHONE_NUMBER>d44efb89a65cfc7f441d532a48c638 and f0dbbb14604146c11ef0f6e1a5b3aecca05833e5 without success.
My tests were using the vagrant image on a Linux host and ab (the Apache HTTP server benchmarking tool). I tried several different runs of ab including ab -c 4 -n 5000 but saw no failures on any attempts.

Some of these errors on the driving side may be due to the use of Keep Alive, which we don't support at this time.
I hope to add in the next couple of days to a week or so.

I am unable to reproduce this as well. I am going to close this for now then. We can reopen if it comes up again.


Added License checking maven plugin to build lifecycle

I want to fail PRs that don't have up-to-date license headers. This PR makes those changes, and also tests it works by introducing commits that deliberately fail.

Coverage remained the same at 58.1% when pulling a8d9c9afd6038c3d05ec4135e0e60cbd189ca86e on hamishmorgan:License-checking into 1eec9b38bab297286dc6372996eacf2bb6e473f8 on BrandwatchLtd:master.

Coverage remained the same at 58.1% when pulling 1eadbce94ba056020d6b37af17d6ebd58db93818 on hamishmorgan:License-checking into 1eec9b38bab297286dc6372996eacf2bb6e473f8 on BrandwatchLtd:master.

Looks good. Feel free to make it pass again, then I'll merge it.

Coverage remained the same at 58.12% when pulling fc2b04c21d8a9c0a186756e3811fe2869851902d on hamishmorgan:License-checking into 7155f0e0f71d01eb25695c099d5c82009b3b3081 on BrandwatchLtd:master.


Consumer Action API

Overview
Since nats-server 2.10, Consumer Create API ($JS.API.CONSUMER.CREATE & $JS.API.CONSUMER.DURABLE.CREATE) support action` field.
This allows for clients to specify the intent when calling CREATE, which in turn allows for reduction of CONSUMER.INFO calls by the clients to figure out what to do and what is the state of the server/cluster.
type CreateConsumerRequest struct {
	Stream string         `json:"stream_name"`
	Config ConsumerConfig `json:"config"`
	// a new added field
	Action ConsumerAction `json:"action"`
}

There are three possible values for the action:
- "create"
- "update"
- ""

Empty value (default)
If field is not passed, or it's an empty string, it's the same behavior as before this change was intruduced.
It will create consumer if it was not there, and update it if its found.
Older clients will automatically default to this variant.
create
Consumer will be created only if consumer was not there.
If consumer is present, error 10148 will be returned.
Error will not be returned if the consumer is there, but with exactly the same config.
That allows clients to send a retry without a risk to get misleading errors (timeout after first call, already exist at second).
update
Consumer will be updated.
If consumer does not exist, error 10149 will be returned.
Server PR: https://github.com/nats-io/nats-server/pull/4217/files
Clients and Tools

[ ] Schemas @ripienaar
[ ] CLI @ripienaar
[ ] Terraform @ripienaar
[ ] Github Actions @ripienaar
[ ] Go @piotrpio
[ ] Java @scottf
[x] JavaScript @aricart
[ ] .Net @scottf
[ ] C @levb
[ ] Python @wallyqs
[ ] Ruby @wallyqs
[ ] Rust @Jarema
[ ] .Net V2 @mtmk

Other Tasks

[ ] docs.nats.io updated @bruth
[ ] Update ADR to Implemented
[ ] Update client features spreadsheet

Client authors please update with your progress. If you open issues in your own repositories as a result of this request, please link them to this one by pasting the issue URL in a comment or main issue description.

javascript clients: https://github.com/nats-io/nats.deno/pull/552

go: https://github.com/nats-io/nats.go/pull/1300


schema migration & revision in ShieldDB for resources

With respect to changes in principals for Resources, we are supposed to change PG schema which is very fixed with Team and Owner.  We will move to only Owner role for resource and it can be either of principals
Tasks on Resources:

Remove owner & team
Addition of new principals on owner

@krtkvrm is this closed with PR?

yes, this should have been closed automatically
closing it now


[FB Messenger] Notification title from group chat showing up as [object Object]

bug: when I'm in a Facebook group chat, the desktop notification name of the group/person will show up as [object Object]
Expected Behavior
Notification title should show up as the name of the group chat, or the name of the user who posted the message
Current Behavior
Notification title shows up as [object Object]
Screenshots (if appropriate):

Possible Solution
not sure?
Steps to Reproduce (for bugs)

Create a group chat with 3 or more participants
Receive a message in the group chat (with desktop notifications turned on)

Context
Can't see sender/group name of message
Your Environment

Franz Version used: 5.0.0-beta.10
Operating System and version: macOS 10.13 (17A405) High Sierra

In AppStore.js#143 we need to check what the title is to send the correct notification.

Franz 4 is showing the same problem. Did the messenger change something?

Debug point: webview/notification.js#12
This is the notification that messenger is sending:

MDN says the title should be a DOMString: https://developer.mozilla.org/en-US/docs/Web/API/notification/title :confused:
If this is a specific case for this recipe, a specific notification parser should be used (maybe defined in the recipe's webview.js)

@GustavoKatel You are right, thats a great idea.
On top, in ServiceStore.js@_handleIPCMessage() we should add a check if the value for title and text is anything else than a string to provide fallback values.

[ ] Add additional checks in ServiceStore
[ ] Add onNotify to docs in www.github.com/meetfranz/recipe
[ ] Update the messenger recipe

Is there something specific that you want to take care of?

I agree with the fallback values. I can create a PR covering the checkboxes :+1:
PS.: By meetfranz/recipe, you mean meetfranz/plugins ?

[x] Add additional checks in ServiceStore
[x] Add onNotify to docs in www.github.com/meetfranz/recipe
[x] Update the messenger recipe
I hope everything is ok :) Otherwise, let me know

Updated to the latest 5.0.0-beta.12 on macOS 10.12.6 and FB Messenger group chat notifications stopped showing up as [object Object] like in previous builds, but instead are just plain empty.

I need to do a few more checks but we might just need to optimize the messenger recipe a little further. The update will be rolled out automatically without a necessary client update. Just expect that notifications will work as expected sometime soon. ;)

Getting M as the chat title
Version: 5.0.0-beta.13 on macOS 10.13 (17A405)


⚠ Bofrost.nl has degraded performance

In ff713b3, Bofrost.nl (https://www.bofrost.nl) experienced degraded performance:

HTTP code: 200
Response time: 1309 ms

Resolved: Bofrost.nl performance has improved in b6a99d9 after 6 minutes.


StorableWrap is useless

Am I missing something?
Isn't this instance:
instance (Storable a) => CStorable (StorableWrap a)

completly useless?
Why would I want CStorable if I already have Storable?
It should be other way round:
instance(Generic a, CStorable (Rep a)) => Storable (StorableWrap a)

so I could derive Generic instance for my type, wrap it with StorableWrap and feed it to some function that takes Storable.

Take a look at https://hackage.haskell.org/package/generic-storable

StorableWrap is meant for use with functions which consume something belonging to the typeclass CStorable, when people want a shortcut for using a Storable object instead.
e.g.
f :: (CStorable a) -> IO ()
f (StorableWrap somethingStorable)

If you want something the other way around as well, feel free to write it and submit a PR, but this codepath is not useless, it is actually in use.


Once you have called dispose() on a Model, it can no longer be used.

Hi,
i migrated to this package from your ArchitectureV3 and now facing the following issue;
I have  a onModelReady Function with an await Future. Inside this future i call setBusy to true at start, another await Future in the Mid and than setBusy to false at End. When i for e.g. navigate Back before the Future returns, the last setBusy cause the error, that the Model no longer can be used.
The Workaround is to create a mounted variable suggested by Remi, but as we now have many Models, i wonder how to do it without having this boilerplate variable.
Example:
ViewModelBuilder<Model>.reactive(
        onModelReady: (model) async {
          await model.someFuture(parmeter: parameter);
        },
        viewModelBuilder: () => Model(),
        builder: (context, model, child) {
          return [....]
        });

class Model extends BaseViewModel {
setbusy(true);
Future.delayed(Duration(seconds: 5)).then((value) => setBusy(false));
}

Iam doing something wrong?

duplicate of https://github.com/FilledStacks/stacked/issues/36

You should not await on onModelReady, is just to trigger actions but do not wait for them to finish.


docs: remove warning for abandoned deprecations #10540

Description

Visibility, float and text-alignement utilities are not deprecated, will not be moved to prototyping utilities and will stay at standalone utilities.
This pull request remove the deprecation warning in the documentation, and make it up-to-date with the already-released v6.5.x versions.

Closes https://github.com/zurb/foundation-sites/issues/10540

Types of changes

[x] Documentation
[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (anything that would change an existing functionality)
[ ] Maintenance (refactor, code cleaning, development tools...)

Checklist

[x] I have read and follow the CONTRIBUTING.md document.
[x] The pull request title and template are correctly filled.
[x] The pull request targets the right branch (develop or develop-v...).
[x] My commits are correctly titled and contain all relevant information.
I have updated the documentation accordingly to my changes (if relevant).
I have added tests to cover my changes (if relevant).

Hey @ncoden this is Cool


Fix to stop the visual studio installer exiting with code -1 during prerequisites install

PR Details
Moved vs prerequisite install before the other prerequisite installs.
Description
The prerequisites installer somehow keeps the msiexec service in an installing state even though the installer is already finished and closed. This causes the visual studio installer to refuse to install because it thinks there is still an other installer running.
By installing the visual studio prerequisite before installing the other prequisites this problem is avoided. This is a hack because the windows installer state will still be wrong after this, but this will at least allow people to install stride properly without encountering an error that they can't easily solve. The windows installer being in a wrong state will most likely not cause any other problems for the user, because the next windows installer will detect the wrong state and fix it, or in the case of the visual studio installer it will fix it after hitting retry or restarting the visual studio installer(this will not happen when it is run in passive mode such as during the prerequisite install).
The proper solution for not ending up in this state would be in the advanced installer script/version. However, I could not find any online solutions for this or other people with the same problem.
Related Issue
#653
Types of changes

[ ] Docs change / refactoring / dependency upgrade
[x] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)

Checklist

[ ] My change requires a change to the documentation.
[ ] I have added tests to cover my changes.
[ ] All new and existing tests passed.

oh wow, that looks like a nice one!

Interesting, so it was all due to our own prerequisite installer!

It might be worth asking the Advanced Installer team/support about it.

@Zeroto How did you notice/check this msiexec state? Is there any tool or command line I can use to check the current state?

Sorry for the late reply, busy with my moving
No, as far as I know there is not anything available that will tell you the state of the service. My process was more a deduction of seeing what tasks were running and experimenting with running various installers in a different order and seeing the effects. I do remember encountering a few forum posts about people have similar problems (unrelated to stride)


Minor PSR2 fixes

Just some minor PSR2 coding style changes

Coverage remained the same at 100.0% when pulling 0786828a3776c059eaf38037d5d7fcf3d0e1fcd1 on acairns:master into 76ea923ea475d3bc46b9ceefdc255a3faf855b4f on SimpleBus:master.

Thanks!


Cannot load plugin..

I can't update to GLIBCXX_3.4.21, I can't change the operating system or update it
/lib/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /root/mdi/plugins/crashdetect.so)

What OS are you using? CentOS 7?
You can try compiling from source code on your particular server or using this build from AppVeyor, which was compiled with an old version of GCC: https://ci.appveyor.com/api/buildjobs/sbed4na4vw9urhxn/artifacts/crashdetect-4.22-linux.tar.gz - this link will expire in 2 weeks though.

What OS are you using? CentOS 7?
You can try compiling from source code on your particular server or using this build from AppVeyor, which was compiled with an old version of GCC: https://ci.appveyor.com/api/buildjobs/sbed4na4vw9urhxn/artifacts/crashdetect-4.22-linux.tar.gz - this link will expire in 2 weeks though.

yes, i'm on CentOS 7, thanks for it, i will test


net/http: clarify relationship of RoundTripper to Client

The docs for http.RoundTripper say
// RoundTrip executes a single HTTP transaction, returning
// a Response for the provided Request.
//
// RoundTrip should not attempt to interpret the response. In
// particular, RoundTrip must return err == nil if it obtained
// a response, regardless of the response's HTTP status code.
// A non-nil err should be reserved for failure to obtain a
// response. Similarly, RoundTrip should not attempt to
// handle higher-level protocol details such as redirects,
// authentication, or cookies.

But Google itself publishes an OAuth RoundTripper that handles authentication via multiple requests, so I don't think this actually reflects current best practices.
The docs for http.Client say, "A Client is higher-level than a RoundTripper (such as Transport) and additionally handles HTTP details such as cookies and redirects." But it's not "such as". It just is cookies and redirects. That's all that Client adds over the RoundTripper now, and I don't think there are any plans to add anything else.
I think the documentation should be clarified to explain that a RoundTripper can do more or less whatever it wants (as long as it doesn't modify a Request or return an error for a valid response), but Client will handle the cookie jar and redirects.
I think the solution is to simplify the docs like this:

RoundTrip executes an HTTP transaction, returning a Response for the provided Request.
RoundTrip should [NB: not "must"] return err == nil if it obtained a response, regardless of the response's HTTP status code. A non-nil err should be reserved for failure to obtain a response. Similarly, RoundTrip should not attempt to handle redirects and cookies.

A Client is higher-level than a RoundTripper (such as Transport) and additionally handles cookies and redirects.

CC: @neild @bradfitz

Note: the oauth2 package returns an error for non-2xx status codes: https://cs.opensource.google/go/x/oauth2/+/refs/tags/v0.8.0:internal/token.go;l=246.


Separate assign_plugin_attributes for future usage

coverage: 51.124% (+0.2%) from 50.966%
when pulling 114e2d85cc1bc96acd4a6a7d1f66ae11edc4168a on assign_plugin_attributes
into 70a8f99c378bea2a834be2701d71ea9f59f00b18 on main.


Website is down

Dear team,
I wanted to check your website https://chaoss.community/ today, but got an "Account suspended" message.
Just wanted to let you know!
Thanks and best,
Robert

works again.


Release 0.3.8

@rultor release it; the tag is 0.3.8.

@rultor release it; the tag is 0.3.8.

@rafamizes OK, I will release it now. Please check the progress here

@rultor release it; the tag is 0.3.8.

@rafamizes Done! FYI, the full log is here (took me 2min)


Add a type that holds a Pool or a Transaction and can be Copied or Cloned

It would be very tight if you could introduce a type that could hold both a Pool and Transaction<'a, DB>.
The Executor trait is implemented for both &Pool<T> and &mut Transaction<'a, DB> but because it's implemented for references, you cant reborrow transactions, so you lose functionality that you get with &Pool and &mut Transaction. You can't for example accept an impl Executor<'a, DB> and use it twice, because Query::execute takes it by value not by reference.
Here's an example:
pub async fn special_column_info(db_pool: &PgPool) -> Result<SpecialColumnMap> {
    let fkey_info = special_column_info_fkeys(db_pool).await?;
    let pkey_info = special_column_info_pkeys(db_pool).await?;

    Ok(SpecialColumnMap::build(
        fkey_info.into_iter().chain(pkey_info.into_iter()).collect(),
    ))
}

I couldn't easily replace the db_pool argument with an impl Executor because i wouldn't be able to call the 2 functions with it. I had to copy all the functions I wanted to work with a Pool or Transaction and write a Transaction version.

Yeah, that would work, thanks. I know it's a niche problem but it feels like it should be easier to do this.


[Improvenment] Add bridge.rollux.com to trusted sites list

What happened?

Version
2
What platform are you using?
macOS
What browser are you using?
Chrome
Is this a trezor issue?
No
Relevant log output
No response

Closing this issue because we already added rollux bridge in trusted sites list. Thanks!


Servers in some areas still have a way to use R3nzSkin. Can you help us continue updating

Servers in some areas still have a way to use R3nzSkin. Can you help us continue updating

Servers in some areas still have a way to use R3nzSkin. Can you help us continue updating

Only Tencent server.

Servers in some areas still have a way to use R3nzSkin. Can you help us continue updating

Only Tencent server and all Riot server have Vanguard.
The Tencent server can rename the R3nzSkin.dll to hid.dll and then move it to the Game folder in the League of Legends directory hid.dll you can still use the skin

The Tencent server can rename the R3nzSkin.dll to hid.dll and then move it to the Game folder in the League of Legends directory hid.dll you can still use the skin

The Tencent server can rename the R3nzSkin.dll to hid.dll and then move it to the Game folder in the League of Legends directory hid.dll you can still use the skin

Servers in some areas still have a way to use R3nzSkin. Can you help us continue updating

Only Tencent server and all Riot server have Vanguard.

The Tencent server can rename the R3nzSkin.dll to hid.dll and then move it to the Game folder in the League of Legends directory hid.dll you can still use the skin

Servers in some areas still have a way to use R3nzSkin. Can you help us continue updating

Only Tencent server and all Riot server have Vanguard.

The Tencent server can rename the R3nzSkin.dll to hid.dll and then move it to the Game folder in the League of Legends directory hid.dll you can still use the skin

But on patch 14.11 it show fail to find pattern

Servers in some areas still have a way to use R3nzSkin. Can you help us continue updating

Only Tencent server and all Riot server have Vanguard.

The Tencent server can rename the R3nzSkin.dll to hid.dll and then move it to the Game folder in the League of Legends directory hid.dll you can still use the skin

But on patch 14.11 it show failed to find pattern

Does anyone already update the version in 14.11 patch?

某些地区的服务器仍然可以使用 R3nzSkin。您能帮助我们继续更新吗

只有腾讯服务器和所有 Riot 服务器都有 Vanguard。

腾讯服务器可以将R3nzSkin.dll重命名为hid.dll，然后将其移动到英雄联盟目录中的 Game 文件夹hid.dll您仍然可以使用皮肤

但在补丁 14.11 上，它显示无法找到模式

需要更新新的偏移量才能继续使用它

Servers in some areas still have a way to use R3nzSkin. Can you help us continue updating

Only Tencent server and all Riot server have Vanguard.

The Tencent server can rename the R3nzSkin.dll to hid.dll and then move it to the Game folder in the League of Legends directory hid.dll you can still use the skin

But on patch 14.11 it show failed to find pattern

need to update the new offset to continue using it

Servers in some areas still have a way to use R3nzSkin. Can you help us continue updating

Only Tencent server and all Riot server have Vanguard.

The Tencent server can rename the R3nzSkin.dll to hid.dll and then move it to the Game folder in the League of Legends directory hid.dll you can still use the skin

But on patch 14.11 it show failed to find pattern

need to update the new offset to continue using it

But you will need to compile the app yourself as on this tutorial  https://github.com/R3nzTheCodeGOD/R3nzSkin/issues/2

Servers in some areas still have a way to use R3nzSkin. Can you help us continue updating

Only Tencent server and all Riot server have Vanguard.

The Tencent server can rename the R3nzSkin.dll to hid.dll and then move it to the Game folder in the League of Legends directory hid.dll you can still use the skin

But on patch 14.11 it show failed to find pattern

need to update the new offset to continue using it

But you will need to compile the app yourself as on this tutorial #2

I don't know how to get the latest offset

there are chinese people updating the r3nzskin in baidou but not sure if it's safe

there are chinese people updating the r3nzskin in baidou but not sure if it's safe

there are chinese people updating the r3nzskin in baidou but not sure if it's safe

Send an address to try it out

just search r3nzskin baidou

just search r3nzskin baidou

No download link

This he modified some content, and someone has already been banned

Mostly scalpers and scammers, so raise your guard or wait for the right solution.

They are using source code from R3nzSkin, which means that R3nzSkin still has a solution. Most of them are scammers, so raise your guard or wait for the right solution.

They are using source code from R3nzSkin, which means that R3nzSkin still has a solution. Most of them are scammers, so raise your guard or wait for the right solution.

If I can get a new offset, I can change it myself
I don't know how to get the new offset

没有换肤 用 我的实力 直接从王者掉到了青铜


clientv3: pass back dial error on dial timeout

Fixes #7419
Before:
$ ETCDCTL_API=3 etcdctl get whatever
Error:  grpc: timed out when dialing

After:
$ ETCDCTL_API=3 etcdctl get whatever
Error:  dial tcp <IP_ADDRESS>:2379: getsockopt: connection refused

lgtm. /cc @xiang90

wow that was fast- thank you!


Migration strategy?

Document possible migration strategies from plain file-based akka-persistence journals/snapshots.

that is out of scope of this project


<ion-select [(ngModel)]="select-category"> popup design not as mobile device

Popup design is not showing as mobile platform , its showing some other design instead of platform popup design. Same case in alerts or any other popup. Please Help what i m missing in my code. Please Help what i m missing in my code.

Hello! While we appreciate you opening an issue with us i am going to close this issue and ask that you open a new one that has the issue template filled out please. Thanks for using Ionic!


Missing version 2.1.1 on rubygems

Hello, I see version 2.1.1 in the Changelog, but it is not available on ruby gems. Also, I do not see a tag for it.
I would really appreciate if you could release it :)

Yep. I ran into a problem with that release. I am working to correct the issue but the short of it is: there will be no 2.1.1 release. Instead there will be a 3.0.0 release. I will update the changelog to that effect.
Real soon now. 😄
Thanks for your interest and i apologize for the confusion.

3.0.0 has been released.


feat: remove secret phrase option and to include different wallet secretPhase for imported account

complete by #140


Python bindings: lower/upper vs min/max

We have discussed changing the terminology from _min and _max to something else-- perhaps _bounds, or maybe _lower and _upper. This is a tweak to make to this part of the code:
https://github.com/opendifferentialprivacy/whitenoise-core/blob/develop/bindings-python/whitenoise/base.py#L295-L319
While we're at it, either finish implementing RowMin and RowMax, or throw an error when only one bound is set.

I'd be in favor of _lowerbound _upperbound, or is that too verbose?  _lb, _ub ?

Should Clamp be renamed as well?


Intent to implement: security checker plugin

SensioLabs create a CLI tool that checks if application use depedencies with know security vulnerabilities.
Security is very important in application and it could be great to have a security report in PHPCI.

Some sort of code sniffer for things such as eval and unescaped SQL would be pretty cool as well

@jdecool This sounds great. :+1:
@DrRoach You could do simple checking for eval() with the technical debt plugin I'd expect... But yes I agree that would be pretty awesome. Difficult to do, but awesome.

When this plugin has been added, I will have a go at adding it.


Touch local::mutex

Split timed functionality out of local::mutex into local::timed_mutex. Move definitions to a source file.

LGTM, thanks!


High load average

I've found that on machines where cyanite is running load average grows really fast (10-12 on 5min average, 2 CPU's). What i've found next is too much TIME_WAIT connections witch causes CPU waits as i understand. My assumption that cyanite is not properly closes network connections, but i may be wrong.

Which version would that be? Same as in the issue you've previously reported?

Right, the same. I have to say that I have seen this earlier, I just wasn't sure what caused such load. We are running cyanite and some other stuff on testing Mesos cluster, so there was too much additional factors. But after some cleanup problem is obvious and reproducible.

17 февр. 2016 г., в 19:30, αλεx π<EMAIL_ADDRESS>написал(а):
Which version would that be? Same as in the issue you've previously reported?
—
Reply to this email directly or view it on GitHub.

Great, thanks! I'm extensively perf testing and doing lots of tuning on different parts as you can see from the outstanding PRs, but pointers like that are extremely useful.

Sure, np. I'm very interested in this project and will contribute as much as I can. I cannot code, so reporting issues might be helpful I think :)

17 февр. 2016 г., в 21:30, αλεx π<EMAIL_ADDRESS>написал(а):
Great, thanks! I'm extensively perf testing and doing lots of tuning on different parts as you can see from the outstanding PRs, but pointers like that are extremely useful.
—
Reply to this email directly or view it on GitHub.

Should be fixed as well. Will be improved further with caches.


Replace hardcoded CRT shader with user-selectable file

Instead of having a button to toggle the hardcoded CRT shader, it would be nice to have a button that shows a FileDialog, allowing the user to select their own shader, with the CRT (and maybe others) available as a sample.

Shaders layers like PPSSPP? good idea.
The crt shader was initially introduced as an easter egg, but if people need more shader stuff, I would like to add a screen shader manager.


console printing for nill value toJSONString

Most common user case of model mapper is make BaseModel (For ObjC support inherit from NSObject) and other all model inherits from this. To log on console override the description like JSONModel.
open class BaseModel: NSObject, Mappable  {

    required public override init() {
        super.init()
    }

    required public init?(map: Map) {}

    // FIXME: prints only available object, removed nil object; PRINT ALL
    override open var description: String {
        return self.toJSONString(prettyPrint: true) ?? "<NO description available for \(type(of: self)).>"
    }

    public func mapping(map: Map) {}

}

All model must inherit from BaseModel like User
open class User: BaseModel {

    open var title: String? = "Mr"
    open var firstName: String?
    open var lastName: String?

    override open func mapping(map: Map) {
        title <- map["title"]
        firstName <- map["first_name"]
        lastName <- map["last_name"]
     }
}

Now here is the problem if raw JSON has last_name nil and trying to print user model, it will print only title & firstName, lastName field is eliminated from toJSONString method.
While we all expect that lastName field must exist and field value may be null.
It's not an issue, it's a feature which should on ModelMapper. Here we can solve it may be..
Also another suggestion is modify the prettyJSON default as true
func toJSONString(prettyPrint: Bool = false) -> String? to func toJSONString(prettyPrint: Bool = true) -> String?

Closing this as it is a duplicate of #177


Tutorial: Correlate additional metadata with events

Is there an existing issue for this?

[X] I have searched the existing issues

Is your feature request related to a problem?
From a practical perspective it would be helpful if Tetragon events could bear human-friendly usernames in addition to uid and auid . However, it seems ill-advised to place the gathering of such usernames in Tetragon itself (including tetra). #2015 includes arguments to that effect. What could be helpful instead is a tutorial that sketches alternative approaches for achieving this practical goal.
Describe the feature you would like
A new tutorials by the title Correlate additional metadata with events. It (its initial version) would lay out two ways of adding human-friendly usernames to Tetragon's events:

A simpler approach with more overhead "pipes" Tetragon's JSON events into a script that suitably combines jq and id for achieving the correlation.
A second approach with less overhead employs a custom binary program, which reads Tetragon events from a JSON file or acts as gRPC client opposite Tetragon, links against libc (from where it can "pull" usernames), and writes correlated events to a new JSON file.

usage: usernames [ --import-filename file | --server-address address ] [ --uid | --auid ]
  --export-filename file

--export-filename write correlated events to JSON file
--import-filename read Tetragon events from JSON file
--server-address  receive Tetragon over gRPC
--uid             derive usernames from uids
--aud             derive usernames from auids

The title of the new tutorial is inspired by a sentence from the O'Reilly report Security Observability with eBPF that addresses roughly similar concerns:

eBPF programs enable Kubernetes support by bundling API “watcher” programs that pull identity metadata from the Kubernetes API server and correlate that with container events in the kernel.

Describe your proposed solution
We can implement this feature by:

a tutorial in docs/content/en/docs/tutorials/correlate-metadata.md
implementation of the custom program in contrib/usernames/ (optional; perhaps in C)

Code of Conduct

[X] I agree to follow this project's Code of Conduct

@mtardy what is the next step for enhancement proposals such as this one; for instance, is a further review required? I'd be willing to work on this as well (at as self-determined pace).

You can work on this and propose a PR I think this can be valuable.
As of this:

implementation of the custom program in contrib/usernames/ (optional; perhaps in C)

I would suggest using existing utilities like id if you can.

@mtardy thanks for your quick response and for assigning the issue. Regarding id, are you suggesting to reuse code from utilities like id for the second list item, or to place more effort on the first list item? I'm assuming it's the latter.

I was mainly suggesting that well-known well-tested binaries might already exist that do what you want to do instead of needing to rewrite one.

@mtardy so yes, that's what I meant in the first list item above. From today's perspective, I should have some markdown to that effect ready soon.


Cannot split and have defined entry points

I can't figure out how to split my code such that my defined entry points are created, and all the other code is in chunks and automatically loaded.
Given this config:
{
    entry: {
        entry1: "./src/entry1",
        entry2: "./src/entry2"
    },
    output: {
        libraryTarget: "umd",
        filename: "js/[name].js",
        publicPath: "/dist/",
        path: path.resolve(__dirname, "dist")
    },
    plugins: [
        new webpack.optimize.AggressiveSplittingPlugin({
            minSize: 10000,
            maxSize: 30000
        })
    ]
}

What I'd expect:
entry1 and entry2 js files are created in the /dist/js folder.
All the extra code these files used found in 1.js, 2.js, 3.js etc.
<script src="./dist/js/entry1"></script>
Will load webpack runtime, entry1 code and all the dependencies in the various chunks.
What happens:
You get only 1.js 2.js 3.js 4.js
It's a guesswork to find out what to include on the page. What you include on the page might change regularly.
Is there any way to do what I want? So I can have a page which has entry1, and i can change it and rebuild and my page always references entry1 no matter how many other files are created, whether they are hashes that change every build etc?

I am currently doing this in my projects:
{
    cache: true,
    entry: {
        test: "./src/test"
    },
    output: {
        filename: "js/[name].js",
        publicPath: "/dist/",
        path: path.resolve(__dirname, "dist")
    },
    optimization: {
        splitChunks: {
            cacheGroups: {
                vendor: {
                    chunks: chunk => Object.keys(this.entry).indexOf(chunk.name) > -1, //"initial",
                    name: "vendor",
                    test: /[\\/]node_modules[\\/]/,
                    enforce: true
                }
            }
        }
    }
}

What I wish to avoid is a huge vendor.js file (even when minified)


Connection refused for the request 'https://vscode-sync.trafficmanager.net/v1/resource/settings/latest'.

RequestFailed (UserDataSyncError) syncResource:unknown operationId:unknown: Connection refused for the request 'https://vscode-sync.trafficmanager.net/v1/resource/settings/latest'.
at u.C [as toUserDataSyncError] in src/vs/platform/userDataSync/common/userDataSync.ts:308:11
at <anonymous> in src/vs/platform/userDataSync/common/userDataSyncServiceIpc.ts:165:53
at async in src/vs/workbench/services/userDataSync/browser/userDataSyncWorkbenchService.ts:387:5

Go to Errors Site

It seems to be a valid network error. Not sure if any action can be taken here.


add rm test && export TwoPhaseAction fields

What this PR does:
add tests for resourcemanager
Which issue(s) this PR fixes:

todo list:

[x] TestNewTCCServiceProxy

[x]  TestTCCServiceProxy_GetTransactionInfo

[x] TestTCCServiceProxy_Prepare

[ ] TestTCCServiceProxy_Reference

[ ] TestTCCServiceProxy_RegisterResource

[ ] TestTCCServiceProxy_SetReferenceName

[ ] TestTCCServiceProxy_registeBranch

Special notes for your reviewer:
Does this PR introduce a user-facing change?:

Hi guy, @complone
why the fields of TwoPhaseAction need to export?

Hi guy, @complone why the fields of TwoPhaseAction need to export?

In the mock data stage of tcc_service_test I need to expose fields for assignment

and the test is still being added, I will fix the ci in a week

You can use reflection to get values, preferably without modifying field visibility for unit tests

and the test is still being added, I will fix the ci in a week

You can use reflection to get values, preferably without modifying field visibility for unit tests

ok let me try

CI is failed

CI is failed

As mentioned, will be fixed it within a week

目前 由于全局事务的测试涉及到getty通信的网络IO 正在调研如何mock listener server

Codecov Report

Merging #192 (df2d074) into master (28157d4) will increase coverage by 1.48%.
The diff coverage is 100.00%.

:exclamation: Current head df2d074 differs from pull request most recent head b9d0797. Consider uploading reports for the commit b9d0797 to get more accurate results

@@            Coverage Diff             @@
##           master     #192      +/-   ##
==========================================
+ Coverage   63.54%   65.03%   +1.48%
==========================================
  Files          49       49
  Lines        2082     2082
==========================================
+ Hits         1323     1354      +31
+ Misses        695      663      -32
- Partials       64       65       +1

Impacted Files
Coverage Δ

pkg/rm/two_phase.go
69.86% <100.00%> (+2.28%)
:arrow_up:

pkg/rm/tcc/tcc_service.go
71.06% <0.00%> (+5.66%)
:arrow_up:

pkg/rm/rm_remoting.go
7.14% <0.00%> (+7.14%)
:arrow_up:

pkg/rm/rm_cache.go
84.61% <0.00%> (+84.61%)
:arrow_up:

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


Sporadic issue deleting credentials - "delete credential" popup does not appear and app locks up

Yubico Authenticator version: 4.3.2
Operating system and version: Win 10
YubiKey model and version: yubikey 4
Bug description summary: Sporadic issue deleting credentials - "delete credential" popup does not appear and app locks up.

Steps to reproduce
After using the app for some period of time, try delete a credential:

select credential
right click > select delete
no popup appears; you get a ding sound; app becomes unresponsive

Expected result
The "Delete Credential" confirmation popup window should appear.
Actual results
Sporadically, the "Delete Credential" confirmation popup window does not appear and the yubibo authenticator app becomes unresponsive and must be killed to recover.
Other info
[Anything else you would like to add?]

Thanks for the report. What approximate order of magnitude (minutes, hours, days?) is "some period of time"?

HI - I have not fully characterized this behavior. It's certainly with a couple days. I do "sleep" my laptop nightly and the YA app runs 24x7 in the tray. I am doing some testing - so frequently adding and deleting new OATH creds.

Ok. I'm afraid a couple days isn't something we can reasonably attempt to reproduce, but it would be interesting to see some application logs. In practice our --log-level option isn't currently supported in the official Windows release, but the next release will add a --log-file option that'll enable it to work in Windows too. Can we get back to you on this when the next release is out?

A new release (4.3.3) with better logging support is out. On windows you should be able to start Yubico Authenticator from the command line with yubioath-desktop.exe --log-level DEBUG --log-file debug.log to log debug output to a file.

Closing due to lack of information.


GUACAMOLE-358: Fix issue with 404 errors from REST API

This pull request adds a new SimpleUserContext to the CAS extension, instead of returning null, which seems to resolve the issue reported in this JIRA issue with errors trying to access the Settings page in Guacamole.

getUserContext() is supposed to be able to return null though: http://guacamole.incubator.apache.org/doc/guacamole-ext/org/apache/guacamole/net/auth/AuthenticationProvider.html#getUserContext-org.apache.guacamole.net.auth.AuthenticatedUser-
If returning null from getUserContext() results in the interface failing, it sounds to me like that is the bug to be addressed.

Hmmm...okay.  Well, if you look at the JIRA issue, you'll see the 404 error that gets returned from the current implementation of the CAS extension.  The error thrown is:
{"message":"Session not associated with authentication provider \"cas\".","translatableMessage": Unknown macro: {"key"},"statusCode":null,"expected":null,"type":"NOT_FOUND"}
I ran into a similar issue on another extension I was messing with, and, in both cases, assigning something to the userContext object took care of the problem.  This is thrown in the GuacamoleSession class, in the getUserContext method.

Well, I have no doubt that this solves the problem, but since extensions are supposed to be able to return null for exactly this sort of case, I think we need to address it from that perspective. It's not a bug in the CAS extension, but rather a bug in the way the webapp is handling null return values from getUserContext().
Should we be creating a skeleton UserContext automatically for any extensions which return null for getUserContext()? Or is it wrong for the part of the code making these calls to assume that there will be data associated with that auth provider?

but rather a bug in the way the webapp is handling null return values from getUserContext()

Is it a bug in the webapp for handling null return values, or is it a bug in the GuacamoleSession code causing the exception to be thrown in the first place?

Or is it wrong for the part of the code making these calls to assume that there will be data associated with that auth provider?

I would vote going the direction of allowing userContext to be null and handling the cases where it is null, instead of populating userContext with a skeleton, but I don't know if there are other implications to going that route??

@necouchman
I'll have to dig into this code a bit more to come up with a more comprehensive answer, but I have to agree that not allowing the returned UserContext to be null probably isn't a good choice, since that is done by other extensions as well.
I think your suggested approach sounds reasonable.

Okay, so, on the JavaScript side, I believe the reason for the eternal spinning gear is this bit of code:
        // Retrieve current permissions
        permissionService.getPermissions(dataSource, username)
        .success(function permissionsRetrieved(permissions) {

            // Add action for changing password if permission is granted
            $scope.canChangePassword = PermissionSet.hasUserPermission(permissions,
                    PermissionSet.ObjectPermissionType.UPDATE, username);

        });

        /**
         * Returns whether critical data has completed being loaded.
         *
         * @returns {Boolean}
         *     true if enough data has been loaded for the user interface to be
         *     useful, false otherwise.
         */
        $scope.isLoaded = function isLoaded() {

            return $scope.canChangePassword !== null
                && $scope.languages         !== null;

        };

So, basically the getPermissions call fails with the same 404 error as the getuser call, and, when it does, in this case, the isLoaded() function never resolves because the $scope.canChangePassword object continues to be null.

Okay, so I've rolled back the change to the CAS module and, instead, applied a change to the guacSettingsPreferences.js file that allows the settings page to load even if 404 errors are thrown and the permissions retrieval fails.

Does this same problem with the permissions call 404ing occur elsewhere, by the way? Is it only on this one page?

Does this same problem with the permissions call 404ing occur elsewhere, by the way? Is it only on this one page?

The 404 error occurs in a couple of pages (it actually occurs during login if you watch the JavaScript console); however, the Preferences tab of the Settings page is the only place where I've seen the eternal spinning gear show up.  I'll ask on the JIRA issue and see if anyone else on the ticket has any feedback on that.

I'll ask on the JIRA issue and see if anyone else on the ticket has any feedback on that.

Feedback from the user who opened the JIRA issue is that the Settings/Preferences area is the only place he has noticed any adverse behavior in the UI.

@mike-jumper @jmuehlner Any additional feedback?


TIMX 385 - browsable, filterable Records table

Purpose and background context
This PR reworks how to review individual records from a run.  This is accomplished by removing the "Record Samples" section in the Run page, which pointed to a standalone, static HTML page of Record links, and replacing it with a single, filterable, browsable table of all records.
The previous approach was functional, but had some drawbacks.  The "Samples" page was static HTML, and did not lend itself to large numbers of records.  So, a "sample" of Records that matched the criteria was displayed, but this necessarily was not showing all records that matched that critiera.  And, this approach had no inroads for viewing records with no diff, where it could still be helpful to look at the A/B versions, even if identical. The list goes on.
The approach taken here is a single table, capable of handling huge numbers of records.  By layering on filtering and searching, it avoids the issue of thinking of combinations in advance of records to view.  It also -- by default -- shows all records, allowing for a more browsing experience.  The following is a screenshot of what it looks like:

The Javascript library DataTables is used for this table, which is highly configurable.  The approach of "server-side" data preparation is used, so our Flask webapp is doing the heavy lifting of performing queries, sorting results, etc.  The actual table then just makes lightweight requests to the flask data endpoint each time information is needed, or filters applied, sorting, etc.  In this way, while the records dataset may contain 4-5m records, we'd only ever be sending 10-100 records (depending on "Records per Page" setting) to the table itself.
How can a reviewer manually see the effects of these changes?
1- Set production AWS credentials
2- Init job (where 4fcb617 is an fairly old commit that generates some diffs):
pipenv run abdiff --verbose init-job -d output/jobs/records -a 4fcb617 -b 3f77c7c

3- Generate a CSV of input files and perform a run:
pipenv run abdiff --verbose timdex-sources-csv -o output/jobs/records/springshare.csv -s libguides,researchdatabases
pipenv run abdiff --verbose run-diff -d output/jobs/records -i output/jobs/records/springshare.csv

4- View the job:
pipenv run abdiff --verbose view-job -d output/jobs/records

Here are some things to try with the "Records" table at the bottom of the run page.  Recommended to click "Reset Filters" button between them (NOTE: the file counts are approximate, given changes in records depending on when run):

Without any filters, note records count is 1,290

click source libguides, note count goes down to 372
hold ctrl (or cmd?) and click researchdatabases, note count goes back up to 1,290 because effectively all records again
this is multi-entry selection, which works for fields as well

Click source researchdatabases + field publishers, note that zero records match this combo
Enter "Chemical Engineering" into the search box, note that two records show up

this was fulltext searching the actual A and B records, so not obvious where it matched, but clicking into either record will reveal it's somewhere in the record body

Enter "libguides:guides-176330" in search box, one result comes back, showing how it could be used for timdex_record_id as well, as it's part of the source record

Includes new or updated dependencies?
YES: but only in the webapp, the DataTables javascript and CSS files
Changes expectations for external applications?
NO
What are the relevant tickets?

https://mitlibraries.atlassian.net/browse/TIMX-385

Developer

[X] All new ENV is documented in README
[X] All new ENV has been added to staging and production environments
[X] All related Jira tickets are linked in commit message(s)
[X] Stakeholder approval has been confirmed (or is not needed)

Code Reviewer(s)

[ ] The commit message is clear and follows our guidelines (not just this PR message)
[ ] There are appropriate tests covering any new functionality
[ ] The provided documentation is sufficient for understanding any new functionality introduced
[ ] Any manual tests have been performed or provided examples verified
[ ] New dependencies are appropriate or there were no changes

For my review, I followed the instructions outlined in the PR description, and I cannot express how awesome these changes are! I was amazed at how quickly it was able to run queries against the record dataset and how user-friendly the interface is. Excellent job. I did pose one question + potential request for change!

Thanks!  FWIW, once we get into the 3-4m records, I think we'll see a significant delay in the responsiveness of the table.  At that time, we can see if we need optimizations, or if it's just 1-2 seconds, perhaps that is okay for this diagnostic tool.


Please update pubspec.yaml

Hi
Is it possible to update pubspec.yaml and use 2024b?
From:
  timezone: ^0.9.3
  flutter_timezone: ^1.0.4

To:
  timezone: ^0.10.0
  flutter_timezone: ^4.0.0

Thank you!

@anthonymoretti hi, I just released 3.0.0 version. Thanks :)

Thank you very much :)


Add positional information to AST Nodes

I should say this pr comes with a couple of loose ends that will need to be addressed in later work.

Template literals are a hot mess and are going to have totally wrong positions. They need to have their own ast node instead of the hacked up solution we currently use.
String positions are off- they currently refer to only the contents of the string and not the quotes. This will get resolved once we fix Template literals.
Positional information for operator arguments / flags is not great and this lead me to have to do hacky stuff to get positions working for various operators that rely on them (e.g., load, file, get, pool). The big problem here is that each Op implements flags or optional args in its own way are there is no standardized ast.Node for flags that is used across all ops. We should do this.


Update plugin_setup.py

Metaphlan output appends a new line character to the end, this change checks if it is the last line of the file and that the line is a \n character, and then breaks out of the loop to prevent an error being thrown.

@brett-van-tussler, it looks like this one isn't actively being worked on anymore. Let me know if you'd like to revisit this though and we can re-open.

Yep, that works for me. I am not sure where I got file_length from.