Provide examples illustrating how to use AC terms in various circumstances

1. Provide an ac Term Name or Label. no particular term
2. Describe the defect or lack of clarity you find in the term.

At a number of points in the public comment, questions were asked which didn't
necessarily require changes to terms or additions of missing terms, but rather
required clarification of how to use the existing terms.  This could probably
be done most easily by providing some examples.  However, since AC is
representation-independent, it would probably be best to include examples as
part of best-practices guides for various kinds of representations (simple
text, XML, RDF, etc.).  Given that such guides are not likely to be completed
before the ratification of the generic standard, would it be beneficial to have
some document (perhaps on the wiki) giving some simple examples to make the use
of the terms more clear?

Original issue reported on code.google.com by<EMAIL_ADDRESS>on 9 Apr 2013 at 1:20

Comment copied from  https://github.com/tdwg/ac/issues/117:

Find out how GBIF, iDigBio, SYMBIOTA etc. are, or would like to, be using Audubon Core and create best practice document based on that.

Comment copied from https://github.com/tdwg/ac/issues/117:

An example of use is the NEVP project, wrapping DwC and AC assertions about information captured at a high throughput digitization apparatus in a W3C Annotation document for transport to Symbiota and the database of record for ingest of that data. For an example document see: https://sourceforge.net/p/filteredpush/svn/HEAD/tree/FP-Design/trunk/ontologies/oadExamples/NEVP_specimen_example.xml There is also code in Symbiota to process these documents. @ramorrismorris was involved in crafting these documents.

We now have an examples guide for Still Images: https://github.com/tdwg/ac/blob/master/image/examples.md
and a stub for Sound: https://github.com/tdwg/ac/blob/master/sound/examples.md
We have established this paradigm and can generate guides for other media types when there is interest to create them.


[FLINK-13373][docs] Remove Tutorials and Examples sections from Getting Started

What is the purpose of the change
The new code walkthroughs and docker playgrounds supersede the tutorial and example sections so these sections should be removed or the content moved to a better location.
This change is much smaller than the diff makes it appear. Most of the files touched are updated links and redirects.
Brief changelog
25062ea Remove examples section from getting started and inline DataSet examples into the dataset section
74e60e6 The python tutorial is the only section under api tutorials, this commit moves it to code walkthroughs and removes that section
4397bfa Cleanup of grammar in the python tutorial. I did not change any content.
31ecc45 Moved the local cluster setup to deployment and operations since the docker environment is a better dev-ops intro. /ops/deployment/local.md is the only file that needs a review, every other change in this commit is updating links.
Verifying this change
I ran ./check_links.sh to verify no broken links.

@knaufk Would you like to take a look at this?

Looks pretty good, thanks! One minor comment, otherwise good to merge from my side.

Thanks for taking a look @StephanEwen, I've pushed an update to address your comment.

@rmetzger would you be able to merge this?

Thanks!


candle Accept-Datetime-Format

Accept-Datetime-Format works correctly in api-fxpractice.oanda.com but is ignored in live (Unix always returned).
curl
-H "Content-Type: application/json"
-H "Accept-Datetime-Format: RFC3339"
-H "Authorization: Bearer "
"https://api-fxtrade.oanda.com/v3/instruments/AU200_AUD/candles?price=M&granularity=M1&includeFirst=false&count=10&from=2017-03-03T11%3A22%3A11.000000Z"

see https://github.com/oanda/v20-python/issues/22#issuecomment-291134822

It is indeed. Thank you. I'll try to check v20-pyphon also next time.


Data and state updates

This PR takes the first steps towards accomplishing two main things:

Using data from the database in the stage three viewers
Serializing and restoring the student's app state between sessions

These items, particularly the second, aren't 100% done, but I want to get some of these updates into master before this branch falls too far behind. There's a lot of stuff here, but the main things are described below.
Specify student/class
The student and class used are specified via the student_id and class_id keyword arguments. If they aren't specified, the database won't be updated with any new data. For stage 3, one will get some "default" data from a particular (always the same) student and class from our generated data set.
Stage 3 data

The various pieces of data in stage 3, at least for the current setup of the viewers, are now all obtained from the database, thanks to some recent changes to API. Most of this data is queried during setup, but the data for the student's class is continually updated throughout the app runtime. I set the update frequency to be 30 seconds, but we can adjust this. Each time the update runs, the app queries the relevant data from the API, checks whether its data is out of date (using the last_modified field of the measurements), and updates the relevant glue data if necessary.

State persistence

During its setup, the app queries the API for the current student's state for the specified story, if one exists, and updates the local state accordingly. This is actually a relatively painless process - the glue state objects and Vue reactivity do a lot of work for us. In order to update each stage state, I've augmented our JSON encoder to be able to encode glue state objects, and added the stage state to the story state's stages dictionary.
For MathJax inputs, we can now add a tag attribute to each \input command, and when MathJax typesets and create the input, any tagged inputs will automatically feed their current values into the story state (similarly, their values will be restored on startup). The syntax for adding a tag to the MathJax inputs is as follows:

\input[id][classes][tag]{value}
If no tag is specified, the input's value won't be retained. I've gone with a separate attribute from the input's id so that multiple inputs could relate to the same state value, if we want.

To do this, I've added a custom HTML element class via the browser's CustomElementRegistry. This input has a static reference to the currently running app which allows this update to happen. Since custom elements are retained on a refresh, if this class already exists in the registry, the static variable which defines the app instance is updated.

For MC components, I defined an mc-score CustomEvent, which the main application listens for in order to update scoring. I went with a CustomEvent rather than a Vue event as Vue events don't bubble. Similar to the inputs, a score-tag prop will, if set, make the MC's score be retained in the state.

There are still some things to do here:

Pat and I discussed keeping track of a total score from the MCs for each stage, and the story overall, which hasn't been implemented yet
The JavaScript part of the app.vue has gotten pretty bloated. I want to look into splitting out some of this functionality into mixins, so that each story could potentially pick and choose which functionality it needs
I suspect there will be a lot of kinks to work out with the state persistence and things displaying correctly

@Carifio24, In Stage 2, the angular sizes are no longer being entered in the table, so I can't measure distances and plot my data in Stage 3. I think something funky must have happened to that with the merge. Would you mind taking a look, please? Thanks!

@patudom I've just pushed a commit that should fix that issue


Updated Step 5 in README.md for RN apps

Just saw this, sorry, I had a conflicting PR. @JeffSchering could I ask you help to:

Bring in this: https://github.com/mattermost/mattermost-push-proxy/pull/17
Ping @coreyhulen to review and merge?

Realizing we need to push people to towards the Mobile Apps guide


Rolling Session ID

When running locally I'm getting a rolling session ID without anything loading on the page.

This is the same as #139. I haven't been able to dig into it.

:+1:


Chore: Skip queued CI runs

Description
Currently the CI runs for every commit in a feature branch. This is not necessary, we assume it's safe to skip the commits in the queue and run the CI just for the last of them.
Exit criteria
CI will run the job just for the last commit within the feature/fix branch in case multiple commits are pushed at the same time.

[ ] Queued commits are skipped by the CI and only the last one is actioned by the CI.

Closing as not planned

The description is incorrect. Also it's understood this is not an urgent problem to solve atm.


user stacks starting before infra services end up in deadlock because of process blocking thread pool

Rancher versions:
rancher/server: v1.6.5
Steps to Reproduce:

have a large number of hosts and services per environment.
reboot all hosts
delayed processes should grow indefinitely.
the processblocking pool should be fully consumed

Results:
ProcessBlocking thread pool was expanded to allow for processes to start processing again.

Available with rancher/server:v1.6.8-rc4

Tested with the follow setup parameters:
rancher v1.6.8-rc4
20 hosts
2 env's
50 service - 30 scale
pool.processblockingexecutorservice.max.size = 5
pool.processblockingexecutorservice.core.size = 2
pool.processblockingextraexecutorservice.core.size = 2
pool.processblockingextraexecutorservice.max.size = 5
pool.processblockingsystemexecutorservice.max.size =5
pool.processblockingsystemexecutorservice.core.size = 2

Service recovered in 30~35 minutes after rebooting the hosts.


CIP-0005 | Add drep address prefix

update drep hashes prefix to reflect the actual hash type, as dRep ID is not just a hash but a credential (unlike pool ID)
Add drep prefix for a drep address type for better consistency and to reflect actual dRep ID

whats a drep address? there is just an ID
drep1xxx
drep_script1xxx

whats a drep address? there is just an ID
drep1xxx drep_script1xxx
there is also no flag or prebyte that would differ from a mainnet or testnet "address". like with a pool id, there is just one. same for mainnet and testnets.
a drep-id is like a pool-id. you can delegate to it. i don't see how such an id would count as an address?

dRep-id is not same as pool id, pool ID is a single hash, whereas dRep is a credential with - type and key field, see here, https://github.com/IntersectMBO/cardano-ledger/blob/a44a5b5ac9f68c5d7a2ff38b040a5fcac8ccfc6a/eras/conway/impl/cddl-files/conway.cddl#L338
similarly, a stake address is defined with stake credential and an additional network flag is added to identify if a stake address is on mainnet or testnet.
Similarly a dRep address is combination of network flag + dRep Credential

there is no network flag for a drep id. i made an issue about that i think a year ago if such a thing should be implemented, did not get the attention of many, result was: "no we don't need a network flag for dreps"

that was the issue i opened back in time: https://github.com/cardano-foundation/CIPs/issues/564

1001 - 1101 are reserved for future address formats, which unfortunately is not enough to define all the addresses above. I'd also like to point out that a unique hex representation of the above credentials is also required.

Since a network flag is probably not required for these addresses, should we use the network flag bytes instead for specifying the credential type, eg.
0-3 bits define the address type
0000 - cc_hot
0001 - cc_cold
0010 - drep
4-7 bits define the credential type
0000 - keyhash28
0001 - scripthash28

Hey @ashisherc, thanks for opening this.
A few thoughts from me;

The DRep ID definition was inherited from CIP-1694 here.
CIP-105 adds some extra context and thought around this, see rationale on Why not allow network tags?

to add more to this, at the time there just was not really an appetite to add network tags (See Martin's issue), instead we decided to follow CIP-1694's definition and omit them.

The current way of implementing DRep IDs, has already seen much adoption across tooling.

any such changes like this would be quite disruptive not just for implementers, but for those community members who already understand the current DRep ID mechanisms

I would suggest that this pull request amend adjacent CIPs (CIP-1694, CIP-105 and CIP-19), to supply the rationale you are providing via comments in a more discoverable way.

@Ryun1
The DRep ID definition was inherited from CIP-1694 [here](https://github.com/cardano-foundation/CIPs/blob/master/CIP-1694/README.md#registered-dreps).
The CIP1694  does not define the bech32 prefix, I think there is a misunderstanding here, I am not suggesting a change to how a deep ID is represented, but infact suggesting a change that fits well with existing bech32 formats.
eg. the bech32 prefix for deep keyhash is just drep but I am suggesting it should be drep_vkh. Following the CIP-1694 the actually hex representation should be as I am suggesting or similar to it.
CIP-105 as well does not require any changes, it does define a vkey prefix precisely as drep_vk, again stating that this CIP should use drep_vkh for a key hash.
I would propose relevant amendments to cip-19 once this CIP makes the changes and uses the relevant bech32 format. As suggesting a deep address prefix will use drep as prefix for a deep address but has been already used here to define a v keyhash and not an address.

@ashisherc
As you have pointed out, when defining this we more or less ignored the "credential" nature of these DRep and CC credentials, and thus avoided defining addresses for them.
Motivation for current setup

We were modelling off of stake pool IDs, just as vote delegation (delegating to DReps) is modelled on top of delegation to stake pools.

This was just the easier and simplier.
At the time there was little to no community interest in pursing anything more than this.

Benefits of proposed changes

Conformity with existing Stake and Payment credential definitions

Im not sure of anymore?
Drawbacks of proposed changes

Adding DRep/CC addresses would, I believe, add confusion.

for me, the term address is something ada can be sent to
with these addresses ada cant be sent which I see as counter intuitive

Existing implementers would have to upgrade or not - potentially leading to fragmentation and confusion

### Specific Responses

I am not suggesting a change to how a drep ID spec should be, but infact suggesting a change that fits well with existing bech32 formats in this CIP.

My bad, I had misinterpreted you as wanting to remove DRep IDs.

eg. the bech32 prefix for drep keyhash is just drep but I am suggesting it should be drep_vkh.

This is a fair take, the reason I chose drep over drep_vkh is that I was modelling the DRep IDs off of Pool IDs (pool).

I would propose relevant amendments to cip-19 once this CIP makes the changes and uses the relevant bech32 format. As suggested a drep address prefix will use drep as prefix for a drep address but has been already used here to define a vKeyhash and not an address.

My suggestion is that this proposal becomes it's own CIP, then while editing CIP-19 the edits can point to the full definition and explaination within the new CIP.

Also, not sure if intentional, but you seemed to have removed all significant file changes with the last force push.

@Ryun1 thanks for the background, the idea is not to have drep/cc as addresses in the sense of sending/receiving ADA but a unique hex representation for sharing across the community, specially in tooling. While it was a good idea to base of pool id, but due to nature of these keys being a credential and not just a vkh unlike a pool id, it is a bit misrepresented.
I agree for a dedicated CIP for this, but I would like to use drep prefix for such identifier, similarly for other credentials as well, and hence update this current CIP to represent a vkh as such, hence this PR.
Also, not sure if intentional, but you seemed to have removed all significant file changes with the last force push.
I updated the PR to only keep the changes relevant for this CIP which is updating the prefix to use _vkh for the key hash values.
While this amendment might create confusion initially, it is not a user facing terminology yet, but will soon become once the explorers etc start showing this data, I believe it will be good to modify it at this time then to be stuck with it forever.

@ashisherc

While it was a good idea to base of pool id, but due to nature of these keys being a credential and not just a vkh unlike a pool id, it is a bit misrepresented.

I completely agree, it is somewhat wonky 😆

I agree for a dedicated CIP for this, but I would like to use drep prefix for such identifier, similarly for other credentials as well, and hence update this current CIP to represent a vkh as such, hence this PR.

I look forward to seeing this proposal 💪

While this amendment might create confusion initially, it is not a user facing terminology yet, but will soon become once the explorers etc start showing this data, I believe it will be good to modify it at this time then to be stuck with it forever.

understood, good points
ill wait for the proposal to discuss further

@Ryun1 https://github.com/cardano-foundation/CIPs/pull/857

merged with https://github.com/cardano-foundation/CIPs/pull/857


wasm_bindgen proc macro triggers clippy::needless_pass_by_value

Describe the Bug
clippy will report a clippy::needless_pass_by_value lint on the wasm_bindgen proc macro when that lint is enabled:
$ cargo +nightly clippy -- -Z macro_backtrace

warning: this argument is passed by value, but not consumed in the function body
 --> src/lib.rs:6:1
  |
6 | #[wasm_bindgen]
  | ^^^^^^^^^^^^^^^ in this procedural macro expansion
  |
 ::: /home/edward/.cargo/registry/src/github.com-1ecc6299db9ec823/wasm-bindgen-macro-0.2.78/src/lib.rs:9:1
  |
9 | pub fn wasm_bindgen(attr: TokenStream, input: TokenStream) -> TokenStream {
  | ------------------------------------------------------------------------- in this expansion of `#[wasm_bindgen]`
  |
note: the lint level is defined here
 --> src/lib.rs:1:9
  |
1 | #![warn(clippy::needless_pass_by_value)]
  |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_pass_by_value

warning: `wasm_bindgen_clippy` (lib) generated 1 warning
    Finished dev [unoptimized + debuginfo] target(s) in 7.43s

Steps to Reproduce
Minimal example can be found here. Steps to repro is to just clone the repo and run cargo clippy.
Expected Behavior
The lint to not appear.
Actual Behavior
The lint appears.
Additional Context
Tested on the following clippy versions:
clippy 0.1.56 (09c42c4 2021-10-18)
clippy 0.1.57 (efd0483 2021-10-20)

These versions correlate to the following rustc versions, respectively:
rustc 1.56.0 (09c42c458 2021-10-18)
binary: rustc
commit-hash: 09c42c45858d5f3aedfa670698275303a3d19afa
commit-date: 2021-10-18
host: x86_64-unknown-linux-gnu
release: 1.56.0
LLVM version: 13.0.0

rustc 1.58.0-nightly (efd048394 2021-10-20)
binary: rustc
commit-hash: efd0483949496b067cd5f7569d1b28cd3d5d3c72
commit-date: 2021-10-20
host: x86_64-unknown-linux-gnu
release: 1.58.0-nightly
LLVM version: 13.0.0

No longer repros. spect e89175cb0af05a1229f4669808c2874115d2ca1d fixes it.


Typing throws "Cannot read property 'value' of undefined" errors

Error is this:
codemirror-revisedsearch.js:279 Uncaught TypeError: Cannot read property 'value' of undefined
at Object.onInput (codemirror-revisedsearch.js:279)
at HTMLInputElement.CodeMirror.on (advanced-dialog.js:86)
I fixed it locally by changing line 279 from this:
let query = inputs[0].value;
to this:
let query = (typeof inputs[0] === 'undefined') ? null : inputs[0].value;
Thanks for this btw. ;)

I can't recreate the problem locally, and while I'm sure that the fix you've suggested would solve the issue, I'm interested to know how it came about.
Can you tell me anything more about your setup?  Specifically, which versions of  RevisedSearch and AdvancedDialog you are using?  What exactly are the steps you go through to open the search or search and replace dialog?

Using the latest version now and the problem seems to have gone away. Thanks for following up.


tcp_server.c SO_REUSEADDR not working as expected (IDFGH-3693)

Environment

Development Kit:     ESP32 Devkit V1 -Doit (I think, it's soldered i can't look at it anymore) (here)[https://docs.espressif.com/projects/esp-idf/en/latest/esp32/hw-reference/modules-and-boards.html#esp32-wroom-32]

Kit version -

Module or chip used:  ESP32-WROOM-32

IDF version (run git describe --tags to find it): framework-espidf 3.40001.200521 (4.0.1)  (PIO)

Build System:         platformio

Compiler version (run xtensa-esp32-elf-gcc --version to find it): xtensa-esp32-elf-gcc (crosstool-NG esp-2019r2) 8.2.0

Operating System:   Linux

Using an IDE?:  Vscode platformio

Power Supply:         USB

Problem Description
(The configs:
CONFIG_LWIP_SO_REUSE=y
CONFIG_LWIP_SO_REUSE_RXTOALL=y
are set)
the port i am using is : 60583
i am also using the ipv4 example
adding:
{
          int i = 1;
          int ret = setsockopt(listen_sock, SOL_SOCKET, SO_REUSEADDR, &i, sizeof(i));
          ESP_LOGE(TAG, "setsockopt %d  %d %s ", ret, errno, strerror(errno));
        }

into:
https://github.com/espressif/esp-idf/blob/48ea44f3d1e4b5763a2d0b65bc5c56a84690e910/examples/protocols/sockets/tcp_server/main/tcp_server.c#L65
Does not make the address reusable.
Expected Behavior
the socket should be reusing the address freely.
Actual Behavior
Without socketopt:

I (2166) wifi:AP's beacon interval = 102400 us, DTIM period = 2
␛[0;32mI (3076) tcpip_adapter: sta ip: <IP_ADDRESS>, mask: <IP_ADDRESS>, gw: <IP_ADDRESS>␛[0m
␛[0;32mI (3076) example_connect: Connected to Meiner␛[0m
␛[0;32mI (3076) example_connect: IPv4 address: <IP_ADDRESS>␛[0m
␛[0;32mI (3086) example: Socket created␛[0m
␛[0;32mI (3086) example: Socket bound, port 60583␛[0m
␛[0;32mI (3096) example: Socket listening␛[0m
␛[0;32mI (5976) example: Socket accepted␛[0m
␛[0;32mI (5986) example: Received 86 bytes from <IP_ADDRESS>:␛[0m
␛[0;32mI (5986) example: {"event":"mod_control","id":1336146744,"h_id":"25289830","is_old":false,"state":false}␛[0m
␛[0;32mI (8216) example: Connection closed␛[0m
␛[0;31mE (8216) example: Shutting down socket and restarting...␛[0m
␛[0;32mI (8216) example: Socket created␛[0m
␛[0;31mE (8216) example: Socket unable to bind: errno 112␛[0m

112 -> Addr in use ? I thought the socket was shut down when it was reacreated.
This is where I found the flag reuse and thought it may fix my problem.
with socketopt:
␛[0;32mI (3079) example_connect: Connected to Meiner␛[0m
␛[0;32mI (3079) example_connect: IPv4 address: <IP_ADDRESS>␛[0m
␛[0;31mE (3089) example: setsockopt 0  0 Success ␛[0m
␛[0;32mI (3089) example: Socket created␛[0m
␛[0;32mI (3099) example: Socket bound, port 60583␛[0m
␛[0;32mI (3099) example: Socket listening␛[0m
␛[0;32mI (11099) example: Socket accepted␛[0m
␛[0;32mI (11129) example: Received 86 bytes from <IP_ADDRESS>:␛[0m
␛[0;32mI (11129) example: {"event":"mod_control","id":1336146744,"h_id":"25289830","is_old":false,"state":false}␛[0m
␛[0;32mI (13349) example: Connection closed␛[0m
␛[0;31mE (13349) example: Shutting down socket and restarting...␛[0m
␛[0;31mE (13349) example: setsockopt 0  128 Socket is not connected ␛[0m
␛[0;32mI (13349) example: Socket created␛[0m
␛[0;32mI (13359) example: Socket bound, port 60583␛[0m
␛[0;31mE (13359) example: Error occurred during listen: errno 112␛[0m

first socket connection let me set setsockopt.
received the data like i want it to
then after restarting i get 128 -> Enotconn ... how is the socket not connected anymore?
As i understood it the example just shutdowns the previous socket and then starts a new one.
The error from listen is not listet in
https://pubs.opengroup.org/onlinepubs/007908799/xns/listen.html
unless i missread
Steps to reproduce
Just running the code and connecting to the socket with another socket written on an app build with ionic,
I checked with wireguard and the packets are the same as if sent via a python tcp script
Code to reproduce this issue
Add the {...} into the example and that's my code.
Additionally i have connect.c in, so the example connect works with my WiFi.
Debug Logs
Debug log goes here, should contain the backtrace, as well as the reset source if it is a crash.
Please copy the plain text here for us to search the error log. Or attach the complete logs but leave the main part here if the log is *too* long.

Other items if possible

[ ] elf file in the build folder (note this may contain all the code details and symbols of your project.)
[x] sdkconfig file (attach the sdkconfig file from your project folder)
[ ] coredump (This provides stacks of tasks.)

sdkconfig.txt

For reproduction I tried https://play.google.com/store/apps/details?id=com.simplesockettester&hl=en_US
and it produces the exact same results, connecting to the socket twice  makes it die. ( As written above with the setsockopt)

Thanks for the detailed report, we will look into.

Hi @ZweiEuro
The SO_REUSEADDR works as expected.
The issue with the tcp-server example is that it does close the socket here, but this is the  accepted socket, the original listener socket is still open and bound to the original address/port (So in fact we could bind to it -- SO_REUSEADDR=1 allows us to bind to already used endpoint -- but the actual listen would fail as the endpoint is actively used by an open socket)
Adding
            shutdown(listen_sock, 0);
            close(listen_sock);

after the
            ESP_LOGE(TAG, "Shutting down socket and restarting...");

Should solve the issue.
In general, please check the latest version of the example here
https://github.com/espressif/esp-idf/blob/master/examples/protocols/sockets/tcp_server/main/tcp_server.c
where the listener socket is kept open, which is I believe a preferred option for common a tcp server.

@ZweiEuro Any further observation from your side or can we close the issue?

Thanks for reporting, will close due to short of feedback, feel free to reopen if the issue still happens. Thanks.


Installation issue

The installation documentation seems outdated or wrong or I am unable to install this.

MauticInfoBipSmsBundle this folder does not exist.
After creating this folder in the plugins directory, and adding the plugin files there and clicking on "Install/Upgrade Plugins", I get a popup saying "0 plugins installed and 0 plugins updated".

Mautic 2.11.0

It finally installed, with the chrome debugger open to prevent caching.
The documentation can still be reworded better. Will look into it soon

The configuration process is also cryptic. There is no telling which keys go where because the fields in the config form are named differently from the ones from Infobip.

I cant get past here.
Whatever i put in produces no error, and when i go to the texts channel, I get an error about a missing config

After uploading the plugin files run this command from console:-
sudo php PathToMauticInstallation/app/console cache:clear
Then Try to Install / Upgrade Plugins. You will see a new plugin appears there.

Hi,
I installed Mautic 1.13.1. After clearing cache, I am able to see installed Infobip plugin. I configured user name and password and sending number. But in Setting->configuration->Text Message Settings->Select default transport to use  option, I am not able to select Infobib. As it is not appearing in list box. While Twilio is there. Please help. Thanks in advance


Improve the German translation, update Resources.resw, typing error.

Text is: "Um zu erfahren, wie Sie dem Windows-Rechner mitwirken können, ..."
Using only “dem” is wrong. Either “an dem” or “am”. "am" sounds better IMHO. "am" is short for “an dem”.
Fixes #.
Accept the PR to fix the error and use "am".
Description of the changes:
Changed the word "dem" into the word "am".
How changes were validated:
Not tested.

Unfortunately, we're not able to merge translation suggestions in this repo because of limitations in our tooling. I have filed an issue internally to track this, and our localization team will review and apply these changes. Thank you for your contribution!


Pack of tests and fixes

Add test cases for the ArbComplextype.
A few bug and simplifications were made to the source code,
as revealed by test failures, and to simplify test coverage.
Some test cases are declared 'broken', have to be fixed.
The more test cases are developed, the more glitches in the software are detected, which are removed.
For the releases before nightly, on windows, CI cannot load the required packages. Those runs were removed from the CI matrix.

Will further increase test coverage and remove redundancies.

if/when you want this merged -- change it from draft status

This state of development is now more stable then ever, also if it is not perfect yet. Can be reviewed/merged.

I thought I had merged this long before -- thank you!

Hi Klaus,
We have a report of a glitch that followed this update ..
Please take a look and let me know if you see a fix.
https://github.com/JeffreySarnoff/ArbNumerics.jl/issues/68#issuecomment-2096986328


target property should be assigned before subscribing to target property

https://github.com/aurelia/binding/blob/master/src/binding-expression.js#L87
Will avoid an unnecessary call to update the source.

created this issue too hastily, wasn't actually an issue.


Sub-App cannot add duplicate collection entry with name 'aspNetCore'(500.19)

Windows Server 2012 R2
IIS 8.5
Website - Default WebApplication Project (ASP.NET Core 1.0 RC2)
|
|-  subapp1 - Default WebApplication Project (ASP.NET Core 1.0 RC2)
Website is ok,but the subapp1 get a 500.19 error:

HTTP Error 500.19 - Internal Server Error

The requested page cannot be accessed because the related configuration data for the page is invalid.

Config Error: Cannot add duplicate collection entry of type 'add' with unique key attribute 'name' set to 'aspNetCore'

because of the name 'aspNetCore' is already in use:

rename 'aspNetCore':

This is normal behavior for IIS modules. There are two parts to the web.config data. The handlers section only needs to be added for the root site. The aspNetCore options should be specified per site.


Allow to resubmit a message with ByteArray body type

Fixes #63

@paolosalvatori please review. W/o this messages with ByteArray body type cannot be resubmitted.

I did it and I trust you (as always) :)


CPU Compilation stucks at IREE::HAL::SerializeTargetExecutablesPass

What happened?
During the compilation for the CPU backend, the iree-compile keeps on running without any termination.
Steps to reproduce your issue
To reproduce the issue, run the following:
./build/tools/iree-compile --iree-input-type=none --iree-vm-bytecode-module-output-format=flatbuffer-binary     --iree-hal-target-backends=llvm-cpu --mlir-print-debuginfo     --mlir-print-op-on-diagnostic=false --iree-llvmcpu-target-cpu-features=host     --iree-stream-resource-index-bits=64 --iree-vm-target-index-bits=64     --iree-vm-bytecode-module-strip-source-map=false --iree-util-zero-fill-elided-attrs     --iree-vm-target-truncate-unsupported-floats --iree-codegen-check-ir-before-llvm-conversion=false   --iree-opt-const-expr-hoisting=false     --iree-consteval-jit-debug=true   --iree-stream-resource-max-allocation-size=3221225472

over the given IR:
hal.executable public @forward_dispatch_7 {
  hal.executable.variant public @embedded_elf_x86_64, target = <"llvm-cpu", "embedded-elf-x86_64", {cpu = "generic", cpu_features = "+prfchw,-cldemote,+avx,+aes,+sahf,+pclmul,-xop,+crc32,+xsaves,-avx512fp16,-sm4,+sse4.1,-avx512ifma,+xsave,-avx512pf,+sse4.2,-tsxldtrk,-ptwrite,-widekl,-sm3,+invpcid,+64bit,+xsavec,-avx512vpopcntdq,+cmov,-avx512vp2intersect,+avx512cd,+movbe,-avxvnniint8,-avx512er,-amx-int8,-kl,-sha512,-avxvnni,+rtm,+adx,+avx2,-hreset,-movdiri,-serialize,-vpclmulqdq,+avx512vl,-uintr,+clflushopt,-raoint,-cmpccxadd,+bmi,-amx-tile,+sse,-gfni,-avxvnniint16,-amx-fp16,+xsaveopt,+rdrnd,+avx512f,-amx-bf16,-avx512bf16,+avx512vnni,+cx8,+avx512bw,+sse3,-pku,+fsgsbase,-clzero,-mwaitx,-lwp,+lzcnt,-sha,-movdir64b,-wbnoinvd,-enqcmd,-prefetchwt1,-avxneconvert,-tbm,-pconfig,-amx-complex,+ssse3,+cx16,+bmi2,+fma,+popcnt,-avxifma,+f16c,-avx512bitalg,-rdpru,+clwb,+mmx,+sse2,+rdseed,-avx512vbmi2,-prefetchi,-rdpid,-fma4,-avx512vbmi,-shstk,-vaes,-waitpkg,-sgx,+fxsr,+avx512dq,-sse4a", data_layout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128", native_vector_size = 64 : index, target_triple = "x86_64-unknown-unknown-eabi-elf", ukernels = false}> {
    hal.executable.export public @forward_dispatch_7_generic_1x1x4096x32x128_f16 ordinal(0) layout(#hal.pipeline.layout<push_constants = 5, sets = [<0, bindings = [<0, storage_buffer, ReadOnly>, <1, storage_buffer, ReadOnly>, <2, storage_buffer, ReadOnly>, <3, storage_buffer>]>]>) {
    ^bb0(%arg0: !hal.device loc(callsite("../shark-vivekkhandelwal1/second_int4.mlir":934:11 at "../shark-vivekkhandelwal1/second_int4.mlir":26:3))):
      %x, %y, %z = flow.dispatch.workgroup_count_from_slice  loc(callsite("../shark-vivekkhandelwal1/second_int4.mlir":934:11 at "../shark-vivekkhandelwal1/second_int4.mlir":26:3))
      hal.return %x, %y, %z : index, index, index loc(callsite("../shark-vivekkhandelwal1/second_int4.mlir":934:11 at "../shark-vivekkhandelwal1/second_int4.mlir":26:3))
    } loc(callsite("../shark-vivekkhandelwal1/second_int4.mlir":934:11 at "../shark-vivekkhandelwal1/second_int4.mlir":26:3))
    builtin.module {
      func.func @forward_dispatch_7_generic_1x1x4096x32x128_f16() {
        %cst = arith.constant 0.000000e+00 : f16 loc(callsite("../shark-vivekkhandelwal1/second_int4.mlir":769:16 at "../shark-vivekkhandelwal1/second_int4.mlir":26:3))
        %0 = hal.interface.constant.load[0] : i32 loc(callsite("../shark-vivekkhandelwal1/second_int4.mlir":923:21 at "../shark-vivekkhandelwal1/second_int4.mlir":26:3))
        %1 = hal.interface.constant.load[1] : i32 loc(fused[callsite("../shark-vivekkhandelwal1/second_int4.mlir":698:16 at "../shark-vivekkhandelwal1/second_int4.mlir":26:3), callsite("../shark-vivekkhandelwal1/second_int4.mlir":697:16 at "../shark-vivekkhandelwal1/second_int4.mlir":26:3)])
        %2 = hal.interface.constant.load[2] : i32 loc(fused[callsite("../shark-vivekkhandelwal1/second_int4.mlir":698:16 at "../shark-vivekkhandelwal1/second_int4.mlir":26:3), callsite("../shark-vivekkhandelwal1/second_int4.mlir":697:16 at "../shark-vivekkhandelwal1/second_int4.mlir":26:3)])
        %3 = hal.interface.constant.load[3] : i32 loc(callsite("../shark-vivekkhandelwal1/second_int4.mlir":917:11 at "../shark-vivekkhandelwal1/second_int4.mlir":26:3))
        %4 = hal.interface.constant.load[4] : i32 loc(callsite("../shark-vivekkhandelwal1/second_int4.mlir":934:11 at "../shark-vivekkhandelwal1/second_int4.mlir":26:3))
        %5 = arith.index_castui %0 : i32 to index loc(callsite("../shark-vivekkhandelwal1/second_int4.mlir":923:21 at "../shark-vivekkhandelwal1/second_int4.mlir":26:3))
        %6 = arith.index_castui %1 : i32 to index loc(fused[callsite("../shark-vivekkhandelwal1/second_int4.mlir":698:16 at "../shark-vivekkhandelwal1/second_int4.mlir":26:3), callsite("../shark-vivekkhandelwal1/second_int4.mlir":697:16 at "../shark-vivekkhandelwal1/second_int4.mlir":26:3)])
        %7 = arith.index_castui %2 : i32 to index loc(fused[callsite("../shark-vivekkhandelwal1/second_int4.mlir":698:16 at "../shark-vivekkhandelwal1/second_int4.mlir":26:3), callsite("../shark-vivekkhandelwal1/second_int4.mlir":697:16 at "../shark-vivekkhandelwal1/second_int4.mlir":26:3)])
        %8 = arith.index_castui %3 : i32 to index loc(callsite("../shark-vivekkhandelwal1/second_int4.mlir":917:11 at "../shark-vivekkhandelwal1/second_int4.mlir":26:3))
        %9 = arith.index_castui %4 : i32 to index loc(callsite("../shark-vivekkhandelwal1/second_int4.mlir":934:11 at "../shark-vivekkhandelwal1/second_int4.mlir":26:3))
        %10 = hal.interface.binding.subspan set(0) binding(0) type(storage_buffer) alignment(64) offset(%5) flags(ReadOnly) : !flow.dispatch.tensor<readonly:tensor<4096x32x128xi4>> loc(callsite("../shark-vivekkhandelwal1/second_int4.mlir":923:21 at "../shark-vivekkhandelwal1/second_int4.mlir":26:3))
        %11 = hal.interface.binding.subspan set(0) binding(1) type(storage_buffer) alignment(64) offset(%6) flags(ReadOnly) : !flow.dispatch.tensor<readonly:tensor<4096x32x1xf16>> loc(callsite("../shark-vivekkhandelwal1/second_int4.mlir":698:16 at "../shark-vivekkhandelwal1/second_int4.mlir":26:3))
        %12 = hal.interface.binding.subspan set(0) binding(1) type(storage_buffer) alignment(64) offset(%7) flags(ReadOnly) : !flow.dispatch.tensor<readonly:tensor<4096x32x1xf16>> loc(callsite("../shark-vivekkhandelwal1/second_int4.mlir":697:16 at "../shark-vivekkhandelwal1/second_int4.mlir":26:3))
        %13 = hal.interface.binding.subspan set(0) binding(2) type(storage_buffer) alignment(64) offset(%8) flags(ReadOnly) : !flow.dispatch.tensor<readonly:tensor<1x1x32x128xf16>> loc(callsite("../shark-vivekkhandelwal1/second_int4.mlir":917:11 at "../shark-vivekkhandelwal1/second_int4.mlir":26:3))
        %14 = hal.interface.binding.subspan set(0) binding(3) type(storage_buffer) alignment(64) offset(%9) : !flow.dispatch.tensor<writeonly:tensor<1x1x4096xf16>> loc(callsite("../shark-vivekkhandelwal1/second_int4.mlir":934:11 at "../shark-vivekkhandelwal1/second_int4.mlir":26:3))
        %15 = flow.dispatch.tensor.load %10, offsets = [0, 0, 0], sizes = [4096, 32, 128], strides = [1, 1, 1] : !flow.dispatch.tensor<readonly:tensor<4096x32x128xi4>> -> tensor<4096x32x128xi4> loc(callsite("../shark-vivekkhandelwal1/second_int4.mlir":934:11 at "../shark-vivekkhandelwal1/second_int4.mlir":26:3))
        %16 = flow.dispatch.tensor.load %11, offsets = [0, 0, 0], sizes = [4096, 32, 1], strides = [1, 1, 1] : !flow.dispatch.tensor<readonly:tensor<4096x32x1xf16>> -> tensor<4096x32x1xf16> loc(callsite("../shark-vivekkhandelwal1/second_int4.mlir":934:11 at "../shark-vivekkhandelwal1/second_int4.mlir":26:3))
        %17 = flow.dispatch.tensor.load %12, offsets = [0, 0, 0], sizes = [4096, 32, 1], strides = [1, 1, 1] : !flow.dispatch.tensor<readonly:tensor<4096x32x1xf16>> -> tensor<4096x32x1xf16> loc(callsite("../shark-vivekkhandelwal1/second_int4.mlir":934:11 at "../shark-vivekkhandelwal1/second_int4.mlir":26:3))
        %18 = flow.dispatch.tensor.load %13, offsets = [0, 0, 0, 0], sizes = [1, 1, 32, 128], strides = [1, 1, 1, 1] : !flow.dispatch.tensor<readonly:tensor<1x1x32x128xf16>> -> tensor<1x1x32x128xf16> loc(callsite("../shark-vivekkhandelwal1/second_int4.mlir":934:11 at "../shark-vivekkhandelwal1/second_int4.mlir":26:3))
        %19 = tensor.empty() : tensor<1x1x4096xf16> loc(callsite("../shark-vivekkhandelwal1/second_int4.mlir":797:10 at "../shark-vivekkhandelwal1/second_int4.mlir":26:3))
        %20 = tensor.empty() : tensor<4096x32x128xf16> loc(callsite("../shark-vivekkhandelwal1/second_int4.mlir":924:11 at "../shark-vivekkhandelwal1/second_int4.mlir":26:3))
        %21 = linalg.fill ins(%cst : f16) outs(%19 : tensor<1x1x4096xf16>) -> tensor<1x1x4096xf16> loc(callsite("../shark-vivekkhandelwal1/second_int4.mlir":925:11 at "../shark-vivekkhandelwal1/second_int4.mlir":26:3))
        %22 = linalg.generic {indexing_maps = [affine_map<(d0, d1, d2) -> (d0, d1, d2)>, affine_map<(d0, d1, d2) -> (d0, d1, 0)>, affine_map<(d0, d1, d2) -> (d0, d1, 0)>, affine_map<(d0, d1, d2) -> (d0, d1, d2)>], iterator_types = ["parallel", "parallel", "parallel"]} ins(%15, %16, %17 : tensor<4096x32x128xi4>, tensor<4096x32x1xf16>, tensor<4096x32x1xf16>) outs(%20 : tensor<4096x32x128xf16>) {
        ^bb0(%in: i4 loc("../shark-vivekkhandelwal1/second_int4.mlir":927:10), %in_0: f16 loc("../shark-vivekkhandelwal1/second_int4.mlir":927:19), %in_1: f16 loc("../shark-vivekkhandelwal1/second_int4.mlir":927:34), %out: f16 loc("../shark-vivekkhandelwal1/second_int4.mlir":927:49)):
          %24 = arith.extui %in : i4 to i32 loc(callsite("../shark-vivekkhandelwal1/second_int4.mlir":928:15 at "../shark-vivekkhandelwal1/second_int4.mlir":26:3))
          %25 = arith.uitofp %24 : i32 to f16 loc(callsite("../shark-vivekkhandelwal1/second_int4.mlir":929:15 at "../shark-vivekkhandelwal1/second_int4.mlir":26:3))
          %26 = arith.subf %25, %in_1 : f16 loc(callsite("../shark-vivekkhandelwal1/second_int4.mlir":930:15 at "../shark-vivekkhandelwal1/second_int4.mlir":26:3))
          %27 = arith.mulf %26, %in_0 : f16 loc(callsite("../shark-vivekkhandelwal1/second_int4.mlir":931:15 at "../shark-vivekkhandelwal1/second_int4.mlir":26:3))
          linalg.yield %27 : f16 loc(callsite("../shark-vivekkhandelwal1/second_int4.mlir":932:7 at "../shark-vivekkhandelwal1/second_int4.mlir":26:3))
        } -> tensor<4096x32x128xf16> loc(callsite("../shark-vivekkhandelwal1/second_int4.mlir":926:11 at "../shark-vivekkhandelwal1/second_int4.mlir":26:3))
        %23 = linalg.generic {indexing_maps = [affine_map<(d0, d1, d2, d3, d4) -> (d0, d1, d3, d4)>, affine_map<(d0, d1, d2, d3, d4) -> (d2, d3, d4)>, affine_map<(d0, d1, d2, d3, d4) -> (d0, d1, d2)>], iterator_types = ["parallel", "parallel", "parallel", "reduction", "reduction"]} ins(%18, %22 : tensor<1x1x32x128xf16>, tensor<4096x32x128xf16>) outs(%21 : tensor<1x1x4096xf16>) {
        ^bb0(%in: f16 loc("../shark-vivekkhandelwal1/second_int4.mlir":935:10), %in_0: f16 loc("../shark-vivekkhandelwal1/second_int4.mlir":935:20), %out: f16 loc("../shark-vivekkhandelwal1/second_int4.mlir":935:35)):
          %24 = arith.mulf %in, %in_0 : f16 loc(callsite("../shark-vivekkhandelwal1/second_int4.mlir":936:15 at "../shark-vivekkhandelwal1/second_int4.mlir":26:3))
          %25 = arith.addf %24, %out : f16 loc(callsite("../shark-vivekkhandelwal1/second_int4.mlir":937:15 at "../shark-vivekkhandelwal1/second_int4.mlir":26:3))
          linalg.yield %25 : f16 loc(callsite("../shark-vivekkhandelwal1/second_int4.mlir":938:7 at "../shark-vivekkhandelwal1/second_int4.mlir":26:3))
        } -> tensor<1x1x4096xf16> loc(callsite("../shark-vivekkhandelwal1/second_int4.mlir":934:11 at "../shark-vivekkhandelwal1/second_int4.mlir":26:3))
        flow.dispatch.tensor.store %23, %14, offsets = [0, 0, 0], sizes = [1, 1, 4096], strides = [1, 1, 1] : tensor<1x1x4096xf16> -> !flow.dispatch.tensor<writeonly:tensor<1x1x4096xf16>> loc(callsite("../shark-vivekkhandelwal1/second_int4.mlir":934:11 at "../shark-vivekkhandelwal1/second_int4.mlir":26:3))
        return loc(callsite("../shark-vivekkhandelwal1/second_int4.mlir":934:11 at "../shark-vivekkhandelwal1/second_int4.mlir":26:3))
      } loc(callsite("../shark-vivekkhandelwal1/second_int4.mlir":934:11 at "../shark-vivekkhandelwal1/second_int4.mlir":26:3))
    } loc(callsite("../shark-vivekkhandelwal1/second_int4.mlir":934:11 at "../shark-vivekkhandelwal1/second_int4.mlir":26:3))
  } loc(callsite("../shark-vivekkhandelwal1/second_int4.mlir":934:11 at "../shark-vivekkhandelwal1/second_int4.mlir":26:3))
} loc(callsite("../shark-vivekkhandelwal1/second_int4.mlir":934:11 at "../shark-vivekkhandelwal1/second_int4.mlir":26:3))

What component(s) does this issue relate to?
Compiler
Version information
No response
Additional context
No response

This is failing due to unit dims in vector<1x8xf16> and its appearance as loop carried values. We have had a host of such issues previously regarding the combination before. I think to properly fix this, we just need a new pattern to cast away leading unit dims for loop carried values.

The issue still exists for the following dispatch:
#map = affine_map<(d0, d1) -> (d0, d1)>
#map1 = affine_map<(d0, d1) -> (d0)>
module {
  func.func @forward_dispatch_6_generic_Dx4096_f16xf32xf16(%arg0: tensor<1x?x4096xf32>, %arg1: tensor<?x4096xf16>) -> tensor<?x4096xf16> {
    %c1 = arith.constant 1 : index
    %cst = arith.constant 2.000000e+00 : f32
    %cst_0 = arith.constant 0.000000e+00 : f32
    %cst_1 = arith.constant 4.096000e+03 : f32
    %cst_2 = arith.constant 9.99999997E-7 : f32
    %c0 = arith.constant 0 : index
    %dim = tensor.dim %arg0, %c1 : tensor<1x?x4096xf32>
    %0 = tensor.empty(%dim) : tensor<?x4096xf16>
    %1 = tensor.empty(%dim) : tensor<?xf32>
    %2 = tensor.empty(%dim) : tensor<?x4096xf32>
    %3 = linalg.fill ins(%cst_0 : f32) outs(%1 : tensor<?xf32>) -> tensor<?xf32>
    %4 = linalg.generic {indexing_maps = [#map], iterator_types = ["parallel", "parallel"]} outs(%2 : tensor<?x4096xf32>) {
    ^bb0(%out: f32):
      %7 = linalg.index 0 : index
      %8 = linalg.index 1 : index
      %9 = arith.cmpi eq, %dim, %c1 : index
      %10 = arith.select %9, %c0, %7 : index
      %extracted = tensor.extract %arg0[%c0, %10, %8] : tensor<1x?x4096xf32>
      linalg.yield %extracted : f32
    } -> tensor<?x4096xf32>
    %5 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "reduction"]} ins(%4 : tensor<?x4096xf32>) outs(%3 : tensor<?xf32>) {
    ^bb0(%in: f32, %out: f32):
      %7 = math.powf %in, %cst : f32
      %8 = arith.addf %7, %out : f32
      linalg.yield %8 : f32
    } -> tensor<?xf32>
    %6 = linalg.generic {indexing_maps = [#map, #map1, #map], iterator_types = ["parallel", "parallel"]} ins(%arg1, %5 : tensor<?x4096xf16>, tensor<?xf32>) outs(%0 : tensor<?x4096xf16>) {
    ^bb0(%in: f16, %in_3: f32, %out: f16):
      %7 = arith.divf %in_3, %cst_1 : f32
      %8 = arith.addf %7, %cst_2 : f32
      %9 = math.rsqrt %8 : f32
      %10 = arith.extf %in : f16 to f32
      %11 = arith.mulf %10, %9 : f32
      %12 = arith.truncf %11 : f32 to f16
      linalg.yield %12 : f16
    } -> tensor<?x4096xf16>
    return %6 : tensor<?x4096xf16>
  }
}

I cannot reproduce for either of the dispatches you give. I tried with the iree-compile command given in your original issue. Maybe if the pipeline is actually stuck or is it just taking a long time to compile.

I cannot reproduce for either of the dispatches you give. I tried with the iree-compile command given in your original issue. Maybe if the pipeline is actually stuck or is it just taking a long time to compile.

The issue exists with the SRT, not with the IREE.

Could we file this issue on SRT instead then?

Closing this since it's not an issue with IREE.


aws-sdk-go version bump, 1.37.10 -> 1.42.0

Signed-off-by: smcavallo<EMAIL_ADDRESS>Issue #1059, if available:
https://github.com/aws-controllers-k8s/community/issues/1059
Description of changes:
aws-sdk-go version bump, 1.37.10 -> 1.42.0 to unblock crossplane
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

/approve

Do we have any idea on how many controllers will not build with SDK 1.42.0 ?
/approve

Do we have any idea on how many controllers will not build with SDK 1.42.0 ? /approve

@A-Hilaly - What is the best way to test this?  I don't know offhand but I can take a shot at trying to build.

@smcavallo We discussed this during the community meeting and we will merge and release specific versions of runtime and code-gen soon.

What is the best way to test this?

Best way would be to bump the aws-sdk-go version in ack-generate and regenerate all the controllers :)
Also every go.mod file should point to github.com/aws/aws-sdk-go v1.42.0 in this case

Hi @smcavallo, 1.37.10 -> 1.42.0 to unblock crossplane what does this mean?

@smcavallo the ACK core team is working on validating this for a controller before we LGTM it. Hoping to have this merged Monday. Note that we do not think the corresponding PR to code-generator will be necessary, since what you need in the ACK runtime with<EMAIL_ADDRESS>is the Session handling (for FIPS endpoints), and not the updated API models for the individual services.

Closing in favor of upgrade to v1.42.35


Not compiling properly - help!

Hello,
I can't seem to get sqlitecpp to work with my setup. Did I miss something obvious in my usage of sqlitecpp?
My usage:
My makefile downloads sqlitecpp, creates a build directory, cd's into it, runs cmake .., runs make, and then copies the built sqlitecpp lib file and source header files to a local directory called sqlitecpp in my project. I then use those local files in my code like so:
#include "SQLiteCpp/SQLiteCpp.h"
#include "sqlite3.h"

And I build my program like so:
g++ -g Main.cpp SQLConnector.cpp -std=c++11 -I sqlitecpp -lsqlite3 -L sqlitecpp -lSQLiteCpp -o bin/Server

but I get the following errors:
In file included from sqlitecpp/SQLiteCpp/SQLiteCpp.h:23:0,
                 from SQLConnector.cpp:7:
sqlitecpp/SQLiteCpp/Database.h:22:16: error: using typedef-name ‘sqlite3_value’ after ‘struct’
 typedef struct sqlite3_value sqlite3_value;
                ^
In file included from SQLConnector.h:13:0,
                 from SQLConnector.cpp:6:
include_local/sqlite3.h:3327:20: note: ‘sqlite3_value’ has a previous declaration here
 typedef struct Mem sqlite3_value;
                    ^
In file included from sqlitecpp/SQLiteCpp/SQLiteCpp.h:23:0,
                 from SQLConnector.cpp:7:
sqlitecpp/SQLiteCpp/Database.h:22:43: error: invalid type in declaration before ‘;’ token
 typedef struct sqlite3_value sqlite3_value;
                                           ^
sqlitecpp/SQLiteCpp/Database.h:22:43: error: conflicting declaration ‘typedef int sqlite3_value’
In file included from SQLConnector.h:13:0,
                 from SQLConnector.cpp:6:
include_local/sqlite3.h:3327:20: error: ‘sqlite3_value’ has a previous declaration as ‘typedef struct Mem sqlite3_value’
 typedef struct Mem sqlite3_value;
                    ^

To me, it looks like there is some kind of contention with sqlite and sqlitecpp. Any ideas? I am using sqlitecpp 2.2.0 and sqlite3 v. <IP_ADDRESS>. Any help is appreciated. Thanks!
I think this may have something to do with SQLITE_USE_LEGACY_STRUCT (see https://github.com/SRombauts/SQLiteCpp/issues/131)

Exactly, you are right, you have to set this flag to ON to use an older SQLite3 library. Something like:
cd build
cmake -DSQLITE_USE_LEGACY_STRUCT=ON - DCMAKE_BUILD_TYPE=Release ..
make

This is a duplicate of the issue #125 Incompatibility in 3.19. 0 and #133

This still doesn't work for me.
This is what I get when I instead run cmake -DSQLITE_USE_LEGACY_STRUCT=ON -DCMAKE_BUILD_TYPE=Release ..:
-- The CXX compiler identification is GNU 5.4.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- CMake version: 3.5.1
-- CMAKE_CXX_COMPILER '/usr/bin/c++' 'GNU' '5.4.0'
-- CMAKE_CXX_FLAGS                ''
-- CMAKE_CXX_FLAGS_RELEASE        '-O3 -DNDEBUG'
-- Found PythonInterp: /usr/bin/python (found version "2.7.12")
-- Could NOT find cppcheck
-- SQLITECPP_RUN_DOXYGEN OFF
-- SQLITECPP_BUILD_EXAMPLES OFF
-- SQLITECPP_BUILD_TESTS OFF
-- Configuring done
-- Generating done
-- Build files have been written to: /mnt/c/Users/hal/Documents/Oldentide/Server/sqlitecpp_temp/build

This looks fine, but then when I run make, sqlitecpp doesn't build:
Scanning dependencies of target SQLiteCpp
[ 11%] Building CXX object CMakeFiles/SQLiteCpp.dir/src/Backup.cpp.o
In file included from /mnt/c/Users/hal/Documents/Oldentide/Server/sqlitecpp_temp/src/Backup.cpp:16:0:
/mnt/c/Users/hal/Documents/Oldentide/Server/sqlitecpp_temp/sqlite3/sqlite3.h:3784:16: error: using typedef-name ‘sqlite3_value’ after ‘struct’
 typedef struct sqlite3_value sqlite3_value;
                ^
In file included from /mnt/c/Users/hal/Documents/Oldentide/Server/sqlitecpp_temp/include/SQLiteCpp/Backup.h:14:0,
                 from /mnt/c/Users/hal/Documents/Oldentide/Server/sqlitecpp_temp/src/Backup.cpp:12:
/mnt/c/Users/hal/Documents/Oldentide/Server/sqlitecpp_temp/include/SQLiteCpp/Database.h:25:20: note: ‘sqlite3_value’ has a previous declaration here
 typedef struct Mem sqlite3_value;
                    ^
In file included from /mnt/c/Users/hal/Documents/Oldentide/Server/sqlitecpp_temp/src/Backup.cpp:16:0:
/mnt/c/Users/hal/Documents/Oldentide/Server/sqlitecpp_temp/sqlite3/sqlite3.h:3784:30: error: conflicting declaration ‘typedef int sqlite3_value’
 typedef struct sqlite3_value sqlite3_value;
                              ^
In file included from /mnt/c/Users/hal/Documents/Oldentide/Server/sqlitecpp_temp/include/SQLiteCpp/Backup.h:14:0,
                 from /mnt/c/Users/hal/Documents/Oldentide/Server/sqlitecpp_temp/src/Backup.cpp:12:
/mnt/c/Users/hal/Documents/Oldentide/Server/sqlitecpp_temp/include/SQLiteCpp/Database.h:25:20: note: previous declaration as ‘typedef struct Mem sqlite3_value’
 typedef struct Mem sqlite3_value;
                    ^
CMakeFiles/SQLiteCpp.dir/build.make:62: recipe for target 'CMakeFiles/SQLiteCpp.dir/src/Backup.cpp.o' failed
make[2]: *** [CMakeFiles/SQLiteCpp.dir/src/Backup.cpp.o] Error 1
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/SQLiteCpp.dir/all' failed
make[1]: *** [CMakeFiles/SQLiteCpp.dir/all] Error 2
Makefile:127: recipe for target 'all' failed
make: *** [all] Error 2

Wait... it looks like it is building against the version of sqlite that comes with sqlitecpp... So I need to get it to build against my own version of sqlite instead somehow.

Ok, here is the fix that seems to work:
cmake -DSQLITE_USE_LEGACY_STRUCT=ON -DSQLITECPP_INTERNAL_SQLITE=OFF ..
By default, the SQLITECPP_INTERNAL_SQLITE cmake var is ON, which makes it try to build off the internal sqlite package that comes with sqlitecpp instead of the sqlite in sqlitelib-dev in Ubuntu.

Found the issue! I needed to put -lSQLiteCpp as the left-most library (see https://stackoverflow.com/a/409402)
This is what it looks like now:
g++ -g Main.cpp SQLConnector.cpp -std=c++11 -I sqlitecpp -L sqlitecpp -lSQLiteCpp -ldl -lpthread -lsqlite3 -o bin/Server -DSQLITE_USE_LEGACY_STRUCT

Thanks for the update!
For the second point, I should find a way to improve that! I am reopening the issue to track this.

Well, I am closing after closer review, this since there is nothing I can do here: you need to use CMake all the way to define the variable only on CMake and everything works as expected.
Your problem is you are not using CMake so you need to define every vars by yourself on your command line.


model is not deploying correctly not in local and not in azure

Error: Error communicating with OpenAI: HTTPSConnectionPool(host='myopenai.openai.azure.com', port=443): Max retries exceeded with url: /openai/deployments/davinci/completions?api-version=2022-12-01 (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:1002)')))

Please see the recommendations around SSL issues in the Troubleshooting section:
https://github.com/Azure-Samples/azure-search-openai-demo#troubleshooting


cli: add a note about submission key

nonce handling is assumed to be perfomed only by a single process
in the network. Otherwise, there may be two processes that signed
an extrinsic with the same nonce. This may lead to rejection
of one of the extrinsics.

[!WARNING]
This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
Learn more

#271  👈
#270
#269
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @pepyakin and the rest of your teammates on  Graphite


Refresh expired bearer token in drm access

Current behavior
I need to refresh my url (streaming video) periodically since it has a token that expires after some time.
I have already managed this flow (I ask the new url before it expires) but screen appears blank for about a second after url refreshing, probably caused by source reloading.
I also tried putting the token in the source header, but nothing.
Reproduction steps

Change source (same url with different token) while it plays

Expected behavior
The source must be changed without the user noticing the transition.
Platform

Android TV
tvOS

Version
5.2.0
Thanks to everyone!

It is expected that changing the url change playback.
For sure, you should use header to achieve that, but I don't know how to do it or if it is really possible...

@freeboub How can we refresh an access token if it expires mid-stream?
Currently I am providing the token by setting headers via source like this:
source={{
  uri: trackUri,
  headers: {
    Authorization: `Bearer ${accessToken}`,
  },
}}

But how can we refresh it on expiry? :thinking:

@falk-stefan unfortunately I don't have any solution for now ... I will reopen the ticket to track it, but as I don't have any way to reproduce the issue, I cannot investigate...
In terms of api I can do some suggestions if needed.

@freeboub I have a different use-case - I do not need to refresh the URL - but the Authorization header once a request reteurns HTTP 401 Token Expired.
It's not the same as what @danieldulcettiBN tries to do.

Yes, I agree but it is more or less the same use case.
The change would be to add a callback onAuthError. When this callback is called application would need to call another function api to refresh bearer token (or the url)

Hm, a more generic way would be to just return the full response on error and let the user do whatever is right.

You mean the onError callback should be enough. I think it makes sense. Another ticket exists about error code clean up, they should be linked then.
Something I am not sure about and should be experienced, about the timing, would JS be fast enough to renew a token fastly enough and provide to react native video to get a seemless renew ...

You mean the onError callback should be enough.
Alsmost. I'd probably call it onRequestError(url: string, request: RequestInit, response: Response): Promise<Response> - this way a caller can

<Video onRequestError={(url, req: , res) => {
    if (res.status === 401) {
      const apiError = res.json() as ApiError;
      if (apiError.code === 'auth/token-expired') {
        const newToken = refreshToken();
        req.headers = {
          ...req.headers,
          Authorization: `Bearer ${newToken}`,
        };
        return await fetch(url, req);
      }
    }
    return res;
  }} />

Yes I was thinking of something similar!

Something like this would be awesome. :)

We might want to change headers without it being an error, for example if the token comes with an expiry date (common with JWTs).
For example, hls.js gives a xhrSetup async method where you can edit the requests before they are sent.
I think just being able to change headers without resetting the source would be enough.
Users could then combine it with a custom onError handler that would refresh the token and retry if it got a 401/403 if they need to.

For android, the good implementation to do is detailed here: https://developer.android.com/media/media3/exoplayer/customization
See "Customizing server interactions" section, and "ResolvingDataSource" usage


Fix button links

:tada: This PR is included in version 1.8.2 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Mesh execution freezes when a plugin does request.clone()

Related: https://github.com/ardatan/graphql-mesh/pull/7318
@ardatan mentioned that this needs to be fixed, as it seems to be an issue.

Fixed in https://github.com/ardatan/whatwg-node/commit/1c5b8383ae7020a6c01494001f1a1334c7818f3c


wasm size

How to reduce the size of wasm and asmjs files, is there a description or documentation？
If only part of the api you are using can you comment out excess functionality to reduce volume？

There is no way to reduce code size further. Everything is required.

All right,thanks


⚠ eid has degraded performance

In 55acb3c, eid (https://eid.digitalservicebund.de/api/v1/health) experienced degraded performance:

HTTP code: 200
Response time: 3192 ms

Resolved: eid performance has improved in bc206af.


Add python-cjson

python-cjson is packaged for several distros and included in anyjson's list of parsers (albeit at the bottom), so I figured to test it. The test catches two crashes, which I'll report upstream.

Crashes filed: https://github.com/AGProjects/python-cjson/issues/1 and https://github.com/AGProjects/python-cjson/issues/2 .

Note that since I submitted this PR, upstream has fixed the detected crashes and released 1.2.1, that's probably what you'd get with a pip install cjson now. So maybe the description text should be updated.

Do you know which version was the one that I merged?

Well, https://pypi.python.org/pypi/python-cjson lists 2017-02-28 as the release date for 1.2.1, so if you merged yesterday, you ought to have gotten that version, I guess.


Cannot set Keypad, Mousepad and Mouse to Effect.None

Does the SDK itself supports passing NONE as the effect? I was under the impression this was some kind of placeholder enum member like the INVALID member.

Fixed in #44


'cmmn-js-properties-panel' is not in the npm registry

This might be temporary but I get the the following when doing npm install:
Registry returned 404 for GET on https://registry.npmjs.org/cmmn-js-properties-panel
Removing the dependency from package.json and doing npm install https://github.com/bpmn-io/cmmn-js-properties-panel fixes this, but grunt distro is unhappy with this manually installed dependency:
'npm ERR! extraneous<EMAIL_ADDRESS>/Users/michael/camunda/projects/camunda-modeler/node_modules/cmmn-js-properties-panel\n'

Yes, this is temporary. See attached commit for (temporary fix).


New route to add missing lang keys

For description see #15

made the requested changes but did not make the other things discussed in #15
Will continue tomorrow

I tried to review it but unfortunately I cannot see all the changes at once. Close this PR and make a new clean one with only one commit.
Thanks.

I will try to add the core <> app switch first and then create a new PR


Add Custom Grid

I need to add custom grid for multiple profile pictures view. Users should be able to reorder their profile pictures. But while doing this, I want to show the index and an icon in each slot on the grid. In addition, the following issue needs to be completed in order for this function to be fulfilled : #13

You can add custom background with Dashboard.slotBackgroundBuilder . Also you can clear all lines. #32


Feature: add option to disable tooltips

Description
Hi guys, I'm building new dashboards with dashboard 2 and so far looks very promising and beautiful. Thanks for doing great work, hope to be able to contribute as well.
I am deploying my dashboards to touch screens with enabled screen blanking and when I come back to tap the screen to wake up, I frequently tap a control that presents a tooltip. On the touch screen it does not look good (too small) and is hard to get rid of.
I'd prefer an option to disable the tooltip, or have the ability to override it with incoming msg so that I can disable it when not needed...
Not sure if the functionality is already available, did not find it in the docs.
If you point me in the right direction, I'd love to open a PR to address this.
Thanks Martin
Have you provided an initial effort estimate for this issue?
I am not a FlowFuse developer

For anybody looking to address this until the proper solution is ready, I was able to address this by adding a UI Scoped ui-template node with the following code:
<template>
</template>

<script>
    export default {
        mounted() {
          Chart.defaults.plugins.tooltip.enabled = false;
        },
    }
</script>

<style>
</style>


Add Pricing Doc to Services Page

There will soon be a Service PDF available. I think this could either be hosted on the main site, or assets. Either way, Robs has asked for this to be discoverable from okfn.org (somewhere on https://okfn.org/services/ I'm guessing). @adamamyl any preference on how or where this is found?

Not relevant


Create a workflow to sign Tableau Connector

Is your feature request related to a problem? Please describe
There is a connector for Tableau to connect to OpenSearch but it is complicated to install.
It'd be great if the connector was published on Tableau Marketplace as described in opensearch-project/sql-jdbc#26. To do so, the connector needs to be signed.
Describe the solution you'd like
A workflow that takes the TACO file generated by this workflow and signs it.
Describe alternatives you've considered
No response
Additional context
No response

[Triage] Hey @MaxKsyunz can you please add some more details, what type of signing is expected to be part of the workflow? Following is the link that shows the supported signing formats.
https://github.com/opensearch-project/opensearch-build#signing-artifacts

@prudhvigodithi according to documentation, it to be signed by jarsigner.
Can this be done by the build-signer?

@prudhvigodithi any updates on this one ?

can we test signing it with a jar signer and we can test with Tableau

Hey @MaxKsyunz and @anirudha the jarsigner is not in supported list of the signing formats.
Following are the action items to move forward:

Configure the jarsigner setup.
Incorporate the jarsigner to existing signing workflow.
Create/manage account with tableau marketplace.
Automation to incorporate with universal release mechanism.

@bbarani @dblock @peterzhuamazon @gaiksaya

Hey @MaxKsyunz and @anirudha can you please share the priority level for this Tableau Connector release? Like I see the steps on how to install, but agree that it makes easy if its part of Marketplace, based on the priority we can create an issue in this build repo and explore jarsigner setup along with having an account with Tableau Marketplace.
@bbarani

Tableau gallery is waiting on this for a while, whats the blocker or estimate here ?

@bbarani for adding a priority on this

@prudhvigodithi Can you list the next steps along with ballpark estimate on this issue?

Hey to begin the ask is to directly publish the tableau connector to the OpenSearch Website Download page, this would have a new entry under download section which says as Tableau Connector, the .taco file would have signature validation with .asc extension (similar to existing JDBC Driver under OpenSearch Website Download page).
Once its published to the website then the process to publish to Tableau Exchange marketplace is the next step, can you confirm this @anirudha @brijos ?
Following are steps to publish to the OpenSearch Website Download page

On board the tableau connector to universal release mechanism (Similar to existing sql-jdbc)
Based on tag, create a release and push to https://artifacts.opensearch.org/opensearch-clients/tableau/connector//<Taco_file>.
Update the documentation website for a user to choose the right version () and download the right connector (<Taco_file>). @krisfreedain is this possible form documentation end ? meaning a user should be able to choose a drop of version for individual components on the website and download the right version file, existing setup for individual components on the website is not supported.
@bbarani @gaiksaya @dblock

From my side, I need a link to the signed .taco file so that Tableau can begin their testing.

Echoing @prudhvigodithi comments, i believe we can provide the connector under Downloads section of opensearch.org which would be signed similar to how we are signing maven jars as of now, provide the .asc signature file to provide certain level of integrity to the file.
Meanwhile we can work on integration jarsigner with out opensearch-signer client or push wallaby to provide the feature. @prudhvigodithi @bbarani

@anirudha @brijos Integrating jarsigner with out opensearch-signer client is going to take some time since we are exploring multiple options. Can we move ahead with publishing the connector under Downloads along with .asc signature file ?

@bbarani @rishabh6788 sorry to tag you, but is there an update on the jarsigner?  I'm wondering if you have resolved the blockers yet.

@acarbonetto We are able to sign the Tableau connector successfully and we are currently validating it. @brijos @anirudha can provide additional details.

Closing this issue as jar signer used to sign .jar and .taco files is integrated with CI system. See above linked PRs

Jenkins job failed @gaiksaya:
https://build.ci.opensearch.org/blue/organizations/jenkins/sql-jdbc-release/detail/sql-jdbc-release/8/pipeline
2023-08-22 18:30:21 INFO     Executing "./opensearch-signer-client -i /var/jenkins/workspace/sql-jdbc-release/shadowJar/opensearch-sql-jdbc-shadow-<IP_ADDRESS>.jar -o /var/jenkins/workspace/sql-jdbc-release/shadowJar/opensearch-sql-jdbc-shadow-<IP_ADDRESS>.jar -p jar_signer -r True" in /tmp/tmp6autz76q/src
Using environment variable configuration.
Traceback (most recent call last):
  File "/tmp/tmp6autz76q/src/opensearch-signer-client.py", line 405, in <module>
    sign(source, target, platform, config_file, allow_output_overwrite)
  File "/tmp/tmp6autz76q/src/opensearch-signer-client.py", line 259, in sign
    sign_jar(source, target, config.signer_info_vars, allow_output_overwrite)
  File "/tmp/tmp6autz76q/src/opensearch-signer-client.py", line 222, in sign_jar
    signer_s3_client = get_signer_s3_session(role_arn, external_id)
  File "/tmp/tmp6autz76q/src/opensearch-signer-client.py", line 145, in get_signer_s3_session
    response = sts.assume_role(
  File "/tmp/tmp6autz76q/src/.venv/lib/python3.9/site-packages/botocore/client.py", line 535, in _api_call
    return self._make_api_call(operation_name, kwargs)
  File "/tmp/tmp6autz76q/src/.venv/lib/python3.9/site-packages/botocore/client.py", line 980, in _make_api_call
    raise error_class(parsed_response, operation_name)
botocore.exceptions.ClientError: An error occurred (AccessDenied) when calling the AssumeRole operation: User: arn:aws:sts::023816108377:assumed-role/OpenSearch-CI-AgentNodeRole/i-05b943cce40c7edbd is not authorized to perform: sts:AssumeRole on resource: ****
Traceback (most recent call last):
  File "/var/jenkins/workspace/sql-jdbc-release/opensearch-build/src/run_sign.py", line 35, in <module>
    sys.exit(main())
  File "/var/jenkins/workspace/sql-jdbc-release/opensearch-build/src/run_sign.py", line 30, in main
    sign.sign()
  File "/var/jenkins/workspace/sql-jdbc-release/opensearch-build/src/sign_workflow/sign_artifacts.py", line 41, in sign
    self.__sign__()
  File "/var/jenkins/workspace/sql-jdbc-release/opensearch-build/src/sign_workflow/sign_artifacts.py", line 83, in __sign__
    super().__sign_artifact__(artifacts, basename)
  File "/var/jenkins/workspace/sql-jdbc-release/opensearch-build/src/sign_workflow/sign_artifacts.py", line 48, in __sign_artifact__
    self.signer.sign_artifact(artifact, basepath, self.signature_type)
  File "/var/jenkins/workspace/sql-jdbc-release/opensearch-build/src/sign_workflow/signer.py", line 32, in sign_artifact
    self.generate_signature_and_verify(artifact, basepath, signature_type)
  File "/var/jenkins/workspace/sql-jdbc-release/opensearch-build/src/sign_workflow/signer_jar.py", line 25, in generate_signature_and_verify
    self.sign(artifact, basepath, signature_type)
  File "/var/jenkins/workspace/sql-jdbc-release/opensearch-build/src/sign_workflow/signer_jar.py", line 47, in sign
    self.git_repo.execute(" ".join(signing_cmd))
  File "/var/jenkins/workspace/sql-jdbc-release/opensearch-build/src/git/git_repository.py", line 85, in execute
    subprocess.check_call(command, cwd=cwd, shell=True)
  File "/usr/local/lib/python3.9/subprocess.py", line 373, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command './opensearch-signer-client -i /var/jenkins/workspace/sql-jdbc-release/shadowJar/opensearch-sql-jdbc-shadow-<IP_ADDRESS>.jar -o /var/jenkins/workspace/sql-jdbc-release/shadowJar/opensearch-sql-jdbc-shadow-<IP_ADDRESS>.jar -p jar_signer -r True' returned non-zero exit status 1.

script returned exit code 1

Looking into it! @Yury-Fridlyand

The run was succesful and shadow jar has been released using the workflow: https://build.ci.opensearch.org/view/Release/job/sql-jdbc-release/11/console
https://artifacts.opensearch.org/opensearch-clients/jdbc/opensearch-sql-jdbc-shadow-<IP_ADDRESS>.jar
Thanks!
Closing this issue!


When will the saved context expire?

It's quite convenient to allow saving the context to allow automated tasks. But I found that after a few days my tasks will fail and ask me to login again. It seems I can not find details about how long will the context last. Also, is it possible to change the expiration length? Frequent logins are not very easy for unattended tasks.

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: d3921cb5-d1cf-bd91-123a-64dd5ce45880
Version Independent ID: f641b6fa-c346-ad1d-65a6-793a4bedcbdf
Content: Persist Azure credentials across PowerShell sessions
Content Source: docs-conceptual/azps-2.2.0/context-persistence.md
GitHub Login: @sptramer
Microsoft Alias: sttramer

+1

@gadget1999 When contexts expire are controlled by your Azure Active Directory manager. The normal expiration period is every 90 days, but administrators can set this value to whatever they choose. You may also not have context autosave correctly configured. The context documentation was recently updated to make some of this information clearer.


Update README.md

Use correct URL for reference features,
Use real URI examples
Point to internetofwater/ref_gages/issues

Thanks!


refactor(pluginloader): move internalFilesList

Which problem is this PR solving?

Potential fix for #285
Related to #400

Short description of the changes
Draft PR for initial attempt at moving internalFilesList stuff to PluginLoader. Tests currently won't pass unless you provide absolute path to the grpc plugin in grpc.tests.ts due to #368.

Closing this since it seems to be due to an issue with internalFilesLoader

Does this suggest that we should move the Node-specific plugin config to a new package?
I wonder if that would be useful given that the browser environment plugins will look a bit different per https://github.com/open-telemetry/opentelemetry-js/issues/405


is_mixin type trait

I was working with the approach from this library and I found the following type trait to be useful. It might be worth including in your library if you agree:
template <typename T>
struct is_mixin {
 private:
  template <template <class> class... Mixins>
  static decltype(
      static_cast<const mixin<T, Mixins...>>(std::declval<T>()),
      std::true_type{})
  test(const mixin<T, Mixins...>&);

  static std::false_type test(...);

 public:
  static constexpr bool value =
      decltype(is_mixin::test(std::declval<T>()))::value;
};

template <typename T>
inline constexpr bool is_mixin_v = is_mixin<T>::value;

Usage:
template <typename Base>
struct A {
  CIABATTA_DEFAULT_MIXIN_CTOR(A, Base);
  int foo;
};
struct B : ciabatta::mixin<B, A> {};

static_assert(is_mixin_v<B>);
static_assert(!is_mixin_v<A>);

One other thing that I found useful was mixin_cast<>, which allowed upcasting a mixin class to a base class for a single mixin type:
namespace detail {

/** Base template to return the type of the base class of the mixin class for
 *  the given mixin type
 *
 *  \tparam Concrete  The concrete mixin class
 *  \tparam Mixins    Mixin to search fro and the list of mixins in \c Concrete
 */
template <typename Concrete, template <class> class... Mixins>
struct mixin_base {
  template <typename T>
  struct always_false {
    static constexpr bool value = false;
  };
  static_assert(
      always_false<Concrete>::value,
      "mixin_base called with a mixin that isn't in Concrete");
};

/** General (non-matched) search case for mixin_base
 *
 *  \tparam Concrete  The concrete mixin class
 *  \tparam Mixin     The mixin we are searching for
 *  \tparam First     The first mixin in the current mixin chain
 *  \tparam Mixins    The rest of the mixins in \c Concrete
 */
template <
    typename Concrete,
    template <class>
    class Mixin,
    template <class>
    class First,
    template <class>
    class... Mixins>
struct mixin_base<Concrete, Mixin, First, Mixins...>
    : mixin_base<Concrete, Mixin, Mixins...> {};

/** Base (matched) case for mixin_base
 *
 *  \tparam Concrete  The concrete mixin class
 *  \tparam Mixin     The mixin we are searching for
 *  \tparam Mixins    The rest of the mixins in \c Concrete
 */
template <
    typename Concrete,
    template <class>
    class Mixin,
    template <class>
    class... Mixins>
struct mixin_base<Concrete, Mixin, Mixin, Mixins...> {
  using type = mixin_impl<Concrete, Mixin, Mixins...>;
};
}

/** Metafunction for the base class of a concrete mixin class with the given
 *  mixin type.
 *
 *  \tparam Concrete  The concrete mixin class
 *  \tparam Mixin     The mixin for which we desire the base class
 */
template <typename Concrete, template <class> class Mixin>
struct mixin_base {
 private:
  template <template <class> class... Mixins>
  static decltype(
      static_cast<const mixin<Concrete, Mixins...>&>(std::declval<Concrete>()),
      typename detail::mixin_base<Concrete, Mixin, Mixins...>::type{})
  test(const mixin<Concrete, Mixins...>&);

 public:
  using type = decltype(mixin_base::test(std::declval<Concrete>()));
  static_assert(is_mixin_v<Concrete>, "Concrete must be a mixin");
};

/// Convenience alias for mixin_base
template <typename Concrete, template <class> class Mixin>
using mixin_base_t = typename mixin_base<Concrete, Mixin>::type;

/** Casts a concrete mixin class to a specific mixin base class
 *
 *  \tparam Concrete  The concrete mixin class
 *  \tparam Mixin     The mixin to which to cast
 *
 *  \param m  The mixin object to cast
 *
 *  \return The casted version of \c m
 */
template <template <class> class Mixin, typename Concrete>
constexpr decltype(auto) mixin_cast(const Concrete& m) {
  return static_cast<const mixin_base_t<Concrete, Mixin>&>(m);
}

/// \overload
template <template <class> class Mixin, typename Concrete>
constexpr decltype(auto) mixin_cast(Concrete& m) {
  return static_cast<mixin_base_t<Concrete, Mixin>&>(m);
}

It's not a perfect abstraction due to the inheritance chaining. As you can see in the usage below:
template <typename Base>
struct A : Base {
  D5HDF_DEFAULT_MIXIN_CTOR(A, Base);
  int a;
};

template <typename Base>
struct B : Base {
  D5HDF_DEFAULT_MIXIN_CTOR(B, Base);
  double b;
};

template <typename Base>
struct C : Base {
  D5HDF_DEFAULT_MIXIN_CTOR(C, Base);
  char c;
};

int main() {
  ABC x;
  mixin_cast<A>(x).a = 5;
  mixin_cast<B>(x).b = 4.5;
  mixin_cast<C>(x).c = 'a';
}

mixin_cast<A> can also access b and c, but mixin_cast<C> can't access a or b. However, I've found this useful for building up hierarchial I/O code where you can teach each mixin how to write itself and then dispatch code based on mixins that compose a concrete class.


We can already use the Carthage.

We can already use the Carthage.
github 'matthewpalmer/Regift' 'master'

But, I can use tag version in current setting.
@matthewpalmer Please run git tag command when this pull request is merged.

@nakajijapan I've just given you push access to the repo (I think—let me know if it doesn't work), happy for you to merge these PRs. Thanks for the contributions :+1:!

Oooooooooo! Thank you for allowing permission.
I will proceed with the procedures.


use different pooling library

Fixes #25
Fixes #19
Fixes #13

[x] Tests and linter pass
[x] Code coverage does not decrease (if any source code was changed)
[x] Appropriate docs were updated (if necessary)

@callmehiphop Can you please take a look at two failing tests:
1) should evict the sessions
2) should respect the min value

Any updates here?

@vkedia sorry, I was making the updates you had mentioned about switching a session state if we're unable to begin a transaction - it ended up being a little more in depth than I originally thought. But I think we should be good for a final review if you'd like to take another look.

Ok. This looks ok. Can you also do some manual testing to make sure that keep alives are being called, idle sessions are being closed etc etcYou can turn on grpc logging like I had mentioned in my  issue report and then see what all rpcs are being made.
You can do something like
min=1
maxIdle=2
max=5
keepAliveInterval = 5 minutes
Then you can create a database object and do not make any query. 1 session should still be created. After that you can send a burst of 5 queries in parallel, so 5 session should be created. Then do not do anything for a while. 3 sessions should be deleted. 2 sessions should always remain in the pool even if you are not doing anything and every 5 mintues keep alive should be sent on them.

Can we try to get this merged in next day or two?

@vkedia sure can, I just finished testing your plan and I'm happy to report everything functions as expected.

That is good to know. Thanks for testing this out.


PA Token Link should prefill perms

I don't actually think this is possible, but I have added a bit more info to the popup that should hopefully help.
If it turns out to be possible, please let me know