Proposed improvements to state store encryption

In what area(s)?
/area runtime
Describe the proposal
In #4260 we are proposing to make state store encryption a stable feature, as originally discussed in #1090. While reviewing the implementation of the feature, I would like to suggest a couple of areas of improvement before we consider the feature stable, which I believe would bring value to our customers.
Consider using a wrapped key to simplify key rotation
Currently, Dapr allows rotating keys by moving the primaryEncryptionKey to the secondaryEncryptionKey, and then setting a new primaryEncryptionKey. As per the documentation, data encrypted with the now-secondary key can still be retrieved and decrypted, but it is re-encrypted with the new key only if the application sets that.
The consequence of this is that if an operator wants to rotate a key, they cannot remove the now-secondary key until everything in the state store has been re-encrypted, and that's a responsibility of the application. For data that is long-living in the state store, that could take a long time (or possibly "forever").
A common solution to this problem is to not encrypt data directly with user-supplied keys, but rather to encrypt data with a random key that is then wrapped using the user-supplied key. When the user rotates their key, simply re-wrap the encryption key using the new user-supplied key.
Proposed design:
Assumptions:

UK1 is the "primary" encryption key provided by the user in the component's spec metadata
UK2 is the "secondary" encryption key provided by the user in the component's spec metadata
Enc(key, plaintext) is a symmetric cipher that encrypts plaintext with key returning ciphertext
Dec(key, ciphertext) decrypts the ciphertext using a symmetric key key and returns plaintext

How it works:

The first time that an application requests storing an encrypted value in a state store:

Generate a new key called K. This is randomly generated with a CSPRNG (crypto/rand in Go should suffice). Note that the key is specific to this state store, for this application.
Calculate the wrapped key, wrapping K using  UK1: WK = Enc(UK1, K)
Store WK in the state store (without any expiration) with a name that we define
Keep K in memory.

Every time an application requests storing or retrieving an encrypted value in a state store, make sure that K has been loaded if it's not already in memory:

Retrieve WK  from the state store
Compute K by un-wrapping WK using UK1: K = Dec(UK1, WK)
If step 2 failed and there's a UK2:

Try computing K by un-wrapping WK using UK2: K = Dec(UK2, WK)
If the above succeeded, update WK by re-wrapping it with UK1: WK = Enc(UK1, K) and store that value in the state store as the new WK

To encrypt data before storing it in the state store, use: encrypted_data = Enc(K, plaintext_data)
To decrypt data retrieved from the state store, use: plaintext_data = Dec(K, encrypted_data)

This way, if the user wants to rotate the keys, Dapr would need to re-encrypt only one item in the state store. The old key can then be removed shortly after.
Consider making the cipher configurable and defaulting to AES-128
Currently, state store encryption uses AES-256 as cipher, and that's not configurable. There was a conversation in #1090 about whether we should allow making the cipher configurable.
I propose we do, allowing AES-128, AES-192, and AES-256, and making AES-128 the new default.
Reasons why:

AES-128 is ~29% faster than AES-256 (AES-128 uses 10 rounds, while AES-256 uses 14 rounds). While AES is fast on most modern hardware (see below for a comment on this), accessing data in a state store is arguably a situation where performance does matter.
AES-128 provides essentially the same level of security as AES-256. While AES-256 does have a key that's twice as long, and so brute force attacks take the power of two the amount of time, in both cases the expected time to brute force a key is longer than the expected life of the Universe.

In practical terms, AES-128 should provide more than enough protection for our use case and for the foreseeable future (at least until very powerful quantum computers arrive, which is possibly decades away), while being faster.
Some reference here. Also, interesting to read on why 1Password did move from 128 to 256.

Note on cipher suites: a lot of applications are now migrating (or offering as an option) ChaCha20-Poly1305, which is a newer algorithm that provides the same level of security AES-256-GCM but is significantly faster when hardware acceleration is not available. This is also being used more and more for TLS. I don't believe we should be concerned with ChaCha20 for Dapr today: essentially all modern servers (where Dapr is expected to be used) have CPUs that include hardware-acceleration for AES, making AES faster than ChaCha20-Poly1305 on those systems today.
Lack of AES hardware acceleration is normally a problem for low-power and embedded devices, such as low-end phones or IoT devices, where running Dapr shouldn't be common.
However, a notable exception here is Raspberry Pi boards, since (at least until model 4), they do not have support for hardware-accelerated AES. I am not sure how many users are interested in running Dapr on RPi or how relevant that is.
For that reason, I don't think adding support for other ciphers besides AES in this part of Dapr is necessary today; however, if we already implement the ability to choose the cipher between AES-128/192/256, the additional effort of supporting ChaCha20-Poly1305 should be minimal.

CC: @yaron2 as discussed during the call this morning

Note that the key is specific to this state store, for this application.

Dapr supports sharing of state, meaning several apps can [share the same state[(https://docs.dapr.io/developing-applications/building-blocks/state-management/howto-share-state/) from the same state store. How does the proposed model work with that?

We can decide how the key is shared. The way keys would be shared (or not) depends just on what identifier we use to store the key in the state store. If we include the application name, we can limit it to an application; otherwise, we don't have to.
It's totally fine for the wrapped key to be public and stored in the state store, since it's wrapped and without knowledge of UK can't be decrypted.

When the user rotates their key, simply re-wrap the encryption key using the new user-supplied key.

In the event of a database record corruption where the WK is lost, how would an organization go decrypting existing data using an existing UK?

The first time that an application requests storing an encrypted value in a state store

How do you guarantee that two or more instances of the same app (or different apps targeting the same state store that has sharing enabled) do not create different WKs due to a race condition?

In the event of a database record corruption where the WK is lost, how would an organization go decrypting existing data using an existing UK?

Restore from backup. If we assume that records are most likely to be corrupted when they're written/updated, a WK should be read very frequently but written only when the UK is rotated. So this seems a fairly uncommon case.
Note that you only need to restore the WK from backup. And being something long-lived, you'll likely have a backup of that.
Also worth noting that key wrapping/unwrapping should be done with standard algorithms (ideally AES-KW as per RFC3394), so possession of WK and UK should allow an operator to retrieve K by leveraging the standard algorithms.

How do you guarantee that two or more instances of the same app (or different apps targeting the same state store that has sharing enabled) do not create different WKs due to a race condition?

This is a great question and it can actually happen when the key is rotated too.
Perhaps a possible solution could be to make the operation that stores WK fail if a WK is already existing (new WK) or if the WK was modified since it was retrieved (key rotation), then re-try the loop (or just crash the app and make it restart). Dapr's state stores should be able to do this already.
I'm open to suggestions on this.

Restore from backup

So this essentially requires the user to:

Create UK
If the database doesn't have backup: Watch the database for the first time a key is ever created (how? by who'm? by what means?), then backup the data manually
If the database has backup: Rely on the fact that the backup occurred before the data loss. (this is non-deterministic).
In the event of data loss: manually patch the database to rewrite the WK (a full backup and restore will create business related problems), and that needs coordination with running Dapr instances to NOT try and fetch state, because of the race condition that we are discussing

These error prone operational issues are a great concern for me, and a database data loss / record corruption for whatever reason doesn't seem to be an uncommon use case.

Perhaps a possible solution could be to make the operation that stores WK fail if a WK is already existing (new WK) or if the WK was modified since it was retrieved (key rotation), then re-try the loop (or just crash the app and make it restart). Dapr's state stores should be able to do this already.

Doing that would only allow the encryption feature to work on state stores that support First-Write-Wins (which a lot of them don't support).

On point 1,  I would like to highlight the delta with the current configuration.

Users are already required to generate UK, so first step doesn’t change.
Corruption of a record in a database is already a possibility and users should already be encouraged to perform backups regardless. You’re correctly highlighting that there’s an increased risk due to the case when WK is the only thing that gets corrupted, and that prevents reading any other data in the system. It should be treated like any other situation where the database fails IMHO.

On point 2, do you have any recommendation on how to address that issue? Three options come to my mind:

Actually restrict the encryption feature to stores that support First-Write-Wins
Allow any store, but for those that don’t support FWW, require storing the key in a different store that does
Store WK somewhere else entirely (where?)

It should be treated like any other situation where the database fails IMHO.

Actually, it should very much be treated differently than any other situation where the database fails. A database failure such as a restart, temporary network partition or disk failure, or even non encrypted data loss can result in a data recovery.
This situation, however, will result in a full loss of all data in the system.

Actually restrict the encryption feature to stores that support First-Write-Wins

To me, this is a no-go as a guiding principal in Dapr is to try and prevent fragmentation of features across components as much as possible.

Allow any store, but for those that don’t support FWW, require storing the key in a different store that do

This also calls into question the added operation overhead of maintaining two databases (at least!) just for sake of keeping the WK. Telling a user that they need two databases in order to encrypt data on one results in added operation complexity - this is something that Dapr tries to reduce.

Store WK somewhere else entirely (where?)

Same answer as above.
I don't have any recommendation to deal with these issues that satisfies me.

Can we agree that having the Cipher configurable is a no brainer and we should have that?
Also, can we agree that making the Cipher configurable is not a blocker to GA this feature?

I agree on both accounts.

For making the cipher configurable, are you with sticking to AES only, or is support for other ciphers (probably just ChaCha20-Pply1305) a requirement?
In the first case the implementation would be trivial: the right algorithm (AES-128/192/256) would be selected based on the key size (ie: 128-bit keys lead to AES-128). No further configuration changes would be needed.
In the latter, we'd need to introduce a new metadata key to choose the cipher.


not working with ruby 1.9

Invalid encoding error in rfc file.
May be just drop this gem in favor of https://github.com/balexand/email_validator ?

did the same, will see if the specs still run

Just use this one instead: https://github.com/balexand/email_validator


remove got from top-level dependencies

this version of got was already installed/used in package-json and wasn't imported anywhere in this project, as such this pr doesn't change the install/package size but removes it from package.json for deduplication purposes. also ran npm dedupe

thanks @SuperchupuDev. will include in the next release.


Could you please provide your pretrained model for validation soon？

Dear authors:
Hope this issue finds you well!
It seems that I can not get your results without your pretrained model. The url in the following figure is 'to.do', so I hope that the pretrained model will be seen soon.Thanks!

Hi,
We have updated the Readme.md and you can find the released checkpoint in it~


Optional chaining with type assertion is transpiled incorrectly when targetting es2020 or later

Describe the bug
Valid TypeScript expressions containing optional chaining with a type assertion inside parentheses on the left-hand side of an assignment are transpiled to invalid JavaScript when the target is set to es2020 or later.
Input code
(myValue.children?.children[0] as ChildType).value = 'My Value';

Config
{
  "jsc": {
    "parser": {
      "syntax": "typescript",
      "tsx": true
    },
    "transform": {
      "react": {
        "runtime": "automatic",
        "throwIfNamespace": true
      }
    },
    "target": "es2020",
    "loose": false,
    "minify": {
      "compress": false,
      "mangle": false
    }
  },
  "minify": false
}

Playground link
https://play.swc.rs/?version=1.3.18&code=H4sIAAAAAAAAA9PIrQxLzClN1UvOyMxJKUrNs4ezog1iFRKLFZxB3JDKglRNvTKQSgVbBXXfSgWwLnVrAOCeY6RAAAAA&config=H4sIAAAAAAAAA0WMQQ7CMAwE%2F%2BJzD1WP%2FQEX%2FmBFTgmKk8h2BFXF34mBittqd3YOuGuA9YCGoiSedC%2BGT1jB9kYaJDWDCUxHZdLpNbJg0ViFHRfCYJ%2FQiyWmccRuldFS8N9N6uMSr8ikDQP9JG5B2Wg8gXSZl3mwuVYdQMSsNAGnkuLu5lC5Can%2BJyxbPkl3ney3eAMFz4431QAAAA%3D%3D
Expected behavior
The expression is transpiled to valid JavaScript, as it is when targetting es2019 or older:
(myValue.children?.children[0] as ChildType).value = 'My Value';
becomes
 (_myValue_children = myValue.children) === null || _myValue_children === void 0 ? void 0 : _myValue_children.children[0].value = 'My Value';
Actual behavior
The type assertion and parentheses are simply stripped away, leaving an invalid statement with optional chaining on the left-hand side:
(myValue.children?.children[0] as ChildType).value = 'My Value';
becomes
myValue.children?.children[0].value = 'My Value';
Version
1.3.18
Additional context
No response

I'd say es2019 transpilation is incorrect too. In case when type is missing and parentheses are there it will lead to "cannot set props of undefined" - so for the case of empty children you have to receive "cannot set properties of undefined" error.
In fact using optional chaining as the left-hand side of assignment is ambiguous. You might have runtime error or syntax error depending on parentheses.


"Advanced" cannot be translated

Version 1.1.2 does not allow to translate "Advanced" (dropdown menu "Settings" in the admin panel).

Works! There went something wrong when testing something...


cargo-vibe: init at unstable 2022-12-29

Description of changes
Homepage: https://github.com/Shadlock0133/cargo-vibe

Things done

Built on platform(s)

[X] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[X] Tested basic functionality of all binary files (usually in ./result/bin/)
24.05 Release Notes (or backporting 23.05 and 23.11 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[X] Fits CONTRIBUTING.md.

Priorities
Add a :+1: reaction to pull requests you find important.

Result of nixpkgs-review pr 271283 run on aarch64-darwin 1

1 package built:

cargo-vibe


2.3.1

Ensuring a connection in an anonymous state has a consistent bindDN variable (#750)
Fix adding buffers like thumbnailPhoto in Active Directory (#754)
Fix modifying a really long DN (#753)

⚠ This issue has been locked due to age. If you have encountered a recent
problem that seems to be covered by this issue, please open a new issue.
Please include a minimal reproducible example
when opening a new issue.


Roadmap next leg

v1 is out 🚀!!!
v1 was essentially the MVP. Next leg emphasis is on improving already existing features and adding Stripe Elements and a Paystack integration.
Goals for next leg

[ ] Implement integration tests (https://github.com/chrisvdm/redwoodjs-stripe/issues/19)
[ ] Improve Schema and Services management (https://github.com/chrisvdm/redwoodjs-stripe/issues/117)
[x] Improve setup script
[ ] Write tutorial
[ ] Stripe Elements (https://github.com/chrisvdm/redwoodjs-stripe/issues/119)
[ ] Add /examples folder (https://github.com/chrisvdm/redwoodjs-stripe/issues/118)
[ ] Typescript support
[ ] Add Stripe Events DB Model on setup (https://github.com/chrisvdm/redwoodjs-stripe/issues/61)
[ ] Add more Stripe object crud functionality
[ ] Paystack integration (https://github.com/chrisvdm/redwoodjs-stripe/issues/85)
[ ] Rename to Redwoodjs-payments

Side-missions

Redwoodjs plugin template
Redwoodjs conference promotion for plugin (stickers?)
Attracting contributors

Hey @chrisvdm I will be using this package on my new saas project. If you need help one any of this work getting done I am happy to donate some time.


separate integration and doctests

cargo test runs now without error locally
integration tests should_create_test_db_with_a_complex_name is now really creating a database instead of catching the error
rust edition 2021

added explicit tokio dependency to prevent warning at https://deps.rs/crate/couch_rs/0.8.37


ninja teleporter sometimes breaks

Description

ninja teleporter may spontaneously stop working, can be used but snaps back shortly after teleporting (desync?)
as seen from client, shows (presumably, predicts) my character as if i did teleport and then snaps back
Reproduction

unknown: happened in lizard#41882
may have happened after a rejoin
Screenshots

none
Additional context

i summon @deltanedas

healer give time in replay

healer give time in replay

towards end of shift, i was west of bridge near window in maint, i think rejoining may have caused it

replay is trolling :candy: :probing_cane: so need actual repro


mssql jdbc agent supported?

from the project description, it mention mssql is supported, however, from the code, I didnt see there is agent for mssql.

Hi @zone1511
This is the plugin for mssql java driver.

understand, any plan to support microsoft offical jdbc driver?

Sounds like a good idea for 1.7.1!


chore(docs): svelte-kit version

暫定対応

ref #10

Codecov Report

Merging #11 (c9fa48a) into main (5e22817) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main      #11   +/-   ##
=======================================
  Coverage   97.34%   97.34%
=======================================
  Files          10       10
  Lines         188      188
  Branches       24       24
=======================================
  Hits          183      183
  Misses          5        5

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 5e22817...c9fa48a. Read the comment docs.


About the redirect url

i find that sometimes the url is very long and the corresponding redirect url stored in taskdb is short.
I want to know that if  the url stored in resultdb is the redirect url or not?
And when the scheduler judge the repeated url , which url is used? The long one or the redirect url?

response.url != response.orig_url, scheduler will use the url you submitted via self.crawl

if the scheduler works this way, i am a little worried that the same page maybe crawled several times as it has multiple urls....

To avoid the issue, you can use self.crawl(url, allow_redirects=False) and @catch_status_code_error to follow the redirects by your script and force it create a task with the first url.
The second url must be crawled once to know the url redirect to, it would be crawled several times, there is no way to improve.


WebSocketConnectionPtr send doesn't works all the times

I'm trying to send message to a specific WebSocketConnectionPtr after an HTTP request, but the message is not always really sent.

WebSocketConnectionPtr->connected() is true;
WebSocketController correctly receive message from that connection;
I checked WebSocketConnectionPtr address and are the same between calls;

This is how I manage a bridge between HttpController and WebSocketController:
class WSBridge{

public:
	static WSBridge& getInstance(){
	        static PubSubManager instance;
	        return instance;
        }

	~WSBridge();

	void addConnection(std::string id, drogon::WebSocketConnectionPtr wsConnection){
	        connections[id].push_back(wsConnection);
        }

	void removeConnection(std::string id, drogon::WebSocketConnectionPtr wsConnection){
                auto conns = connections[id];
                conns.erase(std::remove(conns.begin(), conns.end(), wsConnection), conns.end());
                if (conns.size() == 0) {
	                connections.erase(broadcaster_id);
                } else {
	                connections[id] = conns;
                }
        }

	void broadcast(std::string id, std::string message){
	        if (connections.find(id) != connections.end()) {
		        for (auto& connection : connections[id]) {
			        connection->send(message);
		        }
	        }
        }

private:
	explicit WSBridge();
	std::unordered_map<std::string, std::vector<drogon::WebSocketConnectionPtr>> connections;
};

I've first used drogon::PubSubService and the behaviour is the same, so I moved to unordered_map, maybe I rewrite PubSubService logics.
Adding connection in handleNewConnection with PubSubManager::getInstance().addConnection(id, wsConnPtr);
Sending message with PubSubManager::getInstance().broadcast(id, "A MSG");
Expected behavior
Receiving always messages on broadcast calls
Additional context
Sometimes I need to restart drogon once and reconnect the WS clients to correctly receive message, sometimes even after 2 or 3 tries it doens't work.
It seems like the bugged WebSocketConnectionPtr is not properly connected, indeed when this behaviour occurs and shutdown drogon the WS is still "connected" and is not true, the one it works properly disconnect as soon I shutdown drogon
Tesing on Windows 10 with Postman client and drogon server on windows too

@TheEnigmist Thanks for your feedback. Have you tried the following example?
https://github.com/drogonframework/drogon/tree/master/examples/websocket_server

Yes I tested with this example and this behaviour appears.
I made some edit, thinking that the problem could be the static singleton class I moved everything in the WebSocketController and followed the example using a PubSubService. Than I added HttpController as subclass other than WebSocketController, so I can send message on a Post message.
Again if a client connects to the websocket sometimes it works liek a charm and sometimes it doesn't receive messages and trying to disconnecting it stuck in a "Disconnecting" state.
This is a base sample test class:
`struct Subscriber {
std::string id;
drogon::SubscriberID sub_id;
};
class TestClass: public WebSocketController<TestClass>, public HttpController<TestClass> {
public:

	WS_PATH_LIST_BEGIN
		WS_PATH_ADD("/", Get,);
		ADD_METHOD_TO(TestClass::sendMsg, "/{1}", Post);
	WS_PATH_LIST_END

	void handleNewMessage(const WebSocketConnectionPtr&, std::string&&, const WebSocketMessageType&) override{
		auto& s = wsConnPtr->getContextRef<Subscriber>();
		if (type == WebSocketMessageType::Text) {
			LOG_INFO << "WS " << s.id << " says: " << message;
		}
	}

	void handleNewConnection(const HttpRequestPtr&, const WebSocketConnectionPtr&) override {
		auto id = req->getParameter("id");
		Subscriber s;
		s.id = id;
		s.sub_id = connections.subscribe(id, [wsConnPtr](const std::string& topic, const std::string& message) {
			(void)topic;
			wsConnPtr->send(message);
		});
		wsConnPtr->setContext(std::make_shared<Subscriber>(std::move(s)));

	}
	void handleConnectionClosed(const WebSocketConnectionPtr&) override{
		auto& s = wsConnPtr->getContextRef<Subscriber>();
		connections.unsubscribe(s.id, s.sub_id);
	}

	void sendMsg(const HttpRequestPtr& req,std::function<void(const HttpResponsePtr&)>&& callback,int64_t id){
		connections.publish(std::to_string(id), "TEST");
		Json::Value ret;
		HttpResponsePtr resp;
		ret["message"] = "OK";
		resp = HttpResponse::newHttpJsonResponse(ret);
		resp->setStatusCode(k200OK);
		callback(resp);
	}

private:
	PubSubService<std::string> connections;
};

Hope you can replicate this error


Fix header paths in Sample/template Xcode project to make a fresh project build again

Fixed #2454. Verified by patching in the GitHub react-native into a new project's node_modules, deleting all other project artifacts except for package.json, and then re-generating the project artifacts using
node -e "var cli = require('./node_modules/react-native/cli'); cli.init('.', 'BlablaApp');"

:+1:

Looks good. Do you want me to cherry pick this into 0.10-stable and publish 0.10.1? Or should this get merged into master and 0.11-stable as well?

Just 0.10-stable. Master and 0.11-stable are fine. If you press the big green button, it should do the right thing, I selected 0.10-stable as the target branch :)

If you press the big green button, it should do the right thing, I selected 0.10-stable as the target branch :)

Super -- merging now.

it's amazing!


Distinguish between multiple sets of values for a multiple, min_values arg

Rust Version
rustc 1.19.0 (0ade33941 2017-07-17)
Affected Version of clap
clap 2.25.0
Expected Behavior Summary
It would be nice to be able to distinguish between -a A B C D E and -a A B -a C D E, where -a is an arg with min_values(2) and multiple(true).
From clap::Arg::min_values

NOTE: This does not implicitly set Arg::multiple(true). This is because -o val -o val is multiple occurrences but a single value and -o val1 val2 is a single occurence with multiple values.

This seems to imply that such a distinction is already possible. But the test option_min_exact demonstrates exactly the opposite behaviour.
A toy example of where this might be useful is a backup program. It might allow users to backup files to multiple "targets", for example, with common settings specified once. An invocation might look like:
backup -s server -u user -target target1 file1 file2 file3 -target target2 file4 file5 file6 file7 -target target3 file8
Currently there seems to be no way to determine that target1, target2, and target3 appeared immediately after -target. All we know is that there are three targets (occurrences_of("target")), but values_of("target") will just iterate over target1 file1 file2 file3 target2 file4 file5 file6 file7 target3 file8

hmm, perhaps adding a new setting that allows grouping values? So when iterating these values it'd be:
["arget1 file1 file2 file3", "target2 file4 file5 file6 file7", "target3 file8"]

I like the idea of adding an option to enable grouping.
[["target1", "file1", "file2", "file3"], ["target2", "file4", "file5", "file6", "file7"], ["target3", "file8"]] would be perfect, just because that would require less processing on the app side. Otherwise the app authors would have to shell split the strings to get individual arguments.

I don't think we could do a Vec<Vec<&str>> in a non-breaking way just do to the signature of ArgMatches::values_of, however in user code one could do:
// values are: ["arget1 file1 file2 file3", "target2 file4 file5 file6 file7", "target3 file8"]
let vals: Vec<Vec<_>> = m.values_of("arg").map(|v| v.split(" ").collect()).collect();
// Now: [["arget1", "file1",  "file2", file3"], ["target2", "file4", "file5", "file6", "file7"], ["target3", "file8"]]

Granted, I just typed that off the top of my head, so some tweaks may  be required to make it compile

I assumed you were talking about adding ArgMatches::grouped_values_of or something similar.
Splitting on " " is not ideal because it will then prevent user code from being able to handle arguments that themselves contain spaces, since that information will be lost. Or it will require some weird form of escaping to distinguish between spaces used to join arguments and spaces already present in the arguments.

Splitting on " " is just an example, and would be determined by the user. My point being, I don't think adding a ArgMatches::grouped_values_of would be easy because of the internal structure of matched values.
This isn't to say it's not possible, just that it'd be kind of a hacky solution (from the implementation point of view).
Personally I'd be more inclined to change the CLI slightly instead of using a single option for two purposes (targets and data).
I'll leave this open on the issue tracker for reference once I get a few more of the issues knocked out. This might also be easier to implement on the 3.x branch where the code is cleaner.

I have a use case where I want an argument that can take either two or three arguments. Specifically, it must have a timeout (in seconds) and a command to run on the timeout and possibly another command to run when another event happens after the timeout. (and this can be provided multiple times)
I'm not necessarily opposed to using a different scheme for the options, but I'm not sure of a good way to do that without making the interface awkward. Solutions I have considered:

Using a delimeter: since the arguments are shell commands, the arguments could contain basically any character, besides having to split the argument myself, I would have to implement some kind of escape mechanism.
Use separate options for the first and second commands, but the option for the second command must appear immediately after the first option. However, it isn't clear to me how to implement this constraint with clap. I would probably need to do something with the indices of the arguments, which seems fairly complicated and brittle.
Use a separate option for the second command that also requires a timeout that means "run this command if we got an event after the timeout triggered". This would be straightforward to implement, but IMO a confusing interface for the user.

I have the following use case: I need to support "localized" string values on the command line.
A LocalizedString can either be:

a single not-localized String value
a set of (language tag, localized string) values in a Map

pub enum LocalizedString {
    String(String),
    Map(Map<String, String>),
}

so the following are possible:
$ cli --label my-not-localized-label

$ cli --label 'fr_FR:défaut' 'en_US:defect'

It works fine. The problem arise when I want to set multiple: true to describe a collection of LocalizedString. This does not work as expected:
$ cli --option 'fr_FR:mon option 1' 'en_US:my option 1` \
    --option 'fr_FR:mon option 2' 'en_US:my option 2`

The goal would be to end up with this:
[
  {
    "fr_FR": "mon option 1",
    "en_US": "my option 1",
  },
  {
    "fr_FR": "mon option 2",
    "en_US": "my option 2",
  }
]

But the option match using clap will be a single Vec containing ["fr_FR:mon option 1", "en_US:my option 1", "fr_FR:mon option 2", "en_US:my option 2". And IMHO it's then pretty much impossible to handle validation and proper handling.
I would expect to be able to declare that multiple occurrences of a specific option would be differentiable after the match.

In fd, we also have a use case for this: We have a --exec/-x option that takes a "command" in the form of multiple values, such that users do not have to add quotes and we do not have to shell-split it:
fd … --exec sed -i -e 's/foo/bar/g'

            \_____________________/

          four values passed to `--exec`

We would now like to allow users to execute several commands:
fd … --exec echo "Replacing foo with bar in {}" \
     --exec sed -i -e 's/foo/bar/g'

However, with the limitation described in this ticket, I don't see a way to split these six values into two groups (of two and four values).

We will be definitely fixing this before 3.0 is out. This is one of the highest priority issue IMO.

@pksunkara any update on this? Thanks 3000!

Nothing yet. Still working on some other stuff first.

I'm working on it, but I'm as well working on other stuff concurrently  (clap book, sane global args representation, sane default values, some groups bugs) so don't expect it to be dealt with soon.


Submitting only RSVP or Handle gives a 422

When you submit your RSVP or Handle, you get a 422 until you have populated both.

And from another user


Fail to reproduce results from paper

Hi, thanks for open-sourcing your work! I've been trying to reproduce the results from your paper, but the accuracy I got is pretty low. (For game of 24, it's only 3%). Could you point out any potential errors I might be making? Thanks!
This is the script for Game of 24, and I changed the model to GPT-4 and removed max_num.
for task in "GameOf24"
do
python run_experiments.py \
    --task_name ${task} \
    --meta_config_path prompts/meta-v0-2023-08-14-baseline.json \
    --output_directory TEST-CHATGPT-META-PROMPTING-WITH-PYTHON \
    --temperature 0.1 \
    --include_expert_name_in_instruction \
    --question_prefix_or_path prompts/meta-prompting-instruction.txt \
    --model_name "gpt-4-32k" \
    --fresh_eyes
done

Hi @sophia1488, thank you very much for reaching out! That is indeed a rather low accuracy score; if it's not too much trouble, could you please share your model outputs with me either in this thread or, preferably, via email?

Sure, I just sent you via email. Thanks a lot!

Sure, I just sent you via email. Thanks a lot!

Did you find the reason for this? I can't reproduce the result.

Hi @zhihui-shao, I can get similar results for most of the tasks, except for Game of 24 & Sonnet Writing.  I manually checked every instance for Game of 24, and the accuracy I got is 23%, though still a bit far from the reported 67%.


Need sessionsInvolved Getter

Need function that client can use to know which claims they’re invovled with based on state: returns all bonded deposits in all claims?

This needs to be more specific. "They" could be either claimant or challenger


Added Gravitational Formulas

Fixes: #32
Describe the changes you've made
Added Below Formulas :
Gravitational_Force
Gravitational_Acceleration
Gravitational_Acceleration For Satellite
Orbital_Velocity
Escape_Velocity

@Hiteshsukhwani29 may I know what exactly have u done??

@Hiteshsukhwani29 may I know what exactly have u done??

As there was no component named classical mechanics. So i had created functions to calculate Gravitational Force, Acceleration, etc

@Hiteshsukhwani29 what I wanted was ,on clicking classical mechanics it should open a contents page where there would be different topic names. Then on clicking the topic name a page should open where there is some content with images and then below it the calculator.

If you had a doubt or if u were facing difficulty then u should have asked me. Because in ur PR there are just 4 formula.

@Hiteshsukhwani29 what I wanted was ,on clicking classical mechanics it should open a contents page where there would be different topic names. Then on clicking the topic name a page should open where there is some content with images and then below it the calculator.

Sorry, I misunderstood the issue
I will work on it

@Hiteshsukhwani29 ok any doubts ask me on slack.


K-music doesn't display song metadata on the car dashboard

I have connected my Alcatel Flip 3 to my Honda Accord's music system through Blue Tooth. The car's display only has "unknown artist" and "unknown track". Can k-music transmit the song's meta data? -Brendan

K-Music not implement Bluetooth functionality
Edit: bluetooth require certified permission

K-Music not implement Bluetooth functionality
Edit: bluetooth require certified permission


Payment Support

SDK should support attaching payment fees to credentials.
TODO: Add more details

I saw that you are working on this @tmarkovski on your own chain. I'm thinking we should be caching account balances in the wallet using something like the protocol state records. This would significantly reduce the number of reads necessary to the ledger. Last I was working on the project, we had to do a delayed poll (30 seconds) in order to see that the transaction went through as well as to get a current state of UTXOs when we want to make a new xfer. I'm hoping that they changed this sense so that the ledger will return balance on xfer, but I haven't dug into it. What's your current thinking on managing UTXOs related to payments?

@kdenhartog I don't know exactly, I am just getting into the implementation and really learning about this. You ask a very good question. Since we already keep a record of the generated address, we could potentially store the utxo sources as well and use that data to make future payments, instead retrieving them again. I don't see any issues with this approach, unless an address is used simultaneously from different wallets (deterministic address), but this is really an edge case.
Is caching utxo's generally the recommended approach? What about caching time?

Also, what your thoughts on address per pairwise connection vs per wallet or on demand (user controlled)

I think we'll have to do it on a per wallet basis for now. The disadvantages of using a per wallet address though is that private keys associated to an address are only stored on a single. This makes for a poor UX, so we'll need to dig deeper into storage and sync to see how we may be able to alleviate this.
From a privacy standpoint per pairwise connection would be ideal, but often is not possible. This is because the UTXO get registered to a specific address and if Alice receives funds from Bob, and then wants to send them to Carol. The only way to make this pairwise is if Alice transfers between her own two addresses. However, this doesn't alleviate the privacy concerns because all transactions are recorded on ledgers. Additionally it burdens Alice with a transaction fee to transfer money to herself.
As for caching, I don't believe there's been much thinking on the subject, but I suspect that it's going to end up the best approach. From what I remember in how the ledger works though, polling created a huge load on the ledger, so being able to cache UTXOs would help reduce the ledger burden.
Regarding cache timing I think that the best way to handle this is to cache indefinitely and if a cache miss occurs to do a read transaction from the ledger for all associated UTXOs by address. This would be for the sender. For the receiver, the sender needs to be able to communicate that a payment has occurred and then the receiver needs to perform a read transaction to get all associated UTXOs by address.


Wrap jQuery call in DOMContentLoaded event listener on account email page

Description

Fix error occurred while loading jQuery with defer and call it but didn't wait for the whole package downloaded.
Checklist:

[X] I've made sure that tests/test_cookiecutter_generation.py is updated accordingly (especially if adding or updating a template option)
[X] I've updated the documentation or confirm that my change doesn't require any updates

Rationale
The line $('.form-group').removeClass('row'); is not executable, because at that moment $ is not defined,  unless wrap it in DOMContentLoaded

Thanks for the fix!


upgrade org.json jar due to licensing problems

What is this PR for?
See ZEPPELIN-5996
What type of PR is it?
Bug Fix
Todos

[ ] - Task

What is the Jira issue?

ZEPPELIN-5996

How should this be tested?

Strongly recommended: add automated unit tests for any new or changed behavior
Outline any manual steps to test the PR here.

Screenshots (if appropriate)
Questions:

Does the license files need to update?
Is there breaking changes for older versions?
Does this needs documentation?

Don't we have to update the LICENSE file?

Don't we have to update the LICENSE file?

I've just updated zeppelin-distribution/src/bin_license/LICENSE

@Reamer @jongyoul could this PR be merged? Zeppelin is breaking ASF rules by using a Category X dependency.


rnv run -p web -r --port - WARNING: Another web server at port 4300 already running

Describe the bug
Regardless which port I choose for the web platform with --port it says Another web server at port X already running and then eventually stops with:
? It will be used for this session. Continue? Yes
$ rnv run -p web -r --port 4300 - _runWebBrowser:web:<IP_ADDRESS>:4300:true - Starting!
$ rnv run -p web -r --port 4300 - waitForWebpack:4300 - Starting!
$ rnv run -p web -r --port 4300 - getConfigProp:web:webpackConfig:[object Object]
⚠  $ rnv run -p web -r --port 4300 - WARNING: Can't connect to webpack. Try restarting it.

To Reproduce
Steps to reproduce the behavior:

Run command rnv run -p web -r --port X
See error

Desktop (please complete the following information):

OS: macOS Catalina
Node Version v10.18.0
RNV Version v0.28.17

Just want to say, you're KILLING IT, SON!  You got this!


Client: ConnectAsync not connecting Android Maui while in Windows connect

The mqttclient throws (Socket Exception: Connection refused) exception on Connecting to mqtt broker while it can connect on Windows version of same app.
The same issue happens on the Emulator and also a regular device
Stack Trace
MQTTnet.Exceptions.MqttCommunicationException: Error while connecting with host '<IP_ADDRESS>:1833'.
 ---> System.Net.Sockets.SocketException (111): Connection refused
   at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error, CancellationToken cancellationToken)
   at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.System.Threading.Tasks.Sources.IValueTaskSource.GetResult(Int16 token)
   at System.Net.Sockets.Socket.<ConnectAsync>g__WaitForConnectWithCancellation|281_0(AwaitableSocketAsyncEventArgs saea, ValueTask connectTask, CancellationToken cancellationToken)
   at MQTTnet.Implementations.CrossPlatformSocket.ConnectAsync(String host, Int32 port, CancellationToken cancellationToken)
   --- End of inner exception stack trace ---
   at MQTTnet.Implementations.CrossPlatformSocket.ConnectAsync(String host, Int32 port, CancellationToken cancellationToken)
   at MQTTnet.Implementations.MqttTcpChannel.ConnectAsync(CancellationToken cancellationToken)
   at MQTTnet.Adapter.MqttChannelAdapter.ConnectAsync(CancellationToken cancellationToken)
   at MQTTnet.Client.MqttClient.ConnectInternal(IMqttChannelAdapter channelAdapter, CancellationToken cancellationToken)
   at MQTTnet.Client.MqttClient.ConnectAsync(MqttClientOptions options, CancellationToken cancellationToken)
   at MQTTnet.Client.MqttClient.ConnectAsync(MqttClientOptions options, CancellationToken cancellationToken)
   at IoTunnel.Client.Infrastructure.Mqtt.MQTTBase.CheckConnectivity() in D:\Projects\IoTunnel\IoTunnel.ConnectivityHub\src\IoTunnel.Client.Infrastructure.Mqtt\MQTTBase.cs:line 35
   at IoTunnel.Client.Infrastructure.Mqtt.MQTTProducer.<Produce>d__1`1[[IoTunnel.Protos.Models.DeviceConfig, IoTunnel.Protos, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=null]].MoveNext() in D:\Projects\IoTunnel\IoTunnel.ConnectivityHub\src\IoTunnel.Client.Infrastructure.Mqtt\MQTTProducer.cs:line 16
   at IoTunnel.App.Pages.Testing.MqttTestingComponent.ProduceMessage() in D:\Projects\IoTunnel\IoTunnel.ConnectivityHub\src\IoTunnel.App\Pages\Testing\MqttTestingComponent.razor:line 80

This is probably more a topic for the MAUI Team because we just use Sockets from the .NET Framework and have little to no platform dependant code (UWP only).
Which platform does not work? Android or iOS?


Provide transactional and user account way to disable all HEDA Triggers

Already implemented in NPSP: https://github.com/SalesforceFoundation/Cumulus/issues/2525

**lurch: add

Tracking W-018936

@ceiroa did you mean disable all HEDA triggers?

Sorry, yes. Copy+paste and all. ;-)

This issue is no longer being considered by the product team.


Vulnerable dependency is used

Hi,
based on the dependencies of the latest stable version, there is a dependency that have public known vulnerability:
https://mvnrepository.com/artifact/io.rest-assured/rest-assured/4.3.3
httpclient-4.5.3.jar -> CVE-2020-13956
dependency-check tool can be used to detect vulnerable dependencies:
https://owasp.org/www-project-dependency-check/

I think this is addressed by https://github.com/rest-assured/rest-assured/pull/1434.

No it is solved in #1434. To solve this, it requires httpclient's release 4.5.14 or higher


[v0.11.0] Only publish the readme and service config file when publishing a service

Proposed changes
This PR updates the autonomy publish command to only publish the required files
Fixes
If it fixes a bug or resolves a feature request, be sure to link to that issue.
Types of changes
What types of changes does your code introduce? (A breaking change is a fix or feature that would cause existing functionality and APIs to not work as expected.)
Put an x in the box that applies

[ ] Non-breaking fix (non-breaking change which fixes an issue)
[ ] Breaking fix (breaking change which fixes an issue)
[ ] Non-breaking feature (non-breaking change which adds functionality)
[ ] Breaking feature (breaking change which adds functionality)
[ ] Refactor (non-breaking change which changes implementation)
[ ] Messy (mixture of the above - requires explanation!)

Checklist
Put an x in the boxes that apply.

[ ] I have read the CONTRIBUTING doc
[ ] I am making a pull request against the main branch (left side). Also you should start your branch off our main.
[ ] Lint and unit tests pass locally with my changes
[ ] I have added tests that prove my fix is effective or that my feature works
[ ] I have locally run services that could be impacted and they do not present failures derived from my changes

cc @dagacha
Please consider if this is a breaking change due to my comment above. That is, the fact that README.md is now mandatory in all packaes, and an exception will be thrown otherwise.


option to delete the file

currently delete will only darken the image, mark for future deletion from the database.
ctrl+delete only deleted from the database.
there is no delete file. alt and delete are close enough together that they could work.

There is a "tab" called Recycle bin.  All images tagged for deletion are placed there.  The idea is that it is faster UI-wise to tag multiple images for deletion while browsing through them, then press Edit > Empty Recycle Bin.
This is mentioned in the documentation.

Regardless of whether you keep this in-between workflow or not, I think it's better to move to recycle bin instead of permanent delete because it respects the OS behavior.
Interesting that delete to recycle bin is more complicated code, it looks like a simple move to folder operation.


Link for getting started guide in README.rst is broken

In README.rst file the link for Getting Started guide is broken. This should be replaced with this link

yes, I have pointed it out to @eliasdorneles, he told he will fix it soon.

Can I fix the link and submit a PR?

I think the best solution is to add redirects, because there are other places pointing to these links.
I don't have the proper permissions to add page redirects in ReadTheDocs for VOC -- maybe @glasnt @freakboy3742 can have a look?
We'll need it like:
Type: Page Redirect
From URL: /intro/getting-started.html
To URL: /intro/index.html

Redirects would be overkill here; yes, we need to update the links on most BeeWare project READMEs, but just updating the link should be enough.

Well, there are links in the Wiki also: https://github.com/pybee/voc/wiki/Your-first-VOC-contribution


ndjson file conversion support

We currently benchmark ndjson file reading, which requires converting a dataframe to an ndjson file, which can be either uncompressed (.json) or gzipped (.json.gz). Nulls should be explicit, i.e. ..., "col3": null, ....

We miiiight defer this one from MVP. It's cool that we have this benchmark, but if it's not operational for a little bit while we get datalogistik in, that would be ok by me.

We may need to use another library to write ndjson, because pyarrow does not support writing ndjson...


refactor providers operator installation

refactor providers operator installation, to make more generic
Description

Verification Steps

Type of change

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)

Checklist (Definition of Done)

[ ] All acceptance criteria specified in JIRA or in issue number have been completed
[ ] Unit tests added that prove the fix is effective or the feature works
[ ] Documentation added for the feature
[ ] all relevant tests are passing
[ ] Code Review completed
[ ] Verified independently by reviewer

lgtm

@tchughesiv can you take another look, I have refactored further based on comments from jianrong. Thanks


Broken Link

Broken link: https://docs.substrate.io/assets/tutorials/ink-workshop/erc-template-lib-0.rs/ from this tutorial https://docs.substrate.io/tutorials/smart-contracts/erc20-token/

I think this is fixed now.


Add Simple Agent example

This PR is purely a documentation / examples change:

Move test-site into examples/ and rename to test-dashboard
Add a simple-agent example with a README

@frankhinek is the term "agent" to be used instead of server now?

I would still distinguish the two,, because an agent has keys and isn't necessarily an HTTP server, while a server is and doesn't have the user's keys.

ah - thanks @csuwildcat that makes sense


Add .travis.yml

Enable this repository at https://travis-ci.org/profile/choonkeat, then I will push again to see if tests are green. Depend on #4 because travis will run rake by default.

travis

Yea!


chore(k8s): update rbac version to v1

Signed-off-by: shubham<EMAIL_ADDRESS>Why is this PR required? What issue does it fix?:
With k8s v1.22 the v1beta1 for various resources will no longer be supported. This PR updates the rbac version to v1.
Does this PR require any upgrade changes?: No
If the changes in this PR are manually verified, list down the scenarios covered::
Manually verified the control plane upgrade and it works fine.
Any additional information for your reviewer? :
Mention if this PR is part of any design or a continuation of previous PRs
Checklist:

[ ] Fixes #
[ ] PR Title follows the convention of  <type>(<scope>): <subject>
[ ] Has the change log section been updated?
[ ] Commit has unit tests
[ ] Commit has integration tests
[ ] (Optional) Are upgrade changes included in this PR? If not, mention the issue/PR to track:
[ ] (Optional) If documentation changes are required, which issue on https://github.com/openebs/openebs-docs is used to track them:

Codecov Report

Merging #17 (66ec1ef) into develop (c98389c) will increase coverage by 1.02%.
The diff coverage is 48.45%.

@@             Coverage Diff             @@
##           develop      #17      +/-   ##
===========================================
+ Coverage    47.44%   48.46%   +1.02%
===========================================
  Files           16       18       +2
  Lines         1524     1595      +71
===========================================
+ Hits           723      773      +50
- Misses         763      778      +15
- Partials        38       44       +6

Impacted Files
Coverage Δ

...kg/kubernetes/api/apps/v1/deployment/kubernetes.go
0.00% <0.00%> (ø)

...ubernetes/api/apps/v1/deployment/rollout_status.go
0.00% <0.00%> (ø)

pkg/kubernetes/api/core/v1/volume/volume.go
0.00% <0.00%> (ø)

...s/api/core/v1/persistentvolume/persistentvolume.go
7.50% <7.50%> (ø)

...tes/api/core/v1/podtemplatespec/podtemplatespec.go
42.60% <42.60%> (ø)

pkg/kubernetes/api/core/v1/volume/build.go
44.44% <44.44%> (ø)

pkg/kubernetes/api/core/v1/container/container.go
45.08% <45.08%> (ø)

...kg/kubernetes/api/apps/v1/deployment/deployment.go
49.31% <50.00%> (-0.23%)
:arrow_down:

...bernetes/api/core/v1/persistentvolume/buildlist.go
50.00% <50.00%> (ø)

.../v1/persistentvolumeclaim/persistentvolumeclaim.go
50.00% <50.00%> (ø)

... and 10 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update a653ae9...66ec1ef. Read the comment docs.


Call to undefined method ScoutElastic\ElasticEngine::executeSearchRequest()

$searchResult = Site::fuzzySearch()
            ->field('address')
            ->value('test')
            ->execute();
dd($searchResult);

php 8.0.6
laravel 8.49.2
babenkoivan/elastic-scout-driver-plus v2.3.0
babenkoivan/scout-elasticsearch-driver v4.3.0

RESULT
Error: Call to undefined method ScoutElastic\ElasticEngine::executeSearchRequest() in file /www/wwwroot/charger-search-backend/vendor/babenkoivan/elastic-scout-driver-plus/src/Builders/SearchRequestBuilder.php on line 322

Me too:
return User::matchSearch()
    ->source(['phone', 'first_name', 'last_name'])
    ->operator('AND')
    ->query($query)
    ->paginate(50);

Result:
Call to undefined method ElasticScoutDriver\\Engine::executeSearchRequest()

@andrey-helldar Do you have "babenkoivan/scout-elasticsearch-driver" package in the composer.json?

@JieAnthony, no, there is only:
"babenkoivan/elastic-migrations": "^1.6",
"babenkoivan/elastic-scout-driver-plus": "^2.3",

In my case, the error was that the auto-discover did not work. I am using Lumen.

@andrey-helldar
i am using Laravel.
It will work when I delete the "babenkoivan/scout-elasticsearch-driver" package, I hope it can help you

@andrey-helldar Do you have "babenkoivan/scout-elasticsearch-driver" package in the composer.json?

Hello! I have same issue, but this package installed in composer.json.
"Call to undefined method ScoutElastic\ElasticEngine::executeSearchRequest()"
Maybe I need switch search engine? With elastic-scout-driver all work fine, but with elastic-scout-driver-plus - nope :(
Please give me some advice.

My bad. After delete babenkoivan/scout-elasticsearch-driver all work fine.

My bad. After delete babenkoivan/scout-elasticsearch-driver all work fine.

if you have babenkoivan/scout-elasticsearch-driver  package, delete it is the answer to this issue


VSD cluster failover stats command not using variable

I just did a VSD cluster failover using metro and after that my stats were failing.
I realized that the hostname variable was not replaced but used a input param for the command.
Program 'elasticsearch-status'
  status                            Status failed
  monitoring status                 Monitored
  last started                      Wed, 31 Mar 2021 13:02:39
  last exit value                   1
  last output                       ElasticSearch at hostvars[groups[vstats][0]][hostname] not available
                                    ElasticSearch status: FAIL
  data collected                    Wed, 31 Mar 2021 13:02:39

I think double {{ }} brackets are missing in that command, but didn't have a chance to test it yet
https://github.com/nuagenetworks/nuage-metroae/blob/118b0f9c29b6ec3bb66baf25f4457cc617cbb388/src/roles/vsd-cluster-failover/tasks/main.yml#L107

Sorry for the delay. Somehow I missed this. I will create a JIRA and have this fixed.

METROAE-420 has been created

Fixed in the dev branch. Will be available in the next release.


[BUG] Ignores res folder of framework.jar

Information

Apktool Version (apktool -version) - 2.10.0-dirty
Operating System (Mac, Linux, Windows) - Windows
APK From? (Playstore, ROM, Other) - ROM
Java Version (java --version) -

OpenJDK Runtime Environment Corretto-<IP_ADDRESS>.1 (build 21.0.3+9-LTS)
OpenJDK 64-Bit Server VM Corretto-<IP_ADDRESS>.1 (build 21.0.3+9-LTS, mixed mode, sharing)

Apktool ignores "res" dir even I use -c. -r, "-resm keep"
I need to manually add res files to unknownFiles in apktool.yml
Res dir contains three files: android.mime.types, debian.mime.types and vendor.mime.types

Our jar parsing is probably very weak if non-source elements are packed within. Do you have a sample I can work from?


Change the ci.yml to pass the linter

Description
The linter has suggested a few changes to the ci.yml that affects several PRs.
This PR is the initial attempt to resolve these issues. After this change, we expect that we can merge several PRs soon.

Before we can merge this PR, please make sure that all the following items have been
checked off. If any of the checklist items are not applicable, please leave them but
write a little note why.

[x] Targeted PR against correct branch (master)
[x] Linked to Github issue with discussion and accepted design OR have an explanation in the PR that describes this work.
[x] Re-reviewed Files changed in the Github PR explorer

N/A:

[ ] Wrote unit tests
[ ] Updated relevant documentation in the code
[ ] Added a relevant changelog entry to the Pending section in CHANGELOG.md

Will check offline using the super linter, as the Github Actions do not do the linter check when the ci.yml is changed.

Local test with actionlint passes (https://github.com/rhysd/actionlint/blob/main/docs/install.md).
This is ready for review.


Fix root path detection for bundle deactivation in local bundle watcher

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

-8 of 8 (0.0%)  changed or added relevant lines in 1 file are covered.
1 unchanged line in 1 file lost coverage.
Overall coverage decreased (-0.1%) to 25.279%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

local_bundle_watcher.go
0
8
0.0%

Files with Coverage Reduction
New Missed Lines
%

local_bundle_watcher.go
1
0.0%

Totals

Change from base Build<PHONE_NUMBER>:
-0.1%

Covered Lines:
362

Relevant Lines:
1432

💛  - Coveralls


[Feature Request] Get displayed (formatted) date from datepicker

Existing Component
Yes
Component Name
el-date-picker
Description
I´l like to get the text of the formatted displayed date. Thanks

Thanks, but i don´t see how that solves it. I want to get 2 values from the datetimepicker

The value i want ot save to the db: Thu Nov 08 2018 10:00:00 GMT+0100 (Mitteleuropäische Normalzeit)
The format date which is shown to the user: 08.11.2018 10:00

<el-date-picker
      v-model="form.start"
      @change="startSelected($event)"
      type="datetime"
      default-time="10:00:00"
      format="dd.MM.yyyy HH:mm">
    </el-date-picker>

With the event i only get 1). But i need to get 1 and 2 values.
Please help me.


Getting Started error  SyntaxError..UseFuseOptions..AppSearch

Starting a new docus instance (following the docs Getting Started section) raises a console error on front page :
npx nuxi@latest init docs -t themes/docus
cd docs
npx bun install
npx bun run dev

Error in the console :
Uncaught SyntaxError: The requested module '/_nuxt/node_modules/@vueuse/integrations/useFuse.mjs?v=d3a2bf86' does not provide an export named 'UseFuseOptions' (at AppSearch.vue:1:25)

This is caused by 3.8.0 changes in type resolution. https://github.com/nuxt/nuxt/releases/tag/v3.8.0
add this in root nuxt.config.ts:
  typescript: {
    tsConfig: {
      compilerOptions: {
        verbatimModuleSyntax: false
      }
    }
  }

This solves it for me, I had same issue...Thanks!

Thanks @AndreyYolkin !


Support shared installation registry

The first iteration of a shared installation registry that can be used later for toolchain resolution.
Single provider based on system properties added (SharedJavaInstallationRegistryIntegrationTest), more providers to follow.

@bot-gradle test RFM

OK, I've already triggered ReadyForMerge build for you.

@bot-gradle test RFM

OK, I've already triggered ReadyForMerge build for you.

@ljacomet This should be in a state for you to have another look. As discussed, using gradle properties now

@@bot-gradle test RFM

OK, I've already cancelled the old build and triggered a new ReadyForMerge build for you.

@bot-gradle test RFM

OK, I've already triggered ReadyForMerge build for you.

@bot-gradle test RFM

OK, I've already cancelled the old build and triggered a new ReadyForMerge build for you.

@bot-gradle test RFM

OK, I've already triggered ReadyForMerge build for you.

@bot-gradle test RFM

OK, I've already triggered ReadyForMerge build for you.

@bot-gradle QF

Sorry I don't understand what you said, please type @bot-gradle help to get help.


[ Proposal ] Remove duplication when adding a new app command

To add a new app installer you currently need to register it's cobra command in install.go and add a case statement in info.go
I have notices people missing the info.go step, which means we dont get the arkade info <app> output.
It could also be useful to be able to generate a list of the apps (theres a mention of this on #159 for shell completion)
Expected Behaviour

register a new app installer in 1 place and have all the bits wired together automatically
Current Behaviour

We have to add the app in a few places and it's easy to miss one.
Possible Solution

create a map of Apps, with their install command name, install cobra command and info msg, then we can programatically use this in the info install and possibly the bash_completion code.

/close
completed in #161


Is there a example for time-dependet RHS ?

Modified from ex16, I want to add a time-dependent heat source.
I added a LinearForm in ConductionOperator as
LinearForm F(&fespace);
FunctionCoefficient f(heat_source);
F.AddDomainIntegrator(new DomainLFIntegrator(f));
where heat_source() is a TDFunction.
However, it seems time is always 0.0 when heat_source() is called. How to apply a time-depedent rhs in a TimeDependentOperator?

The problem is solved. The FunctionCoefficient must call SetTime() before used by LinearForm, see ex15.


Downloads miscounted

Here, the top version was uploaded only a few minutes ago and only downloaded a handful of times but somehow got to 100 downloads.

Could be because of having restarted the backend frequently while testing, but obv that shouldn't cause such an issue.

not sure if this related but was testing download counts it does not seem to update on external links + uploaded jars

It will never update instant, nor will it count external downloads.

For s3 downloads maybe we just use redirects instead of cdn urls in frontend?

test

will be done via #1040 instead


techdocs doesn't refresh the content for mkdocs-multirepo-plugin

We use https://github.com/jdoiro3/mkdocs-multirepo-plugin
Our main repo contains root mkdocs.yaml
site_name: 'main'
site_description: 'main'
plugins:

techdocs-core
multirepo
nav:
Foundational-ADR: '!import $repo_1_url'
Service-ADR: '!import $repo_2_url'

$repo_1 contains mkdocs.yml and index.md and few .md files under docs
$repo_1 contains mkdocs.yml and index.md and few .md files under docs
Any changes we make to the root mkdocs.yaml or any .md files, gets reflected in backstage. Basically, somehow it finds the difference between the changes and retriggers the sync api and refreshes
Any changes we make to the $repo_1 OR $repo_2 mkdocs.yaml or any .md files, doesn't get reflected in backstage. Basically, somehow it is unable to find the difference between the changes so the content gets unrefreshed.
What is the trigger point for techdocs refresh?

This is not supported by default so I changed from bug to enhancement. Perhaps you can go to Discord docs like code channel to see if you can get any answers to your questions.

hey @shanthisagar-dhanya-kumar-db did you find a way to fix this?
I was thinking about force rebuilding the docs via the sync api but unfortunately it's not possible atm.


XML comments from dependent Assemblies

I may be missing something obvious here but I can't seem to figure out how to include XML comment documentation from more than one assembly.  I have a web project that produces file a.xml in the app_data directory.  I also have a DTO project that contains the objects the web project returns.  It produces an xml file, b.xml.  I have been able to include one file or the other, and Swashbuckle picks up either set of comments.  However, I don't know how to ask it to look at both files at once.  Is that supported?
string path = AppDomain.CurrentDomain.GetData("DataDirectory").ToString() + "\a.xml";
SwaggerSpecConfig.Customize(
c => c.IncludeXmlComments(path));
Great project, btw!

Does this issue has a formal fix now?

This issue still haunts in 2018.
My solution for the same.
Function to get a of XML doc:
private static string GetXmlCommentPath(string assemblyName) =>       Path.Combine(AppContext.BaseDirectory, assemblyName + ".xml");
Register XML files with help of C# nameof without using any reflection.
options.IncludeXmlComments(GetXmlCommentPath($"{nameof(MyProject)}.{nameof(Db)}")); options.IncludeXmlComments(GetXmlCommentPath(nameof(SomeOtherNamespace))); options.IncludeXmlComments(GetXmlCommentPath($"{nameof(MyProject)}.{nameof(Core)}"));

It can be a option to add all xml files from bin directory.
List<string> xmlFiles = Directory.GetFiles(AppContext.BaseDirectory,"*.xml",SearchOption.TopDirectoryOnly).ToList();
xmlFiles.ForEach(xmlFile => swaggerGenOptions.IncludeXmlComments(xmlFile));

Elegant solution. Highly configurable and simple.


Cant run correctly in the enveronment of centos 7

I can't continue with the commond 'make dependencies' of  page,please update the docs.I will be very appreciated.

You might have better luck using .NET Core 2.0 + ChakraCore, instead of VroomJs :)

@lizhenzhaofirst Try to install a preview version of the JavaScriptEngineSwitcher.ChakraCore.Native.linux-x64 package.

Closing issues older than a year, please re-open if you think this is still relevant.


Allow devDependencies in dependencies.json

Motivation
The current react-native-template is not able to install devDependencies. With this change, dependencies.json can be in the following example to allow devDependencies installation
{
    "dependencies": {
        "react-navigation": "^1.0.0-beta.15"
    },
    "devDependencies": {
        "eslint-config-airbnb": "latest"
    }
}

This change does not alter the original behaviour, so it will be backward-compatible.
Related issue #13954
Test Plan

Pack RN local repo into a tarball
Run react-native init with version set to the tarball location, and template to https://github.com/alvinthen/react-native-template-geirman
Verify the new project's package.json has the dependencies listed in https://github.com/alvinthen/react-native-template-geirman/blob/master/dependencies.json

I'm willing to write a automated test if anyone pointed me to the right direction.
Release Notes
[CLI] [FEATURE] [local-cli/generator/templates.js] - Allow devDependencies to be installed when using react-native init --template

cc @mkonicek

The local-cli moved out of this repo into https://github.com/react-native-community/react-native-cli. Please feel free to open this pull request there.


Display operator pass/fail on db.apps.eng.opdev.io

Done
https://github.com/opdev/exedbui/commit/dbd9682e33a7fb14581c5a75ca5545164e919acb
https://github.com/opdev/exedbuiassets/commit/a2b1bbe0f356cd6ebab4e6306f6b81277f046735


Appbar

Description
Creates a Navigation HOC.
Type of change
Please delete options that are not relevant.

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] This change requires a documentation update

Change Status

[ ] Complete, tested, ready to review and merge
[ ] Complete, but not tested (may need new tests)
[ ] Incomplete/work-in-progress, PR is for discussion/feedback

How Has This Been Tested?

[ ] Test A
[ ] Test B

Checklist

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

way too many merge conflicts to solve, had to open up a new branch that reflected the work both paul and I contributed to this feature


Replace Logrus with Zap for logging

Logrus is in the maintenance mode.
This PR is to change the logging from logrus to Zap.  Please note, changing logger changes the format of the logs and all the logging now is JSON formatted output.

@v1r3n I'll pick this up, fix the conflicts and continue with your changes.


Select for Compare no longer works correctly

VSCode Version: 1.31.1
OS Version: Windows 10 Enterprise 10.0.17134

Steps to Reproduce:

Pick two files, choose Select for Compare
Two files open side-by-side but in the wrong order.  In v1.30.2 and earlier, the file which you selected first would appear on left of comparison (in read-only state), allowing the second file to be edited.  In v1.31.0 and later, files appear in fixed order, no matter which order they are selected.

Does this issue occur when all extensions are disabled?: Yes

This works the same as in stable. The difference is on which element you click to invoke the context menu, not in which order you select them.
Please confirm if you see the same

It seems to make no difference which file I click to invoke the context menu, the same file always appears in read-only editor regardless.

Edit: The method I use for comparing files was to use Ctrl+click to select 2 files, using context menu to compare selected.  However I see that if you invoke context menu while selecting one file, choosing Select for Compare, then using context menu on second file to Compare Selected, this now works as expected.  Can you confirm the old method no longer works correctly (when selecting both files before Compare Selected)?

@prfmansell yes I agree with you this has changed.
@joaomoreno the issue is that the old tree had a selection array which was dependent on the order user added the elements to the selection. While the new tree always gives the same selection array no matter how the user created that selection.
This is fine for me and seems to only be the problem in this compare corner case. Since there is a workaround to first select for comapre and then compare with selected.
Still forwarding to you to decide if you want to change this on the tree side or close.


Distribute xcframework with release assets

I'd like to propose having the .xcframework binary be precompiled and added to the Github assets for each release rather than offloading it to the client.
This would provide the option to use a direct link to pull in the .xcframework in as a binary target with Swift Package Manager.
e.g.
.binaryTarget(
   name: "AEPCore",
   url: "https://github.com/adobe/aepsdk-core-ios/releases/download/3.x.x/AEPCore.xcframework.zip",
   checksum: "xxxxx"
)

Thoughts?

@reline Is this mainly to save time from compiling the code?
SPM only allows you to configure either a source target or a binary target, so we have to choose only one from them. With the source target, not only it gives app developers the ability to view and debug on sdk code, it also helps extension developers with their development experience. Also, our experience of dealing with binary frameworks was not always pleasant.
Another thing is that we will be supporting TVOS, WatchOS in the future, it will also become a blocking problem for using binaries.
So at least for now, I don't think we'd ever switch to binary target.

Basically my team can't use the direct Github link due to red tape and as far as I am aware a git repository can't be added to our internal Artifactory either, so the remaining options with SPM is to use an xcframework or ditch versioning entirely (highly undesirable), download the entire source from Artifactory, drop the framework into our project, and commit it to source control.
I wasn't aware of the limitations of SPM in regards to choosing either a source or binary target.
As for TVOS and WatchOS, wouldn't just two additional targets need to be built with their own xcframeworks? Or is that also blocked by the "single target" limitation?
Sounds like I'll have to give up on this for now if it means choosing a source target versus a binary target :(
Thanks for the timely response!

I believe SPM won't allow you to define two AEPCore targets with the same name, but one with source and the other with binary. So for each target, it has to be one of them.
Also, it won't work for us if we define AEPCore for source code and something like AEPCoreFramework for binary. Because all the other Adobe extensions and partner extensions depend on AEPCore module,  so even if you can use AEPCoreFramework in the app, none of the extensions will compile.
We provide a makefile to generate xcframeworks, https://github.com/adobe/aepsdk-core-ios/blob/main/Makefile#L56, does it help? Or if for every release, if we attach the binaries to each github release, would that be helpful?

Yeah, the binary target doesn't have to be defined in this project's Package.swift file, we just need to point to a hosted xcframework or xcframework.zip file. Once support is added for a new target (e.g. TVOS, WatchOS), then I believe an additional xcframework would be added to the release assets.
It would also be great to have the checksum for each framework added to the release notes, for convenience.
swift package compute-checksum <path-to-zip>

@reline
https://github.com/adobe/aepsdk-core-ios/releases/tag/3.1.0, I did it for the new 3.1.0 release, please let me know whether this works for you.

Hey sorry for the late response, I did attempt to pull down the xcframework as a binary target using XCode 12.4 and Swift 5.3, but received a vague error when attempting to build, was maybe hoping for some insight:

There is no XCFramework found at '~/Library/Developer/Xcode/DerivedData/MyProject-barneedfeittgfgipnalqmxlilke/SourcePackages/artifacts/Adobe/AEPCore.xcframework'.

Here's my current Package.swift.
I managed to pull the binary down, but adding it as a dependency (dependencies: ["AEPCore"]),) breaks the build.
// swift-tools-version:5.3
// The swift-tools-version declares the minimum version of Swift required to build this package.

import PackageDescription

let version = "3.1.0"

let package = Package(
    name: "Adobe",
    platforms: [.iOS(.v10)],
    products: [
        // Products define the executables and libraries produced by a package, and make them visible to other packages.
        .library(
            name: "Adobe",
            targets: ["Adobe"]),
    ],
    dependencies: [
        // Dependencies declare other packages that this package depends on.
        // .package(url: /* package url */, from: "1.0.0"),
    ],
    targets: [
        // Targets are the basic building blocks of a package. A target can define a module or a test suite.
        // Targets can depend on other targets in this package, and on products in packages which this package depends on.
        .target(
            name: "Adobe",
            dependencies: ["AEPCore"]),
        .binaryTarget(
            name: "AEPCore",
            url: "https://github.com/adobe/aepsdk-core-ios/releases/download/\(version)/AEPCore.xcframework.zip",
            checksum: "236b38241df81c49f4087a643944eef89b061bc6ed4003f1c58d5fb2a8a8809a"
        ),
        .testTarget(
            name: "AdobeTests",
            dependencies: ["Adobe"]),
    ]
)

@reline
I made a mistake when packaging the zip files. Can you try again with the builds in 3.1.1 release, https://github.com/adobe/aepsdk-core-ios/releases/tag/3.1.1 ?

I still see the same error

There is no XCFramework found at '/Users/czym1t/Library/Developer/Xcode/DerivedData/OVITestDrive-barneedfeittgfgipnalqmxlilke/SourcePackages/artifacts/Adobe/AEPCore.xcframework'.

but now I do see the framework in the DerivedData
~/Library/Developer/Xcode/DerivedData/MyProject-barneedfeittgfgipnalqmxlilke/SourcePackages/artifacts/Adobe/build/AEPCore.xcframework
Looks like it's off by one directory. Manually moving it up one directory successfully builds.

@reline
That was what I have fixed in 3.1.1 builds.  Looks like xcode didn't download the binaries from 3.1.1 release, can you trying cleaning the project?

Yup! I just deleted the DerivedData for that folder and it worked like a charm, thanks!

I did get a build issue when importing into my Swift package, but I think it's just an incompat issue on my side.

Failed to build module 'AEPCore' from its module interface; the compiler that produced it, 'Apple Swift version 5.3 (swiftlang-1<IP_ADDRESS> clang-1<IP_ADDRESS>)', may have used features that aren't supported by this compiler, 'Apple Swift version 5.3.2 (swiftlang-1200.0.45 clang-1<IP_ADDRESS>)'

I tried the latest release but I'm seeing the same issue and it looks like the version in the plist is still 3.1.1
https://github.com/adobe/aepsdk-core-ios/releases/download/3.1.2/AEPCore.xcframework.zip

@reline
oops, my bad, attached the wrong version. Can you try again?
If you are still seeing errors, can you attach the screenshot of all the errors from Xcode?

Thanks, the version looks right now. Here's the errors I'm seeing with 3.1.2.
Importing AEPServices by itself seems to build fine, I see identical errors with every other combination of imports.


Fix ConcurrentModificationException caused by NioEchoServer.closeNewChannels

NioEchoServer#closeNewChannels did not handle multi-threading synchronization. Add synchronized handling to prevent java.util.ConcurrentModificationException.
Committer Checklist (excluded from commit message)

[ ] Verify design and implementation
[ ] Verify test coverage and CI build status
[ ] Verify documentation (including upgrade notes)

While handling this issue, I found there's another method NioEchoServer#closeSocketChannels that might have potential risk like this one. It's now only used by 2 tests in SslTransportLayerTest, but since it's a public method, I think we should add the same thread safe protection for this one as well.

I found there's another method NioEchoServer#closeSocketChannels that might have potential risk like this one

nice finding. Please fix it in this PR


A few documentation issues

First let me just say that having used React + Reach Router + React Router Redux for some time I am extremely happy that there is work in progress on an alternative as I basically agree with nearly everything in the trilogy of blog posts. When I learnt React I was convinced that it was the future, and again with Redux... then as soon as I started adding the Router I felt like I'd lost a lot of the things I'd liked in the first place.
I think there is a mistake when saying:

Like React Router's <Provider>, you'll want to wrap provideRouter around your app's top-level component like so. (fixed in #37)

I think this should probably say Router not Provider as that is the part of React Router that this seems to resemble. Provider is from react-redux and is definitely still needed, which I think also needs reinforcing.
Keep up the good work, I will be testing this as it develops, happy to help in any way I can, and look forward to reaching the point when it can be used in production.

@dpwrussell would you mind splitting these out? Easier for us to keep track of progress 👍

Resolved in #37

Sweet, thanks so much! Will be tackling docs updates over this week.


E2E Manual Testing of Violating Profiles

E2E exploratory testing of violating profiles to locate edge case defects and confirm behaviour:

Profile is violated
Violation profile is validated for constraints
Violating data is created in individual files per rule
A manifest file is created detailing the violations
All Combination strategies, Modes and Walkers are in scope.

Acceptance Criteria:

[ ] Set Test charters
[ ] Run test charters to investigate possible risks
[ ] Share information with team as identified

Blocked by #534


remove extra check

Warnings

:warning:
Please include a description of your PR changes.

  Generated by :no_entry_sign: dangerJS against ce1a448e3cc739a9d3233a7891f798ee294d80b1


[Bug Report] can't play a song

can't play a song
When i start a song and i wait it end, i can't start a new.
To Reproduce
Steps to reproduce the behavior:

Start a song
Wait it end
Start a new

Expected behavior
Can't play another, a message appear
AM org.apache.http.impl.execchain.RetryExec execute
INFO: I/O exception (java.net.SocketException) caught when processing request to {s}->https://www.youtube.com:443: Connection timed out (Read failed)
Screenshots

Version Info (please complete the following information):

Operating System: debian last version
JMusicBot Version: last version

It looks like your connection is unstable, or YouTube has blocked your host, as your requests to YouTube are timing out.

ive ask to my host, they don't block anything and they told me that the connection is good

YouTube might block your host, not your host YouTube.

This appears to be a problem with your host; if you have further information, feel free to reopen this issue


Usage example

Hey, this is pretty simple yet very useful, but I'm kinda lost on the usage.

This plugin should not be used as a part of a build with webpack, otherwise code splitting will stop working. The intended usage is with the babel-register package or some other build with babel that specifically targets node. Usage as such will remove require.ensure and require.include calls as shown above so you can run your client code on the server without shims.

Could you give an example of what babel-register file would look like?
For example:
require("babel-core/register")({
	stage: 0
	plugin: remove-webpack
});

Would it look something like this?

Yes, that's correct. Or you can require in the package and use the export value directly as in the unit tests.
I wanted to avoid specific usage examples until there was a definitive way people wanted to use this plugin. My ideal solution would be for the plugin to detect when it is running as a part of babel-loader and automatically deactivate itself, but I don't think there's a way for me to see if the plugin is running as a part of webpack. There is also the additional problem that people may be targeting node with webpack.


Flip around reification strategy.

Currently the strategy used in Reifier for expanding out |_ V _| is:

Generate the powerbag of V;
For every item v in the powerbag of V:
Extract every guard from each GFunc in v;
Create a new term g -> v' where g is the conjunction of each guard from above and v' is the unguarded form of v;
Add g -> v to |_ V _|.

In the ticket lock, for V = (G1 -> holdLock()) * (G2 -> holdTick(t)) * (G3 -> holdLock()), we have:

v = emp; g = true; v' = emp; |_ V _| <- emp;
v = (G1 -> holdLock()); g = G1; v' = holdLock(); |_ V _| <- (G1 -> holdLock());
v = (G2 -> holdTick(t)); g = G2; v' = holdTick(t); |_ V _| <- (G2 -> holdTick(t));
v = (G3 -> holdLock()); g = G3; v' = holdLock(); |_ V _| <- (G3 -> holdLock());
v = (G1 -> holdLock()) * (G2 -> holdTick(t)); g = G1 && G2; v' = holdLock() * holdTick(t); |_ V _| <- (G1 && G2 -> holdLock() * holdTick(t));
v = (G1 -> holdLock()) * (G3 -> holdLock()); g = G1 && G3; v' = holdLock() * holdLock(); |_ V _| <- (G1 && G3 -> holdLock() * holdLock());
v = (G2 -> holdTick(t)) * (G3 -> holdTick(t)); g = G2 && G3; v' = holdTick(t) * holdLock(); |_ V _| <- (G2 && G3 -> holdTick(t) * holdLock());
v = (G1 -> holdLock()) * (G2 -> holdTick(t)) * (G3 -> holdTick(t)); g = G1 && G2 && G3; v' = holdLock() * holdTick(t) * holdLock(); |_ V _| <- (G1 && G2 && G3 -> holdLock() * holdTick(t) * holdLock()).

The last view is not in the ticket lock defining views, so it will be removed by a subsequent stage.
This works well for definite numbers of views, but with iterated views it will become impossible to calculate the powerbag.
@mjp41 proposed a different system, which involves checking each defined view D to see if it can be extended into V.
This can happen if there is some variable assignment for each func occurring k times in D such that V contains at least n copies of that func with the same variable, I think.  I'm not sure of the exact method of doing this yet, but hopefully this'll come through soon.

Discussed with @mjp41 and @septract, will hopefully have a scheme for doing this set out soon.

Fixed by #31.


Introduce a new org.osbuild.inline source

This new org.osbuild.inline source can be used to transport binary file data within the source itself. Individual items will be decoded to the store as org.osbuild.files and can thus be used in all inputs that can handle files.
Additionally, this PR moves the pylint configuration from .pylintrc to setup.cfg; the latter can be used by more tools, e.g. autopep8.
@bcl had done something very similar in #512 before

Also a question: What's the intended use case for this?

The main use-case I envision is in testing, i.e. to test the tree and files input but not having to fetch arbitrary files from somewhere via the curl stage, but having it self-contained in the test manifest.


Support for Mobile Version

Did you need support with distribution the mobile app for iOS and Android? I could publish it with my developer account on App and PlayStore

No, please don't do that. We have developer accounts too.

Okay, got it ;)
Any chance to sign up for an alpha release. Can test an various Android and iOS devices
--
Martin Reinhardt
Sent with Airmail
Von: Ball Chris<EMAIL_ADDRESS>Antworten: keybase/client<EMAIL_ADDRESS>Datum: 11. Februar 2017 at 16:07:55
An: keybase/client<EMAIL_ADDRESS>CC: Reinhardt Martin<EMAIL_ADDRESS>Author<EMAIL_ADDRESS>Betreff:  Re: [keybase/client] Support for Mobile Version (#5828)
No, please don't do that. We have developer accounts too.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or mute the thread.

I volunteer for alpha also, have a plethora of devices


License of ConvertUTF.cpp and ConvertUTF.h

The files ConvertUTF.h and ConvertUTF.cpp seem to be under non free licenses.  The LLVM project has updated them, see here, with ConvertUTF.h from breakpad and ConvertUTF.cc also from breakpad. As indicated at https://github.com/AmokHuginnsson/replxx/issues/12, they can also be replaced by https://github.com/nemtrif/utfcpp

These files are not part of the simdutf library. They are part of a benchmark routine which relies on other libraries. We state:
We include a few competitive solutions under the benchmarks/competition directory. They are provided for research purposes only.

The link you offer states that...
The code does not need to be replaced for license reasons. The files were
relicensed to a proper license by Unicode.org some 15 years ago, so we
fixed this issue for llvm by applying the "new" license terms to our copy.

We would, of course, invite the addition of utfcpp to our benchmarks. Pull request invited.


Support circular requires as per Node.js

Many node modules out there contain circular require references (I know, right?), so I feel that this CommonJS loader could benefit from support for successfully resolving them like Node does.

Added a test which previously caused a stackoverflowerror
Added refCache to Module that contains temporary bindings during resolution

As per: https://nodejs.org/api/modules.html#modules_cycles
Just noticed that my editor has been messing with imports. I'm happy to revert if you like.

Thanks for the contribution! I'll have a look as soon as I have a minute.

Hey @malaporte - is there anything I can do to this PR to improve it for you?

Are you averse to using a synchronised collection instead of ThreadLocals? I think the slight overhead in normal use is dwarfed by the initial nashorn compilation times (of course it gets really fast if we call JS many times over).

A synchronized collection would still issues, as one running require might end up using a partially loaded module from another running in another thread, even when no cycle is involved.

@malaporte I've added use of ThreadLocals and fixed up all the other comments.

I don’t see that - are you commenting on an old commit?

On 8 Feb 2017, at 09:30, Martin Laporte<EMAIL_ADDRESS>wrote:
@malaporte commented on this pull request.
In src/main/java/com/coveo/nashorn_modules/Module.java https://github.com/coveo/nashorn-commonjs-modules/pull/14:

@@ -36,6 +39,10 @@ public Module(
this.engine = engine;
this.folder = folder;
this.cache = cache;

if(refCache == null){
This remains to be fixed I think.

—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub https://github.com/coveo/nashorn-commonjs-modules/pull/14, or mute the thread https://github.com/notifications/unsubscribe-auth/ABx1QhOQEiLbAwzQoqPwwmDTGFZSNy01ks5raYs1gaJpZM4Lq79W.

Ah indeed I didn't read the code correctly - nevermind me then.


[Impeller] Add BlitPass::AddCopy overload for copying Texture contents to the host.

Right now BlitPass::AddCopy has a routine to copy data from a Texture to a DeviceBuffer, but it also unnecessarily copies data to the host when doing so. What's worse is that we're actually relying on this host copying behavior for Texture->DeviceBuffer blits.
Instead, there should be a BlitPass::AddCopy overload that only copes data to CPU resident memory, and another one that only copies data to device resident memory.
  bool AddCopy(std::shared_ptr<Texture> source,
               std::vector<uint8_t>& destination, // out param
               std::optional<IRect> source_region = std::nullopt,
               IPoint destination_origin = {},
               std::string label = "");

For the ToByteData APIs and for SKia interop (for PngEncoding), this data needs to end up in a form that I can easily use with  something like Dart_NewExternalTypedDataWithFinalizer . In theory I think std::shared_ptrstd::vector is fine for that. There is the slight potential edge case whereby the vector resizing invalidates the data ptr passed to Dart_NewExternalTypedDataWithFinalizer

Thinking about this more, if I specify a host visible DeviceBuffer, isn't the current behavior fine? The problem is the non-host visible device buffers doing host copying?

Rather than use an std::vector, I think we'd be better off taking an fml::Mapping& for the out buffer and allow the caller to decide how it's backed. I'll update the description to reflect this.

Thinking about this more, if I specify a host visible DeviceBuffer, isn't the current behavior fine? The problem is the non-host visible device buffers doing host copying?

The problem is that we're creating a new buffer on the device heap, transferring to it, and then copying the data to the host. But if the Texture is host-visible, we can just transfer the data directly to the host.
If the texture is not host-visible, I think we should just throw a validation error. If it's transient, there's nothing we can do. If it's device-only, then the caller should either adjust the visibility to suit the use case or put together a Rube Goldberg copy machine that explicitly does the device copy.


[BUG] Detached volumes not replicating - data loss potential - easy reproduction

Describe the bug
If a volume enters a detached state, it no longer replicates.
To Reproduce
Steps to reproduce the behavior:

Create two PVCS on a three node cluster used by two different deployments
Scale one deployment down to zero
The volume of the scaled down deployment will become "detached"

Replica counts can no longer be updated in ui.

Cause: https://github.com/longhorn/longhorn-ui/blob/master/src/routes/volume/VolumeActions.js#L163

Taint + Recycle each k8s node in the node pool
While longhorn says 2 healthy and 2 detached after the recycle of each node in the pool, in truth there are 2 healthy and 2 failed volumes (the two detached ones)

Expected behavior
Longhorn should maintain replicas even when volume is in a detached state, otherwise data-loss is quietly guaranteed.
Side enhancement: Longhorn should prompt users about the status of various taint-related migrations.
Log or Support bundle
As shown in the screenshots.  Volume replicas were not maintained during a rolling recycle of nodes.

Environment

Longhorn version: 1.2.3
Installation method (e.g. Rancher Catalog App/Helm/Kubectl): kubectl
Kubernetes distro (e.g. RKE/K3s/EKS/OpenShift) and version: Digital Ocean

Number of management node in the cluster: 2
Number of worker node in the cluster: 3

Node config

OS type and version:
CPU per node: 4
Memory per node: 8 GiB
Disk type(e.g. SSD/NVMe): SSD
Network bandwidth between the nodes: 1Gbps

Underlying Infrastructure (e.g. on AWS/GCE, EKS/GKE, VMWare/KVM, Baremetal): Digital Ocean
Number of Longhorn volumes in the cluster: 4

Scaling back to 1 replicas... as expected errors seen:
AttachVolume.Attach failed for volume "pvc-8d8a12e9-a0f0-40fb-aff8-1c5121be403a" : rpc error: code = Aborted desc = volume pvc-8d8a12e9-a0f0-40fb-aff8-1c5121be403a is not ready for workloads

Longhorn wasn't even aware of the fault until trying to use the detached volume

After attempting to use the data on the "unreplicated detached volume", longhorn finally realizes that the volume is faulted.

Notice the other detached volume is also in a fault condition, but longhorn won't realize it until I attempt to use it.

Longhorn assumes user does not touch the replicas.
In detached state, one possible solution is checking the existence of the replicas periodically, but it still cannot detect the changes of the data in replicas by uses.
On the other hand, computing the checksum periodically is not a good idea in either running or detached state. The volume-head or snapshots is modified by users or applications in the running state, and the computation also consumes computation and storage resources.

@derekbit even ignoring the replica setting aspect.  If you have a deployment scaled to zero (and pods in that deployment are the only consumers), the (still fully valid pvc's) will slowly break if the kubernetes nodes are recycled since they aren't replicating.
Honestly, this was the final nail in us not using longhorn.   Data loss is too easy, backup restoration is too difficult.

This is a fair concern because right now Longhorn will not do replication when the volume is detached status. This seems rather sensitive when running Longhorn on a managed K8s cluster.

Hi I was wondering if there was an ETA on when this might be addressed?  We'd like to use longhorn with rancher autoscaling but autoscaling down will eventually result in data loss if detached volumes aren't replicated.

Hi I was wondering if there was an ETA on when this might be addressed? We'd like to use longhorn with rancher autoscaling but autoscaling down will eventually result in data loss if detached volumes aren't replicated.

We will see if we can do something for 1.5, but right now just added to the backlog first.

@jdbaudean consider using 2 scaling groups i.e. (fixed storage set (can be scaled up but not down), dynamic worker set (can be arbitrarily scaled))
If your provider does automatic node recycling after a time you need to ensure that the longhorn data disk is not located on the default node disk.
Instead a dedicated disk need to be attached to the recycling nodes, otherwise every time the node gets recycled your data will be gone.

I've run into this because I've got a couple of degraded longhorn volumes. The rebuild keeps failing.
I assume it's because I've got too much load in the cluster (it's k3s on 5xRPi4 nodes, for experimentation). In order to reduce the load (particularly on the degraded volumes), I scaled down to zero nodes. But now the replication/rebuild doesn't run.

Hi I have a blocking point with that (volume not replicated when is detached) !
Indeed if you try to drain node, for maintenance (Upgrade cluster) with a pod with a nodeselector on that node, volume is detached and will not be replicated and the node will never be drained to respect the PDB because that is the latest replicat.
What is the way to drain a node in that case ? This is a real issue, if it's a volume is in detached state, it should be sure that all replicat are healthy before stopping the replicat process !

Any ETA on this? This is actually a very serious bug and makes Longhorn not suitable for production!
I was just starting to setup a production cluster with Longhorn and now I can't use it :disappointed:
I just lost a bunch storage here because of this while upgrading my k8s version. Lucky this was just some production-like test environments and, of course, I have off-site backups so no data was actually lost but it can't be that we have to resort to DR measures because some service wasn't online during an infrastructure upgrade - and this will also happen without any upgrade if the service is down long enough for the each node holding its existing replicas to be refreshed.

Is there any update or ETA on this?   As the above posters state it is a pretty serious bug.

Thanks for keeping the work going!
Longhorn is a cool CSI, and has a massive potential in shift solving a very real-world k8s problem of RWX at smaller scales... however this one bug was enough to make us go with other options.

We can extend the v2 offline replica rebuilding to v1 in v1.8.
Please see the ticket https://github.com/longhorn/longhorn/issues/8443 and https://github.com/longhorn/longhorn/blob/master/enhancements/20230616-automatic-offline-replica-rebuild.md