SparkAggregationFuzzer fails for 'first' aggregate function

Bug description
'first' and other aggregate function should produce consistent results when evaluated over sorted inputs. However, looks like some of these functions produce different results when aggregation runs with spilling.
To reproduce,
spark_aggregation_fuzzer_test --logtostderr --log_signature_stats --only first --duration_sec 60

I20231121 08:32:18.028931 6865407 AggregationFuzzer.cpp:865] ==============================> Started iteration 2 (seed:<PHONE_NUMBER>)
I20231121 08:32:18.031924 6865407 AggregationFuzzer.cpp:1025] Executing query plan:
-- Aggregation[SINGLE [g0] a0 := first(ROW["c0"]) ORDER BY c0 ASC NULLS LAST] -> g0:ROW<f0:TIMESTAMP,f1:BIGINT,f2:INTEGER,f3:TINYINT>, a0:REAL
  -- Values[1000 rows in 10 vectors] -> c0:REAL, g0:ROW<f0:TIMESTAMP,f1:BIGINT,f2:INTEGER,f3:TINYINT>
I20231121 08:32:18.044795 6865900 Task.cpp:1035] All drivers (1) finished for task test_cursor 87 after running for 11 ms.
I20231121 08:32:18.044832 6865900 Task.cpp:1719] Terminating task test_cursor 87 with state Finished after running for 11 ms.
I20231121 08:32:18.045323 6865407 AggregationFuzzer.cpp:1079] Query not supported by the reference DB

I20231121 08:32:18.081195 6865407 AggregationFuzzer.cpp:298] Testing plan #0
I20231121 08:32:18.081221 6865407 AggregationFuzzer.cpp:1025] Executing query plan:
-- Aggregation[SINGLE [g0] a0 := first(ROW["c0"]) ORDER BY c0 ASC NULLS LAST] -> g0:ROW<f0:TIMESTAMP,f1:BIGINT,f2:INTEGER,f3:TINYINT>, a0:REAL
  -- TableScan[table: hive_table] -> c0:REAL, g0:ROW<f0:TIMESTAMP,f1:BIGINT,f2:INTEGER,f3:TINYINT>
I20231121 08:32:18.167311 6865901 Task.cpp:1035] All drivers (1) finished for task test_cursor 88 after running for 85 ms.
I20231121 08:32:18.167353 6865901 Task.cpp:1719] Terminating task test_cursor 88 with state Finished after running for 85 ms.

I20231121 08:32:18.184099 6865407 AggregationFuzzer.cpp:308] Testing plan #0 with spilling
I20231121 08:32:18.184130 6865407 AggregationFuzzer.cpp:1025] Executing query plan:
-- Aggregation[SINGLE [g0] a0 := first(ROW["c0"]) ORDER BY c0 ASC NULLS LAST] -> g0:ROW<f0:TIMESTAMP,f1:BIGINT,f2:INTEGER,f3:TINYINT>, a0:REAL
  -- TableScan[table: hive_table] -> c0:REAL, g0:ROW<f0:TIMESTAMP,f1:BIGINT,f2:INTEGER,f3:TINYINT>
I20231121 08:32:18.186316 6865407 Cursor.cpp:201] Task spill directory[/tmp/velox_test_Xqi8gi/test_cursor 89] created
I20231121 08:32:18.312846 6865902 Task.cpp:1035] All drivers (1) finished for task test_cursor 89 after running for 126 ms.
I20231121 08:32:18.312884 6865902 Task.cpp:1719] Terminating task test_cursor 89 with state Finished after running for 126 ms.
I20231121 08:32:18.331218 6865407 TempDirectoryPath.cpp:31] TempDirectoryPath:: removing all files from/tmp/velox_test_Xqi8gi
/Users/mbasmanova/cpp/velox-1/velox/exec/tests/utils/QueryAssertions.cpp:1043: Failure
Failed
Expected 583, got 583
456 extra rows, 456 missing rows
10 of extra rows:
	null | null
	[null,null,null,93] | null
	[null,null,46122468,72] | null
	[null,null,196891102,125] | null
	[null,null,276303937,72] | null
	[null,null,635643190,null] | null
	[null,null,723968341,72] | null
	[null,null,772002545,null] | null
	[null,null,1054912939,72] | null
	[null,null,1145868433,96] | null

10 of missing rows:
	null | 0.002273933030664921
	[null,null,null,93] | 0.9894294738769531
	[null,null,46122468,72] | 0.7187632918357849
	[null,null,196891102,125] | 0.8723008036613464
	[null,null,276303937,72] | 0.47594723105430603
	[null,null,635643190,null] | 0.2688751816749573
	[null,null,723968341,72] | 0.7742498517036438
	[null,null,772002545,null] | 0.5413988828659058
	[null,null,1054912939,72] | 0.22939516603946686
	[null,null,1145868433,96] | 0.5238010287284851

Unexpected results
E20231121 08:32:18.348793 6865407 Exceptions.h:69] Line: /Users/mbasmanova/cpp/velox-1/velox/exec/tests/utils/AggregationFuzzer.cpp:1285, Function:testPlan, Expression: assertEqualResults({expected.result}, {actual.result}) Logically equivalent plans produced different results, Source: RUNTIME, ErrorCode: INVALID_STATE
libc++abi: terminating due to uncaught exception of type facebook::velox::VeloxRuntimeError: Exception: VeloxRuntimeError
Error Source: RUNTIME
Error Code: INVALID_STATE
Reason: Logically equivalent plans produced different results
Retriable: False
Expression: assertEqualResults({expected.result}, {actual.result})
Function: testPlan
File: /Users/mbasmanova/cpp/velox-1/velox/exec/tests/utils/AggregationFuzzer.cpp
Line: 1285

CC: @duanmeng @rui-mo @PHILO-HE
System information
n/a
Relevant logs
No response

@rui-mo Rui, would you help find someone to look into this?

@mbasmanova Yes, we will take a look.

@mbasmanova Masha, below are my findings.
updateValue always returns false because accumulator->has_value() is true even for the first input. Inputs are not updated to the accumulator, so the output is null.
https://github.com/facebookincubator/velox/blob/409877a050f6d53dc820d2f32db8bc4ef4bf8d7f/velox/functions/sparksql/aggregates/FirstLastAggregate.cpp#L248-L250
But I'm not sure whether it is expected for the accumulator to have value at first for spill case. Maybe you could give some insights here.
It is called from extractValues of SortedAggregations.
https://github.com/facebookincubator/velox/blob/409877a050f6d53dc820d2f32db8bc4ef4bf8d7f/velox/exec/SortedAggregations.cpp#L384-L385

https://github.com/facebookincubator/velox/pull/7720 is a draft fix. It ignores the value existence of accumulator at first.

cc @Yohahaha

Thank you @rui-mo for quick debug.

In spill case, if the accumulator should not have value, we may need to fix the accumulator. Otherwise, maybe a flag valueSet could be introduced to the accumulator.

I remember accumulator is stateful, have discussed here https://github.com/facebookincubator/velox/pull/4578#issuecomment-1503494362.
If we can not rely on accumulator to acquire last state, we need maintain a flag within first agg.

@rui-mo Rui, thank you for the investigation.

updateValue always returns false because accumulator->has_value() is true even for the first input.

This is quite strange indeed. I took a closer look and it appears to be a bug in the Aggregation operator itself. I'll need more time to come up with a proper fix, but here is a quick draft that allows the Fuzzer to pass: #7764
CC: @xiaoxmeng

@mbasmanova Thank you for the work.


chore(deps): upgrade configuration

Upgrades project dependencies. See details in workflow run.

Automatically created by projen via the "upgrade-configuration-k8s-25-main" workflow

⚪ Backport skipped
The pull request was not backported as there were no branches to backport to. If this is a mistake, please apply the desired version labels or run the backport tool manually.
Manual backport
To create the backport manually run:
backport --pr 3618

Questions ?
Please refer to the Backport tool documentation


Independent stacks for each vim window when using GoDef

When using the go to definition :GoDef feature to navigate the source code with multiple vim windows open, each window will operate on the same :GoDefStack. This means that if you navigated to one area of the code in one window, all the other windows opened in the same vim process will see the same GoDef stack and subsequently push and pop on the same stack. This becomes a bit confusing as you move back and forth between windows pushing and popping as needed.
There are all sorts of combinations of this behavior that are cumbersome but here is a trivial example to reproduce it using version 1.14:

Open a Go file for editing inside of a project that you can GoDef in.
Split the window however you'd like (vertical or horizontal) so that you have 2 windows operating on the same buffer for that Go file.
Then go to a spot in the code where you can use GoDef e.g. function, type, etc. and execute :GoDef or your equivalent hot-key.
Move to the other window and run :GoDefStack and observe how you're using the same stack as the first window.
Now go ahead and pop by using :GoDefPop or your equivalent hot-key and observe how you'll go back to the spot that you previously ran :GoDef from in the first window. This is confusing because you never navigated anywhere in this window.
Move back to the first window and try to pop there using :GoDefPop or your equivalent hot-key. Observe how you don't go anywhere because you've already popped in the other window.  :( Now you have to :GoDefStack to try and figure out where you started from to get back home in this window.

While in this trivial example it's not too big a deal, as the levels of the stack grow and you fork to new areas of the code, this begins to get really hairy. Instead, the GoDef feature would be greatly enhanced if we had independent stacks for each vim window.

This repo is about the tutorial, can you please open your suggestion to the vim-go repo? Thanks.


Vulnerability in API

piexif.load accepts both filenames and raw data.
        elif maybe_image and data[0:2] in (b"\x49\x49", b"\x4d\x4d"):  # TIFF
            self.tiftag = data
        elif maybe_image and data[0:4] == b"RIFF" and data[8:12] == b"WEBP":
            self.tiftag = _webp.get_exif(data)
        elif maybe_image and data[0:4] == b"Exif":  # Exif
            self.tiftag = data[6:]
        else:
            with open(data, 'rb') as f:

The malefactor can craft a file with arbitrary data in exif chunk of an image.
im = Image.open("Image.jpg")
exif = piexif.load(im.info["exif"])

As a result piexif will try to open a file with the path stored in im.info["exif"] and also will try to read it.
Solution
piexif should newer try to open files when name is bytes, not str.

That's a great observation. This is probably part of the reason most python I/O libraries have separate load(file: IO) and loads(data: bytes) and dump/s function calls. The other is avoiding path/data ambiguity, which can have some really nasty corner cases (a POSIX path can contain essentially any byte, save for 0x00 IIRC). Basically there is no viable, reliable, unambiguous way to determine if a collection of bytes is a path or just data.

There's a vulnerability for this now getting picked up by threat scanners. FYI.
https://security.snyk.io/vuln/SNYK-PYTHON-PIEXIF-2312874


Should sort order be a property of TableDefinition instead of the K?

After playing a bit with it, I really do think that.
First, it would make trait Key unnecessary, which is a simplification. It is particularly beneficial for crates that will want to wrap redb in any way, e.g. for adding kv serialization, like I'm doing in redb-bincode, but also for any other purposes. Now they need to deal with just Value for both keys and values.
That trait does look weird the moment one look at it. It doesn't even refer to Self in any way.
IMO. Just logically the sorting order is not a property of the key, but the collection. Since the order is byte-comparison based it just doesn't fit on key, like e.g. std::ops::Ord does.
Having sort order on Key, makes it necessary to wrap the key type into some newtype, just to change order of the collection, which maybe was a good tradeoff in case of Ord, but for an ultimately byte-based comparison seems odd.
Having sort order on TableDefinition would make it possible to hide the whole thing and just default to what most people expect. AFAIK most key value stores doesn't even offer such a functionality, so most people will probably want just default lexicographical order. Why force them to deal with Key::cmp then?
What I propose:
pub struct TableDefinition<'a, K: Value + 'static, V: Value + 'static, S : SortOrder = LexicographicalOrder> { /* private fields */ }

Anyone who wants to change order in a particular collection, can just change S in TableDefinition and job done. Most users won't. And they will not need to impl Key for TheirTypes.
If the users do want to place with weird sort orders, they will then be able to re-use them, without wrapping keys in them somehow.

Thanks for the suggestion, but no I think the current design is better. You should think of Key::compare as effectively taking a &SelfType. The only reason it doesn't is in case implementations can be more efficient by avoiding a deserialization.


Add spi st7789 rpi zero w example

Tested with Display HAT Mini by Pomoroni, and added instructions to cross-compile from Mac OS.

Thanks for the example! Seems there are some issues with the CI/builds.
Also as a side note I created https://github.com/almindor/mipidsi-examples as a separate repo for just example. It's been somewhat underused and not properly referenced, but I'm wondering if we should move things there and create some sort of structure of MCU-display pairs.

@almindor I pushed some fixes for the CI, hopefully the checks pass now
I'll take a look at the other repo!


[DOCS] Use issue forms instead of issue templates

Suggestion

The current templates are the old version of the issue templates. We can convert the issue templates to issue forms for easier management and better issue creation.
Many projects and repositories have been using it, and they are beneficial. It appears there are only a few templates to convert to issue forms (if no new ones are added).
🔍 Search Terms

issue forms, issue templates
✅ Viability Checklist

My suggestion meets these guidelines:

[x] This wouldn't be a breaking change in existing TypeScript/JavaScript code
[x] This wouldn't change the runtime behavior of existing JavaScript code
[x] This could be implemented without emitting different JS based on the types of the expressions
[x] This isn't a runtime feature (e.g. library functionality, non-ECMAScript syntax with JavaScript output, new syntax sugar for JS, etc.)
[x] This feature would agree with the rest of TypeScript's Design Goals.

⭐ Suggestion
Convert the issue templates to issue forms.

📃 Motivating Example

I'm not 100% sure this fits this issue, but this would improve the issue management and make it easier for maintainers to check the issues and for users to report and fill in the required fields.
💻 Use Cases

What do you want to use this for?

This will be used by many people who create issues and will make everything easier and better.

What shortcomings exist with the current approaches?

There are no required fields or use of advanced form settings, which makes it very limited when creating issues or creating new types of templates/forms.

What workarounds are you using in the meantime?

Issue templates which is the current way of creating issues (some templates are using issue forms now, though).

Yeah, this is something that's been on my mental todo list for a while.

Is Help Wanted appropriate here, seeing as (afaik) this is something only the repo maintainers can do?

They're just files in the .github directory; anyone could submit them.

May I work on this, or should this be assigned to someone else?

Feel free to

Thanks! Working on it. 🙂


Switch the order of cheap & expensive conditions

Should be faster this way
Before submitting your PR (pull request), please
check the following:

[x] There is no other PR (open or closed)
similar to yours. If there is, please first
discuss over there.
[x] Each commit messages follows the Seven
Rules of a Great Commit
Message.
[x] Each commit message includes
Fixes #<bug> or Resolves #<issue> in its
body (not subject) for each issue it resolves
(if any).
[x] You have
squashed
any redundant or insignificant commits.

Thanks!


How to download charts from chartmuseum?

Hi ,
I am trying to download charts from chart museum. But as per the documentation. There is only a way to list the charts but not to download them to local. Please let me know possible way to achieve this?

@plokimju can you elaborate?
ChartMuseum meant to be directly with the Helm client, so you can do something like
helm repo add chartmuseum http://localhost:8080
helm fetch chartmuseum/mychart

This will download latest chart .tgz to current directory

Hi @jdolitsky ,
Thanks for your prompt response:
When I do a "helm fetch" I see:
helm fetch chartmuseum/workflowengineservice
Error: chart "abc" matching  not found in chartmuseum index. (try 'helm repo update'). No chart version found for abc-

@jdolitsky  - I am able to see the chart index.yaml. Interestingly error append "- " at the end of chartmuseum   "No chart version found for abc-"

@plokimju would you mind sharing contents on index.yaml? Have you added the repo with helm repo add ?

@jdolitsky  - yes I did
$ helm repo list
NAME            URL
chartmuseum     http://:8080//
$ helm repo update
Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "chartmuseum" chart repository
Update Complete. ⎈ Happy Helming!⎈
Index.yaml
$ curl http://:8080//index.xml
% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
Dload  Upload   Total   Spent    Left  Speed
0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0apiVersion: v1
entries:
abc:

apiVersion: v1
appVersion: 0.1.1-SNAPSHOT
created: "2018-06-14T19:00:10.459Z"
description: A Helm chart for Kubernetes
digest: 47a71903ea865dff80a2837496ad7a90d949ef2b9dc84e5c2090b0d771
name: abc
urls:

charts/abc-0.1.1-SNAPSHOT.tgz
version: 0.1.1-SNAPSHOT
generated: "2018-06-20T19:12:47Z"

closing as I am able get the the charts with curl

Also hit this issue.
Found out that the problem is related to the version. If version has a suffix with a dash -, helm install chartmuseum/CHART can't find the chart version.
Sematic Versioning supports dashes and Suffixes. Not sure if bug in helm or chartmuseum.

Well, it's not a bug, but an annoyance for people like us, I guess.
SemVer, and thus helm, consider that version strings w/ an additional -tag are actually pre-releases. Helm is simply not showing you, or using those by default.
I see 3 easy-ish solutions here:

Specify --devel in your helm calls, so that it considers those pre-releases
Specify --version $VERSION in your helm calls
Move the git sha from version, and specify your complete version string in the charts' appVersion field

Annoying.
This didn't affect me until I upgraded to helm 2.10


Add tests of SamplingDataset and fix a bug

This PR adds regression tests for the SamplingDataset kernel, following the example of the tests for AssertNextDataset. @feihugis helped guide me through this task. To allow my tests to create instances of the SamplingDataset class, I refactored the SamplingDataset class from a single .cc file into a header file and a code file. I also fixed a bug in the dataset's save/restore code that was preventing one of the tests from running.
I've broken the refactoring, the tests, and the bug fixes into separate commits.

Sorry, @jsimsa, I think I may have removed some review comments from you while squashing commits. Did you request any changes?

Can one of the admins verify this patch?

Fails internal tests with:
In module '//testing/base/public:gunit_headers':
third_party/googletest/googletest/include/gtest/internal/gtest-param-util.h:401:16: error: allocating an object of abstract class type 'tensorflow::data::experimental::(anonymous namespace)::ParameterizedGetNextTest_GetNext_Test'
    return new TestClass();
               ^
third_party/googletest/googletest/include/gtest/internal/gtest-param-util.h:397:12: note: in instantiation of member function 'testing::internal::ParameterizedTestFactory<tensorflow::data::experimental::(anonymous namespace)::ParameterizedGetNextTest_GetNext_Test>::CreateTest' requested here
  explicit ParameterizedTestFactory(ParamType parameter) :
           ^
third_party/googletest/googletest/include/gtest/internal/gtest-param-util.h:439:16: note: in instantiation of member function 'testing::internal::ParameterizedTestFactory<tensorflow::data::experimental::(anonymous namespace)::ParameterizedGetNextTest_GetNext_Test>::ParameterizedTestFactory' requested here
    return new ParameterizedTestFactory<TestSuite>(parameter);
               ^
third_party/googletest/googletest/include/gtest/internal/gtest-param-util.h:436:3: note: in instantiation of member function 'testing::internal::TestMetaFactory<tensorflow::data::experimental::(anonymous namespace)::ParameterizedGetNextTest_GetNext_Test>::CreateTestFactory' requested here
  TestMetaFactory() {}
  ^
third_party/tensorflow/core/kernels/data/experimental/sampling_dataset_op_test.cc:176:1: note: in instantiation of member function 'testing::internal::TestMetaFactory<tensorflow::data::experimental::(anonymous namespace)::ParameterizedGetNextTest_GetNext_Test>::TestMetaFactory' requested here
TEST_P(ParameterizedGetNextTest, GetNext) {
^
third_party/googletest/googletest/include/gtest/gtest-param-test.h:432:19: note: expanded from macro 'TEST_P'
              new ::testing::internal::TestMetaFactory<GTEST_TEST_CLASS_NAME_( \
                  ^
./third_party/tensorflow/core/kernels/data/dataset_test_base.h:488:18: note: unimplemented pure virtual method 'MakeDatasetOpKernel' in 'ParameterizedGetNextTest_GetNext_Test'
  virtual Status MakeDatasetOpKernel(
                 ^

Fails internal tests with:
In module '//testing/base/public:gunit_headers':
third_party/googletest/googletest/include/gtest/internal/gtest-param-util.h:401:16: error: allocating an object of abstract class type 'tensorflow::data::experimental::(anonymous namespace)::ParameterizedGetNextTest_GetNext_Test'
    return new TestClass();
               ^
third_party/googletest/googletest/include/gtest/internal/gtest-param-util.h:397:12: note: in instantiation of member function 'testing::internal::ParameterizedTestFactory<tensorflow::data::experimental::(anonymous namespace)::ParameterizedGetNextTest_GetNext_Test>::CreateTest' requested here
  explicit ParameterizedTestFactory(ParamType parameter) :
           ^
third_party/googletest/googletest/include/gtest/internal/gtest-param-util.h:439:16: note: in instantiation of member function 'testing::internal::ParameterizedTestFactory<tensorflow::data::experimental::(anonymous namespace)::ParameterizedGetNextTest_GetNext_Test>::ParameterizedTestFactory' requested here
    return new ParameterizedTestFactory<TestSuite>(parameter);
               ^
third_party/googletest/googletest/include/gtest/internal/gtest-param-util.h:436:3: note: in instantiation of member function 'testing::internal::TestMetaFactory<tensorflow::data::experimental::(anonymous namespace)::ParameterizedGetNextTest_GetNext_Test>::CreateTestFactory' requested here
  TestMetaFactory() {}
  ^
third_party/tensorflow/core/kernels/data/experimental/sampling_dataset_op_test.cc:176:1: note: in instantiation of member function 'testing::internal::TestMetaFactory<tensorflow::data::experimental::(anonymous namespace)::ParameterizedGetNextTest_GetNext_Test>::TestMetaFactory' requested here
TEST_P(ParameterizedGetNextTest, GetNext) {
^
third_party/googletest/googletest/include/gtest/gtest-param-test.h:432:19: note: expanded from macro 'TEST_P'
              new ::testing::internal::TestMetaFactory<GTEST_TEST_CLASS_NAME_( \
                  ^
./third_party/tensorflow/core/kernels/data/dataset_test_base.h:488:18: note: unimplemented pure virtual method 'MakeDatasetOpKernel' in 'ParameterizedGetNextTest_GetNext_Test'
  virtual Status MakeDatasetOpKernel(
                 ^

Thanks for the heads-up. It looks like this change set crossed paths with a conflicting set of changes in dataset_test_base.h. I have pulled the latest changes from master and updated the tests for SamplingDataset. I also switched over to using the new test macros. Changes are in commit 42fc1ab.


Implement server-side input validation for lobby creation as well as lobby joining requests.

c23310aa6fa55b8c846bd0092f1dbf3b4d7fd50a

175102d7123ccc487259c7d4aa5d24d0b3a32848

3b3aecfe55222723694830a095edfe86f93a8c3e


SerialDevice.FromIdAsync(entry.Id); always returns null on DragonBoard 410

I write a Serial Communication UWP App and Deployed same app on DragonBoard 410C and Raspberry Pi3
It works fine and gets the serial port on Raspberri Pi3 but when i run same code on DragonBoard it returns null as i try to connect to Serial Port in my code:
serialPort = await SerialDevice.FromIdAsync(entry.Id); // This always returns null while entry.ID is correct

Hi - can you provide context regarding the documentation you are referring to?

that's a known issue with Qualcomm DragonBoard 410c BSP Version 2<IP_ADDRESS>
msdn thread


[Test][DNM] Testing azure pipelines triggers

/azp where

No permissions. can't troubleshoot this.


Fix Item_Base prefab inheritance and general prefab cleanup

Fix tomato, water bottle, mining bars, and ores not inheriting from item_base
Fix plum origin
Fix applejuice prefab name
Fix items overriding defaults with default values in prefabs
Remove rigid body from all items

Remove rigid body from all items

Sand, Gravel and Cement bag still have Rigidbodies.

Why / What did you change in the fbx and txo files?

I fixed the origin of those models so it is at the center bottom, so when you drag and drop them somewhere they are not halfway into the ground. I am sure there are other means but I wanted to give a good example for others so they see all our models have this 0 0 0 origin.

Sand, Gravel and Cement bag still have Rigidbodies.

That is correct, I only removed it from items that are so small that they will not collide with players or vehicles. Sandbags are so big I think you should be able to walk on them or have a vehicle run over. That is why I left them as is.


Check argument count in abort_if extension

As per the comment from @ondrejmirtes, this PR adds check for the argument count. abort_if requires at least 2 arguments, so it checks if it's less than 2.

@graham-campbell Do you know why styleci seems blocked? 👍

Is @GrahamCampbell his username?

BTW my profession is to make applications like styleci run 💯 % of the time


User interface language

Hi, I am using the cloud reader lite.
I see there are i18n locale files with stings translations, but I do not understand how to use them. I would like to use the french translation. How to achieve this?
I also believe there is some kind of language detection as I read this line in Strings.js:
var language = navigator.userLanguage || navigator.language;
But even if this return fr_FR in my browser, the interface of Readium is still in english.
Thanks for your help!

Thank you for reporting this!
The current code incorrectly matches same-language locales (e.g. fr vs. fr_FR vs. fr_CA, or en_US (which is the default) vs. en_GB).
Furthermore, the underscore syntax _ is specific to the now-defunct Chrome app / extension (see https://developer.chrome.com/apps/i18n ), this should now really be a dash / hyphen -, as per BCP47 https://tools.ietf.org/rfc/bcp/bcp47 (as reported by navigator.language in all modern web browsers)
Code references:
https://github.com/readium/readium-js-viewer/blob/4ab8dab28e7ae0a74f2b1716ea09d90f7cf399a4/src/i18n/Strings.js#L28-L38
https://github.com/readium/readium-js-viewer/blob/4ab8dab28e7ae0a74f2b1716ea09d90f7cf399a4/src/i18n/Strings.js#L47
Until a proper fix, a possible workaround would have been to set navigator.userLanguage via the "web inspector" (debugging tools, console), but unfortunately to no avail because navigator properties are reset at each page refresh (at least, in my Firefox and Chrome tests). For example: navigator.userLanguage="fr" or Object.defineProperty(navigator, 'userLanguage', { get: function() { return "fr" } });


Fix as prop is not forwarded to target Component

Fixes: https://github.com/modulz/stitches/issues/979
Previous behaviour:
const StyledButton = styled('button', {
  color: 'red',
})

const Button = (props) => {
  return React.createElement(StyledButton, props)
}

const CustomStyledButton = styled(Button, {
  backgroundColor: 'blue',
})

// Renders: <Button {...} />
<CustomStyledButton />
// Renders: <a {...} />
<CustomStyledButton as="a" />

New behaviour:
const StyledButton = styled('button', {
  color: 'red',
})

const Button = (props) => {
  return React.createElement(StyledButton, props)
}

const CustomStyledButton = styled(Button, {
  backgroundColor: 'blue',
})

// Renders: <Button {...} />
<CustomStyledButton />
// Renders: <Button as="a" {...} />
<CustomStyledButton as="a" />

Do we have any plans to merge this? In general there are a few 0PRs worth merging. Anyone from the 🧵 team?

Hey everyone!
This change is no longer needed after the changes that we added in https://github.com/stitchesjs/stitches/pull/1103 which allow you to control how Stitches should handle its props like as,css or any Stitches defined variant.
Once this is released you should be able to manually override whether Stitches should handle the as prop or not:
const { styled } = createStitches()

const StyledButton = styled('button', {
  color: 'red',
})

const Button = (props) => {
  return React.createElement(StyledButton, props)
}

const forwardAsPropConfig = {
  shouldForwardStitchesProp: (prop) => {
    if (prop === 'as') {
      return true
    }
  },
}

const StitchesComponent = styled.withConfig(forwardAsProp)(Button, {})

The changes are merged with canary and will be released as a beta soon.

Hello,
do you know when this change will be released in a stable version?
Thanks


RMET-3403 ::: Update development with latest upsteam Version

Description
The goal of the PR is to use the latest upstream version - 3.0.4 - with the customisations made on our side. So, the following was done:

Checkout upstream's 3.0.4 tag, available on the upstream/3.0.4 branch.
Keep all our customisations.

Context
https://outsystemsrd.atlassian.net/browse/RMET-3403
Type of changes

[ ] Fix (non-breaking change which fixes an issue)
[ ] Feature (non-breaking change which adds functionality)
[x] Refactor (cosmetic changes)
[ ] Breaking change (change that would cause existing functionality not to work as expected)

Platforms affected

[ ] Android
[x] iOS

Tests
Manual testing was performed to test the task.
Checklist

[x] Pull request title follows the format RNMT-XXXX <title>
[x] Code follows the code style of this project
[x] CHANGELOG.md file is correctly updated
[ ] Changes require an update to the documentation

[ ] Documentation has been updated accordingly

The Snyk issues can be ignored as there are considering files that have been removed (and we don't have permission to remove those files' verifications).


Update minerva to handle “maximal-causal-chain-length” and “display-as-pathway-override”

Update minerva to handle “maximal-causal-chain-length” and “display-as-pathway-override”, including returning them on results and automatically updating “maximal-causal-chain-length”.
Tagging @balhoff

Am I correct that the maximal-causal-chain-length of this graph would be 2, since activity 4 has no enabler defined?
flowchart LR
A1(activity 1) --enabled by--> G1(gene 1);
A2(activity 2) --enabled by--> G2(gene 2);
A3(activity 3) --enabled by--> G3(gene 3);
A1 --regulates--> A2;
A2 --causally upstream of--> A3;
A3 --regulates--> A4(activity 4);

cc @vanaukenk @ukemi @cmungall @sierra-moxon

I've been making models with placeholder activities when I know an activity occurs, but I don't know exactly which gene product enables it. I think this would be useful to display and should be counted, but it's just my 2 cents.

Another question: should all the nodes in the chain being counted be molecular functions (vs. processes)?

I would vote yes.


Add support to List sort method

Summary or solution description
Implemented list.sort method with insertion sort algorithm
How to Reproduce
https://github.com/CityOfZion/neo3-boa/blob/923328ead94af0f5b828d0aeaa0c204024623d46/boa3_test/test_sc/list_test/SortList.py#L5-L8
Tests
https://github.com/CityOfZion/neo3-boa/blob/923328ead94af0f5b828d0aeaa0c204024623d46/boa3_test/tests/compiler_tests/test_list.py#L2196-L2274
Platform:

OS: Windows 10 x64
Python version: Python 3.10+

(Optional) Additional context
Since sort has keyword-only arguments, which are not supported by boa yet, the code may be changed when we work on supporting it.

coverage: 92.1% (+0.02%) from 92.076%
when pulling 923328ead94af0f5b828d0aeaa0c204024623d46 on CU-2ewevdg
into f11e567d7a99f7ad7a36f78838a225781cd17169 on development.


mvp-cockpit: ays blueprint => capnperror

Context: Cockpit repository "yves06" on the Artilium Cockpit
Something wrong in my blueprint?
Stack trace:
root@vm-3856:/optvar/cockpit_repos/yves06# ays blueprint
/opt/jumpscale8/lib/JumpScale/data/capnp/ModelBase.py:67: UserWarning: This message has already been written once. Be very careful that you're not setting Text/Struct/List fields more than once, since that will cause memory leaks (both in memory and in the serialized data). You can disable this warning by setting the `_is_written` field of this object to False after every write.
  buff = self.dbobj.to_bytes()
cannot create data for schema from arguments, value type mismatch.
arguments:
{
 "bootdiskSize":10,
 "description":"",
 "disk":[

 ],
 "ipPrivate":"",
 "ipPublic":"",
 "machineId":0,
 "memory":2,
 "osImage":"Ubuntu 16.04 x64",
 "ovfCallbackUrl":"",
 "ovfLink":"",
 "ovfPassword":"",
 "ovfPath":"",
 "ovfUsername":"",
 "ports":[
  427342
 ],
 "sshAddr":"",
 "sshLogin":"",
 "sshPassword":"",
 "sshPort":0,
 "sshkey":"",
 "vdc":"vdc4js8"
}
schema:

@0xb7289a47d6f28893;
struct Schema {
	description @0 :Text;
	bootdiskSize @1 :Int32;
	memory @2 :Int32;
	osImage @3 :Text;
	ports @4 :List(Text);
	machineId @5 :Int32;
	ipPublic @6 :Text;
	ipPrivate @7 :Text;
	sshLogin @8 :Text;
	sshPassword @9 :Text;
	vdc @10 :Text;
	disk @11 :List(Text);
	sshkey @12 :Text;
	sshAddr @13 :Text;
	sshPort @14 :Int32;
	ovfLink @15 :Text;
	ovfUsername @16 :Text;
	ovfPassword @17 :Text;
	ovfPath @18 :Text;
	ovfCallbackUrl @19 :Text;

}
capnperror: expected reader.type == TEXT; Value type mismatch.

**** TRACEBACK ***
Traceback (most recent call last):
  File "/opt/jumpscale8//lib/JumpScale/data/capnp/Capnp.py", line 67, in getObj
    configdata = schema.new_message(**args)
  File "capnp/lib/capnp.pyx", line 3045, in capnp.lib.capnp._StructModule.new_message (capnp/lib/capnp.cpp:63205)
  File "capnp/lib/capnp.pyx", line 2855, in capnp.lib.capnp._new_message (capnp/lib/capnp.cpp:60658)
  File "capnp/lib/capnp.pyx", line 1432, in capnp.lib.capnp._DynamicStructBuilder.from_dict (capnp/lib/capnp.cpp:30941)
  File "capnp/lib/capnp.pyx", line 1426, in capnp.lib.capnp._DynamicStructBuilder.from_dict (capnp/lib/capnp.cpp:30838)
  File "capnp/lib/capnp.pyx", line 1245, in capnp.lib.capnp._DynamicStructBuilder._set (capnp/lib/capnp.cpp:27574)
  File "capnp/lib/capnp.pyx", line 720, in capnp.lib.capnp._setDynamicField (capnp/lib/capnp.cpp:17387)
  File "capnp/lib/capnp.pyx", line 903, in capnp.lib.capnp._from_list (capnp/lib/capnp.cpp:20952)
  File "capnp/lib/capnp.pyx", line 504, in capnp.lib.capnp._DynamicListBuilder._set (capnp/lib/capnp.cpp:13140)
  File "capnp/lib/capnp.pyx", line 707, in capnp.lib.capnp._setDynamicField (capnp/lib/capnp.cpp:16334)
capnp.lib.capnp.KjException: src/capnp/dynamic.c++:1713: failed: expected reader.type == TEXT; Value type mismatch.
stack: 0x7f8503b1bb09 0x7f8503b1f73d 0x7f8503af5a2c 0x7f8503ae9273 0x7f8503af4668 0x7f85039f05f0 0x7f85039f2e8b 0x7f8503951a08 0x7f85039ed71e 0x7f85039efaf5 0x7f850396ce48 0x7f8503967d74 0x7f850398239b 0x7f85039826d2 0x4e1757 0x5bcf47

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/opt/jumpscale8/bin/ays", line 490, in <module>
    cli()
  File "/opt/jumpscale8/bin/ays", line 137, in blueprint
    repo.blueprintExecute(role=role, instance=instance, path=path)
  File "/opt/jumpscale8/lib/JumpScale/baselib/atyourservice81/AtYourServiceRepo.py", line 320, in blueprintExecute
    bp.load(role=role, instance=instance)
  File "/opt/jumpscale8/lib/JumpScale/baselib/atyourservice81/Blueprint.py", line 181, in load
    actor.serviceCreate(instance=bpinstance, args=args)
  File "/opt/jumpscale8/lib/JumpScale/baselib/atyourservice81/Actor.py", line 378, in serviceCreate
    service = Service(aysrepo=self.aysrepo, actor=self, name=instance, args=args)
  File "/opt/jumpscale8/lib/JumpScale/baselib/atyourservice81/Service.py", line 22, in __init__
    self._initFromActor(actor, args=args, name=name)
  File "/opt/jumpscale8/lib/JumpScale/baselib/atyourservice81/Service.py", line 87, in _initFromActor
    dbobj.data = j.data.capnp.getBinaryData(j.data.capnp.getObj(dbobj.dataSchema, args=args))
  File "/opt/jumpscale8//lib/JumpScale/data/capnp/Capnp.py", line 86, in getObj
    raise j.exceptions.Input(message=msg, level=1, source="", tags="", msgpub="")
JSExceptions.Input: ERROR: cannot create data for schema from arguments, value type mismatch.
arguments:
{
 "bootdiskSize":10,
 "description":"",
 "disk":[

 ],
 "ipPrivate":"",
 "ipPublic":"",
 "machineId":0,
 "memory":2,
 "osImage":"Ubuntu 16.04 x64",
 "ovfCallbackUrl":"",
 "ovfLink":"",
 "ovfPassword":"",
 "ovfPath":"",
 "ovfUsername":"",
 "ports":[
  427342
 ],
 "sshAddr":"",
 "sshLogin":"",
 "sshPassword":"",
 "sshPort":0,
 "sshkey":"",
 "vdc":"vdc4js8"
}
schema:

@0xb7289a47d6f28893;
struct Schema {
	description @0 :Text;
	bootdiskSize @1 :Int32;
	memory @2 :Int32;
	osImage @3 :Text;
	ports @4 :List(Text);
	machineId @5 :Int32;
	ipPublic @6 :Text;
	ipPrivate @7 :Text;
	sshLogin @8 :Text;
	sshPassword @9 :Text;
	vdc @10 :Text;
	disk @11 :List(Text);
	sshkey @12 :Text;
	sshAddr @13 :Text;
	sshPort @14 :Int32;
	ovfLink @15 :Text;
	ovfUsername @16 :Text;
	ovfPassword @17 :Text;
	ovfPath @18 :Text;
	ovfCallbackUrl @19 :Text;

}
capnperror: expected reader.type == TEXT; Value type mismatch.
 ((type:input.error)

The message says there's a type error
Check your ports. They should be strings.


Improve Spring Zeebe docs for newbies

Could be improved (raised by @ingorichtsmeier )

[ ] Make clear that only Spring Beans can be ZeebeWorkers (@Componnent, ...)
[ ] Improve explanation around variable handling / creating a good method signature (implement JobHandler vs. @ZeebeVariable, autoComplete, ...)
[ ] Existing Starter and Worker examples are not sufficient / not properly designed (e.g. main method including workers) --> align with best practices e.g. shown in TwitterExample. Maybe make one project out of it.

Recommendation: align the formatting with the downloaded format/GSG repo
Example: change zeebe.client.cloud.client-id to zeebe.client.cloud.clientId

Hi @berndruecker .
Tks for the client, awesome!!!
I'm stuck with some points, that i think this improvments will help, like :

How can i get current job from an instance id ? With workers is documented. Without a worker ? just an spring rest controller / service ?
After get this job, how can i complete it ?
After get this job, how can i get the form key?


decreased performance when running python script

Running a Python script in nativ terminal is super fast but if I run the same script from terminal-plus it takes much more time and also Atom is lagging and can not be used until the script is finished or aborted. So the whole package becomes useless for me :(
using atom 1.0.11 on osx 10.10.5 and terminal-plus 0.4.2

I'll add this to the list of improvements and get back to you once I release a solution.

Could you provide me with an example script I could test this with? I tried doing a python script as well as a terminal stress test and found no issues. Atom was responsive and the task completed in the same amount of time as usual.

Closing this issue since I haven't seen or heard of any performance issues.


IOException: Unexpected protocol during https TLS1.2 two-way authentication tls handshake on Android Q or above

securityParameters.applicationProtocol = TlsExtensionsUtils.getALPNExtensionServer(serverExtensions);
If the server does not return EXT_ServerHello_ application_ layer_ protocol_ negotiation, Then securityParameters.applicationProtocol will be null. Then the getApplicationProtocol (SecurityParameters) method of JsseUtil will return the "" string.
    ProtocolName applicationProtocol = securityParameters.getApplicationProtocol();
    if (null == applicationProtocol) {
        return "";
    }

On the other hand, in the Android environment, okhttp is running RealConnection's void connectTls (int readTimeout, int writeTimeout,ConnectionSpecSelector connectionSpecSelector)
    // Success! Save the handshake and the ALPN protocol.
    String maybeProtocol = connectionSpec.supportsTlsExtensions()
            ? Platform.get().getSelectedProtocol(sslSocket)
            : null;
    socket = sslSocket;
    source = Okio.buffer(Okio.source(socket));
    sink = Okio.buffer(Okio.sink(socket));
    handshake = unverifiedHandshake;
    protocol = maybeProtocol != null
            ? Protocol.get(maybeProtocol)
            : Protocol.HTTP_1_1;

On Android Q, click Platform. get() GetSelectedProtocol (sslSocket) method adds return socket. getApplicationProtocol();. Then the maybeProtocol is the "" string instead of null, and the default Protocol will not be used HTTP_ 1_ 1. The error throw new IOException ("Unexpected protocol:"+protocol) is reported when the string "" cannot be parsed;

See javadoc, e.g. https://docs.oracle.com/javase/8/docs/api/javax/net/ssl/SSLEngine.html#getApplicationProtocol--:

null if it has not yet been determined if application protocols might be used for this connection, an empty String if application protocols values will not be used, or a non-empty application protocol String if a value was successfully negotiated.

In any case the empty string is not a valid ProtocolName, (which has length from 1 to 255 (RFC 7301):
opaque ProtocolName<1..2^8-1>;
I suggest opening an issue with okhttp.

thanks


Please add exports support in factory

This is currently breaking Backbone. I thought it was their issue (https://github.com/jashkenas/backbone/issues/2891) but exports is actually part of the spec:
https://github.com/amdjs/amdjs-api/wiki/AMD#using-require-and-exports

I left this feature out, because I wanted the minimal build of tAMD to be as small as possible.  I think that it would be a good idea to add a component that provides this support.  That was on my TODO list; but I never got around to it.


Use higher timeout

It looks like there's no timeout in got by default:
https://github.com/sindresorhus/got#timeout


Add support for webpack_nonce to inline styles CSP

Bug Report or Feature Request (mark with an x)
- [ ] bug report -> please search issues before submitting
- [x] feature request

Command (mark with an x)
- [ ] new
- [x] build
- [ ] serve
- [ ] test
- [ ] e2e
- [ ] generate
- [ ] add
- [ ] update
- [ ] lint
- [ ] xi18n
- [ ] run
- [ ] config
- [ ] help
- [ ] version
- [ ] doc

Versions
node: 10.8.0
npm: 6.3.0
ng: 6.2.3
os: Windows 10
Desired functionality
I would like the ability to define a nonce generated on the server that angular will add to the inline styles so that I can comply with business requirements not to use 'unsafe-inline' in CSP.
Mention any other details that might be useful
https://webpack.js.org/guides/csp/
https://github.com/webpack-contrib/style-loader/pull/319
Adding webpack_nonce to the entry file did work for injected script tags but not the injected style tags used for the component css.
This is more of a support question but worth considering when documenting. To use this feature properly we should cryptographically generate the nonce on the server when serving the angular app to the client and use in entry file. Not sure the intended webpack way to do this but tried this suggestion without success https://github.com/styled-components/styled-components/issues/887#issuecomment-376858712 .

Note that this is something that Angular itself would need to support; as it (and not webpack) adds the styles at runtime.

Also, to properly use a nonce, it should be randomly generated by the server upon each request to prevent it from being easily guessed.

If you are interested in pursuing this, can you open an issue on angular/angular regarding the ability to add a customizable nonce attribute to injected style elements?

Thanks clydin have opened a feature request in the angular repo.


AppServiceConfigurable SDK initialization failed

The errors have happened since April 4th on Jenkins whether the security is enabled or not.
log of app-service-rules and app-service-configurable:
Starting Configurable Application Service...
failed to initialize Registry: could not marshal configTree to configuration: (0, 0): Can't convert true(string) to bool
Configuration loaded from registry with service key: AppService-rules-engine
Configuration & Registry initializedlevel=INFO ts=2020-04-07T07:15:45.4641895Z app=AppService-rules-engine source=sdk.go:385 msg="Logger successfully initialized"
level=INFO ts=2020-04-07T07:15:45.4646147Z app=AppService-rules-engine source=sdk.go:480 msg="Skipping core service version compatibility check"
level=ERROR ts=2020-04-07T07:15:45.4646844Z app=AppService-rules-engine source=secret.go:67 msg="unable to create SecretClient: Error found on handling secrets from underlying data-store: AuthToken is required in config"
level=ERROR ts=2020-04-07T07:15:45.4647613Z app=AppService-rules-engine source=sdk.go:452 msg="unable to initialize secret provider"

@lenny-intel do you have any idea about this issue?

cc: @jim-wang-intel

Looking into this today

Verified works fine when running https://github.com/edgexfoundry/developer-scripts/blob/master/releases/nightly-build/compose-files/docker-compose-nexus-redis-no-secty-arm64.yml
Starting Configurable Application Service...
failed to initialize Registry: could not marshal configTree to configuration: (0, 0): Can't convert true(string) to bool
Configuration loaded from registry with service key: AppService-rules-engine
Configuration & Registry initializedlevel=INFO ts=2020-04-07T16:45:56.771172676Z app=AppService-rules-engine source=sdk.go:385 msg="Logger successfully initialized"
level=INFO ts=2020-04-07T16:45:56.771230376Z app=AppService-rules-engine source=sdk.go:480 msg="Skipping core service version compatibility check"
level=INFO ts=2020-04-07T16:45:56.771314076Z app=AppService-rules-engine source=sdk.go:416 msg="Clients initialized"
level=INFO ts=2020-04-07T16:45:56.771378876Z app=AppService-rules-engine source=server.go:276 msg="Registering standard routes..."
level=INFO ts=2020-04-07T16:45:56.771523276Z app=AppService-rules-engine source=main.go:43 msg="Loading Configurable Pipeline..."
level=INFO ts=2020-04-07T16:45:56.771600176Z app=AppService-rules-engine source=sdk.go:548 msg="MessageBus trigger selected"
level=INFO ts=2020-04-07T16:45:56.771621776Z app=AppService-rules-engine source=messaging.go:46 msg="Initializing Message Bus Trigger. Subscribing to topic: events on port 5563 , Publish Topic:  on port 5566"
level=INFO ts=2020-04-07T16:45:56.773052676Z app=AppService-rules-engine source=sdk.go:737 msg="Listening for changes from registry"
level=INFO ts=2020-04-07T16:45:56.773411976Z app=AppService-rules-engine source=telemetry.go:79 msg="Starting CPU Usage Average loop"
level=INFO ts=2020-04-07T16:45:56.792484877Z app=AppService-rules-engine source=sdk.go:765 msg="Writable configuration has been updated from Registry"
level=INFO ts=2020-04-07T16:45:56.792889577Z app=AppService-rules-engine source=sdk.go:834 msg="Reloaded Configurable Pipeline from Registry"
level=INFO ts=2020-04-07T16:45:56.806484977Z app=AppService-rules-engine source=sdk.go:153 msg="StoreAndForward disabled. Not running retry loop."
level=INFO ts=2020-04-07T16:45:56.806519177Z app=AppService-rules-engine source=sdk.go:156 msg="AppServiceConfigurable-rules-engine has Started"
level=INFO ts=2020-04-07T16:45:56.806583177Z app=AppService-rules-engine source=server.go:346 msg="Starting HTTP Web Server on port :48100"

Will verify from BB Tests now.

I have recreated this issue running secure compose (not BB tests)
level=INFO ts=2020-04-07T17:05:45.354506245Z app=AppService-rules-engine source=sdk.go:480 msg="Skipping core service version compatibility check"
level=ERROR ts=2020-04-07T17:05:45.355262445Z app=AppService-rules-engine source=secret.go:67 msg="unable to create SecretClient: Error found on handling secrets from underlying data-store: AuthToken is required in config"
level=ERROR ts=2020-04-07T17:05:45.355454545Z app=AppService-rules-engine source=sdk.go:452 msg="unable to initialize secret provider"
level=ERROR ts=2020-04-07T17:05:45.355624245Z app=AppService-rules-engine source=main.go:36 msg="SDK initialization failed: unable to initialize secret provider\n"

I have root caused this to the issue that the rules-engine profile doesn't use the database, thus doesn't  have or need [SecretStore] configuration, but the SDK is still trying to connect to the SecretStore.  I will fill issue on App Functions SDK to not create Secret Store if Database not used.

I have created this bug issue on the SDK to address this issue.
https://github.com/edgexfoundry/app-functions-sdk-go/issues/315

closed by https://github.com/edgexfoundry/developer-scripts/pull/243


feat: add rpminfo 1.0.1 release

update rpminfo with release 1.0.1

:tada: This PR is included in version 1.219.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Stop Truncating Examples

Long examples get truncated which is disconcerting for users of the dictionary app. Example text shouldn't be truncated; instead, it should be wrapped to the next line.
Screenshot

Closed by #221
Closed by #224


extended steamworks support

could you make a brief issue for that?

interface wishlist:
GetInputTypeForHandle (already in?)
SetLEDColor
TriggerVibration
ShowGamepadTextInput
GetEnteredGamepadTextLength
GetEnteredGamepadTextInput

Not gonna do the OSK as part of Input, but I am going to look at making a separate library for it at some point


[Impeller] add systrace events for vulkan threading

It's difficult to make sure that there are no inefficiencies in the vulkan threading model in impeller.  I think we'd benefit from adding systrace events that will trace the backend.  I propose we add events that show:

The time between requesting a swapchain image and getting it
the time between acquiring a swapchain image and submitting it
the time between submitting a swapchain image and the fencewaiter getting called

Historically with skia we've made this a runtime flag to turn these on.  We may want the same thing here.

Okay, so I've profiled the app and I think there exists probes that already gives us this information, but it's not the most clear:

The time between requesting a swapchain image and getting it -- There is already 2 probes called "AcquireNextDrawable" and "AcquireQuireNextImageKHR".
the time between acquiring a swapchain image and submitting it -- This is basically "Rasterizer::DrawToSurface" - "AcquireNextSurface"
the time between submitting a swapchain image and the fencewaiter getting called -- There is a row called "GPU completion" that has an event called "waitForever".  That one represents the time between us submitting a workload to the GPU and it finishing work.  You can also sort of measure the time between "CommandBuffer::SubmitCommandsAsync" on the raster thread and "ClearSignaledFences" on the helper thread.

Since this information mostly already exists in systrace's, I'm going to avoid adding any new probes.


How can I implement speech to text ?

I am using chrome webkit for speech recognition since it works much better for my purposes. But how can I implement this tool in the right way ? My text does not get analysed by watson by doing it like this...
 if(finalTranscripts.includes('?')){
           API.sendRequest(finalTranscripts, this);

          }

Can someone help me out ?

Daniel, can you mail me some more details on your code.

Hi Ptrikkur,
here you can find my index.html file which I changed for my purposes.
The interesting part is between row 96 and 162...
I would be happy for any kind of help. I've tried already several things but it just does not work in the right way.
`

Open Financial Cognitive Conversation

    <audio autoPlay="true" id="audio"
           className="audio"
           controls="controls">
          Your browser does not support the audio element.
    </audio>

×Close
Home Loan Application

					1

Applicant Details

					2

Loan Details

					3

Aadhaar eKYC

					4

eSign Application form

		<form role="form" id="form1">

Applicant Details

						Full Name
						<input maxlength="50" type="text" id="nameInput" required="required" class="form-control" placeholder="Enter Full Name" />

						PAN number (10 character alphanumeric)
						<input maxlength="10" minlength="10" type="text" required="required" class="form-control" placeholder="Enter PAN number" pattern="[a-zA-Z0-9]+"/>

						Aadhaar number (12 digit)
						<input min="100000000000" max="999999999999" type="number" id="aadharInput" required="required" class="form-control" placeholder="Enter Aadhaar number" />

						Mobile number (10 digit)
						<input min="1000000000" max="9999999999" type="number" id="phoneInput" required="required" class="form-control" placeholder="Enter Mobile number" />

					<button class="btn btn-primary nextBtn btn-lg pull-right" type="button">Next</button>

Loan Details

						Loan Amount (in the range 10 to 40 lakhs)
						<input min="1000000" max="4000000" type="number" required="required" class="form-control" placeholder="Amount in Rs" />

						Loan tenure (in the range 5 to 20 years)
						<input min="5" max="20" type="number" required="required" class="form-control" placeholder="Tenure in years" />

						Interest rate
						<input maxlength="100" type="text" class="form-control" placeholder="8.25%" disabled="disabled"/>

					<button class="btn btn-primary nextBtn btn-lg pull-right" type="button">Next</button>

Aadhaar eKYC

						Aadhaar No.
						<input type="text" class="form-control aadhaarBox" placeholder="Aadhaar No." readonly="readonly"/>
						<button class="btn btn-primary" type="button" onclick="eKYCOTP()">Get OTP</button>

						OTP (6 digit)
						<input min="100000" max="999999" type="number" class="form-control" id="ekycOtp" placeholder="OTP" required="required" readonly="readonly"/>

					CONSENT FOR AADHAAR AUTHENTICATION

					  <input type="checkbox" required="required">I am the holder of above Aadhaar Number. I hereby agree to authenticate myself using Aadhaar through Open Financial Bank, and provide my consent to collect my Aadhaar and OTP, to retrieve my details along with my email ID / mobile number (if available) from UIDAI. I have understood Open Financial Bank's declaration that, my identity information will only be used for subscribing the service. I have understood that, my biometrics / OTP is encrypted and will not be stored / shared and will be submitted to UIDAI (CIDR) only for the purpose of this transaction.

					<button class="btn btn-primary nextBtn btn-lg pull-right" type="button">Next</button>

Review Application form and eSign

    				<object type="application/pdf" data="" width="98%" height="500px" id="embedPdf" download='FileName'>No Support
    				</object>

						Aadhaar No.
						<input type="text" class="form-control aadhaarBox" placeholder="Aadhaar No." readonly="readonly"/>
						<button class="btn btn-primary" type="button" onclick="eSignOTP()">Get OTP</button>

						OTP (6 digit)
						<input min="100000" max="999999" type="number" class="form-control" id="esignOtp" placeholder="OTP" required="required" readonly="readonly"/>

					CONSENT FOR AADHAAR AUTHENTICATION

					  <input type="checkbox" required="required">I am the holder of above Aadhaar Number. I hereby agree to authenticate myself using Aadhaar through Open Financial Bank, and provide my consent to collect my Aadhaar and OTP, to retrieve my details along with my email ID / mobile number (if available) from UIDAI. I have understood Open Financial Bank's declaration that, my identity information will only be used for subscribing the service. I have understood that, my biometrics / OTP is encrypted and will not be stored / shared and will be submitted to UIDAI (CIDR) only for the purpose of this transaction.

					<button class="btn btn-success btn-lg pull-right" id="finalBtn" type="button">eSign</button>

	</form>

`
I assume that I need to do something with "conversationPanel" insted of  API.sendRequest
` if(finalTranscripts.includes('?')){
API.sendRequest(finalTranscripts, this);
      }`

conversationPanel is defined at the conversation.js file...
Many thanks in advance!

Oh that did not work very well....
here you can find the important part again (line 96 to 162)
I'm dealing already since a longer time with this problem. I am happy for any kind of help!

<button onclick="startConverting();"></button>

Do you see a problem with the Conversation Service or Speech Recognition ?

Speech recognition works fine. This is how the standard program works with normal text input via keyboard

I type something, press enter and the text goes to the chatbox and gets analysed by watson.
Now I am trying to do the same thing with speech recognition. On the word "ask" it should send the text over to the chatbox and the text should get analysed by watson. Exacly like before just with exchanging the "type text and press enter for send" method to "speech and say "ask" for send" method. Like I said before, speech recognition works fine, just the handling of the text by saying the word "ask" does not work.

Is it a specific requirement to add 'ask' to indicate end of the sentence?

No, its not. It could be a pause or something else as well.

Daniel - It is not possible to detect 'ask' until the audio is recognized and the text goes into the conversation service.
Here is what I do with Watson STT and you will be able to find a similar solution with webkitSpeechRecognition.

I use a Websocket connection to send the audio to the server.
I use the onMessage event to receive the transcript (partial or interim). There is no need to wait for an End of Sentence word like 'ask'. It would be cumbersome for the users too and prone to error.
Send the message to the conversation service to be analyzed.

Great, thank you thats already a lot of help. Would you minde to show me some of your code in regards to this issue ? Especially the 3th point gives me a hard time.

Closing this. Looks like some questions were answered but this is not a STT pattern so let's not leave this open forever.  Maybe refer to https://www.ibm.com/watson/services/speech-to-text/


QEMU: Fix for deadlock on VM delete.

It seems that libvirt can sometimes deadlock if two threads
simultaneously try to close the console log stream and delete
(undefine) the VM. I am not sure if this is intended behavior or not.
This change changes the node shutdown flow, so that the console log is
fully closed before attempting to undefine the VM. Hopefully this will
prevent the deadlock.
The watchdog timer has been kept in case there are other ways this
deadlock can occur.

@anirudhrb You may wish to review.


Show the Badge status for the master branch

Motivation

The badge shows the CI failing for tesla.
Proposed solution
Ensure that the status been showed in the github actions badge is only for the master branch.

Thanks!


Upgrade pulsar version to <IP_ADDRESS>

Signed-off-by: xiaolong.ran<EMAIL_ADDRESS>Upgrade pulsar version to <IP_ADDRESS>.

@codelipenghui PTAL


Support enum dropdown for configuration arrays in settings UI

     "myext.option": {
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "A",
              "B"
            ]
          }
      }

Currently (1.38), the settings UI only shows an enum dropdown when the setting is not an array. In the example above only an "Add Item" button is shown with free-text input. A dropdown would be better.

@chrmarti The vscodebot shouldn't suggest duplicate issues if they are from the same author (myself). It's quite unlikely that this would happen.

@letmaik Good point, adding it to the bot's issues. Thanks.

Duplicate of #77458.


05/30/2018 02:51 : Create Pull Request for branch master -> prTesting1_2018053002

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

split/updateTestRef1.md
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


Do you have PyMARL implementation?

Hi, I found many MARL methods were implemented with PyMARL. Do you have PyMARL implementation of this repo?

Hi, I found many MARL methods were implemented with PyMARL. Do you have PyMARL implementation of this repo?

Sorry, we not have implement our repo with PyMARL. Maybe you can find a counterpart from MARLlib https://github.com/Replicable-MARL/MARLlib, hope this can help you~


disk_sqlite: add new sqlite-backed virtual disk

Porting this PR from ADO (PR no 9668144, for any MSFT folks).
The initial implementation was written waaaay back in Oct 2023, and its been sitting on my backlog ever since.
It'd be great to find some time to drive this work over the finish line... but we'll see whether or not that comes to pass.

This PR implements a new disk backend which persists data to disk in the form of a SQLite database.
Wait, don't run away!
Hear me out!
I proposed this idea during an office hours session, and then nerd-sniped myself into implementing it. Surprisingly enough, I was able to get a working POC up and running in ~half a day, and boy, does it fly! Way better than it has any right to!
Aside from being fun and kinda wacky at a conceptual level, this disk backend would actually serve 3 genuinely useful roles in improving openvmm's test infrastructure and inner dev-loop scenarios:

Devs would finally have a persistent differencing disk implementation via sqldiff (i.e: as opposed to the ephemeral memdiff differencing disk), without us needing to reimplement hyper-v's traditional (and quite complex) differencing-disk infrastructure.

That's not to say we wouldn't want to support hyper-v's differencing disk stuff at some point - its just that doing so would be a large lift in its own right, whereas this implementation would be a lot easier to land and start using for dev-loop scenarios.

We could add a "cache layer" mode to disk_sqldisk, which when paired with disk_blob, would allow us to cache streaming disk sectors between runs, without having to constantly redownload new sectors from the internet.
OpenVMM on Linux doesn't currently have any dynamic disk support, so a plain disk_sqlite could fill that niche for now.

PR is currently in Draft due to a few outstanding feature / polish gaps, but the functionality is all there!
I'll try to find some spare cycles to polish this up myself... though this isn't strictly a priority for me. I'd appreciate it if someone could pick up this work and drive it over the finish line.

Is there a design doc for this feature?

Is there a design doc for this feature?

If the PR description and inline documentation counts as a design doc, then yes 😅
Otherwise, no.
This disk backend is very much a "quick-and-dirty" stop-gap for getting some minimal-viable cross-platform persistent differencing disk infrastructure stood up in OpenVMM, specifically for dev/test use-cases (where perf and format stability isn't required).
It seems unlikely that we'd want to "productize" this backend (i.e: writing a formal spec, understanding and working through performance issues related to using sqlite for this use-case, etc...), when we could instead invest resources into improving our VHDX support, or standing up support for QCOW2 / VDI / whatever other existing virtual-disk formats already exist out there.


Add doc details for #406

Addresses #406

Adds link to http-configurable-proxy repo
Adds recommended permission setting (600) for Cookie Secret file
Rewording to, hopefully, improve info on configuring the Proxy and Hub's networking based on Gitter feedback

@minrk Also added a troubleshooting section to get rid of the TODO in the docs that was irritating me.


VyvyManga captcha in every single manga

Source information
VyvyManga 1.4.5
Source language
English
Steps to reproduce
Open an entry
You will receive a captcha alert
Complete it
Open another one
Another captcha alert
Expected behavior
One single captcha
Actual behavior
Various captchas
Mihon/Tachiyomi version
0.16.5
Android version
Android 13
Other details
No response
Acknowledgements

[X] I have searched the existing issues and this is a new ticket, NOT a duplicate or related to another open or closed issue.
[X] I have written a short but informative title.
[X] I have updated the app to version 0.15.3.
[X] I have updated all installed extensions.
[X] I have tried the troubleshooting guide.
[X] If this is an issue with the app itself, I should be opening an issue in the app repository.
[X] I will fill out all of the requested information in this form.

That's usually just how it is with some sources, how their website has a high-level bot/spam protection

That's usually just how it is with some sources, how their website has a high-level bot/spam protection

So it's normal for captchas to keep appearing right after solving one?

That's usually just how it is with some sources, how their website has a high-level bot/spam protection

Well I guess it probably is so I'll close my issue
Thank you very much

Hmm, seems fine on my end & only needed to verify once for the Cloudflare verification. Only issue is the covers aren't loading in, but otherwise, chapters load up fine without extra verification. If you are experiencing this verification every time you open the source/entries, such as coming back to the app after a few hours, that's usually expected as the verification doesn't last forever.
Otherwise, maybe try changing your user-agent to see if Vyvy behaves better/asks for less Cloudflare verification.

Hmm, seems fine on my end & only needed to verify once for the Cloudflare verification. Only issue is the covers aren't loading in, but otherwise, chapters load up fine without extra verification. If you are experiencing this verification every time you open the source/entries, such as coming back to the app after a few hours, that's usually expected as the verification doesn't last forever.
Otherwise, maybe try changing your user-agent to see if Vyvy behaves better/asks for less Cloudflare verification.

I'll try doing that.
Thank you


Memory use

Hi,
I have a ~39MB collection of seeds. All told around 400k records. Nothing incredibly fancy, just a lot of lookup data for an app I maintain. Initial seed of this data will cause the ruby process to consume massive amounts of RAM in order to complete. The app usually runs on a VM with 4GB RAM, unfortunately we have to bump this to at least 8GB just to get the db seeded, then we drop it back down to 4.
Is this sort of memory use expected? Is there any way I can get spring to free up memory more?
Thanks

I expected the memory footprint to be big, but not that big. I'll look into it.


add policyfile metadata DSL helper

sugar to pull the policyfile name from the cookbook metadata.rb along
with adding the cookbook.
name "base"
run_list "base::default"
default_source :supermarket
cookbook "base", path: "."

can be written:
metadata
run_list "base::default"
default_source :supermarket

analogous to the Berkshelf metadata method or the Gemfile gemspec method.
(also you can still explicitly name the policyfile something different if you want to)

🚧  tests...

I'm cool with the overall idea. We should think about updating the generators (though that makes the cookbooks incompatible with older ChefDKs, so we have to make a call on that). And let's make sure the error handling is as good as we can make it.

Is '.' likely to ever not be the same directory as the policyfile?  i'm thinking that needs to get fixed as well..

@danielsdeleo how does that look for code?  if that's cool, i'll add tests tomorrow

General shape is good, I have some comments/questions about batching exceptions in the DSL. Other than that, would be nice to decide whether to update the generators and write down why or why not.

👍 Nice UX improvement for kitchen use.

@danielsdeleo injected paths into the exception, didn't seem like @errors offered anything that useful in this case.

Functionality is fine with me, you're good to go once you add some tests

@lamont-granquist is this good to merge?

no, still needs tests

@lamont-granquist Is this something you intend to finish or should we just close it out?

@lamont-granquist Pinging once more. We're doing triage - do you want to keep this open or can we close it?

Closing this since I am not sure the next step to take and there has not been action on this card in a few months


Frequent errors in OAuth callback

My app uses Bolt for Java with Spring Boot. Sometimes in my production server logs I see an error like this:
c.s.a.b.s.b.o.d.OAuthDefaultErrorHandler : Received error code in OAuth callback: VerificationCodePayload(code=null, state=514b0050-e97b-417c-9b0c-8ffe9a936aa0, error=access_denied, nonce=null)
I wonder what the reason is?

Hi @gh-gonzo, thanks for asking the question! The error code can be returned when an installing user click "Cancel" in the OAuth confirmation page. So, it is a possible normal pattern.

Let me know if you have any follow-up comments. Otherwise, we will close this issue soon.

Yeah, just checked and that's it. Thank you for quick response 🙏


Multiple spaces are replaced by single spaces in failure message

When the actual or expected value has multiple consecutive spaces and the test fails, the message on the failures tab shows both values with all multi-spaces replaced by a single one.
(See test script below)
This is annoying because at first I couldn't figure out why a test was failing because the message showed identical strings for actual and expected.
Running the test from SQLcl showed that actual had an extra space which isn't visible in feedback from the plugin.
Test Suite to reproduce
create or replace package ut_spaces
authid definer
is
    -- %suite(Test Plugin Output)

    -- %context(Multiple spaces in values)

        -- %test(Multiple spaces in actual)
        procedure multi_space_actual;

        -- %test(Multiple spaces in expect)
        procedure multi_space_expect;

    -- %endcontext

end ut_spaces;
/

create or replace package body ut_spaces
is

    -- Multiple spaces in actual
    procedure multi_space_actual
    is
        l_expect   varchar2(100);
        l_actual   varchar2(100);
    begin
        l_expect := 'This line has spaces';
        l_actual := 'This          line          has          spaces';

        ut.expect(l_actual).to_equal(l_expect);
    end;

    -- Multiple spaces in expect
    procedure multi_space_expect
    is
        l_expect   varchar2(100);
        l_actual   varchar2(100);
    begin
        l_expect := 'This          line          has          spaces';
        l_actual := 'This line has spaces';

        ut.expect(l_actual).to_equal(l_expect);
    end;

end ut_spaces;
/

In SQL Developer plugin
Running hese tests the plugin will report on the Failures tab:
Actual: 'This line has spaces' (varchar2) was expected to equal: 'This line has spaces' (varchar2)
at "ERO.UT_SPACES.MULTI_SPACE_ACTUAL", line 13 ut.expect(l_actual).to_equal(l_expect);

Note how all multiple spaces have been replaced by single spaces.
In SQLcl
Running the tests in SQLcl does show the multiple spaces
ERO@EVROCS>exec ut.run ('ut_spaces')
Test Plugin Output
  Multiple spaces in values
    Multiple spaces in actual [,481 sec] (FAILED - 1)
    Multiple spaces in expect [,004 sec] (FAILED - 2)

Failures:

  1) multi_space_actual
      Actual: 'This          line          has          spaces' (varchar2) was expected to equal: 'This line has spaces' (varchar2)
      at "ERO.UT_SPACES.MULTI_SPACE_ACTUAL", line 13 ut.expect(l_actual).to_equal(l_expect);

  2) multi_space_expect
      Actual: 'This line has spaces' (varchar2) was expected to equal: 'This          line          has          spaces' (varchar2)
      at "ERO.UT_SPACES.MULTI_SPACE_EXPECT", line 26 ut.expect(l_actual).to_equal(l_expect);

Finished in ,487971 seconds
2 tests, 2 failed, 0 errored, 0 disabled, 0 warning(s)

PL/SQL procedure successfully completed.

Thanks @erikvanroon for reporting this issue. I can reproduce it easily with your test case.
I'm using HTML to to handle links in the field. So the content looks in my case as follows (PLSCOPE instead of ERO schema):

Actual: 'This          line          has          spaces' (varchar2) was expected to equal: 'This line has spaces' (varchar2)

at "PLSCOPE.UT_SPACES.MULTI_SPACE_ACTUAL", line 13 ut.expect(l_actual).to_equal(l_expect);

This HTML code does not preserve whitespace. That's a bug.

Implementation note: Try if this in Swing as well: https://stackoverflow.com/questions/8994516/html-css-best-practice-for-preserving-white-space-on-certain-elements


Fatal Error - Fire Emblem Fates

Hello there! I've attempted using ArticBase with both the newest version of Lime3DS, and with the dev's most recent Citra modification. Both logs have been included.
citra_log.txt
lime3ds_log.txt

Duplicate of #6


Add rake tasks

This PR adds two rake tasks as described in https://cultofmartians.com/tasks/logux-rails-rake.html.
⋊> bundle exec rake logux:actions
   action.type Class#method
blog/notes/add Actions::Blog::Notes#add
   comment/add Actions::Comment#add

⋊> bundle exec rake logux:channels
channel Class
   post Channels::Post

There is still a failing test example, when running the full suite (the output of rake logux:actions contains a class which was dynamically created in another test example).
I will fix this issue tomorrow, it seems that the object is not removed from ObjectSpace after the constant removal (manually triggering GC doesn't help either)

Fixed it, it's removed from ObjectSpace if we remove it's methods first.

Thank you for the pull request, I'm gonna check it soon.

@wilddima I still need to add support for namespaced actions and channels. I'll ping you when it's ready

@wilddima the issues are fixed; I also made the output a bit prettier

@wilddima thank you!


Minimizing issue

When I try to minimize the windows so I can see only the bubbles for contacts, it also breaks the chat window and it doesn't bring my text bubbles to the left.

The window must be at a minimum size at all time, their is a limit on how responsive the messenger.com website is.
If you still like the software, please try the beta recently released.
See https://github.com/Aluxian/Facebook-Messenger-Desktop/issues/458.


Implicit package dependencies not provided by install script

Hi there, I was starting from a very minimal debian docker container and trying to install thin-edge.io using the script. There were several missing packages which were assumed by tedge which weren't dependencies of the package and weren't installed by the script.
Specifically, you're assuming the existence of wget and sudo. Sudo should be added as a dependency of the tedge package (it tries to create a file /etc/sudoers.d/tedge, but the directory doesn't exist) - or the preinst should be rewritten to cope with that directory not existing. The script itself uses wget, but only curl is installed in my minimal install. It does nothing to ensure that wget is installed first.
I also had a following error on tedge_mapper's install:
Preparing to unpack .../tedge_mapper_0.7.5_amd64.deb ...
Unpacking tedge_mapper (0.7.5) over (0.7.5) ...
Setting up tedge_mapper (0.7.5) ...
2022-10-13T17:03:14.6537354Z  INFO flockfile::unix: Lockfile created "/run/lock/tedge-mapper-c8y.lock"
2022-10-13T17:03:14.653784801Z  INFO tedge_mapper::c8y::mapper: Initialize tedge mapper c8y
Error: Creating the directory failed: "/etc/tedge/device".
dpkg: error processing package tedge_mapper (--install):
installed tedge_mapper package post-installation script subprocess returned error exit status 1
Errors were encountered while processing:
tedge_mapper
I don't know what's causing this though. There's a similar error with tedge_agent once I work around the mapper error:
Setting up tedge_agent (0.7.5) ...
2022-10-13T17:06:03.715879249Z  INFO flockfile::unix: Lockfile created "/run/lock/tedge_agent.lock"
2022-10-13T17:06:03.715910633Z  INFO tedge_agent::agent: tedge_agent starting
Error: Creating the directory failed: "/etc/tedge/.agent".
dpkg: error processing package tedge_agent (--install):
installed tedge_agent package post-installation script subprocess returned error exit status 1
Errors were encountered while processing:
tedge_agent

Sudo should be added as a dependency of the tedge package (it tries to create a file /etc/sudoers.d/tedge, but the directory doesn't exist)

It's a good point. sudo is indeed used in postinst script, so if your device doesn't have sudo, the package installation will end up with an error. It should be a dependency on the package.

The script itself uses wget, but only curl is installed in my minimal install. It does nothing to ensure that wget is installed first.

wget is used by get-thin-edge_io.sh, however, it's not used in the package. So it should not be a dependency of any package. However, it would be better if we mention inside the installation guide.

For the errors, I have questions to you @mjj29.

tedge package installation was successful before tedge_mapper or tedge_agent installation?
Did you install sudo before the installation?

@rina23q maybe we can remove the usage of sudo in all debian maintainer scripts (postinst, postrm) of all packages. Maintainer scripts are run under root as dpkg -i requires root rights anyway. And if ownership of a file or folder needs to be modified, then you can always use chown tedge:tedge -R ... afterwards.

Yes
No

And wget might not need to be a dependency of a package, but the get script installs other packages when it starts, but not wget. It should probably also install wget

@rina23q maybe we can remove the usage of sudo in all debian maintainer scripts (postinst, postrm) of all packages. Maintainer scripts are run under root as dpkg -i requires root rights anyway. And if ownership of a file or folder needs to be modified, then you can always use chown tedge:tedge -R ... afterwards.
#1557 already removed one usage of sudo but I think there are still some other usages out there, e.g.

https://github.com/thin-edge/thin-edge.io/blob/0d7dd882829c69523066269ef2d6a7f9451a36ac/configuration/debian/tedge/preinst
https://github.com/thin-edge/thin-edge.io/blob/4ada8ea69342bd4fc5a0b1de51616d553211b7c3/configuration/debian/tedge_mapper/postinst

@reubenmiller
Using sudo with chown is really useless, so definitely we can remove them immediately.
But I have a mixed feeling for the case
sudo -u tedge -- tedge_mapper --init c8y

We need to run tedge_mapper as tedge user. We can use runuser instead, but still need to add the dependency on runuser. Actually, a guy changed runuser to sudo by this commit https://github.com/thin-edge/thin-edge.io/commit/1c627374f60b202dd766067404f948f1b936a2e6.
Also, we create a file under /etc/sudoers.d/. https://github.com/thin-edge/thin-edge.io/blob/main/configuration/debian/tedge/preinst#L16. So, I think we have anyway dependency on sudo.

But I have a mixed feeling for the case
sudo -u tedge -- tedge_mapper --init c8y
We need to run tedge_mapper as tedge user. We can use runuser instead, but still need to add the dependency on runuser. Actually, a guy changed runuser to sudo by this commit https://github.com/thin-edge/thin-edge.io/commit/1c627374f60b202dd766067404f948f1b936a2e6.

This changes from runuser to sudo has been made by Krzysztof in the context of yocto.

What about switching to using su? This seems to be installed by default (at least in the alpine and debian docker images I tried out).
And since these commands are generally running under root to start with (in the maintainer scripts), then there is not too much of a downside imho).
You can run a command under tedge using:
su -c 'mkdir -p /tmp/my-tedge' -s /bin/bash tedge

Below shows an example usage of su in alpine and debian docker images and in both cases su was already installed.
Example using debian:11-slim
docker run -it debian:11-slim sh
useradd tedge
su -c 'mkdir -p /tmp/my-tedge' -s /bin/bash tedge
ls -ltr /tmp

Output
total 4
drwxr-xr-x 2 tedge tedge 4096 Dec  2 10:47 my-tedge

Example using alpine:3.14
docker run -it alpine:3.14 sh
adduser tedge --disabled-password
su -c 'mkdir -p /tmp/my-tedge' -s /bin/bash tedge
ls -ltr /tmp

Output
total 4
drwxr-xr-x    2 tedge    tedge         4096 Dec  2 10:50 my-tedge

@jarhodes314 experimented a similar issue, on a machine where sudo is installed but not configured to be used by root.

What about switching to using su?

This is the way to go. One has to replace sudo by su in configuration/debian/tedge/preinst.

The situation has improved dramatically recently by extending the package types provided by thin-edge.io (e.g. apk, rpm, deb and tarballs) as well as a new install script which will detect which package type you need for your system.
For example the following Dockerfile snippet can be used to install thin-edge.io in a container. It does not require sudo (as you can run it using root during build).
RUN wget -O - thin-edge.io/install.sh | sh -s

# or using curl
RUN curl -fsSL https://thin-edge.io/install.sh | sh -s

Though if you're running thin-edge.io in a container, you will have to think about which init system to use. There are several options, but I would personally recommend using s6-overlay. There is an additional install-service.sh script which can also install community packages which provide the services definitions for various init systems. There is an example of running thin-edge.io under s6-overlay can be found here
Documentation links are here:

install-guide
init_systems

@jarhodes314 experimented a similar issue, on a machine where sudo is installed but not configured to be used by root.

What about switching to using su?

This is the way to go. One has to replace sudo by su in configuration/debian/tedge/preinst.

Any usage of sudo with maintainer scripts has been removed. Any no assumptions are made about the sudoer.d file, so the installation scripts will only add the sudoers.d config if sudo is installed.


Command line like navigation in NerdTree?

Just a thought. Something I've been thinking about quite often and like to make a request to see if anyone has a solution or if it can be a potential feature request.
Many times my projects are housed in a folder buried deep inside my home folder. Currently, NERDTree defaults to ~, so navigating to the folder requires some amount of keyboard acrobatics. I've always wished for a way to simply navigate to a folder ala command line cd and I'm wondering if there's a way to do it.

nerdtree opens up in vims current working dir if no directory is given to the :NERDTree command. So you could just :cd to the project dir before opening up a nerdtree. Or start vim in the project directory in the first place.


Continuous Query : Writing 'Nulls' When Upstream Table has no Data

I have written a continuous query that should store the minimum of several fields every 5 seconds, grouped by a tag called job_name (hence the * at the end).  Here is the query:
CREATE CONTINUOUS QUERY min_scores on nba_hadoop_jobs begin
select min(best_score) as min_best_score, min(bus_dim) as min_bus_dim,
min(net_dim) as min_net_dim, min(struct_dim) as min_struct_dim,
min(travel_dim) as min_travel_dim
into min_scores from para_sched_scores group by time(5s), * end

This query runs at a rapid pace in the logs, and also fills up with 'nulls' when there is no data in the last 5 seconds in the upstream table.  Eventually, it does stop writing 'nulls', but not before there are a while bunch of them.
What am I doing wrong here?

@rkuchan I think you were doing some research on this very behavior, yes?

I've come across the same thing. Continuous queries (and queries with INTO) that have more than one function in the SELECT statement store nulls by default. Continuous queries with just one function don't store nulls by default. Here's the issue: https://github.com/influxdb/influxdb/issues/5116.
Appending fill(none) to the end of your CQ should take care of this issue for now. See Data exploration for more on fill().

@ericjmiller, on a related note, have you changed the configuration settings for continuous queries? The short length of your CQ's GROUP BY time() interval wouldn't work well with the default settings; InfluxDB might miss intervals with valid data.
Depending on your data, it might be good to change the recompute-previous-n setting to 11 and the compute-no-more-than setting to 1m0s. This makes InfluxDB generate 12 queries (one for the current GROUP BY time() interval and 11 for the previous 11 intervals) every minute.
We have some documentation in progress on configuring CQs if you'd like more context on this: https://github.com/influxdb/docs.influxdata.com/pull/93

@rkuchan
Thanks for the '''fill()''' tip - I'll check it out!
Regarding your CQ config suggestions: I need the downsample to be somewhat real-time.  I can't wait 1 minute for the downsample to pull from the higher table for the last 12 5-second intervals.  I was thinking of '''compute-runs-per-interval''' set to 1, '''compute-no-more-than''' set to '''5s''', and '''recompute-previous-n''' set to 2 (maybe even 0).  Ultimately, I just want a real time downsample every 5 seconds.

@ericjmiller, those settings will work for what you want  :)
Closing this in favor of  https://github.com/influxdb/influxdb/issues/5116


Portal link should only be created when the action is selected

Currently, when you load the organizations section, it creates the portal link.
This should only happen when they select "create portal link" from the "actions" menu. And it should happen each time they select it, so a new/fresh one gets created.

I just changed the hook to
  useEffect(() => {
    if (open) {
      getPortalLink(orgId, "")
      .then((pl) => setPortalLink(pl?.link || ""))
      .catch((e) => console.log(e));
    }
  }, [open]);


Kubelet container being constantly restarted due to "Env has changed from"

What kind of request is this (question/bug/enhancement/feature request):*
Bug
Steps to reproduce (least amount of steps as possible):
Haven't determined this yet
Result:
Kubelet is constantly being restarted
Other details that may be helpful:
cattle-node-agent logs are:
time="2019-01-21T20:32:34Z" level=info msg="For process kubelet, Env has changed from [RKE_CLOUD_CONFIG_CHECKSUM=17e5175e20f80bd614d12c0601cce2ac] to [RKE_CLOUD_CONFIG_CHECKSUM=d07839d401a8fb104bf77e6f336f0dd0 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin]"
time="2019-01-21T20:38:40Z" level=info msg="For process kubelet, Env has changed from [RKE_CLOUD_CONFIG_CHECKSUM=d07839d401a8fb104bf77e6f336f0dd0] to [RKE_CLOUD_CONFIG_CHECKSUM=17e5175e20f80bd614d12c0601cce2ac PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin]"
time="2019-01-21T20:40:42Z" level=info msg="For process kubelet, Env has changed from [RKE_CLOUD_CONFIG_CHECKSUM=17e5175e20f80bd614d12c0601cce2ac] to [RKE_CLOUD_CONFIG_CHECKSUM=d07839d401a8fb104bf77e6f336f0dd0 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin]"
time="2019-01-21T20:46:48Z" level=info msg="For process kubelet, Env has changed from [RKE_CLOUD_CONFIG_CHECKSUM=17e5175e20f80bd614d12c0601cce2ac RKE_CLOUD_CONFIG_CHECKSUM=d07839d401a8fb104bf77e6f336f0dd0] to [RKE_CLOUD_CONFIG_CHECKSUM=17e5175e20f80bd614d12c0601cce2ac PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin]"
time="2019-01-21T20:52:54Z" level=info msg="For process kubelet, Env has changed from [RKE_CLOUD_CONFIG_CHECKSUM=17e5175e20f80bd614d12c0601cce2ac] to [RKE_CLOUD_CONFIG_CHECKSUM=17e5175e20f80bd614d12c0601cce2ac RKE_CLOUD_CONFIG_CHECKSUM=d07839d401a8fb104bf77e6f336f0dd0 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin]"
time="2019-01-21T20:54:56Z" level=info msg="For process kubelet, Env has changed from [RKE_CLOUD_CONFIG_CHECKSUM=d07839d401a8fb104bf77e6f336f0dd0] to [RKE_CLOUD_CONFIG_CHECKSUM=17e5175e20f80bd614d12c0601cce2ac PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin]"
time="2019-01-21T21:01:03Z" level=info msg="For process kubelet, Env has changed from [RKE_CLOUD_CONFIG_CHECKSUM=17e5175e20f80bd614d12c0601cce2ac] to [RKE_CLOUD_CONFIG_CHECKSUM=d07839d401a8fb104bf77e6f336f0dd0 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin]"
time="2019-01-21T21:03:04Z" level=info msg="For process kubelet, Env has changed from [RKE_CLOUD_CONFIG_CHECKSUM=17e5175e20f80bd614d12c0601cce2ac RKE_CLOUD_CONFIG_CHECKSUM=d07839d401a8fb104bf77e6f336f0dd0] to [RKE_CLOUD_CONFIG_CHECKSUM=17e5175e20f80bd614d12c0601cce2ac PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin]"
time="2019-01-21T21:05:06Z" level=info msg="For process kubelet, Env has changed from [RKE_CLOUD_CONFIG_CHECKSUM=17e5175e20f80bd614d12c0601cce2ac] to [RKE_CLOUD_CONFIG_CHECKSUM=17e5175e20f80bd614d12c0601cce2ac RKE_CLOUD_CONFIG_CHECKSUM=d07839d401a8fb104bf77e6f336f0dd0 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin]"
time="2019-01-21T21:11:13Z" level=info msg="For process kubelet, Env has changed from [RKE_CLOUD_CONFIG_CHECKSUM=17e5175e20f80bd614d12c0601cce2ac RKE_CLOUD_CONFIG_CHECKSUM=d07839d401a8fb104bf77e6f336f0dd0] to [RKE_CLOUD_CONFIG_CHECKSUM=17e5175e20f80bd614d12c0601cce2ac PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin]"
time="2019-01-21T21:13:15Z" level=info msg="For process kubelet, Env has changed from [RKE_CLOUD_CONFIG_CHECKSUM=17e5175e20f80bd614d12c0601cce2ac] to [RKE_CLOUD_CONFIG_CHECKSUM=17e5175e20f80bd614d12c0601cce2ac RKE_CLOUD_CONFIG_CHECKSUM=d07839d401a8fb104bf77e6f336f0dd0 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin]"
time="2019-01-21T21:21:22Z" level=info msg="For process kubelet, Env has changed from [RKE_CLOUD_CONFIG_CHECKSUM=d07839d401a8fb104bf77e6f336f0dd0] to [RKE_CLOUD_CONFIG_CHECKSUM=17e5175e20f80bd614d12c0601cce2ac PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin]"

Environment information

Rancher version (rancher/rancher/rancher/server image tag or shown bottom left in the UI): 2.1.4
Installation option (single install/HA): HA

Kubernetes Version: "v1.11.5-rancher1-1"
Cluster.yml is:
addon_job_timeout: 30
authentication:
  strategy: "x509"
bastion_host:
  ssh_agent_auth: false
cloud_provider:
  name: "vsphere"
  vsphereCloudProvider:
    global:
      datacenters: "<REDACTED>"
      insecure-flag: true
      password: "<REDACTED>"
      soap-roundtrip-count: 0
      user: "<REDACTED>"
    virtual_center:
      <REDACTED>:
        password: "<REDACTED>"
        soap-roundtrip-count: 0
        user: "<REDACTED>"
      <REDACTED>:
        password: "<REDACTED>"
        soap-roundtrip-count: 0
        user: "<REDACTED>"
    workspace:
      datacenter: "<REDACTED>"
      default-datastore: "<REDACTED>"
      folder: "<REDACTED>"
      resourcepool-path: "<REDACTED>"
      server: "<REDACTED>"
ignore_docker_version: false
#
#   # Currently only nginx ingress provider is supported.
#   # To disable ingress controller, set `provider: none`
#   # To enable ingress on specific nodes, use the node_selector, eg:
#      provider: nginx
#      node_selector:
#        app: ingress
#
ingress:
  provider: "nginx"
kubernetes_version: "v1.11.5-rancher1-1"
monitoring:
  provider: "metrics-server"
#
#   # If you are using calico on AWS
#
#      network:
#        plugin: calico
#        calico_network_provider:
#          cloud_provider: aws
#
#   # To specify flannel interface
#
#      network:
#        plugin: flannel
#        flannel_network_provider:
#          iface: eth1
#
#   # To specify flannel interface for canal plugin
#
#      network:
#        plugin: canal
#        canal_network_provider:
#          iface: eth1
#
network:
  options:
    flannel_backend_type: "vxlan"
  plugin: "canal"
#
#      services:
#        kube_api:
#          service_cluster_ip_range: <IP_ADDRESS>/16
#        kube_controller:
#          cluster_cidr: <IP_ADDRESS>/16
#          service_cluster_ip_range: <IP_ADDRESS>/16
#        kubelet:
#          cluster_domain: cluster.local
#          cluster_dns_server: <IP_ADDRESS>
#
services:
  etcd:
    creation: "24h"
    extra_args:
      election-timeout: "5000"
      heartbeat-interval: "500"
    retention: "72h"
    snapshot: true
  kube-api:
    pod_security_policy: false
    service_node_port_range: "30000-32767"
  kubelet:
    fail_swap_on: false
ssh_agent_auth: false

Docker (use docker info):

Containers: 25
 Running: 15
 Paused: 0
 Stopped: 10
Images: 14
Server Version: 17.03.2-ce
Storage Driver: overlay2
 Backing Filesystem: xfs
 Supports d_type: true
 Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: systemd
Plugins:
 Volume: local
 Network: bridge host macvlan null overlay
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 4ab9917febca54791c5f071a9d1f404867857fcc
runc version: 54296cf40ad8143b62dbcaa1d90e520a2136ddfe
init version: 949e6fa
Security Options:
 seccomp
  Profile: default
Kernel Version: 3.10.0-957.1.3.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
CPUs: 2
Total Memory: 7.62 GiB
Name: <REDACTED>
ID: 7PN7:OVFQ:6X4K:N6O4:EMFQ:TU7G:DNGN:O4FG:KLR3:TSQX:GJN2:FUH6
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Http Proxy: http://<REDACTED>:8080/
No Proxy: localhost,<IP_ADDRESS>,<IP_ADDRESS>,localaddress,<IP_ADDRESS>/8
Registry: https://index.docker.io/v1/
Experimental: false
Insecure Registries:
 <IP_ADDRESS>/8
Live Restore Enabled: false

I am seeing this too, with a 11 node RancherOS cluster (5 etcd/controlplane, 6 workers), and a vSphere cloud config. We are spanning two data centers in the same region. Everytime I loose a worker node, I have this:
"For process kubelet, Env has changed from [RKE_CLOUD_CONFIG_CHECKSUM=........

Does anyone know where this env var rke_cloud_config_checksum is set?

According to @moelsayed, it should be resolved with https://github.com/rancher/rke/pull/1055

Can be validated in 2.1.7-rc3 and master.

@moelsayedhttps://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_moelsayed&d=DwMCaQ&c=ODFT-G5SujMiGrKuoJJjVg&r=543gQwZQ37wtht6QPHrf7w&m=ApoQ3TjLSOgeOn1XarXaXXuYI2BG2qNUlHGiApw9KAE&s=noMPB2iVTkzwNAMggI4svVAzlYgLWqJBt2f3MQXAAwg&e=, do you mean the bug exists in 2.1.7 rc3, or is resolved?
On Feb 26, 2019, at 1:58 PM, Mohamed El Sayed <notifications<EMAIL_ADDRESS>wrote:
Can be validated in 2.1.7-rc3 and master.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHubhttps://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_rancher_rancher_issues_17502-23issuecomment-2D467589641&d=DwMCaQ&c=ODFT-G5SujMiGrKuoJJjVg&r=543gQwZQ37wtht6QPHrf7w&m=hqhBIZDvYmGURmU8fgDS_MYhfUxu77FY7CgRbYYKy8I&s=tQgx6BPGn_JafJXluwDVLkFBWKw53r0YzsiGIRRmCek&e=, or mute the threadhttps://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_notifications_unsubscribe-2Dauth_Af8kWynXbKZhuRqQXa8VNbssmGq8TYIOks5vRZHRgaJpZM4aLpu8&d=DwMCaQ&c=ODFT-G5SujMiGrKuoJJjVg&r=543gQwZQ37wtht6QPHrf7w&m=hqhBIZDvYmGURmU8fgDS_MYhfUxu77FY7CgRbYYKy8I&s=PoouyMyMPR3jKqIH1iDua2U66-6wvs3xJS5nUoLyod4&e=.

@ArgonV still exists in 2.1.7rc.

validated in rancher:master (02/28/2019)
Able to launch an Azure cluster. All the nodes get to Active state. (Adding and deleting of worker nodes is working, and the nodes come to 'Active' state.

@sowmyav27, do you still see the logs for the cattle-node-agent, where the checksums are changing on the Azure worker nodes?

This  same issue was observed when testing Azure cluster with provider details set - https://github.com/rancher/rancher/issues/16893

Hold on, I don't know if this issue is validated given your observations, those are not the symptoms that would cause it.
@sowmyav27 can you provide logs of the cattle-node-agent for validation?

I have found a stop-gap fix that I've tested on two vSphere node driver clusters, with node template provisioned VMs in vSphere, and using VMWare vSphere Volume storage class:
Add this to your cluster yaml, near the bottom
kubelet:
    extra_args:
      node-status-update-frequency: "10s"
    extra_env:
      - "RKE_CLOUD_CONFIG_CHECKSUM=<your value>"
      - "RKE_CLOUD_CONFIG_CHECKSUM=<your value>"

You can get your checksum values by looking at your logs for the cattle node agents.
I have tested on clusters running Kubernetes v1.12.4 and v1.11.6

@ArgonV Thanks for the note, did you need to specify the extra args twice for RKE_CLOUD_CONFIG_CHECKSUM like you have in your example?

@Oats87, yes I did. It didn't fix the issue with one RKE_CLOUD entry and comma separated values. It also didn't work with just one RKE_CLOUD entry and one env var. I forgot to mention that I also redeployed in the System project after I edited and updated the cluster:
cattle-cluster-agent
cattle-node-agent
nginx-ingress-controller

Tested the issue with both 2.1.4 and master, can't see to reproduce the issue, here are my steps:

Start Rancher (2.1.4 or master) using single node installation
Start a vsphere cluster with vsphere cloud provider
use custom cloud provider and edit yaml and add:

cloud_provider:
  name: "vsphere"
  vsphereCloudProvider:
    global:
      datacenter: "xxxx"
      working-dir: "xxxx"
      insecure-flag: true
      password: "xxxxx"
      soap-roundtrip-count: 0
      user: "xxxxx"
      server: "xxxxx"
    workspace:
      datacenter: "xxxx"
      default-datastore: "xxxxx"
      resourcepool-path: "xxxxxx"
      server: "xxxxx"

I can see cluster getting created with different roles including worker node.
But it seems the issue is resolved already with Azure https://github.com/rancher/rancher/issues/16893.

@ArgonV

I have tested on clusters running Kubernetes v1.12.4 and v1.11.6

the fix for this issue is done for 2.2 version of rancher; it means it is available in master branch only, and not available in 2.1.x release. If you've done your testing on 2.1.6, could you give it a test on the latest master? rancher/rancher:master image.

ive moved this back to test since our assertion is that this is fixed on master

I ran the following scenario:
Rancher v2.1.7 with a 3 node cluster, 1 controlplane+etcd and 2 worker. It was observed that the Env has changed from issue was occurring on my worker instances.
I upgraded to Rancher master and watched the agents for approximately 30 minutes, and did not see a single kubelet restart (bar from one where the agent cleaned up after a faulty reset). It appears that this issue has been resolved for v2.2.0

Closing as verified.