AssocMap intersection

Supersedes https://github.com/Plutonomicon/plutarch-plutus/pull/604
Goldens ~have~had ex units ~mismatch~improvement unrelated to the changes here.

Sorry for the delay. There is one weird bug in pzipMapsWith that I haven't figured out yet:
  ./Plutarch/Test.hs:87:17:
  4) Plutarch.Api.api.map <golden>.zipMapsWith.(-).assert
       expected: "(program 1.0.0 [(#4161, #182a), (#4162, #0d), (#4163, #26)])"
        but got: "(program 1.0.0 [(#4161, #182a), (#4162, #0d), (#4163, #08)])"

Also, with the mutual recursion trick, adding the extra funcion made things more expensive due to the record lookup. I thought I could move the record lookup outside of the recursion, but that resulted in non-termination. Maybe it's better to pass a bool arg around for the zip to remember arg order, will check the cost.
I also think the mutual recursion isn't even needed outside of the current impl of zipMapsWith, since the one pmatch that the recursive call of merge does could also just be inlined, and then the usual pfix could be used.

@cjay Do note that records are Scott-encoded, unfold the Scott-encoding in your mind. You will note that it is equivalent to CPS.

Also, yeah, you should just use a boolean.

@cjay it seems to me like you can merge the union and intersection operations into zipWith, by adding Haskell-level parameters to zipWith. punionWith etc. should be removed as it's misleading to users and likely hiding bugs. The intersection operation can be done by making it zipWithFilter operation by making the combination function return PMaybe. The left and right defaults will then default to PNothing in the simple intersection case, hence they are removed.

I added Haskell-level default args for zipWith as you suggested. It allows emulating intersectionWith efficiently, and adding a  zipWithFilter was not necessary for that, neither was returning a PMaybe. I also eliminated the mutual recursion, and the code now uses bools for the order. It is lower cost (on non-trivial maps at least), and introducing Scott-encoded bools helped even more.
However it turned out that the old unionWith can't be expressed using zipWith, at least not without cheating. Also, many things that used to be implemented in terms of unionWith now perform significantly worse, due to more comibne calls. Even if unionWith gets expressed using zipWith by cheating, the huge performance impact would stay.
unionWith can't be expressed by using PNothing default values and a combine function in terms of PMaybe, since the type of the combine function forces it to be able to handle both values being the default. It has no way to create a value from two PNothings. Though one could cheat and error for PNothing PNothing, since it never actually gets called with that.
I believe unionWith is very useful, for purpose similar to combining values with <>. Also note that the Map in Haskell containers has unionWith as well that works exactly like our unionWith did. For operations like (+), using unionWith instead of zipMapsWith would be much more efficient, since it doesn't call combine for many keys.
Luckily I was able to keep the Semigroup instance for PMap by bumping the contraints on the value type to Monoid and using mempty for the defaults.
Maybe it would be better pull the combine function itself onto the Haskell-level. It could decide on defaults internally, obviating the need for separate default parameters on zipMapsWith, and would return a Haskell Maybe to be able to drop keys. Downside is that the whole thing gets potientially hoisted in more variants. Upside is that this function could use These, allowing it to solve the above problem with expressing unionWith. It could also be used to produce more efficient code for combine operations like (+), by just returning the one argument Term that wasn't missing. Not sure if it would be as efficient as a hand-written unionWith though.

Type of the Haskell-level funciton would be:
combine ::
  forall (s ::S) (k :: PType) (v ::Ptype).
  These (Term s v) ->
  Maybe (Term s s)

For intersection:
combineIntersection combine' (These l r) = Just (combine' l r)
combine _ _ = Nothing

For old unionWith behavior:
combineUnion combine' these =
  Just $ case these of
     These l r -> combine' l r
     This l -> l
     That r -> r

For simple zipping:
combineZip default combine' these =
  Just $ case these of
     These l r -> combine' l r
     This l -> combine' l default
     That r -> combine' default r

And similar for left and right outer join eqivalents.
If unionWith is a too misleading name, maybe we could call it unionResolvingCollisions or something like that.
One thing the hand-written unionWith would do better though, is simply returning the rest of one of the lists, when the other one runs out.

combine should definitely be entirely Haskell-level. You can create wrappers that turn it into a Plutarch-level function to enable more hoisting (if code size is an issue).
As for combining values specifically, yes, when one side is empty, we can simply return the other side. You can however integrate this into your generalised function by allowing you to note whether the cases for the lhs and rhs are simply id. You can do this by having the user explicitly tell you whether this is the case, or, if you're up for the task, check whether the function passed in is equivalent to id. You can do this because the s is rigid from the inside, i.e. combine can't inspect the term its passed (unless it uses unsafe tricks). You can take a dummy value, pass it through, and check if you get the same dummy value back.  Value tests with significant size that use unionWithResolvingCollisions use slightly more CPU and slightly less memory compared to master (but now respect the argument order). pdifference is now expressed using pzipWith too.
There is still one optimization opportunity: Keeping track of the argument order is not necessary for commutative operations. Should I add something for that? Making the PSBool optional in the recursion of the current zipWith infrastructure probably gets too messy, so I suppose I'd have to make a copy.

I'm not quite sure why script sizes got so much worse though. Reintroducing the mutual recursion trick does't really help:
master:
unionWith.growing.17 {"exBudgetCPU":624137614,"exBudgetMemory":1530496,"scriptSizeBytes":645}
this branch:
unionResolvingCollisionsWith.growing.17 {"exBudgetCPU":629601906,"exBudgetMemory":1458796,"scriptSizeBytes":1157}
going back to mutual recursion:
unionResolvingCollisionsWith.growing.17 {"exBudgetCPU":837291906,"exBudgetMemory":2361796,"scriptSizeBytes":1006}

Script size gets slightly better, but memory gets really bad then.
In master one of the mutual recursive functions was hoisted, but this is not really possible now, unless we make MergeHandler a Plutarch argument, that would ruin both CPU and memory budget.

Mitigated script size increase as far as I can:
after deduplicating zipMerge calls inside zipMergeInsert:
unionResolvingCollisionsWith.growing.17 {"exBudgetCPU":657753906,"exBudgetMemory":1581196,"scriptSizeBytes":997}

after pushing argOrder pmatching down into branches as far as possible:
unionResolvingCollisionsWith.growing.17 {"exBudgetCPU":657753906,"exBudgetMemory":1581196,"scriptSizeBytes":935}

Moral of the story is to at least plet locally if something can't be hoisted, and to push pmatching down into branches as far as possible, which doesn't even increase cost.

Added commutativity flags, to allow picking the more efficient zipping loop that doesn't care about order. Most Value operations benefit.
A few tests have larger script size due to using both commutative and non-commutative ops.

Thanks! Checking this now.

You can run CI locally by just building the appropriate Nix derivations BTW. You can check which ones exist by opening nix repl doing :lf . and using tab-completion.

https://paste.sr.ht/~mangoiv/5ff8222d80d705f75c8cbc05255f574c18fe556b
Perhaps this is useful (if you do this, you can run nix flake check when passing —impure and —allow-import-from-derivation)

That is very useful indeed! @MangoIV you could probably use an environment variable instead. Might be worth putting into tooling.

@cjay It failed again.


Init PDFWorker via MesssagePort.

Webpack people can  use 'pdfjs-dist/webpack' module for PDF.js autoconfiguration.
Fixes #7612
Addresses #7683

/botio test

/botio-linux preview

Looks good, thank you!

The wiki page has been updated as well.

@timvandermeij Are there usage notes for this? I checked the wiki but I didn't find the information. Based on the source code, I think I'm supposed to manually init the worker myself and then pass it as an argument to PDFJS.workerPort, but I'm not sure. Can you verify this?

I think I'm supposed to manually init the worker myself and then pass it as an argument to PDFJS.workerPort

@jedd-ahyoung see external/dist/webpack.js for usage example with webpack -- webpack loader takes care of the worker initialization (and it's out of control of the PDF.js). You can wrap existing worker with PDFWorker object and pass it to the PDF.js.


School request

@FronTieRed jointsolutions.txt I am sorry, I have to close the request without merging, because you made a mistake in a request and did not specify any filepath. Please ensure that you are familiar with this repository rules located at the bottom of this page and make a new correct request. Thank you for your understanding!

@FronTieRed jointsolutions.txt I am sorry, I have to close the request without merging, because you made a mistake in a request and did not specify any filepath. Please ensure that you are familiar with this repository rules located at the bottom of this page and make a new correct request. Thank you for your understanding!


ipaddr.js causes error on osx while validating jslint

Package name ipaddr.js causes error on osx while validating eslint:
eslint ./**/*.js
using npm 7.6.3 / node v12.18.4
Oops! Something went wrong! :(
ESLint: 7.21.0
You are linting "./node_modules/ipaddr.js", but all of the files matching the glob pattern "./node_modules/ipaddr.js" are ignored. If you don't want to lint these files, remove the pattern "./node_modules/ipaddr.js" from the list of arguments passed to ESLint.

Better to run lint tests with npm run lint.


fix(sdk): Prevent stalling during artifact download when WANDB_MODE=offline

Description

Addresses this GitHub Issue
Fixes WB-20039

This PR addresses an issue where the artifact download operation hangs indefinitely when using the new core backend with WANDB_MODE set to "offline". The solution involves updating the behavior to appropriately handle the offline mode, ensuring that the operation either proceeds correctly or fails with a clear error message.
What does the PR do? Include a concise description of the PR contents.

[x] I updated CHANGELOG.md, or it's not applicable

Testing
How was this PR tested?

Verified that the artifact.download() method raises an appropriate error when WANDB_MODE is set to "offline".
Ensured that the method works correctly when WANDB_MODE is not set to "offline".
Ran the existing test suite to confirm no regressions were introduced.

Belated follow-up suggestion -- this should be tested if it's expected behavior going forward. If so, could we add/modify a test for this?

Added a test as well.

I'm fine with this solution, though I don't wonder if we should be handling this at a lower level (like the mailbox) so that requests fail in general rather than just in this specific case.

That's a valid design choice, and probably the correct one in the long term. The only reason that keeps me from going there is that it will alter the behaviour of a number of other functions, that I'm not sure we explicitly intend to.
Unless we're explicitly committed to fixing this behaviour across the board (which will be a longer endeavour), I felt this was a quick way forward

I'm fine with this solution, though I don't wonder if we should be handling this at a lower level (like the mailbox) so that requests fail in general rather than just in this specific case.

Mailbox is just a transaction layer it shouldn't be aware of the protobuf content and/or settings, offline mode doesn't mean no requests sent to the service process it only means not network operations.
In this case maybe we don't even want to do the request, because we want to download the data now, but in general it is not the correct approach.

Also, did we test both code path. One coming from the public api (wandb.Api()) and the other one coming from calling the artifact on a run and there i'm not sure what is the discrepancy between the python code path and the go code path.

Thanks for the heads up, I'll take that into account while testing.

@moredatarequired do artifact respect settings when coming from a run or it never handles settings correctly? this could affect this solution, if offline can come from settings and not env variable.

@moredatarequired Can you chime in?

Also, did you ever reproduce it and understood why it hangs? maybe there is a real bug in the download code path, even if it reached the service, it should return an error in case it can't download the requested data!

The request goes into the core backend just fine, both when offline or online. However I haven't been able to follow through what happens within the core when the request goes when in "offline" mode. All the expected endpoints to be hit when handling this request don't get hit, and I'm blocked by figuring out how the request intake logic works within core to debug this further.
If we want this to move forward I can create a separate ticket to look into core while we can push this quick fix in the meantime @kptkin

Thanks for the thorough work on this bug :)

Dear W&B team,
Maybe there is something I'm missing but seems here you have just disabled downloading artifacts via API when offline mode is on.
This was something useful and often necessary (we do not want to track everything) and it is also officially supported as per

I was following this approach:
def download_artifact(artifact_name):
    artifact = wandb.Api().artifact(artifact_name)
    artifact_dir = artifact.download(root="/tmp/wandb_artifacts")
    artifact_path = os.path.join(artifact_dir, "file.csv")
    return artifact_path

which seems now not to be working anymore.


refactor ofl license checks

constants.py:

Update urls to latest

googlefonts.py:com_google_fonts_check_license_OFL_body_text:

Show changes that need to be made to the license body.  Currently, the GF backend generates its own OFL.txt file so the licenses we provide never gets used. Also, there's 35+ unique OFL.txt files in the google/fonts directory.

thanks for your patience, @m4rc1e


Quarterly Goal: FY23 Q2 (Jan-Mar 2023)

Business goal: Initiate development of the Upload API.  Using compressed routine immunization files as the first use case, the Upload API will be able to receive, decompress files (as needed), and provide a basic pass/fail response.  At this time, a minimum level of record information will be provided back to the submitting entity.  These files will be uploaded to the EDAV environment.  Data sender is a single source (for this quarter):  IZ Gateway (Audacious Inquiry) in APHL's AIMS platform.

[ ] Build dev/tst/stg/prod of Upload API
[ ] Build function to process metadata
[ ] Provision and configure EDAV storage
[ ] Onboard IZ Gateway to DEX
[ ] Provide basic feedback mechanism to submitting entity

Dependencies/Risks:

CR in Azure GSS environment (SA&A received)
Ability to instantiate dev/tst/stg/prod environments for Upload API
Audacious Inquiry's ability to test with DEX on schedule

Stretch Goals:

CSV Validation of routine immunization files

Out of scope for this quarter:

Portal

@rmharrison can you review/edit?


max_followers_to_following_ratio and max_following_to_followers_ratio is the same

And one of them should just be the inverse of the other, e.g. max_followers_to_following_ratio = 1/max_following_to_followers_ratio.
We should either deprecate one of them or make the arguments mutually exclusive.

This should be fixed.

hi, how to disable max_followers_to_following_ratio ?

hi, how to disable max_followers_to_following_ratio ?

max_followers_to_following_ratio=1000,
max_following_to_followers_ratio=1000,


Split OS.execute into blocking and non-blocking method

See https://github.com/godotengine/godot/issues/19056

Duplicate of #18919.

I see mention of  breaking compatibility but why would fixing this break compatibility?

Because unless we write two new methods and keep the old OS.execute() unmodified (and thus still broken as it is now), we would need to modify the OS.execute() API (remove it or change its behaviour), and thus break the compatibility.

But why do you think OS.execute would need to be modified in a way that would make it incompatible? Your assertions are unclear.
Using posix_spawn should provide a suitable fix for this. I played with it and it would even provide some extra functionality if we wanted.

@romeojulietthotel This is the method signature for OS.execute: http://docs.godotengine.org/en/3.0/classes/class_os.html#class-os-execute
The bool blocking argument would need to be removed, which breaks compatibility.

I have a pr that could be helpful with all of this, if anyone wants to double check the pr and make sure it works, feel free : https://github.com/godotengine/godot/pull/26462


⚠ Bofrost.fr has degraded performance

In 383f8ad, Bofrost.fr (https://www.bofrost.fr) experienced degraded performance:

HTTP code: 200
Response time: 1394 ms

Resolved: Bofrost.fr performance has improved in 50968ef.


test: fix occupancy tests

Context
CHA-580
Description
This change fixes the occupancy tests to account for recent changes in Realtime that affect the numbers.
Checklist

[x] QA'd by the author.
[x] Unit tests created (if applicable).
[x] Integration tests created (if applicable).
[x] Follow coding style guidelines found here.
[x] TypeDoc updated (if applicable).
[x] (Optional) Update documentation for new features.
[x] Browser tests created (if applicable).
[x] In repo demo app updated (if applicable).

Testing Instructions (Optional)
Run tests!

Looks good, but can we get a bit more of an explanation here as to why this fix is needed please?

Looks good, but can we get a bit more of an explanation here as to why this fix is needed please?

As this involves internal realtime details, I have DMd you directly :)


After PIM activation into group membership, Storage Explorer needs Reset > Authentication to pickup new rights

Preflight Checklist

[X] I have installed the latest version of Storage Explorer.
[X] I have checked existing resources, including the troubleshooting guide and the release notes.
[X] I have searched for similar issues.

Storage Explorer Version
1.34.0 (99)
Regression From
No response
Architecture
x64
Storage Explorer Build Number
20240523.2
Platform
Windows
OS Version
Windows 11 24H2
Bug Description
Our RBAC config for a storage account grants Storage Queue Data Reader role permanently to a group, called QueueReaders - this is for normal monitoring use.  If we need to edit the queue, we require users to PIM-activate into membership of a group called QueueWriters.  The QueueWriters group is permanently granted Storage Queue Data Contributor access to the storage account, but normally has zero members until someone PIM activates their membership.
This works, but there's a long delay between activating group membership, and being able to operate on the queue in Storage Explorer.  This can be sped up by going Help > Reset and resetting the authentication.  This then forces a reconnect via the normal Account Management flow, and has the side-effect to getting a new user token.
The user JWT token lists the group memberships as part of the token, so I imagine that the token gets cached, and the effect of elevation isn't seen until the token is refreshed.
Would it be possible to have a "Refresh token" option in the menu somewhere, so we can get a new token faster?
Repro steps:
Steps to Reproduce

Setup RBAC groups as described in the report:
a. create a QueueReader group, grant Storage Queue Data Reader to storage account.  Add the test user to this group.
b. create a QueueWriter group, grant Storage Queue Data Contributor to storage account
c. configure QueueWriter group to be a PIM-enabled group, and configure the test user as eligible to activate into a member of the group.
d. enqueue a test message into the queue.
Start Storage Explorer.  Navigate to the queue.  Check you can read the test message.
Attempt to delete the message: permission denied (expected) because you only have QueueReader membership.
PIM activate membership of QueueWriter group.
Attempt to delete the message: permission denied - unexpected, because user is now elevated.  BUG.
Help > Reset chose authentication only
Re-add the user account
Attempt to delete the message: delete succeeds

Actual Experience
Delete queue message fails with a permission denied type error
Expected Experience
Delete queue message should succeed.
Additional Context
No response

@austindonnelly Yes, I'm guessing the token contains permission information. The PIM-activate changes the permissions granted to identities in the group, which effectively makes the permission information in the token out-of-date. I can see a manual token refresh being useful.
I don't think a full auth reset should be necessary, though. Can you just sign out and sign back in?

Yes, that works (Remove account, Re-add account).  But that's quite heavyweight compared to what I really would like, which is a "Refresh token" menu option.
Austin
From: Craig Alvord @.>
Sent: Friday, June 14, 2024 7:08 PM
To: microsoft/AzureStorageExplorer @.>
Cc: Austin Donnelly @.>; Mention @.>
Subject: Re: [microsoft/AzureStorageExplorer] After PIM activation into group membership, Storage Explorer needs Reset > Authentication to pickup new rights (Issue #8000)
@austindonnellyhttps://github.com/austindonnelly Yes, I'm guessing the token contains permission information. The PIM-activate changes the permissions granted to identities in the group, which effectively makes the permission information in the token out-of-date. I can see a manual token refresh being useful.
I don't think a full auth reset should be necessary, though. Can you just sign out and sign back in?

Reply to this email directly, view it on GitHubhttps://github.com/microsoft/AzureStorageExplorer/issues/8000#issuecomment-2168522436, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AEA3CVWZ3DV6RSTV3QLRHOTZHMWQVAVCNFSM6AAAAABJERQEF6VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCNRYGUZDENBTGY.
You are receiving this because you were mentioned.Message ID: @.***>

We are heavily relying on PIM for providing temporary access to various file shares. It is currently a big hassle for our users to continuously having to remove account / re-add account. Would be very sweet to get this refresh access token feature implemented preferably sooner than later.

Hey @cveld and @austindonnelly , it sounds like we're probably all on the same page, but just incase, I'm still going to lay out our undrestanding of how Entra access tokens/needing to wait for RBAC assignment works.
Generally speaking, when you receive a new RBAC assignment, apps you are using might need to acquire a new access token from Entra before they can successfully make an API call which requires that role.
New access tokens are not acquired until the expire, and usually access tokens have a lifetime of one hour. This means it may take up to an hour for an app to start succesfully making those API calls. However, singing out and back into an app is a way to immediately get a new access token.
We'd love to offer a "refresh access token" button to help make this problem go away, but unfortunately the Entra authentication libraries (e.g. MSAL) don't offer such a functionality to us. I definitely understand the frustration with this, as there's plenty of times I want to test something which requries a specific RBAC setup, and I have to sign out and then sign back in, or wait an hour and then come back.
Let us know if you have any follow-up questions.

Thanks for the clear explanation.
What about the following two options:

Make an ask to the MSAL team, requesting a "refresh" API to be added.  Once that's in place, you can then start using it.  This is a long-term strategy, but feels like the correct technical solution.  It may also help other teams using MSAL who face a similar problem.
In Storage Explorer, implement "refresh" as signout followed by signin, but with simpler UI.

Austin
From: Matthew Rayermann @.>
Sent: 04 December 2024 18:59
To: microsoft/AzureStorageExplorer @.>
Cc: Austin Donnelly @.>; Mention @.>
Subject: Re: [microsoft/AzureStorageExplorer] After PIM activation into group membership, Storage Explorer needs Reset > Authentication to pickup new rights (Issue #8000)
Hey @cveldhttps://github.com/cveld and @austindonnellyhttps://github.com/austindonnelly , it sounds like we're probably all on the same page, but just incase, I'm still going to lay out our undrestanding of how Entra access tokens/needing to wait for RBAC assignment works.
Generally speaking, when you receive a new RBAC assignment, apps you are using might need to acquire a new access token from Entra before they can successfully make an API call which requires that role.
New access tokens are not acquired until the expire, and usually access tokens have a lifetime of one hour. This means it may take up to an hour for an app to start succesfully making those API calls. However, singing out and back into an app is a way to immediately get a new access token.
We'd love to offer a "refresh access token" button to help make this problem go away, but unfortunately the Entra authentication libraries (e.g. MSAL) don't offer such a functionality to us. I definitely understand the frustration with this, as there's plenty of times I want to test something which requries a specific RBAC setup, and I have to sign out and then sign back in, or wait an hour and then come back.
Let us know if you have any follow-up questions.

Reply to this email directly, view it on GitHubhttps://github.com/microsoft/AzureStorageExplorer/issues/8000#issuecomment-2518306944, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AEA3CVQES5CZEWOZGEWA5PT2D5GG5AVCNFSM6AAAAABJERQEF6VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDKMJYGMYDMOJUGQ.
You are receiving this because you were mentioned.Message ID: @.***>

Option 2 is certainly doable, but it would require credential entry, because you're signing out and signing back in.


Remove cogworks-infrastructure from gitflow

Can be done with checkout task and personal token: https://github.com/kkokosa/Strings.Abbreviations/pull/13

Fixed on latest develop.


Error connect

Hi,
I try to connect , but it crashes with an error
INFO:ble2mqtt.ble2mqtt:Connected to localhost
INFO:ble2mqtt.devices.base:Connected to DE:39:B7:1D:85:42
INFO:ble2mqtt.protocols.redmond:Enable BLE notifications from [DE:39:B7:1D:85:42]
ERROR:ble2mqtt.ble2mqtt:Root task has raised an exception
Traceback (most recent call last):
  File "/usr/lib/python3.7/site-packages/ble2mqtt/ble2mqtt.py", line 556, in _run_device_tasks
  File "/usr/lib/python3.7/site-packages/ble2mqtt/ble2mqtt.py", line 402, in manage_device
  File "/usr/lib/python3.7/site-packages/ble2mqtt/devices/kettle_redmond.py", line 80, in get_device_data
  File "/usr/lib/python3.7/site-packages/ble2mqtt/protocols/redmond.py", line 225, in login
  File "/usr/lib/python3.7/site-packages/ble2mqtt/protocols/redmond.py", line 166, in _check_success
ble2mqtt.protocols.redmond.RedmondError: Not logged in
INFO:ble2mqtt.ble2mqtt:Disconnected
Traceback (most recent call last):
  File "/usr/bin/ble2mqtt", line 11, in <module>
    load_entry_point('ble2mqtt==0.1.0a11', 'console_scripts', 'ble2mqtt')()
  File "/usr/lib/python3.7/site-packages/ble2mqtt/__main__.py", line 61, in main
  File "/usr/lib/python3.7/asyncio/base_events.py", line 587, in run_until_complete
  File "/usr/lib/python3.7/site-packages/ble2mqtt/ble2mqtt.py", line 115, in close
  File "/usr/lib/python3.7/site-packages/ble2mqtt/ble2mqtt.py", line 107, in stop_task
  File "/usr/lib/python3.7/site-packages/ble2mqtt/ble2mqtt.py", line 556, in _run_device_tasks
  File "/usr/lib/python3.7/site-packages/ble2mqtt/ble2mqtt.py", line 402, in manage_device
  File "/usr/lib/python3.7/site-packages/ble2mqtt/devices/kettle_redmond.py", line 80, in get_device_data
  File "/usr/lib/python3.7/site-packages/ble2mqtt/protocols/redmond.py", line 225, in login
  File "/usr/lib/python3.7/site-packages/ble2mqtt/protocols/redmond.py", line 166, in _check_success
ble2mqtt.protocols.redmond.RedmondError: Not logged in

Could you try to put your kettle in the pairing mode?
Ble2mqtt has to set a key to access the kettle to control it.

Yes, I do
`
INFO:ble2mqtt.ble2mqtt:Connected to localhost
INFO:ble2mqtt.devices.base:Connected to de:39:b7:1d:85:42
INFO:ble2mqtt.protocols.redmond:Enable BLE notifications from [de:39:b7:1d:85:42]
INFO:ble2mqtt.devices.base:Client de:39:b7:1d:85:42 disconnected, device=Redmond_de39b71d8542
ERROR:ble2mqtt.ble2mqtt:Cannot get initial info device=Redmond_de39b71d8542
Traceback (most recent call last):
File "/usr/lib/python3.7/site-packages/ble2mqtt/ble2mqtt.py", line 402, in manage_device
File "/usr/lib/python3.7/site-packages/ble2mqtt/devices/kettle_redmond.py", line 80, in get_device_data
File "/usr/lib/python3.7/site-packages/ble2mqtt/protocols/redmond.py", line 224, in login
File "/usr/lib/python3.7/site-packages/ble2mqtt/protocols/redmond.py", line 213, in send_command
File "/usr/lib/python3.7/asyncio/tasks.py", line 449, in wait_for
concurrent.futures._base.TimeoutError
INFO:ble2mqtt.devices.base:Connected to de:39:b7:1d:85:42
INFO:ble2mqtt.protocols.redmond:Enable BLE notifications from [de:39:b7:1d:85:42]
ERROR:ble2mqtt.ble2mqtt:Root task has raised an exception
Traceback (most recent call last):
File "/usr/lib/python3.7/site-packages/ble2mqtt/ble2mqtt.py", line 556, in _run_device_tasks
File "/usr/lib/python3.7/site-packages/ble2mqtt/ble2mqtt.py", line 402, in manage_device
File "/usr/lib/python3.7/site-packages/ble2mqtt/devices/kettle_redmond.py", line 80, in get_device_data
File "/usr/lib/python3.7/site-packages/ble2mqtt/protocols/redmond.py", line 225, in login
File "/usr/lib/python3.7/site-packages/ble2mqtt/protocols/redmond.py", line 166, in _check_success
ble2mqtt.protocols.redmond.RedmondError: Not logged in
INFO:ble2mqtt.ble2mqtt:Disconnected
Traceback (most recent call last):
File "/usr/bin/ble2mqtt", line 11, in
load_entry_point('ble2mqtt==0.1.0a11', 'console_scripts', 'ble2mqtt')()
File "/usr/lib/python3.7/site-packages/ble2mqtt/main.py", line 61, in main
File "/usr/lib/python3.7/asyncio/base_events.py", line 587, in run_until_complete
File "/usr/lib/python3.7/site-packages/ble2mqtt/ble2mqtt.py", line 115, in close
File "/usr/lib/python3.7/site-packages/ble2mqtt/ble2mqtt.py", line 107, in stop_task
File "/usr/lib/python3.7/site-packages/ble2mqtt/ble2mqtt.py", line 556, in _run_device_tasks
File "/usr/lib/python3.7/site-packages/ble2mqtt/ble2mqtt.py", line 402, in manage_device
File "/usr/lib/python3.7/site-packages/ble2mqtt/devices/kettle_redmond.py", line 80, in get_device_data
File "/usr/lib/python3.7/site-packages/ble2mqtt/protocols/redmond.py", line 225, in login
File "/usr/lib/python3.7/site-packages/ble2mqtt/protocols/redmond.py", line 166, in _check_success
ble2mqtt.protocols.redmond.RedmondError: Not logged in
`

What kettle model do you have?

RK-201S

same on redmond RK-216S

Is it possible that you use both software to connect to the kettle?
"Not logged in" error means that the kettle doesn't accept your key on authorization.
It can be (I  assume) in case when it is not in pairing mode.
Maybe it is possible to extract the key(password) for the kettle from SkyKettle app or from HA component and add the parameter to ble2mqtt.json config.

The kettle is in pairing mode. As soon as ble2mqtt connects to it, the
pairing indicators go out and after a while an error appears that was
dropped above.
how should a config file with a password look like? I'll try to pull
it out of the application
вс, 21 мар. 2021 г., 03:39 Ivan Belokobylskiy @.***>:

Is it possible that you use both software to connect to the kettle?
"Not logged in" error means that the kettle doesn't accept your key on
authorization.
It can be (I assume) in case when it is not in pairing mode.
Maybe it is possible to extract the key(password) for the kettle from
SkyKettle app or from HA component and add the parameter to ble2mqtt.json
config.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/devbis/ble2mqtt/issues/8#issuecomment-803460037, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AGCTOCEO2O74JMQZW7O5J6DTEUBXLANCNFSM4X2TRMVQ
.

The kettle is in pairing mode. As soon as ble2mqtt connects to it, the pairing indicators go out and after a while an error appears that was dropped above.
how should a config file with a password look like? I'll try to pull it out of the application

The entry with a kettle should be like
        {
            "address": "11:22:33:aa:bb:cc",
            "type": "redmond200",
            "key": "0011223344556677"
        },

Where key is 8 bytes, 16 characters in hex format
Another approach is to comment out the check for auth response in installed library in /usr/lib/...../ble2mqtt/protocols/redmond.py. Maybe it send 0 on successful authorization too.
https://github.com/devbis/ble2mqtt/blob/2a16df4a2a85b8b614862f3e4155ab4a851f37be/ble2mqtt/protocols/redmond.py#L270
I made the integration based on my G214S kettle

new problem
root@OpenWrt:~# ble2mqtt INFO:ble2mqtt.ble2mqtt:Connected to localhost INFO:ble2mqtt.devices.base:Connected to de:39:b7:1d:85:42 WARNING:ble2mqtt.ble2mqtt:Error while connecting to Redmond_RK-G201S_de39b71d8542, 'BleakClientBlueZDBus' object has no attribute '_properties' AttributeError("'BleakClientBlueZDBus'               object has no attribute '_properties'"), failure_count=1

Update to the latest version of ble2mqtt and bleak, please.
pip3 install -U ble2mqtt

I'm using the latest version from github

What about the latest bleak version?
pip3 install bleak==0.11.0

Can you please enable
"log_level": "DEBUG"  in the config file and to reduce output comment out two lines:
https://github.com/devbis/ble2mqtt/blob/30499b671c9dfee7516e7220807ab3241ee22c5d/ble2mqtt/ble2mqtt.py#L645
https://github.com/devbis/ble2mqtt/blob/30499b671c9dfee7516e7220807ab3241ee22c5d/ble2mqtt/ble2mqtt.py#L654
It will print information that is transmitted in the log.

still cant connect to kettle g216s
log.txt

1 Install bleak 0.11.0 from github
2 install dbus_next from github
3 change key from config
4 set kettle pairing mode
I's work

3 change key from config
what does it mean? Were you able to get the key from the ready4sky app?

you don't need a key from the app.
you need any random key, for example "key": "1234567890123456" or "key": "1122334455667788"
run ble2mqtt you get Errorr: Not logged in
set kettle pairing mode
you must be authorized

thanks, your advice helped. Everything works

you don't need a key from the app.
you need any random key, for example "key": "1234567890123456" or "key": "1122334455667788"
run ble2mqtt you get Errorr: Not logged in
set kettle pairing mode
you must be authorized

thanks, your advice helped. Everything works

I added a note about the key to readme.
https://github.com/devbis/ble2mqtt/commit/d0c627e53f86e3ff7c0ce114c30a72e6e1435064
Thanks for debugging!


Two Factor Authentication

Feel free to review code, note: DO NOT MERGE - need to update cloudsdk to 0.5.1 (once released) for 2fa flow to work.

LGTM


Implement routes for search queries, results, and updating search history

Need to complete routing for search feature and archiving search history for the app.
Overview of task:

[x] define getting, updating, and deleting end points in ./routes/search.js for search history

make sure to pass verifyToken so end point is secure and requires authentication before proceeding - see savedpins routes as an example

[x] implement controller functions for end points in ./controllers/search-history-controller.js
[x] define query and result end points in ./routes/search.js for search feature

will need to reference related controller functions in ./controllers/google-api-controller.js and/or implement if needed code is missing

Notes - initial model for storing search history data is in ./models/search-history.js

closing in favor of more specific issues has frontend and backend start communicating.


ScriptableObject doesn't save settings due to not being SetDirty

In the current version, closing and reopening Unity will reset settings, as they are not currently saving correctly
A push is coming out for this, but this issue is here just to show that it has been recognized

Now fixed, closing issue


fix: use heck instead of covert_case for Train-Case

The Train-Case implementation on the covert_case crate seems to convert 'ma8' to 'Ma-8'. This isn't the expected result. Heck seems to get it right, 'Ma8'.

bors merge

bors merge

bors merge


artifactory_managed_user should replace on username change

Describe the bug
When the username of a artifactory_managed_user changes, the plan indicates that it would update the resource, rather than replacing it. The apply fails with "Error: - Not Found". The resource should
Requirements for and issue
Try to rename a user with Terraform. Artifactory doesn't support renaming users, so I would expect the resource to be recreated.
resource "artifactory_managed_user" "myuser" {
  name              = "myuser"
  email             =<EMAIL_ADDRESS>  disable_ui_access = true
  admin             = false
  profile_updatable = false
  password          = "foobar32!!"
}

Expected behavior
A clear and concise description of what you expected to happen.
Actual behaviour
Example:

The publish-hdf-2081-playground user continutes to exist after the Terraform apply failed. Deleting the user and running the apply again fixes it.

@NiklasRosenstein Thanks for the report! I've added this to our plan to fix.


What is my sending/originating IP address with Sendgrid?

https://sendgrid.com/docs/Classroom/Basics/Account/what_is_my_sending_originating_ip_address_with_sendgrid.html
According to this documentaiton I'm supposed to be able to determine the outbound IP Sendgrid is using to send email. However that information does appear to be available in my Settings. I'm attempting to Whitlelist the IP with Google as Google is now bouncing the emails sent into our domain. We were flagged as spam due to another site on our servers that was hacked and has since been resolved.

Hello @djneely,Thanks for your suggestion or question! In an attempt to clear out our backlog,                                              we are closing out issues over 90 days old.                                             If this is still an issue, please feel free to reopen it.                                             Team SendGrid DX-Docs


chore(core): remove ssr limit for renderToSVGString

Brief Information
This pull request is in the type of:

[ ] bug fixing
[ ] new feature
[x] others

What does this PR do?
renderToSVGString can be taken as the alias for painter#renderToString. It can work without ssr enabled.
Fixed issues

Details
Before: What was the problem?

After: How is it fixed in this PR?

Misc

[ ] The API has been changed (apache/echarts-doc#xxx).
[ ] This PR depends on ZRender changes (ecomfe/zrender#xxx).

Related test cases or examples to use the new APIs
NA.
Others
Merging options

[ ] Please squash the commits into a single one when merge.

Other information

Seems the CI is failed


Add basic connection management

Don't crash on disconnect
Don't crash if server doesn't respond on initial connect
Handle reconnecting
Show connection menu while disconnected

This fixes #77

@nsg This one properly handles all disconnect cases so that the program never crashes on network problems (or at least all that I know of :smile: ).

@petterarvidsson nice! Looking forward to try this ... finally! This is a much nicer solution compared to what I was considering hacking together :) :+1:


Code generator support for recursors

Prerequisites

[X] Put an X between the brackets on this line if you have done all of the following:

Checked that your issue isn't already filed.
Reduced the issue to a self-contained, reproducible test case.

Description
I couldn't see a tracking issue for this, so thought I'd create one to refer to from mathlib4.
We quite often use Nat.rec and List.rec, and neither are supported by the code generator:
https://github.com/leanprover/lean4/blob/a125a36bcc79a28963ed5786f94c5d97648a8f99/src/Lean/CoreM.lean#L280-L295
Steps to Reproduce
Run
#eval (List.rec 0 (fun x xs ih => 0) ([] : List Nat) : Nat)

Expected behavior: Prints 0
Actual behavior:
code generator does not support recursor 'List.rec' yet, consider using 'match ... with' and/or structural recursion

Reproduces how often: 100%

See also the discussion at https://github.com/leanprover/std4/pull/91


Get rid of number of tokens, number of images as settable attributes

Done in  https://github.com/soniajoseph/ViT-Prisma/pull/152


Shards not getting created, throwing write failed errors (throughput too high)

We have an <IP_ADDRESS> cluster (stable release) of three nodes with a default retention policy as defined by telegraf (v0.1.9, also stable release), and it seems unable to keep up with the data load. In particular, we're seeing thousands of messages the error below, and no extra shard created:
[tcp] 2015/10/01 12:07:16 process write shard error: write shard 1: engine: write points: write throughput too high. backoff and retry
Leaving the metrics to collect overnight, we returned in the morning to see one single shard at >95GB on each node. We've combed through a lot of the posts, including tweaks like #3885 to no avail. Even turning off HH and drastically reducing the wal knobs end up seeing a lot of gaps in the data, if it's committed at all.
Reading up on #4086 and similar threads, I'm curious if we're bumping up against the locking mechanism during wal flush. It seems that once we trigger a flush, we block all incoming read/write requests and just never recover. Unfortunately our setup represents only a fraction of the nodes we need to collect from so currently the backend is just unable to keep up.
Key Questions:

Can we turn off the wal at all, buffering into memory/cache instead? We have incredibly powerful machines (it's not a hardware problem) that can handle this type of throughput provided we can get it at the disks...
@parisholley, thanks! Does shard-precreation actually work? Doesn't seem to generate more than 1 shard, ever?
To improve throughput does it make sense to tweak the LB to be sticky until a node dies? Will replication occur async to each of the cluster nodes?
When can we enable shards across more than 3 nodes, this is a massive limitation at this point and we can only scale up so far?
If you want to comb logs, do you have drop box we can send them to? We're quite eager to get this working properly...

CONFIG:

~1200 machines reporting through haproxy (roundrobin), ~60Mbit/sec
64bit RHEL 7.1
default telegraf collectors (v0.1.9 stable): cpu disk io mem net swap system
collect every 10s
three backend influxdb nodes (v<IP_ADDRESS> stable, very beefy SSD-backed machines, 256GB RAM each)

### Welcome to the InfluxDB configuration file.

# Once every 24 hours InfluxDB will report anonymous data to m.influxdb.com
# The data includes raft id (random 8 bytes), os, arch, version, and metadata.
# We don't track ip addresses of servers reporting. This is only used
# to track the number of instances running and the versions, which
# is very helpful for us.
# Change this option to true to disable reporting.
reporting-disabled = true

###
### [meta]
###
### Controls the parameters for the Raft consensus group that stores metadata
### about the InfluxDB cluster.
###

[meta]
  dir = "/data/influxdb/meta"
  hostname = "testmetricsl6"
  bind-address = ":8088"
  retention-autocreate = true
  election-timeout = "1s"
  heartbeat-timeout = "1s"
  leader-lease-timeout = "500ms"
  commit-timeout = "50ms"
  cluster-tracing = true

###
### [data]
###
### Controls where the actual shard data for InfluxDB lives.
###

[data]
  dir = "/data/influxdb/metrics"
  max-wal-size = 10485760
  wal-flush-interval = "1m"
  wal-partition-flush-delay = "2s"
  wal-dir = "/data/influxdb/wal"
  wal-logging-enabled = true
  wal-ready-series-size = 1024
  wal-compaction-threshold = 0.5
  wal-max-series-size = 1048576
  wal-flush-cold-interval = "5s"
  wal-partition-size-threshold = 10485760

###
### [cluster]
###
### Controls non-Raft cluster behavior, which generally includes how data is
### shared across shards.
###

[cluster]
  force-remote-mapping = false
  write-timeout = "2s"
  shard-writer-timeout = "2s"
  shard-mapper-timeout = "2s"

###
### [retention]
###
### Controls the enforcement of retention policies for evicting old data.
###

[retention]
  enabled = true
  check-interval = "10m0s"

[shard-precreation]
  enabled = true
  check-interval = "30s"
  advance-period = "60m0s"

###
### [admin]
###
### Controls the availability of the built-in, web-based admin interface.
###

[admin]
  enabled = true
  bind-address = ":8083"
  https-enabled = false
  https-certificate = "/etc/ssl/influxdb.pem"

###
### [http]
###
### Controls how the HTTP endpoints are configured. These are the primary
### mechanism for getting data into and out of InfluxDB.
###

[http]
  enabled = true
  bind-address = ":8086"
  auth-enabled = false
  log-enabled = true
  write-tracing = false
  pprof-enabled = false
  https-enabled = false
  https-certificate = "/etc/ssl/influxdb.pem"

###
### [[graphite]]
###
### Controls one or many listeners for Graphite data.
###

[[graphite]]
  enabled = false
  bind-address = ":2003"
  database = "graphite"
  protocol = "tcp"
  batch-size = 1000
  batch-timeout = "1s"
  tcp-conn-timeout = "15m0s"
  consistency-level = "one"
  separator = "."

###
### [collectd]
###
### Controls the listener for collectd data.
###

[collectd]
  enabled = false
  bind-address = ":25826"
  database = "collectd"
  retention-policy = ""
  batch-size = 5000
  batch-pending = 5
  batch-timeout = "10s"
  typesdb = "/usr/share/collectd/types.db"

###
### [opentsdb]
###
### Controls the listener for OpenTSDB data.
###

[opentsdb]
  enabled = false
  bind-address = ":4242"
  database = "opentsdb"
  retention-policy = ""
  consistency-level = "one"
  tls-enabled = false
  certificate = "/etc/ssl/influxdb.pem"
  batch-size = 1000
  batch-pending = 5
  batch-timeout = "1s"

###
### [monitor]
###

[monitor]
  store-enabled = false
  store-database = "_internal"
  store-interval = "10s"

###
### [continuous_queries]
###
### Controls how continuous queries are run within InfluxDB.
###

[continuous_queries]
  enabled = true
  log-enabled = true
  recompute-previous-n = 2
  recompute-no-older-than = "10m0s"
  compute-runs-per-interval = 10
  compute-no-more-than = "2m0s"

###
### [hinted-handoff]
###
### Controls the hinted handoff feature, which allows nodes to temporarily
### store queued data when one node of a cluster is down for a short period
### of time.
###

[hinted-handoff]
  enabled = false
  dir = "/data/influxdb/hh"
  max-size =<PHONE_NUMBER>
  max-age = "168h0m0s"
  retry-rate-limit = 0
  retry-interval = "1s"

Also referencing this Issue: https://github.com/influxdb/influxdb/issues/4240

i also ran into an issue writing into the default store. it appears that sharding only happens when a retention policy is active (default is infinite). i ended up setting the default to 1 hour and using continuous queries to down sample into 1M groups for what i needed.

@parisholley did you allow telegraf to create the policy on its own, or did you manually adjust the params?

@sebito91 not using telegraf, the default influxdb behavior is create the default retention policy when a new database is made. i ended up disabling that behavior (through conf) and creating it myself. make sure you run:
show shards

to validate it is going to expire within a the timeline you set, otherwise it will never preallocate or rotate

@parisholly, thanks! We'll let the data run for a while to see if the shards actually get generated:
> show retention policies on telegraf
name		duration	replicaN	default
default		0		3		false
telegraf	24h0m0s		3		true

> show shards
name: telegraf
--------------
id	start_time		end_time		expiry_time		owners
1	2015-09-28T00:00:00Z	2015-10-05T00:00:00Z	2015-10-05T00:00:00Z	2,3,1
2	2015-10-01T18:00:00Z	2015-10-01T19:00:00Z	2015-10-02T19:00:00Z	3,1,2
3	2015-10-01T19:00:00Z	2015-10-01T20:00:00Z	2015-10-02T20:00:00Z	1,2,3

name: _internal
---------------
id	start_time		end_time		expiry_time		owners
4	2015-10-01T00:00:00Z	2015-10-02T00:00:00Z	2015-10-09T00:00:00Z	2
5	2015-10-01T00:00:00Z	2015-10-02T00:00:00Z	2015-10-09T00:00:00Z	3
6	2015-10-01T00:00:00Z	2015-10-02T00:00:00Z	2015-10-09T00:00:00Z	1

So with @parisholley's guidance, we do see shards getting created on the hour (likely based on our config). That being said, the other 4 questions still remain and throughput issues are still present.

Can we turn off the wal at all, buffering into memory/cache instead?
We have incredibly powerful machines (it's not a hardware problem) that can
handle this type of throughput provided we can get it at the disks...

This is not possible, and we are currently developing a new storage engine
(which will be available in an experimental state very soon). Work on the
new engine will be our priority.

Does shard-precreation actually work? Doesn't seem to generate more
than 1 shard, ever?
To improve throughput does it make sense to tweak the LB to be sticky
until a node dies? Will replication occur async to each of the cluster
nodes?

Replication to other nodes is synchronous, but it does happen in parallel.
I'm not quite sure what you're asking here.

When can we enable shards across more than 3 nodes, this is a massive
limitation at this point and we can only scale up so far?

I understand the issue you are getting at, and we have discussed it here.
Can you open a ticket, as a feature request?

If you want to comb logs, do you have drop box we can send them to?
We're quite eager to get this working properly...

We are very aware that many people, when pushing the system, are
experiencing issues with the current WAL. This is why you may be interested
in the new engine, again experimental, which will be available soon.  In
the meantime you may like to switch back the "b1" engine, as some people
report better operation with that build. You need to run a nightly or
<IP_ADDRESS> to have control over the default engine.
https://github.com/influxdb/influxdb/blob/master/etc/config.sample.toml#L41
On Thu, Oct 1, 2015 at 10:38 AM, Sebastian Borza<EMAIL_ADDRESS>wrote:

We have an <IP_ADDRESS> cluster (stable release) of three nodes with a default
retention policy as defined by telegraf (v0.1.9, also stable release), and
it seems unable to keep up with the data load. In particular, we're seeing
thousands of messages the error below, and no extra shard created:
[tcp] 2015/10/01 12:07:16 process write shard error: write shard 1:
engine: write points: write throughput too high. backoff and retry
Leaving the metrics to collect overnight, we returned in the morning to
see one single shard at >95GB on each node. We've combed through a lot of
the posts, including tweaks like #3885
https://github.com/influxdb/influxdb/issues/3885 to no avail. Even
turning off HH and drastically reducing the wal knobs end up seeing a lot
of gaps in the data, if it's committed at all.
Reading up on #4086 https://github.com/influxdb/influxdb/issues/4086
and similar threads, I'm curious if we're bumping up against the locking
mechanism during wal flush. It seems that once we trigger a flush, we block
all incoming read/write requests and just never recover. Unfortunately our
setup represents only a fraction of the nodes we need to collect from so
currently the backend is just unable to keep up.
Key Questions:

Can we turn off the wal at all, buffering into memory/cache
instead? We have incredibly powerful machines (it's not a hardware problem)
that can handle this type of throughput provided we can get it at the
disks...
Does shard-precreation actually work? Doesn't seem to generate more
than 1 shard, ever?
To improve throughput does it make sense to tweak the LB to be
sticky until a node dies? Will replication occur async to each of the
cluster nodes?
When can we enable shards across more than 3 nodes, this is a
massive limitation at this point and we can only scale up so far?
If you want to comb logs, do you have drop box we can send them to?
We're quite eager to get this working properly...

CONFIG:

~1200 machines reporting through haproxy (roundrobin), ~60Mbit/sec
64bit RHEL 7.1
default telegraf collectors (v0.1.9 stable): cpu disk io mem net
swap system
collect every 10s
three backend influxdb nodes (v<IP_ADDRESS> stable, very beefy SSD-backed
machines, 256GB RAM each)

Welcome to the InfluxDB configuration file.
Once every 24 hours InfluxDB will report anonymous data to m.influxdb.com
The data includes raft id (random 8 bytes), os, arch, version, and metadata.
We don't track ip addresses of servers reporting. This is only used
to track the number of instances running and the versions, which
is very helpful for us.
Change this option to true to disable reporting.
reporting-disabled = true

[meta]

Controls the parameters for the Raft consensus group that stores metadata
about the InfluxDB cluster.

[meta]
dir = "/data/influxdb/meta"
hostname = "testmetricsl6"
bind-address = ":8088"
retention-autocreate = true
election-timeout = "1s"
heartbeat-timeout = "1s"
leader-lease-timeout = "500ms"
commit-timeout = "50ms"
cluster-tracing = true

[data]

Controls where the actual shard data for InfluxDB lives.

[data]
dir = "/data/influxdb/metrics"
max-wal-size = 10485760
wal-flush-interval = "1m"
wal-partition-flush-delay = "2s"
wal-dir = "/data/influxdb/wal"
wal-logging-enabled = true
wal-ready-series-size = 1024
wal-compaction-threshold = 0.5
wal-max-series-size = 1048576
wal-flush-cold-interval = "5s"
wal-partition-size-threshold = 10485760

[cluster]

Controls non-Raft cluster behavior, which generally includes how data is
shared across shards.

[cluster]
force-remote-mapping = false
write-timeout = "2s"
shard-writer-timeout = "2s"
shard-mapper-timeout = "2s"

[retention]

Controls the enforcement of retention policies for evicting old data.

[retention]
enabled = true
check-interval = "10m0s"
[shard-precreation]
enabled = true
check-interval = "30s"
advance-period = "60m0s"

[admin]

Controls the availability of the built-in, web-based admin interface.

[admin]
enabled = true
bind-address = ":8083"
https-enabled = false
https-certificate = "/etc/ssl/influxdb.pem"

[http]

Controls how the HTTP endpoints are configured. These are the primary
mechanism for getting data into and out of InfluxDB.

[http]
enabled = true
bind-address = ":8086"
auth-enabled = false
log-enabled = true
write-tracing = false
pprof-enabled = false
https-enabled = false
https-certificate = "/etc/ssl/influxdb.pem"

[[graphite]]

Controls one or many listeners for Graphite data.

[[graphite]]
enabled = false
bind-address = ":2003"
database = "graphite"
protocol = "tcp"
batch-size = 1000
batch-timeout = "1s"
tcp-conn-timeout = "15m0s"
consistency-level = "one"
separator = "."

[collectd]

Controls the listener for collectd data.

[collectd]
enabled = false
bind-address = ":25826"
database = "collectd"
retention-policy = ""
batch-size = 5000
batch-pending = 5
batch-timeout = "10s"
typesdb = "/usr/share/collectd/types.db"

[opentsdb]

Controls the listener for OpenTSDB data.

[opentsdb]
enabled = false
bind-address = ":4242"
database = "opentsdb"
retention-policy = ""
consistency-level = "one"
tls-enabled = false
certificate = "/etc/ssl/influxdb.pem"
batch-size = 1000
batch-pending = 5
batch-timeout = "1s"

[monitor]

[monitor]
store-enabled = false
store-database = "_internal"
store-interval = "10s"

[continuous_queries]

Controls how continuous queries are run within InfluxDB.

[continuous_queries]
enabled = true
log-enabled = true
recompute-previous-n = 2
recompute-no-older-than = "10m0s"
compute-runs-per-interval = 10
compute-no-more-than = "2m0s"

[hinted-handoff]

Controls the hinted handoff feature, which allows nodes to temporarily
store queued data when one node of a cluster is down for a short period
of time.

[hinted-handoff]
enabled = false
dir = "/data/influxdb/hh"
max-size =<PHONE_NUMBER>
max-age = "168h0m0s"
retry-rate-limit = 0
retry-interval = "1s"
—
Reply to this email directly or view it on GitHub
https://github.com/influxdb/influxdb/issues/4289.

To rephrase my question about the load balancer, how does a write effectively mark itself as complete if we enable replication across each of the three nodes?
As I understand it today:

Open a socket for write on Node A
Write metrics into wal on Node A
Replicate metrics to each of Node B and Node C (maintaining initial connection)
Once receive ack for Node B + Node C copies, return ack to client
Close connection

I'm curious because I wonder if we end up blocking writes to the wal file until that sequence is done, for each and every connection that's made? Or, does it follow these lines:

Open a socket for write on Node A
Write metrics into wal on Node A
Close socket back to client on Node A
Replicate metrics across to Node B + Node C

If it's the former, then does it make sense to update the loadbalancer algorithm to something other than roundrobin (ie. hash destination and persist mapping until node dies)? If it's the latter, does it make sense to just have all writes go to one node and let raft handle the replication (ie, no need for loadbalancer at all)?

It's the former, almost. The node receiving the data (the co-ordinator) writes to all nodes in parallel (one of which may be the node itself) and waits for all nodes to respond (or timeout). The co-ordinator doesn't do anything special like write to its WAL first. Each node gets the data and writes to its store.
If you want to spread load across the cluster, and your cluster is fully replicated, then pick a node at random for each write.


Force refresh issue when using alongside canPopFunc

Hi There, Thanks for the awesome package. It makes our life much easier. I am currently facing a issue with navigation. My homepage route is at "/" and I have added back button check using canPopFunc() like below.
`QRoute( name: homePage,
      path: '/',
      builder: () => HomePage(),
      middleware: [
        QMiddlewareBuilder(
          redirectGuardFunc: (s) async {
            SharedPreferences prefs = await SharedPreferences.getInstance();
            int? initScreen = await prefs.getInt("initScreen");
            return initScreen == null ?  '/onboarding' : null;
          },

          canPopFunc: () async {
            AlertDialog dialog(BuildContext context) => ......//some code here
            final result = await showDialog<bool>(
                context: QR.context!, builder: dialog);
            return result ?? false;
          },
        )
      ],
      ),`

Now whenever I am trying to force refresh the page or probably do pushReplacement using  QR.navigator.replaceLast('/'); the exit alert dialog in being triggered. Any way to stop this?

Refreshing the page in the package, is removing it from the stack, adding it again. When removing a page, the "canPopFunc" is called.


Use FocusRipple for active state

cc @jjmulenex

Coverage increased (+0.005%) to 70.828% when pulling 1a7941b4bca06100876b633c6d652149d8dc9100 on ripple into 6b8e6a4137434302d07d2bd79a0607bc9bce1baf on master.


Search the last x measurements

Added in https://github.com/jean-lourenco/nivel-rio/commit/133cd790260a37dda1094d738503a5a9e9c1dccd


fix(docs): Add troubleshooting notes on jvm heap space in k8s

Describe your changes:
Added docs on k8s jvm heap space issue.

Type of change:

[ ] Bug fix
[ ] Improvement
[ ] New feature
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[x] Documentation

Checklist:

[x] I have read the CONTRIBUTING document.
[ ] My PR title is Fixes <issue-number>: <short explanation>
[ ] I have commented on my code, particularly in hard-to-understand areas.
[ ] For JSON Schema changes: I updated the migration scripts or explained why it is not needed.

@akash-jain-10 this section should be there for all the deployments not just K8s

Closing this as this is already taken care in this PR - https://github.com/open-metadata/OpenMetadata/pull/11270/files


Cluster Autoscaler: Add Least-Cost Node Group Expander Strategy

This expands upon issue #1921 and PR #2118, which added support for node group expansion strategies which allow the cluster autoscaler to determine the ideal node group to expand instead of just selecting a node group at random. Adding a strategy that selects the node group to expand based on the cost of nodes within each configured group allows us to better take advantage of cloud provider discount options (i.e. AWS Spot Instances), thereby minimizing the cost of running clusters.

#2348 provides the implementation we've been using in our cluster for the last several weeks, although it look like support for Azure was recently added and I don't have any test coverage for that yet so the build is currently failing. Fun.

@Capitrium
I have a question re. this issue. if the cluster-autoscaler picks spot group but unable to scale up due to price spike, will cluster-scaler be aware of this and scale the other group instead?

if the cluster-autoscaler picks spot group but unable to scale up due to price spike

I'm not sure exactly what you mean by this - the node cost is evaluated for each group before the least-cost expander picks a node group to expand, so it should always be able to scale up the node group that it picks.
Generally, requests for instances can fail to be fulfilled due to a cloud provider api error - adding instances to AWS AutoScaling groups can fail for a variety of reasons, i.e. insufficient capacity for the requested instance type, insufficient bid price for spot instances, etc. So if the spot price were to spike above your bid price after the least-cost expander has selected a node group for expansion but before instances have been added to the group, that could potentially cause an issue for the cluster-autoscaler. I haven't run into that issue running the least-cost expander for several weeks now, including in situations where the spot price in at least one AZ exceeded my maximum bid price, but that's not to say that it couldn't happen.
I think the ideal behaviour would be to failover to an alternate node group in the case of any such cloud provider error, but I think such a feature would belong in a separate PR if it doesn't already exist.

Thank you. Could you point me to the part where that logic is?
Btw is there a recent image for cluster autoscaler prebuilt somewhere? The
one on gcr.io is stuck at v0.4
On Sat, Feb 4, 2017 at 03:33 Zack Brenton<EMAIL_ADDRESS>wrote:

if the cluster-autoscaler picks spot group but unable to scale up due to
price spike
I'm not sure exactly what you mean by this - the node cost is evaluated
for each group before the least-cost expander picks a node group to expand,
so it should always be able to scale up the node group that it picks.
Generally, requests for instances can fail to be fulfilled due to a cloud
provider api error - adding instances to AWS AutoScaling groups can fail
for a variety of reasons, i.e. insufficient capacity for the requested
instance type, insufficient bid price for spot instances, etc. So if the
spot price were to spike above your bid price after the least-cost
expander has selected a node group for expansion but before instances
have been added to the group, that could potentially cause an issue for the
cluster-autoscaler. I haven't run into that issue running the least-cost
expander for several weeks now, including in situations where the spot
price in at least one AZ exceeded my maximum bid price, but that's not to
say that it couldn't happen.
I think the ideal behaviour would be to failover to an alternate node
group in the case of any such cloud provider error, but I think such a
feature would belong in a separate PR if it doesn't already exist.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/kubernetes/contrib/issues/2347#issuecomment-277354872,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAmSTs-QOxLV1hp90qW24vSUQj0p6J22ks5rY48DgaJpZM4LuN3R
.

least-cost expander (main node group selection logic here)
aws cloud provider NodeCost function implementation (update node cost for a node group)
current aws spot instance price update (gets the current spot instance price for a node group)

We're using a custom-built image of the cluster-autoscaler stored in a private repo for now since the least-cost expander isn't merged in yet; I'm not sure where the latest official image can be found, but I'd assume it's the one on gcr.io.

@Capitrium are you able to share your custom-built image? (or hopefully get the PR merged).
I've primarily been using spotfleets over ASGs, so I'm just curious what happens if a spot instance is terminated from the ASG, it seems there may be quite a delay until a new node would come up to replace it?

cc: @andrewsykim

@andrewklau v0.5.0 is published on gcr.io

@tuananh I don't believe that has the least-cost expander mentioned above

@andrewklau my bad. I haven't tried it myself either.

@andrewklau I haven't had much time to work on this since I opened the PR, but I'm hoping to have some time to get this merged in the next few weeks as I'm making some other updates on our cluster. Unfortunately I can't share my image in the meantime, as I can't give access to our private registry.

This is implemented as https://github.com/kubernetes/autoscaler/issues/82. Please consider implementing https://github.com/kubernetes/autoscaler/issues/131.


All FQB methods? getTokenFromJavascript() doesn't work?

Hi!
This is probably me doing something wrong: but I try to authenticate a user from the FB.js SDK.
Working with a redirect (without the fb.js SDK) works with:
$token = Facebook::getTokenFromRedirect();

However,
$token = Facebook::getTokenFromJavascript()

doesn't work. The function doesn't exists. What goes wrong here? The frontpage says "all Facebook Query Builder functions are supported".
I'm using version 1.2 as I'm on laravel 4.2
Thanks!

Hey @PanManAms! There is no getTokenFromJavascript() method. If you're trying to obtain an access token from the signed request set in the cookie from the JavaScript SDK, you'll need to use the Facebook PHP SDK v4.0 directly. It's installed as a dependency so it should be autoloaded for you if you're using composer.

@SammyK, Thanks for the quick response!.It might 'just' be a documentation issue, but how does this go with, from the frontpage:
LaravelFacebookSdk is a wrapper for Facebook Query Builder. Any of the Facebook Query Builder methods are accessible via the Facebook facade.
On the frontpage of the FQB https://github.com/SammyK/FacebookQueryBuilder the getTokenFromRedirect and getTokenFromJavascript are in the same space.
Am I missing something? Are the docs wrong?

Ah, I see what you're saying. Are you able to do this?
$token = Facebook::auth()->getTokenFromJavascript();

No, but that's what I would expect.
I get an Call to undefined method SammyK\LaravelFacebookSdk\LaravelAuthFacebook::getTokenFromJavascript() error

Ah ha! Gotta play around with this. Thanks for submitting the issue! :)

Thanks! Let me know if there is anything else I can help with, in testing.

Any updates on this? I kind of need this functionality, or do I need to use the Facebook PHP libs directly?

No update yet - but I should be able to give it some TLC next week. :)

FYI, and others running into this: I have this working with the direct FB SDK:
use Facebook\FacebookRequest;
use Facebook\FacebookSession;
use Facebook\FacebookJavaScriptLoginHelper;

Route::get('/jstoken', function(){
    FacebookSession::setDefaultApplication($_ENV['FB_APP_ID'], $_ENV['FB_APP_SECRET']);
    $helper = new FacebookJavaScriptLoginHelper();
    try {
        $session = $helper->getSession();
        $newsession=$session->getLongLivedSession();
        $newtoken=$newsession->getToken();
        if ($newsession) {
      // Logged in.
        $request = new FacebookRequest($newsession, 'GET', '/me');
        $response = $request->execute();
        $graphObject = $response->getGraphObject();
        var_dump($graphObject);
        echo json_encode($graphObject);
        //return json_encode($graphObject);
    }
});

But a solution fully within this SDK would be cleaner :)

Hey @PanManAms! I updated the package in 1.3.0 to have an fqb() method to access the Facebook Query Builder object directly. So go ahead and update this package and see if you can do something like this:
$token = Facebook::fqb()->auth()->getTokenFromJavascript();

Hope that helps! :)

Thanks!! :+1:


Unknown flag from

Hello, running the docker build using the Dockerfile I got the following error:
it doesn't recognise flag from any clue?
Step 9/15 : RUN rm -f               /etc/machine-id     /var/lib/dbus/machine-id
---> Using cache
---> e4a35ec5d847
Step 10/15 : FROM debian:10
---> 109b803c6a30
Step 11/15 : COPY --from=0 / /
Unknown flag: from
Thank you for your help,

Is this issue still relevant? Recent versions of docker should support it.


What's the meaning of 'python run_eval.py --hypos output_file --refs reference_file'?

I try to replace output_file to my candidatereference,and replace output_file to my reference,but it doesn't work.
Thank you.

I try to replace output_file to my candidatereference,and replace output_file to my reference,but it doesn't work.
Thank you.

@SongQiongcheng I'm sorry for the late reply. The output_file is the file that contains all outputs of your system, and its format is one example per line. The referece_file is the file that contains the candidate reference, and its format is the same as the output_file. Note that if you have more than one candidate reference for each example, you need to split these candidate references into multiple reference_file(s). For example, if you have two candidate references for each example, you will split them into two reference_file(s), the reference_file1 contains all the first candidate references and the reference_file2 contains all the second candidate references. We give an example of output_file and reference_file as follows:
output_file:
我 喜欢 苹果 。
你 早上 吃了 一个 香蕉 。
reference_file:
I like apples .
You ate a banana in the morning .

I try to replace output_file to my candidatereference,and replace output_file to my reference,but it doesn't work.
Thank you.

@SongQiongcheng I'm sorry for the late reply. The output_file is the file that contains all outputs of your system, and its format is one example per line. The referece_file is the file that contains the candidate reference, and its format is the same as the output_file. Note that if you have more than one candidate reference for each example, you need to split these candidate references into multiple reference_file(s). For example, if you have two candidate references for each example, you will split them into two reference_file(s), the reference_file1 contains all the first candidate references and the reference_file2 contains all the second candidate references. We give an example of output_file and reference_file as follows:
output_file:
我 喜欢 苹果 。
你 早上 吃了 一个 香蕉 。
reference_file:
I like apples .
You ate a banana in the morning .

Thank you so much.I got it .


postInstall and probably other hooks called for main and deps

When one uses hooks in buildPackage with an attribute set, then those hooks are called for the deps as well as the main derivation, this has some downsides:

Hooks might fail with confusing error messages, as one expects them to be run for the main derivation only, and one wonders why there is no $out/bin in the postInstall, but ./result/bin exists when one removes that hook.
Additional logic is necessary to decide whether or not we are in the main or deps derivation. In my particular case I can check for existence of a folder in $out as I'm doing a postInstall, though those conditions might become arbitrary complex if deps and main had overlapping content.
If I tweak the phases/hooks to run additional commands on files (eg. generating code files or patching sources) I have to rebuild the deps derivation despite their output won't change.

To mitigate all of this, I'd propose to not pass those attributes to the deps derivations or introduce special attributes for hooks/phases related to the deps derivation (perhaps a nested set in depsPhases which then accepts the regular phases list as well as the various xPhases, preX, and postX attributes).

Hi,
Would the override and overrideMain attribute from the configuration work for you? You can call them like this:
buildPackage
  { src = ./foo;
    override = { postBuild = "run me after any derivation was built"; };
    overrideMain = { postInstall = "run me after the main derivation has finished the install phase"; };
  }

This indeed seems to work.
When I read the README, I thought those are like override in a derivation and can only replace original function call arguments.
Though they seem to work more like the overrideAttrs "method", therefore I have also to say, correct syntax for your snippet would be this:
buildPackage
  { src = ./foo;
    override = _: { postBuild = "run me after any derivation was built"; };
    overrideMain = _: { postInstall = "run me after the main derivation has finished the install phase"; };
  }


estimateGas using gasleft()

Would it be possible to add another utility function equivalent to do multiple eth_estimateGas with some gasleft() magic ✨
Guess its too hard to get it right

Sorry what exactly do you mean here? eth_estimateGas is an off-chain RPC call so I don't quite understand the question 😅

Apologies for the confusion. I meant a function that can be used to estimate gas for multiple transactions in a single call, that returns those estimates separately for each call.
Similar to aggregate(), but only the return values would be gas usage, instead of actual call results

In theory you could, but it won't be very accurate or useful—the sum of the individual call gas estimates won't equal the aggregated call gas limit / gas usage for various reasons. Gas costs vary by a lot of factors cold/warm addresses, cold/warm storage slots, different refund amounts based on total gas usage, etc.
What is your use case for needing estimates of individual calls if they are going to be submitted together via something like aggregate?

Yeah, it wont be accurate. The use case is to just be able to make multiple estimateGass in a single RPC call. And the individual calls are not exactly going to be submitted together, but separately. Yes, that does cause the gas costs to vary very much. But just wondering if its still possible to get close to it and since Multicall is already a public good with very useful utility functions, something like this would also belong here.

The JSON-RPC spec supports batching, so you can batch multiple individual eth_estimateGas calls into a single request, which it sounds like is exactly what you want

https://www.jsonrpc.org/specification#batch
https://geth.ethereum.org/docs/rpc/batch

Yes, but I had seen Alchemy documentation recommending against it here:

https://docs.alchemy.com/reference/batch-requests#when-should-i-use-batch-requests
And I believe it also adds to the CUs and pushes the rate limits -- preventing of which is another advantage of batching them

But I guess JSON RPC batching is the best bet among the options

Yea either batch or individual txs is probably your best bet. Gas estimation can get tricky and I don't think solving it at the contract level is too useful / the right solution. It will also simply not work for a lot cases, such as when a call needs to come from a certain sender.
The nodes use a binary search to find the gas limit so the tx gets executed many times, so does make sense if it's pricey in terms of CUs unfortunately 😕

JSON RPC batching is very inefficient if aiming for performance/speed: https://github.com/ethers-io/ethers.js/issues/62#issuecomment-382444315
Apparently JSON RPC batching executes the requests are performed serially.
I tried it out, and multiple concurrent requests are way faster than batching


Add a script that checks out all revisions from the repository

… and to any such revision applies whatever the user wants to apply, e.g. https://github.com/mobivoc/vocol/blob/master/validator/create_valid_stat.py.
The script I'd like you to add would be the generic implementation of the "evaluation methodology" we are selling.

See https://github.com/mobivoc/vocol/tree/master/analytics


done() not being called

I have 2 test cases and the second one will not pass and throw

Error: timeout of 2000ms exceeded. Ensure the done() callback is being called in this test.

Here is my code snippet:
    it('creates FETCH_TODOS_SUCCESS when fetching todos has been done', (done) => {
        const expectedActions = [
            {type: TodoConstants.GET_TODOS_REQUEST},
            {type: TodoConstants.GET_TODOS_SUCCESS, todos: [
                {
                    id: 1, text: 'todo1', isDone: false
                },
                {
                    id: 2, text: 'todo2', isDone: true
                }
            ]}
        ];

        const store = mockStore({todos: []}, expectedActions, done);
        store.dispatch(actions.fetchTodos());
    });

    it('post ADD_TODO_SUCCESS when add todo has been done', (done) => {
        const expectedActions = [
            {type: TodoConstants.ADD_TODO_REQUEST, text: 'todo3'},
            {type: TodoConstants.ADD_TODO_SUCCESS, todo: {
                id: 3, text: 'todo3', isDone: false
            }}
        ];

        const store = mockStore({todos: []}, expectedActions, done);
        store.dispatch(actions.addTodo('todo3'));
    });

I duplicated the 'get' test case, only the first 'get' test case can pass.
then I removed the duplicate test case and put the 'post' test case in front of the 'get' test case, neither test case can pass.
My temporary solution is calling the done() function explicitly for each test case.

Assuming you're running on the latest version.
import { expect } from 'chai';
// ...
const store = mockStore({todos: []});
store.dispatch(actions.fetchTodos());
expect(store.getActions()).to.eql(expectedActions);

It happened to me too, what actually it was my issue.
If you see, I was expecting to fetch an immutable structure (due we use a middleware which convert responses to immutable data), like follows:
function fetch() {
  return dispatch => {
    dispatch(basicActionCreator(types.fetch.start));
    return api.get(urls.myResourceExample)
      .then((response) => {
        dispatch(dataActionCreator(types.fetch.finish, response.get('myKeyExample')));
      }, (response) => {
        dispatch(errorActionCreator(types.fetch.fail, response));
      });
  };
}

However, while expecting actions, the response example I provided wasn't an immutable Map:
const response = [{ id: 0, name: 'Example 1' }];

beforeEach(() => {
  spyOn(api, 'get').andReturn(Promise.resolve(response));
});

afterEach(() => {
  expect.restoreSpies();
});

it(`should create action ${types.fetch.finish}`, (done) => {
  const expectedActions = [
    { type: types.fetch.start },
    { type: types.fetch.finish, data: response }
  ];

  const store = mockStore({}, expectedActions, done);
  store.dispatch(actions.fetch());
});

Producing the following error:
ERROR: 'Unhandled promise rejection', TypeError{line: 27, stack: '
run

flush'}

While resolving the promise, there is an unhandled exception trying to access to a key (because the action actually expects to have a Map as a response), producing the error above.
The solution was simple, just expecting the proper structure fixed my test:
const response = fromJS({ myExample: [{ id: 0, name: 'Example 1' }]});

beforeEach(() => {
  spyOn(api, 'get').andReturn(Promise.resolve(response));
});

afterEach(() => {
  expect.restoreSpies();
});

it(`should create action ${types.fetch.finish}`, (done) => {
  const expectedActions = [
    { type: types.fetch.start },
    { type: types.fetch.finish, data: response.get('myExample') }
  ];

  const store = mockStore({}, expectedActions, done);
  store.dispatch(actions.fetch());
});

@tofuness I used redux-mock-store 0.0.6 and nock 7.4.0 for testing the async action creators which is recommended in redux website. So you recommend to use the newest version?

I have updated the latest version last night. I need to make a PR on redux website for the new version. I would recommend migrating to it because it is framework agnostic :)

Checked and working with newest version. Thanks!
I think this issue can then be considered closed, right?

I will start the new version. Problem solved :D. Thanks for helping.

That's awesome :+1:


Example transmission-proxy.yaml for common uses?

Hello! I went thru your project and it seems really cool and might work for my use-case.
I'd like to use the proxy to provide read-only access to a transmission remote control.
Have you used this for anything similar? Would you be willing to share an example transmission-proxy.yaml I can test and modify?
Thanks,

Rowan

Hello Rowan, thanks for your interest in the project!
I haven't spent much time on documentation for now, but your use case is definitely doable with something along the lines of this:
# transmission-proxy.yaml
acl:
  rules:
    - identities:
        - provider: basic
          name: admin
        - provider: oauth2
          oauth2: google
          name<EMAIL_ADDRESS>    - identities:
        - provider: basic
          name: readonly
        - provider: oauth2
          oauth2: google
          name<EMAIL_ADDRESS>      allowed_methods:
        - torrent-get
        - session-get
        - session-stats
        - free-space
    - deny: true

providers:
  basic:
    enabled: true
    visible: false
    users:
      - username: admin
        password: "*bcrypt hash of the password*"
      - username: readonly
        password: "*bcrypt hash of the password*"
  oauth2:
    -
      auth_url: https://accounts.google.com/o/oauth2/v2/auth
      client_id: ...
      client_secret: ...
      email_path: $.email
      name: google
      token_url: https://www.googleapis.com/oauth2/v3/token
      userinfo_url: https://www.googleapis.com/oauth2/v3/userinfo

Here, we have 3 ACL rules:

The first one matches an admin user, either through basic auth or through the configured Google OAuth2 provider. It allows all methods (the default).
The second one matches a readonly user, also through basic auth or through Google OAuth2. Since we only allow read-only methods of the Transmission RPC API, this will result in a read-only profile.
The last one is the default rule which denies access to unauthorized users.

thanks, this is great.
is there a way to configure it to connect to the upstream as a specific user/password?


No usable error message when failure parsing redisson-jcache.yaml

@edburns was trying to get Open Liberty to persist http session cache data with Redis using redisson-jcache. Something that I (and the Open Liberty team) have not done before. He got the Open Liberty configuration setup correctly, but was getting an exception (see Actual Behaviour section). After much debugging we discovered it was because there was a typo in the yaml meaning there was an exception while parsing it. However the JCachingProvider.loadConfig method is just swallowing all exceptions that occur which means there was no error message anyone could use to determine what went wrong. I managed to track down the problem by inserting a printStackTrace into the IOException catch blocks, but I don't think that would be a PR that the Redisson team would wish to take.
Expected behavior
Useful error message like this:
Unrecognized field "clusterServerConfig" (class org.redisson.config.Config), not marked as ignorable (23 known properties: "eventLoopGroup", "maxCleanUpDelay", "nettyHook", "keepPubSubOrder", "nettyThreads", "threads", "transportMode", "singleServerConfig", "sentinelServersConfig", "reliableTopicWatchdogTimeout", "useScriptCache", "minCleanUpDelay", "connectionListener", "executor", "codec", "replicatedServersConfig", "clusterServersConfig", "useThreadClassLoader", "masterSlaveServersConfig", "addressResolverGroupFactory", "lockWatchdogTimeout", "cleanUpKeysAmount", "referenceEnabled"])

Actual behavior
Cryptic exception is thrown:
java.lang.IllegalStateException: Default configuration hasn't been specified!

Steps to reproduce or test case
take the configuration listed in the last section of the bug report and store it in redisson-jcache.yaml then run the following:
    MutableConfiguration<String, String> config = new MutableConfiguration<>();
    config.setExpiryPolicyFactory(CreatedExpiryPolicy.factoryOf(new Duration(TimeUnit.SECONDS, 1)));
    config.setStoreByValue(true);

    URI configUri = getClass().getResource("redisson-jcache.yaml").toURI();
    Cache<String, String> cache = Caching.getCachingProvider().getCacheManager(configUri, null)
            .createCache("test", config);

Redis version
6.2.3
Redisson version
3.15.4
Redisson configuration
clusterServerConfig:
  password: ${clusterServerConfig.password}
  nodeAddresses:
  - ${clusterServerConfig.nodeAddresses}

To configure Liberty you would do this:
<server>
    <featureManager>
        <feature>servlet-4.0</feature>
        <feature>sessionCache-1.0</feature>
    </featureManager>

    <httpSessionCache uri="file:///${shared.resource.dir}redisson-jcache.yaml">
        <library>
            <fileset dir="${shared.resource.dir}/redisson"/>
        </library>
    </httpSessionCache>
</server>

Which jars are contained in "${shared.resource.dir}/redisson" dir ?


Missing documentation on using multiple DS18b20

Discussed in https://github.com/zephyrproject-rtos/zephyr/discussions/55743
I recreated this issue as a documentation issue, because I believe there should be a minimal Documentation on how to interface multiple w1 sensors. Currently there is no example and no documentation for this, although it being possible, as stated by @str4t0m .

Originally posted by CodingGhost February 28, 2023
I am wondering how to Interface multiple ds18b20 by using the sensor API.
I already have one sensor working, and I think I could get multiple to work by putting more sensors in the devicetree, but the problem is, that I wont know which is which, as I dont have the ID (ROM address) of the sensors.
Is there a way to Interface multiple ds18b20 in a way that lets me permanently identify them?
Another thing to think of, might be the situation where you dont know how many sensors are connected. In my case, I know there is a max of 3 sensors though so it should not be a problem.

Hi, sorry I completely overlooked this one... :-/
To your question: For the exact problem we're currently using a custom implementation where we use the settings subsystem to remember which sensor is which (after a successful enumeration) and communicate with every node directly without the sensor API. If you have a small number of sensors, let's say three ;-), you can use the sensor attribute API to assign a ROM to a specific sensor (https://github.com/zephyrproject-rtos/zephyr/blob/main/include/zephyr/drivers/sensor/w1_sensor.h). This is kind if a hack and works only for sensors, though.


Add Initial Aruba ClearPass Report

with System, Licence, Network Device (and Group) and Service (Enforcement Profil and Profiles)

@tpcarman ready to merge ! (i will make a new PR for README and sample)

@tpcarman do you have an idea why the lint fail ?


Update to support the new llama.cpp and fix executor bug

update code for https://github.com/ggerganov/llama.cpp/pull/1509  and fix executor.

Hey could you run
cargo fmt so it passes the lint :)

i run "cargo fmt", now it should have no format issue.

Still some problem with the example but will merge and fix in main instead.


MQTT missing evcc.status topic

Describe the bug
After update to 0.124.7 the MQTT topic evcc/status = online|offline is missing. As of that the common availability templaces in Homeassistant are not working anymore. As it was not mentioned in the changelog I assume this could be an bug?
Steps to reproduce

Use MQTT evcc/status topic (as availability_topic)
Upgrade to 0.124.7
Check if evcc/status is still present

Configuration details
Homeassistant:
availability_topic: "evcc/status"
availability_template: "{{ value == 'online' }}"

Log details
none

What type of operating system are you running?
HomeAssistant Add-on
Version
0.124.7
Support information

If I remember correctly the "updated" topic is new. So may this one should now be used?
Edit: After stopping EVCC docker container the topic evcc/status is present with value offline. When starting, the topic evcc/stauts with value online is available for around 1-2 seconds and then disappear.

Fixed in master


Dependabot does not have access to frontend E2E test credentials

Problem statement
Dependabot is unable to complete the frontend build because E2E testing require credentials. This probably should be addressed by moving the credentials to Key Vault and retrieving them at run time.
What you need to know
Dependabot frontend build error:
E2E tests
  TypeError: Missing username for login type: admin
      at map (file:///home/runner/work/prime-reportstream/prime-reportstream/frontend-react/playwright.config.ts:33:23)
      at Array.map (<anonymous>)
      at createLogins (file:///home/runner/work/prime-reportstream/prime-reportstream/frontend-react/playwright.config.ts:26:20)
      at file:///home/runner/work/prime-reportstream/prime-reportstream/frontend-react/playwright.config.ts:51:16
      at ModuleJob.run (node:internal/modules/esm/module_job:194:25)
  Error: Process completed with exit code 1.

Acceptance criteria

[ ] ...

To do

[ ] ...

This has been fixed by adding corresponding secrets for Dependabot as described here: https://docs.github.com/en/code-security/dependabot/working-with-dependabot/configuring-access-to-private-registries-for-dependabot#adding-a-repository-secret-for-dependabot


Fixed Backport section in developer guide

Description
This PR removes the non existing backport file reference and adds latest guidelines for backporting. This will resolve the failing lint checks in existing CIs
Issues Resolved
[List any issues this PR will resolve]
Check List

[x] Commits are signed per the DCO using --signoff

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

@r1walz @vikasvb90 why did we merge this commit, when unit tests were failing ?

@RamakrishnaChilaka I haven't approved or merged this. Also, I don't see any code change in this PR so failing tests must be from a different commit. For documentation PRs we can probably skip the mandate but for PRs having code or other script changes, we should have a green build for merge.


Yet Again Websocket .net core detect when client looses internet connectivity #9053

Hi all,
sorry to ask again about: https://github.com/dotnet/AspNetCore.Docs/issues/9053 , but I'm experiencing the following scenario

if for any reason I got a primary issue in Layer 3 core switches or maintenance I got mor or less 2.5K websocket clients disappearing at once.
even if we deployed a ws PING/PONG strategy with 60 seconds timeout, the application server (.Net 6 linux) is unresponsive and beging starving, even NLOG traces are interrupted, but the process is not crashing (and maybe a crash will raise a systemd restart)
with lesser connections (about 500 - 800) the application come back to life after 90 seconds and begin tracing again all forced disconnect plus emitting ton of exceptions (up to 20k)

another interesting note: in the test dev lab we discarded httplistenser websocket and we tried the obsolete: https://github.com/statianzo/Fleck , Fleck is behaving better we got diconnections on timeout, without starvation.
Thanks in advance for your feedback
Diego

Hello @dscaravaggi ... Open your issue here ...
https://github.com/dotnet/aspnetcore/issues
... and you can cross-reference that docs PR. If the product unit issue leads to the need to update documentation, then either leave a comment here cross-linked to your product unit issue ... someone here will re-open this ... or even better, open a new docs issue using the This page feedback button and form at the bottom of the English-US topic ...

@guardrex ok, I will move in correct page, I use this thread becuase from my point of view is a chapter of : https://github.com/dotnet/AspNetCore.Docs/issues/9053

If it's opened for the product unit, then you'll get a response directly from the engineers who build the framework. We try to keep the issues here focused on the documentation and avoid many product support requests. The product unit engineers don't monitor most of the issues here. They mostly work on issues on their repo. We can re-open this issue or work a new documentation issue after you discuss it with them on their repo and find out that there is something that we need to change or add to the documentation. The best approach tho is not to just open an issue directly here ... use the This page feedback button+form on the topic (the English-US topic). That will ping the author and indicate the topic to us. It speeds things up on our side.


Issues for the book are currently created on jryannel/qt5cadaques. We need to move this.

I'm not sure if we can find a way to migrate these issues.

I'm working on resolving them. Most of them are still applicable.


Two bug fixes

Note: as the code of writeQueue is not pushed to the upstream AD repo. I have to send a diff based on writeQueue in my fork.
Description
First, I threw an exception instead of returning the exception through listener callback in CheckpointDao.  This can cause semaphores not released.
Second, I didn’t check AnomalyResult.getAnomalyGrade() returns null or not, which can cause a null pointer exception.
Also, please ignore model id related changes in AnomalyResult.  The changes are included in a separate PR: https://github.com/opensearch-project/anomaly-detection/pull/75
Testing done:

Wrote unit tests for the above errors.

Issues Resolved
https://github.com/opensearch-project/anomaly-detection/issues/85
Check List

[ Y ] Commits are signed per the DCO using --signoff

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

One minor PR suggestion for future ref: For check boxes that are marked as complete, instead of doing [ Y ], I think you can do [x] so they maintain their check box formatting

Yeah, good to know.


Incomplete Pluralization of Types

53566d9fc6d4062f9c15504af7dda5bf5c42e81b pluralizes federated types ending with "s", such as Ingress. However, adding "es" to federated types should be extended beyond suffixes ending with "s".
I will submit a PR to fix this issue following the proper pluralization guidelines.

Fixed by #221


Add a setting to revert "Preview editor improvements" November 2020

I'd like VSCode to stop opening new editors when navigating through search results. Essentially reverting preview editor behavior to pre-November 2020 version.

Does #112348 and its associated PR resolve this?

I guess it does, can't say for sure till it gets released (like in the middle of February?)
PS: I think it's not a good idea to close issues resolutions for which are not yet released. I wouldn't have opened this issue had I found that one.

Maybe install Insiders and try it there? It coexists fine with Stable.

Probably not in Insiders until tomorrow though.

/duplicate https://github.com/microsoft/vscode/issues/112348


Some plots enhancements

In this PR:

The large memory-consuming requests hist plot has been slightly optimised to reduce the memory used by 4
New plots have been added

Remarks

Please double check I plot correct things
I am really doubtful about the small number of calendar downloads per day
Many columns in Usage table are empty or not used : username, path is almost the same as url, track_var, ip_info and view_args
I don't think we actually track the calendar links (at least not for downloads)

That's Flask-Track-Usage, might be a good idea to rework that and come up with our own custom solution at some point tbf
Yes we do, see views/calendar.py line 333:

resp = make_response(schedule.get_ics_file(schedule_number=choice))
resp.mimetype = "text/calendar"
resp.headers["Content-Disposition"] = (
    "attachment; filename="
    + "".join(c for c in schedule.label if c.isalnum() or c in ("_")).rstrip()
    + ".ics"
)
g.track_var["schedule download"] = schedule.id
return resp

That's Flask-Track-Usage, might be a good idea to rework that and come up with our own custom solution at some point tbf
Yes we do, see views/calendar.py line 333:

resp = make_response(schedule.get_ics_file(schedule_number=choice))
resp.mimetype = "text/calendar"
resp.headers["Content-Disposition"] = (
    "attachment; filename="
    + "".join(c for c in schedule.label if c.isalnum() or c in ("_")).rstrip()
    + ".ics"
)
g.track_var["schedule download"] = schedule.id
return resp