Why is device registration needed for sending commands? (TZ-982)

Question
I've debugged my code for three days, while trying to set the level of my tradfri IKEA lamp via an ESP32c6, which served as coordinator. Starting from the Off/on switch example, I tried to use the esp_zb_zcl_level_move_to_level_cmd_req() method, which lead to an assert failure, with not much more than a stack trace for debugging.
As mentioned above, before opening a question on this repository, I tried to get the root of the problem by myself, and finally I've found that I have to register the correct device in my code:
Instead of registering the result of esp_zb_on_off_switch_ep_create() I needed the esp_zb_color_dimmable_switch_ep_create() result.
Now my questions:

Why do I have to register the device in the first place? Is it demanded by the standard, that the sending device (the coordinator in this case) must have a matching cluster?
If the above is the case, wouldn't it make sense to register the cluster somehow while calling the esp_zb_zcl_level_move_to_level_cmd_req(), before crashing? (but maybe this "somehow" is the tricky part and may be difficult)
Then last thing: Why not at least mention, why the assert failed? Would it be much more effort to print a fatal log like "you don't have registered the matching cluster/device for this command" before crashing?

Additional context.
No response

@Nanowires ，

Why do I have to register the device in the first place? Is it demanded by the standard, that the sending device (the coordinator in this case) must have a matching cluster?

The reason is that the stack does not currently support the dynamic device data model. You need to call esp_zb_device_register() to register the data model with the stack. The esp_zb_on_off_switch_ep_create() function only handles the creation process. As a result, esp_zb_device_register() is necessary for any device in the current version.
The esp-zigbee-sdk v1.4.0 provides a gateway endpoint mechanism for sending commands without matching clusters, which may be helpful for you. You can call esp_zb_ep_list_add_gateway_ep(ep_list, NULL, endpoint_config) and esp_zb_device_register(ep_list) to implement it.

If the above is the case, wouldn't it make sense to register the cluster somehow while calling the esp_zb_zcl_level_move_to_level_cmd_req(), before crashing?

The esp_zb_zcl_level_move_to_level_cmd_req() can be sent successfully after esp_zb_device_register() is called. However, it is recommended to register the clusters once before calling esp_zb_start().

Why not at least mention, why the assert failed? Would it be much more effort to print a fatal log like "you don't have registered the matching cluster/device for this command" before crashing?

This is the next point we need to optimize. We will provide more explicit debug information in subsequent versions. For now, you can enable the "Zigbee Debug Mode" in the menuconfig; it may be helpful for your debugging.

@xieqinan: Thanks for the reply and the clarification. I'm looking forward for further versions of the SDK 😀


Revamp the standard library xslt module

Description:
$subject

We decided to keep the xslt module as it is. So we are not going to revamp this module. hence closing


Use the correct precision when reading spark columnar data.

I didn't add any tests, but I did manually run all of TPC-DS scale factor 1 on a decimal parquet data set, which had a lot of failures before this and now all of them pass.
this fixes #1348

build


Linting and Formatting

Formatted Markdown
Formatted PowerShell
Removed PowerShell aliases

Thanks for contributing and cleaning up the formatting :)


Analysis stops before finishing files

In the latest stable release of the extension, I am getting some failures of analysis. The analysis appears to stop before processing all of the items in some files. As shown here, a function at the bottom of my file has no information available, while the same types and information are available for the function right above it.

Edit: Removed "random" from op and title because it is consistently the same items in the same files that fail, though the files do not seem noticeably different in content than any other. Arbitrary might be a better term

I have just tried rolling my version back up to a few months ago and it doesn't resolve the issue, though I wasn't having this problem last week. I'm guessing this is something to do with updating rust itself and not the extension/server

This error only seems to happen when my toolchain is set to the nightly branch. On stable, there is no issue. So I rolled back my nightly rust version night by night until I found a version where this error did not appear. The last working version for me is nightly-2020-10-26-x86_64-unknown-linux-gnu - rustc 1.49.0-nightly (4760b8fb8 2020-10-25)

This should now be fixed thanks to https://github.com/rust-analyzer/rust-analyzer/pull/6723


The whole page should be rewritten to include only the very minimum code ... how simple can it get?

I think we should think about this option because I see a lot of code/stuff which is not making any sense when we see the page in browser. For example there is:

Facebook javascript code which I never see on my screen.
There is big html table with full screen and comments button buttons (possibly buttons) but no associated js
Also on mobiles potrait view is has a strange look. (blue bars below camera view) We should consider asking a designer to suggest appropriate design for mobile portait.
Best Regards
Asim Ismail

Right, that's the whole point - strip it ALL out . It's not needed. That's
the point of this ticket.
We just want the full-screen video and the logos.
The video should try to fill the screen. If height is the limiting factor,
then we put the logos below the video, so they are off screen and only
visible by scrolling.  That is the ideal scenario.
Everything else that is on that page can go.

The purpose of this repo is to keep a model for a very simple, one page "My
Webcam" type page for any camera connected to Evercam. We want to make it
easy for someone to clone this repository and have their own webcam page,
hosted on Github. The different branches would include different
functionality, e.g. Facebook.

On 22 August 2015 at 13:04, asimism<EMAIL_ADDRESS>wrote:

I think we should think about this option because I see a lot of
code/stuff which is not making any sense when we see the page in browser.
For example there is:

Facebook javascript code which I never see on my screen.
There is big html table with full screen and comments button buttons
(possibly buttons) but no associated js
Also on mobiles potrait view is has a strange look. (blue bars below
camera view) We should consider asking a designer to suggest appropriate
design for mobile portait.
Best Regards
Asim Ismail

—
Reply to this email directly or view it on GitHub
https://github.com/evercam/wicklowcam/issues/11#issuecomment-133684146.

--
Marco Herbst
Evercam.io http://www.evercam.io/ - Cameras Unleashed
Mobile: +353 86 196 0451
Skype: marco.a.herbst

@asimism  ... do you feel this is done? if more could be done, I'll ask @affan00 ....


Dataset.pop() not working as expected.

ds = deeplake.load(f'hub://{ACTIVELOOP_ORG_NAME}/{ACTIVELOOP_DATASET}', token=ACTIVELOOP_TOKEN, read_only=False)
    for index in indices_to_be_deleted:
        print("Popping index", index)
        ds.pop(index)

I'm not having success deleting all of the rows of my dataset in this manner

@j-beastman thanks for reporting the issue and sorry about the experience. Do you mind sharing the stack trace and the error you are experiencing?

Hi @davidbuniat! Sorry I didn't include that initially, but what is a stack trace in the context of my program not crashing, but just not behaving as expected? Here's my code:
`
def pull_deeplake_dataset() -> Dataset:
# either load existing vector store or upload a new one to the hub
ds = deeplake.load(f'hub://{ACTIVELOOP_ORG_NAME}/{ACTIVELOOP_DATASET}', token=ACTIVELOOP_TOKEN, read_only=False)
return ds
def clear_dataset():
try:
ds = pull_deeplake_dataset()
len = ds.max_len
if len != 0:
print("Deleting data")
for i in range(0, len): # Apparently this is slow, idk the other way to do it.
print("Popping index", i)
ds.text.pop()
ds.embedding.pop()
ds.metadata.pop()
ds.id.pop()
except (GetChunkError, DatasetHandlerError):
print("Dataset is already empty")
`
Basically, I'm having to pop off each value from the tensors instead of being able to use ds.pop()

Hey @j-beastman! When you do
for idx in range(length):
    ds.pop(idx)

The length of the dataset changes on each iteration, so we end up popping the wrong indices and go beyond the length of the dataset. So we have to do ds.pop(0) or ds.pop() and it should work. (Did you try this as well and run into some issue?)
About the "slow indexing" warning, you can replace for i in range(0, len) with for i, sample in enumerate(ds.max_view):
for i, sample in enumerate(ds.max_view):
    ds.pop()

Also, refrain from using len as a variable, because it is a built-in function :)

Hey @FayazRahman ! (thanks for the tips) I got rid of using the index. I just use ds.pop() and it doesn't remove from the dataset. When I do ds.tensor.pop() for each tensor, I'm able to clear the dataset. I'm not sure what is going on.

@j-beastman Interesting, can you share the final state of your code so I can try it out on my end?

Attaching a ds.summary() could be useful as well

from deeplake.core.dataset import Dataset
from langchain.docstore.document import Document
from langchain.document_loaders import DirectoryLoader
from langchain.vectorstores import DeepLake, VectorStore
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.embeddings.sentence_transformer import SentenceTransformerEmbeddings
import deeplake
from deeplake.util.exceptions import GetChunkError, DatasetHandlerError
def pull_deeplake_dataset() -> Dataset:
    # either load existing vector store or upload a new one to the hub
    ds = deeplake.load(f'hub://{ACTIVELOOP_ORG_NAME}/{ACTIVELOOP_DATASET}', token=ACTIVELOOP_TOKEN, read_only=False)
    return ds

def clear_dataset():
    try:
        ds = pull_deeplake_dataset()
        for i, sample in enumerate(ds.max_len): # Try max_view too
            print("Popping index", i)
            ds.text.pop()
            ds.embedding.pop()
            ds.metadata.pop()
            ds.id.pop()
    except (GetChunkError, DatasetHandlerError):
        print("Dataset is already empty")

def get_embeddings():
    return SentenceTransformerEmbeddings(
        model_name=EMBEDDING_MODEL_NAME,
        cache_folder="../streamlit/cache/",
    )

def load_misc(directory):
    loader = DirectoryLoader(f"./{directory}")

    print(f"Loading {directory} directory for any {filter}")
    data = loader.load()
    splitter = RecursiveCharacterTextSplitter(
        chunk_size=1000,
        chunk_overlap=10,
    )
    r_docs = splitter.split_documents(data)
    return r_docs
def upload_latin():
    clear_dataset()
    chunked_text = load_misc("data/snippets")
    embedding_function = get_embeddings()
    DeepLake.from_documents(
        chunked_text,
        embedding_function,
        dataset_path=VECTOR_STORE_PATH,
        token=ACTIVELOOP_TOKEN,
    )

Try running it twice. I'll provide the file that I use for this snippet too.

latin.txt

Thanks for the details and the code @j-beastman! I see what is causing the issue, I'll let you know as soon as the fix is released.


ITX: Improve API

There should be simple APIs for writing a single waveform/wave, for example. Right now these functions are hidden inside "macros"

next release (v3.6.0)


feat: [CHAOS-5055]: onboarding new chaos services to smp

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.


Code39 seems to be wrong (adds an extra I in the beginning)

I'm tinkering with VIN decoding and here's one example:
http://d5799487.zz840.hamshawdesign.net/wp-content/uploads/2013/03/vin.jpg
I tried a couple that worked and in both cases there was an extra upper-cased I as the first character. code.slice(1) gives me the correct VIN. Not sure what's up as I haven't looked much at the actual code there.

As far as I have noticed, decoding is not the issue. If you look closely, and compare the first digit after the start pattern to the pattern defined in wikipedia it really is a upper-cased I.
If you want to work with VINs, you have to verify the code anyway. Take a look at VINResultParser.java in the zxing repository. They just strip the characters (I, O and Q) which are not allowed in the VIN. Hope that helps.
In my opinion, this is not a bug. Please verify so I can close this issue.

Cool, I agree - you should close this and I should implement a VINDecoder that does any normalization, as you suggested in the other issue I filed. Thanks for the prompt replies!

Happy to help!


fix set_random_backupstore

https://github.com/longhorn/longhorn/issues/1803
Signed-off-by: Mohamed Eldafrawi<EMAIL_ADDRESS>

Will close this PR.
issue will be fixed in https://github.com/longhorn/longhorn-tests/pull/417


Add a UserService/ProfilesService nest service

So that the auth module can know about the concept of a user

This also raises other questions about what the requirements are for authentication across the libero product suite - surely an author on reviewer is the same as an author on publisher - therefore there should be a single source of truth between products, aka a single, shared service responsible for identity management :thinking:


StatsForecast models producing NotImplementedError: tiny datasets in 0.4.0

What happened + What you expected to happen
Carryover from: https://github.com/Nixtla/hierarchicalforecast/issues/234
I upgraded my installation to 0.4.0. However, upon running my script (no code changed), I am now getting the below error. This seems to be inducing an error in using StatsForecast AutoETS models now. I also tried StatsForecast HoltWinters and received the same error.
This error did not raise with the same dataset & script when running 0.3.0 - any ideas what might have changed the behavior from 0.3.0 to 0.4.0?

NotImplementedError                       Traceback (most recent call last)
Cell In[8], line 109
98 #valid_agg_reset = valid_agg.reset_index()
100 model = StatsForecast(models=[
102                           AutoETS(season_length=12,model='AAA',alias='AutoETS_AAA')
(...)
107                          ],
108                           freq='MS', n_jobs=1, verbose=True)
--> 109 model.fit(train_agg)
111 p = model.forecast(h=h_months, fitted=True)
112 p_fitted = model.forecast_fitted_values()
File ~/lib/python3.10/site-packages/statsforecast/core.py:880, in StatsForecast.fit(self, df, sort_df, prediction_intervals)
878 self.prepare_fit(df, sort_df)
879 if self.n_jobs == 1:
--> 880     self.fitted = self.ga.fit(models=self.models)
881 else:
882     self.fitted = self._fit_parallel()
File ~/lib/python3.10/site-packages/statsforecast/core.py:77, in GroupedArray.fit(self, models)
75     for i_model, model in enumerate(models):
76         new_model = model.new()
---> 77         fm[i, i_model] = new_model.fit(y=y, X=X)
78 return fm
File ~/lib/python3.10/site-packages/statsforecast/models.py:650, in AutoETS.fit(self, y, X)
628 def fit(
629     self,
630     y: np.ndarray,
631     X: Optional[np.ndarray] = None,
632 ):
633     """Fit the Exponential Smoothing model.
634
635     Fit an Exponential Smoothing model to a time series (numpy array) y
(...)
648         Exponential Smoothing fitted model.
649     """
--> 650     self.model_ = ets_f(
651         y, m=self.season_length, model=self.model, damped=self.damped
652     )
653     self.model_["actual_residuals"] = y - self.model_["fitted"]
654     self._store_cs(y=y, X=X)
File ~/lib/python3.10/site-packages/statsforecast/ets.py:1241, in ets_f(y, m, model, damped, alpha, beta, gamma, phi, additive_only, blambda, biasadj, lower, upper, opt_crit, nmse, bounds, ic, restrict, allow_multiplicative_trend, use_initial_values, maxit)
1238 # ses for non-optimized tiny datasets
1239 if n <= npars + 4:
1240     # we need HoltWintersZZ function
-> 1241     raise NotImplementedError("tiny datasets")
1242 # fit model (assuming only one nonseasonal model)
1243 if errortype == "Z":
NotImplementedError: tiny datasets
Versions / Dependencies

dateutil                    2.8.2
hierarchicalforecast        0.4.0
matplotlib                  3.7.1
numpy                       1.23.5
pandas                      2.0.2
session_info                1.0.0
statsforecast               1.6.0

IPython             8.14.0
jupyter_client      8.2.0
jupyter_core        5.3.0
notebook            6.5.4
Python 3.10.11 (main, Apr 20 2023, 19:02:41) [GCC 11.2.0]
Linux-4.18.0-3<IP_ADDRESS>.1.el8_6.x86_64-x86_64-with-glibc2.35
Reproduction script
model = StatsForecast(models=[AutoETS(season_length=12,model='AAA',alias='AutoETS_AAA') ], freq='MS', n_jobs=1, verbose=True)
model.fit(train_agg)
The call to model.fit generates the NotImplementedError: tiny datasets from statsforecast/ets.py
The same code executes successfully when running version 0.3.0, instead of 0.4.0
Issue Severity
High: It blocks me from completing my task.

Hey. Without an example it's hard to tell. Are you using aggregate? #189 was fixed in 0.4.0, so you were maybe getting leading zeros giving your series some more samples, which is no longer the case.

Hi @jmoralez , I inspected the train_agg dataframe (produced using the aggregate function) for 0.3.0 vs 0.4.0
I'm inspecting the result of this line:
train_agg, S_train, tags = aggregate(df_train, spec)
0.3.0
In 0.3.0, the aggregate function is interpolating 0 values for 'y' in 'ds' periods where df_train has null values
So, for example, if I have a 'ds' range from '2018-01-01' thru '2018-12-01', but I'm missing 'y' values for months '2018-03-01' and '2018-04-01', the aggregate function will still populate train_agg at these 'ds' values with 'y' = 0
This allows the script to fit the StatsForecast AutoETS model and execute reconciliation for train_agg
0.4.0
In 0.4.0, the aggregate function no longer interpolates 0 values for 'y' in 'ds' periods where df_train has null values
This seems to be breaking the call to model.fit(train_agg), whereas before it was executing in 0.3.0
Should I aim to add back in the interpolated 'y'=0 values for the missing 'ds' values to replicate the 0.3.0 behavior for model.fit()? Just want to ensure this is the intended behavior for the aggregate function, before I implement a post-hoc fix

The problem with aggregate was leading zeros, e.g. if one of your series started at 2018-01-01 and another one at 2019-01-01 the aggregate function would then add all of 2018 as 0 for the second one. The fact that you have gaps in your series is a different problem and you should address it first (before running aggregate), you can use the fill_gaps function for that.

Thanks! The fill_gaps function helped resolve this issue & successfully executed the full script. However, I did have to set fill_gaps(df,freq='MS',start='global'), which reintroduces the leading zeros problem you're referencing for late-start series.
I tried leaving the start param at its default (start=‘per_serie’), but this still generated the NotImplementedError: tiny datasets.
Looking at statsforecast/ets.py where this error is tracing, I believe it may be a problem specific to my dataset:
https://github.com/Nixtla/statsforecast/blob/main/statsforecast/ets.py
n = len(y)
npars = 2  # alpha + l0
if trendtype in ["A", "M"]:
npars += 2  # beta + b0
if seasontype in ["A", "M"]:
npars += 2  # gamma + s
if damped is not None:
npars += damped
# ses for non-optimized tiny datasets
if n <= npars + 4:
# we need HoltWintersZZ function
raise NotImplementedError("tiny datasets")
I have sub-series in the hierarchy with too few data points (without adding in leading zeros). Since I am trying to fit AutoETS(model='AAA') onto all series, the (npars + 4) term is greater than n=len(y), which is raising the "tiny datasets" error.
Therefore, I believe this issue can be closed, since it's specific to a modeling approach vs. a bug in the code. Thanks for your help!
Incidentally, are there any plans to implement a MinTraceSparse(nonnegative=True) method in the future? I can handle negative values post-reconciliation, just curious about the roadmap.

Thanks. Can you please open a new issue requesting the nonnegative sparse MinTrace?


Diferent Masked Output

In base vuejs-tips/v-money/issues/90
Implement the possibility to implement your own mask on output

Implemented in the commit #e80bc5b


Write a C++ program to convert feet to centimeters

Description
Write a C++ program to convert feet to centimeters
1 foot = 30.48 centimeters
Input  : 5
Output : 152.4

How to contribute

Save the solution in program/ConvertFeetToCentimeters.cpp file
Add ConvertFeetToCentimeters.cpp file in convert-feet-to-centimeters folder

!assign

Hey @william-monroy,
This issue has been assigned to you for more than 15 days.
We are unassigning you from this issue.
If you are still interested in contributing to this issue, please get auto-assigned on the issue by commenting !assign again.
Thanks for your contributions :)

!assign


[Event Request] Codeunit 1105 - Transfer GL Entries to CA

We have a lot of Changes in this Codeunit. Can you do something like
    trigger OnRun()
    begin
>>new Code
        IsHandled := false;
        OnBeforeRun(IsHandled);
        if IsHandled then
          exit;
<<
        ConfirmTransferGLtoCA;
    end;

This would help us very much.

Thanks for reporting this. We agree, and we’ll publish a fix asap, either in an update for the current version or in the next major release. We will update this issue with information about availability.


Added disable resend link to signin and contact methods

Details

Adde when offline send magic code is disabled in sign in page and contact methods
Fixed Issues

$ https://github.com/Expensify/App/issues/17836
https://github.com/Expensify/App/issues/17836#issuecomment-1526043913
Tests

Go to signin
Enter login
In validation code page
Switch to offline mode
Make sure Didn't receive a magic code is not pressable and doesn't do any action

[x] Verify that no errors appear in the JS console

Offline tests

Same as tests
QA Steps

Same as tests

[x] Verify that no errors appear in the JS console

PR Author Checklist

[x] I linked the correct issue in the ### Fixed Issues section above
[x] I wrote clear testing steps that cover the changes made in this PR

[x] I added steps for local testing in the Tests section
[x] I added steps for the expected offline behavior in the Offline steps section
[x] I added steps for Staging and/or Production testing in the QA steps section
[x] I added steps to cover failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[x] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)
[x] I tested this PR with a High Traffic account against the staging or production API to ensure there are no regressions (e.g. long loading states that impact usability).

[x] I included screenshots or videos for tests on all platforms
[x] I ran the tests on all platforms & verified they passed on:

[x] Android / native
[x] Android / Chrome
[x] iOS / native
[x] iOS / Safari
[x] MacOS / Chrome / Safari
[x] MacOS / Desktop

[x] I verified there are no console errors (if there's a console error not related to the PR, report it or open an issue for it to be fixed)
[x] I followed proper code patterns (see Reviewing the code)

[x] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick)
[x] I verified that the left part of a conditional rendering a React component is a boolean and NOT a string, e.g. myBool && <MyComponent />.
[x] I verified that comments were added to code that is not self explanatory
[x] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[x] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method

[x] If any non-english text was added/modified, I verified the translation was requested/reviewed in #expensify-open-source and it was approved by an internal Expensify engineer. Link to Slack message:

[x] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[x] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is approved by marketing by adding the Waiting for Copy label for a copy review on the original GH to get the correct copy.
[x] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[x] I verified the JSDocs style guidelines (in STYLE.md) were followed

[x] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[x] I followed the guidelines as stated in the Review Guidelines
[x] I tested other components that can be impacted by my changes (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar are working as expected)
[x] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[x] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[x] I verified that if a function's arguments changed that all usages have also been updated correctly
[x] If a new component is created I verified that:

[x] A similar component doesn't exist in the codebase
[x] All props are defined accurately and each prop has a /** comment above it */
[x] The file is named correctly
[x] The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
[x] The only data being stored in the state is data necessary for rendering and nothing else
[x] For Class Components, any internal methods passed to components event handlers are bound to this properly so there are no scoping issues (i.e. for onClick={this.submit} the method this.submit should be bound to this in the constructor)
[x] Any internal methods bound to this are necessary to be bound (i.e. avoid this.submit = this.submit.bind(this); if this.submit is never passed to a component event handler like onClick)
[x] All JSX used for rendering exists in the render method
[x] The component has the minimum amount of code necessary for its purpose, and it is broken down into smaller components in order to separate concerns and functions

[x] If any new file was added I verified that:

[x] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[x] If a new CSS style is added I verified that:

[x] A similar style doesn't already exist
[x] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(themeColors.componentBG))

[x] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[x] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[x] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[x] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[x] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.
[x] I have checked off every checkbox in the PR author checklist, including those that don't apply to this PR.

Screenshots/Videos

Web
https://github.com/Expensify/App/assets/59907218/8be7db0b-a118-46ef-9716-9a5c686cdf38
https://github.com/Expensify/App/assets/59907218/69fb52b3-98b2-4e1f-b136-5577c0eef6bb

Mobile Web - Chrome
https://github.com/Expensify/App/assets/59907218/643d62e0-4d88-4ffe-b2b1-5ff641c5ca3c
https://github.com/Expensify/App/assets/59907218/db7f3b9c-d359-4957-a6ae-e97ef4c626aa

Mobile Web - Safari
![Simulator Screen Shot - iPhone 14 - 2023-05-31 at 13 22 03](https://github.com/Expensify/App/assets/59907218/c1bf5ba0-4990-43d0-bd57-d1891a9e67c9)

Desktop
https://github.com/Expensify/App/assets/59907218/eb9bba5b-dcd0-4591-af95-424808f59d9f

iOS

https://github.com/Expensify/App/assets/59907218/dfb7e4b7-b543-4dbf-85ca-f2924bcdc233

Android

https://github.com/Expensify/App/assets/59907218/2f5f2eb9-3881-45e1-a53d-b8ff111bcc21

@parasharrajat Sorry, my bad. Accidently mentioned you earlier

@rushatgabhane Looks like main branch is way ahead of this branch, and it has conflicts. Also the main branch replaced TouchableOpacity component withPressableWithFeedback`, which is what we needed. When I resolved conflicts, all changes was registered under my name, and it will mess up git blame. I am not sure where I went wrong.
I fixed above issue by reverting my local branch to its initial point and synced with main branch, then I applied my changes. But now my local branch is behind origin and I was curious if I can force push my branch, which would solve conflict issues and have cleaner commit history?

Updated with new screenshots and videos

@rushatgabhane @youssef-lr
Can you guys review this PR, and help to push it forward

@rushatgabhane @youssef-lr Friendly bump

@rushatgabhane Resolved conflicts

@rushatgabhane Friendly bump

@rushatgabhane
Disabling the button was not in the issue, only resend links were. Anyways added them also
https://github.com/Expensify/App/assets/59907218/bce381dc-79e4-4467-8c13-11d10482d927

@rushatgabhane Bump^

@rushatgabhane It is using OfflineWithFeedback https://github.com/Expensify/App/blob/83ab0160a3b5c385fd26fffe20bdbccabf9249c0/src/pages/settings/Profile/Contacts/ValidateCodeForm/BaseValidateCodeForm.js#L156-L170 .
Looks like the issue you are showing is present throughout the app. I reproduced it on the payments page. I think we should open a new issue for that and treat it as separate.

@rushatgabhane Done, resolved conflicts

@youssef-lr Friendly bump

:hand: This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release.

🚀 Deployed to staging by https://github.com/youssef-lr in version: 1.3.31-0 🚀

platform
result

🤖 android 🤖
failure ❌

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

🚀 Deployed to production by https://github.com/luacmartins in version: 1.3.31-3 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
cancelled 🔪

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

🚀 Deployed to production by https://github.com/luacmartins in version: 1.3.31-3 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅


feat(scanner): add support json.RawMessage in setDefaultValue

I hereby agree to the terms of the CLA available at: https://yandex.ru/legal/cla/?lang=en

scan row failed: type *json.RawMessage is unknown at `github.com/ydb-platform/ydb-go-sdk/v3/internal/table/scanner.(*scanner).setDefaultValue(scanner.go:1019)`

Pull request type

Please check the type of change your PR introduces:

[ ] Bugfix
[x] Feature
[ ] Code style update (formatting, renaming)
[ ] Refactoring (no functional changes, no api changes)
[ ] Build related changes
[ ] Documentation content changes
[ ] Other (please describe):

What is the current behavior?
Error
Issue Number: N/A
What is the new behavior?

Set nil as default value for json.RawMessage when scanning rows

Other information

Codecov Report

Merging #216 (df7471c) into master (7eb5e28) will decrease coverage by 20.05%.
The diff coverage is 0.00%.

@@             Coverage Diff             @@
##           master     #216       +/-   ##
===========================================
- Coverage   56.66%   36.61%   -20.06%
===========================================
  Files         140      138        -2
  Lines       15439    15361       -78
===========================================
- Hits         8749     5624     -3125
- Misses       6133     9305     +3172
+ Partials      557      432      -125

Flag
Coverage Δ

1.14.x
?

1.15.x
?

1.16.x
?

1.17.x
36.61% <0.00%> (-20.06%)
:arrow_down:

1.18.x
26.84% <0.00%> (-0.01%)
:arrow_down:

connection
14.94% <0.00%> (-0.01%)
:arrow_down:

discovery
14.42% <0.00%> (-0.01%)
:arrow_down:

e2e
19.63% <0.00%> (-27.29%)
:arrow_down:

integration
19.63% <0.00%> (-27.29%)
:arrow_down:

macOS-latest
?

ratelimiter
?

scripting
17.35% <0.00%> (-0.01%)
:arrow_down:

table
?

ubuntu-latest
36.61% <0.00%> (-20.06%)
:arrow_down:

unit
26.84% <0.00%> (-0.01%)
:arrow_down:

windows-latest
?

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

internal/table/scanner/scanner.go
35.96% <0.00%> (-1.60%)
:arrow_down:

internal/retry/check.go
0.00% <0.00%> (-100.00%)
:arrow_down:

internal/ratelimiter/options/acquire.go
0.00% <0.00%> (-100.00%)
:arrow_down:

internal/ratelimiter/ratelimiter.go
0.00% <0.00%> (-91.77%)
:arrow_down:

internal/repeater/repeat.go
0.00% <0.00%> (-80.29%)
:arrow_down:

internal/deadline/context.go
0.00% <0.00%> (-80.00%)
:arrow_down:

internal/table/statement.go
0.00% <0.00%> (-75.00%)
:arrow_down:

internal/scheme/config/config.go
12.50% <0.00%> (-75.00%)
:arrow_down:

internal/ratelimiter/config/config.go
12.50% <0.00%> (-75.00%)
:arrow_down:

internal/coordination/config/config.go
12.50% <0.00%> (-75.00%)
:arrow_down:

... and 70 more

Continue to review full report at Codecov.

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

I cannot understand how json.RawMessage will work with ydb values.

Like this
type Merchant struct {
	Attributes json.RawMessage `json:"attributes"`
}

var m Merchant

r.ScanNamed(
  named.OptionalWithDefault("attributes", &m.Attributes),
)

Yes, I know I can use the []byte type for prop Attributes, but I don't want to rewrite my codebase.

What the ydb column type you are expect for apply to json.Unmarshaller?

I pushed commit to your branch with supporting json.Unmarshaler.
Please review changes and fetch for checking your usecase with PR's improvement.
For local checking you can use go.mod replace instruction. For example
replace github.com/ydb-platform/ydb-go-sdk/v3 => ../ydb-go-sdk-forked

Please review changes and fetch for checking your usecase with PR's improvement.

It works!

type Merchant struct {
	Attributes json.RawMessage `json:"attributes"`
}

func (m *Merchant) Scan(r result.StreamResult) error {
	return r.ScanNamed(
		named.OptionalWithDefault("attributes", &m.Attributes),
	)
}

Changes fetches in PR #222

released https://github.com/ydb-platform/ydb-go-sdk/releases/tag/v3.22.0


Port tensor control flow AD tests

test/TensorFlowRuntime/tensor_autodiff_control_flow.swift from apple/swift needs to be ported to Tests/TensorFlowTests/TensorAutoDiffTests.swift.
This enables removing the deprecated TensorFlowUnittest module from apple/swift - see https://github.com/apple/swift/pull/26447.

I don’t think this needs to block #26447. These tensor tests are merely using additive arithmetics. Please just make sure the same arithmetics are tested using ‘Tracked’ in the AD suite, and then delete the test file in order to merge #26447.

@dan-zheng I think this issue can be closed.

@dan-zheng I think this issue can be closed.

Thanks! Closing.


Why wait for new version to start on darwin?

I was just reading your code, trying to understand the update process on OS X / Linux, can you explain the following lines?
https://github.com/phfaist/updater4pyi/blob/master/updater4pyi/upd_core.py#L648-L650
    subprocess.Popen("while ps -p %d >/dev/null; do sleep 1; done; ( %s & )"
        %(this_pid, exe_cmd),
        shell=True)

Thanks for your interest!
I think those lines were mostly so that the old version of the program could free up any resources before running the new version. Say, if the old program updates its configuration file upon exit, you'd want the new version of the program to pick up the updated file.
I'm no longer sure if there was a stronger reason. There might have been also an issue if the program executable was located on some non-unix-like filesystem (sshfs, ...).

I'm considering implementing something similar (although slimmed down) and your code is a very useful reference for me. :)
Do you still use this library? Would you consider it to be "well supported" or "stable"?

Happy to be useful :)
I wrote the code in a rather short period of time, I tried to be careful, tested it on various platforms at the time, and haven't really modified it much since and haven't noticed any major catastrophes. I'm using it for my own project bibolamazi. That's pretty much as far as I it goes about being "well supported and/or stable". As any open source project, you know, no guarantees.
Of course if you're willing to contribute code back eg. in the form of an update source or interface you're welcome to send me a pull request :)

Well, right now my plan is to create an application that installs and updates within the appdata directories of Windows, so currently I'm thinking it'll be very similar to Google Chrome. I have to operate this within corporate networks littered with outdated tech and completely locked down, so I'm carefully considering all options. :)
I'm completely clueless about OS X at this point though, I haven't had time to investigate how things work in Apple country. Is there an analog to the appdata directory? Or some other place that is garantueed to be writable?

I see, good luck :) I'm really not quite sure actually about these directories any more because it has been some time I haven't looked at that, sorry.

I've been watching this project quietly with interest.  I use Mac OS X regularly, so perhaps I can answer the question about the OS X analog to the appdata directory, and comment on the Google Chrome example.
On PyPi, there is a module called appdirs which helps with this: https://pypi.python.org/pypi/appdirs/
The closest analog to Windows' appdata directory is probably ~/Library/Application Support/
However other directories within ~/Library/ are also used for storing user-specific application data, for example ~/Library/Google/GoogleSoftwareUpdate/ and ~/Library/Logs/GoogleSoftwareUpdateAgent.log.
Google Chrome on Mac OS X provides a drag-and-drop installer, i.e. you drag Google Chrome.app from a downloaded disk image (DMG) into your Mac's /Applications/ folder (or somewhere else if you don't have permission to put it there).  Privilege elevation is required to copy it into /Applications/, but then once it's there, it is writeable by whoever installed it, so Chrome or GoogleSoftwareUpdateAgent can install updates into /Applications/Google Chrome.app/Contents/Versions/ and update the current version number in  /Applications/Google Chrome.app/Contents/Info.plist without requiring further privilege elevation.

@wettenhj Thanks for your enlightening comments!
In our case, the privilege elevation is less of an issue on OS X since this is not an environment encountered in the corporate networks we support (it's mostly Windows XP unfortunately). When we deploy on OS X it will most likely be on someone's private MacBook.
This has been very informative. I'll make sure to leave updates in this thread when we start work on this project.


nixos/vaultwarden: Make example more detailed.

Description of changes
It took me a while to figure out how to correctly setup vaultwarden on NixOS.
I hope that this more detailed example will help others.
Also addresses https://github.com/NixOS/nixpkgs/pull/55413#discussion_r277774711 in more detail, and gives a recommendation on what to use.
Things done

[x] Manual builds (I tried on nixos-22.05)
[x] Fits CONTRIBUTING.md.

CC past vaulwarden NixOS service contributors: @msteen @WilliButz @ivan @K900 @alarsyo @dywedir

Merging since the doc change is rather benign.


Add shortcut button to borderless fullscreen (equivalent of F11 on browsers)

Search before asking

[X] 我在 issues 列表中搜索，没有找到类似的内容。
I searched in the issues and found nothing similar.

Motivation
Some apps need to use on borderless fullscreen mode.
Solution
Browsers are support it, so i think it possible to integrate it.
Alternatives

Anything else?

Are you willing to submit a PR?

[ ] I'm willing to submit a PR!

This is supported now, but the shortcut I use more commonly is Control + Command + F,Then double-click the title bar to go full screen.
However, I did not consider the F11 shortcut key for Windows. I added it in the latest version.


How to configure disk for volumes for Longhorn?

How to configure disk for volumes for Longhorn during installation using configuration options? Not in GUI please!
I have a couple of Kubernetes nodes with large disks. Disk is mounted at /var/lib/data/
How to configure Longhorn at installation to use this /var/lib/data/ only?
I tried to use helm chart with values.yml like this.
defaultSettings:
  defaultDataPath: /var/lib/data/

It does not work as I expected, Volumes are placed at /var/lib/longhorn/ and disk mounted at /var/lib/data/ is not even shown in Longhorn GUI.

Default settings only apply to new installations not upgrades, was this a new installation?
There are additional ways of specifying custom disks for each node during installation more info here: https://longhorn.io/docs/1.2.0/advanced-resources/default-disk-and-node-config/#customizing-default-disks-for-new-nodes
But generally the simplest would be to use the default settings for a new installation in case where all nodes use the same storage path for your dedicated disks i.e /var/lib/data in your case.

This is a fresh new installation of Longhorn.
Thank you for the link to the relevant documentation!
However the documentation is confusing. It is written there:
Prerequisite: The Longhorn setting Create Default Disk on Labeled Nodes must be enabled.
But how to enable setting Create Default Disk on Labeled Nodes? No example is given.
Then I am confused about Storage Tags https://longhorn.io/docs/1.2.0/volumes-and-nodes/storage-tags/
Do Storage Tags do the same job as Default Disk on Labeled Nodes but for a specific StorageClass ?

I need more assistance with configuration of a dedicated disk on a dedicated nodes for Longhorn for a fresh Longhorn installation.
My cluster has 3 dedicated worker storage-nodes with a big disk attached at /var/lib/data/ and 3 other worker nodes.
This dedicated storage nodes have labels and annotations like this:
Labels:

                    longhorn=storage
                    node.longhorn.io/create-default-disk=config
Annotations:
                    node.longhorn.io/default-disks-config:
                      [{"path":"/var/lib/data/","allowScheduling":true,"tags":["storage"]},{"path":"/var/lib/longhorn/","allowScheduling":false}]
                    node.longhorn.io/default-node-tags: ["storage"]

longhorn values.yaml
defaultSettings:
  create-default-disk-labeled-nodes: true
  systemManagedComponentsNodeSelector: "longhorn:storage"
  default-data-path: "/var/vcap/data/"

Longhorn is installed using Helm chart:
helm install longhorn longhorn/longhorn --namespace longhorn-system --values longhorn/values.yml
Problems:

Some of Longhorn instance-manager pods are unstable, being created and dropped with Predicate MatchNodeSelector failed message
A simple test creates a volumes at /var/lib/longhorn/, not at /var/vcap/data/ as expected
Disks at /var/vcap/data/ are not shown in Longhorn web GUI under nodes
Simple worker nodes are marked as "Schedulable" in Longhorn GUI, expected to be disabled.
Values create-default-disk-labeled-nodes and default-data-path in ConfigMap longhorn-default-setting are NOT set. However system-managed-components-node-selector: longhorn:storage is set.

Any help with troubleshooting is very appreciated.


update engines property to be node >=10 and <13

We currently only support nodes 10 and 12 (even numbered, stable).

Is there a way that we can output better errors so that it's easy to diagnose for customers?
I think for a lot of users they don't think of checking node versions as an initial step.

The "engines" property does not do any runtime checking -- it is strictly a dependency check when at time of npm install for a module -- which in hindsight is useless for this cli since it won't be a dependency to anything.
We could write a hook that printed a warning.

@sarahxxu added #206 for the node version check

https://github.com/adobe/aio-cli-plugin-info/issues/21 takes care of printing a warning on aio info.
Should we also do a similar check at deploy time (aio app deploy), the runtime property in manifest.yml (runtime: 'nodejs:10')?

@Himavanth I think we should. What about:

aio app deploy
aio app run
Anything else that would need a warning message within the Runtime plugin itself?


Don't pass extraneous argument to sprintf()

Only show the error description, not the chunk of whichever text we failed to
write to file, in the error message given when copying to MH mailbox failed.

Has this been merged or only approved?

Just approved.


fix(admin-api): removed consumers type field

Summary
Remove the invalid field from this API endpoint docs.

@samugi  when you are ready for this to be reviewed please remove the draft label and I can take a look


Upgrading to Beta 6 Issue

I've tried the various methods for upgrading, but always end up with the same outcome.  To be honest i'm not sure if this is an issue, or something with our overrides, but it doesn't make sense that it would be that with my limited SQL.
Debug screen image
Output below:
`Doctrine\DBAL\Exception\InvalidFieldNameException thrown with message "An exception occurred while executing 'select Pages.cID, Pages.pkgID, Pages.siteTreeID, Pages.cPointerID, Pages.cPointerExternalLink, Pages.cIsActive, Pages.cIsSystemPage, Pages.cPointerExternalLinkNewWindow, Pages.cFilename, Pages.ptID, Collections.cDateAdded, Pages.cDisplayOrder, Collections.cDateModified, cInheritPermissionsFromCID, cInheritPermissionsFrom, cOverrideTemplatePermissions, cCheckedOutUID, cIsTemplate, uID, cPath, cParentID, cChildren, cCacheFullPageContent, cCacheFullPageContentOverrideLifetime, cCacheFullPageContentLifetimeCustom from Pages inner join Collections on Pages.cID = Collections.cID left join PagePaths on (Pages.cID = PagePaths.cID and PagePaths.ppIsCanonical = 1) where Pages.cID = ?' with params [1]:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'Pages.siteTreeID' in 'field list'"
Stacktrace:
#28 Doctrine\DBAL\Exception\InvalidFieldNameException in /var/www/html/updates/concrete5-8.0.0b6/concrete/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractMySQLDriver.php:71
#27 Doctrine\DBAL\Driver\AbstractMySQLDriver:convertException in /var/www/html/updates/concrete5-8.0.0b6/concrete/vendor/doctrine/dbal/lib/Doctrine/DBAL/DBALException.php:116
#26 Doctrine\DBAL\DBALException:driverExceptionDuringQuery in /var/www/html/updates/concrete5-8.0.0b6/concrete/vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.php:836
#25 Doctrine\DBAL\Driver\PDOException in /var/www/html/updates/concrete5-8.0.0b6/concrete/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOStatement.php:93
#24 PDOException in /var/www/html/updates/concrete5-8.0.0b6/concrete/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOStatement.php:91
#23 PDOStatement:execute in /var/www/html/updates/concrete5-8.0.0b6/concrete/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOStatement.php:91
#22 Doctrine\DBAL\Driver\PDOStatement:execute in /var/www/html/updates/concrete5-8.0.0b6/concrete/vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.php:830
#21 Doctrine\DBAL\Connection:executeQuery in /var/www/html/updates/concrete5-8.0.0b6/concrete/src/Page/Page.php:142
#20 Concrete\Core\Page\Page:populatePage in /var/www/html/updates/concrete5-8.0.0b6/concrete/src/Page/Page.php:117
#19 Concrete\Core\Page\Page:getByID in /var/www/html/updates/concrete5-8.0.0b6/concrete/src/Entity/Site/Site.php:138
#18 Concrete\Core\Entity\Site\Site:getSiteHomePageObject in /var/www/html/updates/concrete5-8.0.0b6/concrete/src/Page/Page.php:388
#17 Concrete\Core\Page\Page:getFromRequest in /var/www/html/updates/concrete5-8.0.0b6/concrete/src/Routing/DispatcherRouteCallback.php:40
#16 Concrete\Core\Routing\DispatcherRouteCallback:execute in /var/www/html/updates/concrete5-8.0.0b6/concrete/src/Http/DefaultDispatcher.php:115
#15 Concrete\Core\Http\DefaultDispatcher:handleDispatch in /var/www/html/updates/concrete5-8.0.0b6/concrete/src/Http/DefaultDispatcher.php:53
#14 Concrete\Core\Http\DefaultDispatcher:dispatch in /var/www/html/updates/concrete5-8.0.0b6/concrete/src/Http/Middleware/DispatcherDelegate.php:39
#13 Concrete\Core\Http\Middleware\DispatcherDelegate:next in /var/www/html/updates/concrete5-8.0.0b6/concrete/src/Http/Middleware/FrameOptionsMiddleware.php:39
#12 Concrete\Core\Http\Middleware\FrameOptionsMiddleware:process in /var/www/html/updates/concrete5-8.0.0b6/concrete/src/Http/Middleware/MiddlewareDelegate.php:38
#11 Concrete\Core\Http\Middleware\MiddlewareDelegate:next in /var/www/html/updates/concrete5-8.0.0b6/concrete/src/Http/Middleware/CookieMiddleware.php:37
#10 Concrete\Core\Http\Middleware\CookieMiddleware:process in /var/www/html/updates/concrete5-8.0.0b6/concrete/src/Http/Middleware/MiddlewareDelegate.php:38
#9 Concrete\Core\Http\Middleware\MiddlewareDelegate:next in /var/www/html/updates/concrete5-8.0.0b6/concrete/src/Http/Middleware/ApplicationMiddleware.php:29
#8 Concrete\Core\Http\Middleware\ApplicationMiddleware:process in /var/www/html/updates/concrete5-8.0.0b6/concrete/src/Http/Middleware/MiddlewareDelegate.php:38
#7 Concrete\Core\Http\Middleware\MiddlewareDelegate:next in /var/www/html/updates/concrete5-8.0.0b6/concrete/src/Http/Middleware/MiddlewareStack.php:86
#6 Concrete\Core\Http\Middleware\MiddlewareStack:process in /var/www/html/updates/concrete5-8.0.0b6/concrete/src/Http/DefaultServer.php:85
#5 Concrete\Core\Http\DefaultServer:handleRequest in /var/www/html/updates/concrete5-8.0.0b6/concrete/src/Foundation/Runtime/Run/DefaultRunner.php:94
#4 Concrete\Core\Foundation\Runtime\Run\DefaultRunner:run in /var/www/html/updates/concrete5-8.0.0b6/concrete/src/Foundation/Runtime/DefaultRuntime.php:102
#3 Concrete\Core\Foundation\Runtime\DefaultRuntime:run in /var/www/html/updates/concrete5-8.0.0b6/concrete/dispatcher.php:39
#2 require in /var/www/html/concrete/bootstrap/configure.php:49
#1 require in /var/www/html/concrete/dispatcher.php:16
#0 require in /var/www/html/index.php:3
`

I don't know that we're planning to support upgrade from beta at this point, @aembler?

My team have a had a few sessions with @aembler (2xLiams) and the impression was given that the update was possible.
We're developing a site within the beta, how would you recommend upgrading in this case? Fresh install and copy over the overrides?

@tylerhagan When my site gets borked, a lot of the time I can get it working by creating a backup and doing the following:
$ ./concrete/bin/concrete5 orm:schema-tool:update --dump-sql

Then I review the sql and if all looks well I run:
$ ./concrete/bin/concrete5 orm:schema-tool:update --force
$ ./concrete/bin/concrete5 orm:generate-proxies

and that usually does the trick.

Cheers @KorvinSzanto will give it a shot!

@tylerhagan Are you updating from a previous beta, or from <IP_ADDRESS>? Updating from a previous beta will likely not work – but updating from <IP_ADDRESS> should. You shouldn't have to run any commands to do an update – just copy the concrete directory over the previous one, load the site, and the upgrade happens in the background.

@aembler That'll be the case then, as it's from a previous beta version to the new one. I'll go for a fresh install and migrate the necessary shi*!
Cheers for clearing that up


Add nothing app workflow

IMPORTANT: Where possible all PRs must be linked to a Github issue
Change:
Add NOTHING as new ApplicationWorkflow.
Why:
Useful when the ApplicationWorkflow is configurable, when there's certain use case where if the user clicks a button, it does nothing.
Engineer Checklist

[ ] I have written Unit tests for any new feature(s) and edge cases for bug fixes
[x] I have added any strings visible on UI components to the strings.xml file
[x] I have updated the  CHANGELOG.md file for any notable changes to the codebase
[x] I have run ./gradlew spotlessApply and ./gradlew spotlessCheck to check my code follows the project's style guide
[x] I have built and run the FHIRCore app to verify my change fixes the issue and/or does not break the app
[x] I have checked that this PR does NOT introduce breaking changes that require an update to Content and/or Configs? If it does add a sample here or a link to exactly what changes need to be made to the content.

Code Reviewer Checklist

[ ] I have verified Unit tests have been written for any new feature(s) and edge cases
[ ] I have verified any strings visible on UI components are in the strings.xml file
[ ] I have verifed the CHANGELOG.md file has any notable changes to the codebase
[ ] I have verified the solution has been implemented in a configurable and generic way for reuseable components
[ ] I have built and run the FHIRCore app to verify the change fixes the issue and/or does not break the app

I do not understand the use case for this @FikriMilano. How will this be used?

say @ellykits can we simply declare a null in rules? will that make the button does nothing when clicked?
{
  "name": "onClick",
  "condition": "true",
  "priority": 2,
  "actions": [
    "data.put('onClick', data.get('taskCode').equals('029') ? 'LAUNCH_PROFILE' : null)"
  ]
}

Based on this line, it should be ok to declare a null
https://github.com/opensrp/fhircore/blob/main/android/quest/src/main/java/org/smartregister/fhircore/quest/util/extensions/ConfigExtensions.kt#L103

Say @ellykits can we simply declare a null in rules? will that make the button does nothing when clicked? This new workflow was meant to replace null value as I thought we can't declare one while inside a rule.
{
  "name": "onClick",
  "condition": "true",
  "priority": 2,
  "actions": [
    "data.put('onClick', data.get('taskCode').equals('029') ? 'LAUNCH_PROFILE' : null)"
  ]
}

You can use the rule condition instead. In your case, the rule should only be executed if the task code is '029'. Re-write the rule to:
{
  "name": "onclickAction",
  "condition": "data.get('taskCode').equals('029')",
  "priority": 2,
  "actions": [
    "data.put('onclickAction', 'LAUNCH_PROFILE')"
  ]
}

Alternatively, you can use the clickable attribute that accepts a boolean from an executed rule. @FikriMilano. If the check is not performed before a click action for your widget, could you implement it? Theoretically, it should work for all supported widgets.

I'm closing this, use the suggestions in the comments. Feel free to re-open this if the suggestions do not work @FikriMilano.


nextest-runner: fix performance regression

Fix performance regression introduced in #97 by spawing a task onto a
threadpool to wait for the test to complete, signaling back to the main
thread that its completed via a channel. The main thread then waits on
recieving this message using a timeout, logging each time a timeout is
reached.

/land

thanks @bmwill !


Create missing models

app/src/definitions/models.ts contains a list of the currently known models. A lot of them would benefit from a low poly model to distinguish them.

list of important missing models

[ ] /Game/FactoryGame/Buildable/Building/Stair/Build_Stairs_Right_01.Build_Stairs_Right_01_C
[ ] /Game/FactoryGame/Buildable/Factory/Converter/Build_Converter.Build_Converter_C
[ ] /Game/FactoryGame/Buildable/Factory/CentralStorage/Build_CentralStorage.Build_CentralStorage_C
[ ] /Game/FactoryGame/Buildable/Factory/ConveyorLiftMk1/Build_ConveyorLiftMk1.Build_ConveyorLiftMk1_C
[ ] /Game/FactoryGame/Buildable/Factory/JumpPad/Build_JumpPad.Build_JumpPad_C
[ ] /Game/FactoryGame/Buildable/Factory/JumpPad/Build_JumpPadTilted.Build_JumpPadTilted_C
[ ] /Game/FactoryGame/Buildable/Factory/LandingPad/Build_LandingPad.Build_LandingPad_C
[ ] /Game/FactoryGame/Prototype/WAT/BP_WAT1.BP_WAT1_C
[ ] /Game/FactoryGame/Prototype/WAT/BP_WAT2.BP_WAT2_C
[ ] /Game/FactoryGame/Resource/BP_ResourceNodeGeyser.BP_ResourceNodeGeyser_C
[ ] /Game/FactoryGame/Resource/Environment/Crystal/BP_Crystal_mk2.BP_Crystal_mk2_C
[ ] /Game/FactoryGame/Resource/Environment/Crystal/BP_Crystal_mk3.BP_Crystal_mk3_C
[ ] /Game/FactoryGame/Resource/Environment/Crystal/BP_Crystal.BP_Crystal_C
[ ] /Game/FactoryGame/World/Benefit/DropPod/BP_DropPod.BP_DropPod_C
[ ] /Game/FactoryGame/World/Hazard/SporeCloudPlant/BP_SporeFlower.BP_SporeFlower_C


On POST, replaced ownerId with lookup of the common name from OpenAM.

DSDEV-1819
Config files are more properties like, using = instead of mixed in json.

Fixed up the above, and added a commit to make it easier to quickly test with local .sbtopts files.
Comments welcome. If all is well, including https://github.com/broadinstitute/cmi-chef-repo/pull/65, then merge away on both. Or let me know if one would prefer a single squash and I can merge them.

Looks good.  OK to merge after Chef is done.


Use native type, remove lots of type conversions

Check List:

[x] Tests pass (./test.sh <username> shows no differences between expected and actual outputs)
[x] All formatting changes by the build are committed
[x] Your launch script is named calculate_average_<username>.sh (make sure to match casing of your GH user name) and is executable
[x] Output matches that of calculate_average_baseline.sh
[x] For new entries, or after substantial changes: When implementing custom hash structures, please point to where you deal with hash collisions (line number)

STANDARD
Benchmark 1: ./calculate_average_abeobk.sh
Time (mean ± σ):     560.5 ms ±   2.9 ms    [User: 2.6 ms, System: 1.6 ms]
Range (min … max):   557.2 ms … 567.1 ms    10 runs
10K STATION
Benchmark 1: ./calculate_average_abeobk.sh
Time (mean ± σ):      2.100 s ±  0.007 s    [User: 0.002 s, System: 0.003 s]
Range (min … max):    2.089 s …  2.108 s    10 runs

00:02.091 now, nice!
Benchmark 1: timeout -v 300 ./calculate_average_abeobk.sh 2>&1
  Time (mean ± σ):      2.087 s ±  0.014 s    [User: 0.002 s, System: 0.004 s]
  Range (min … max):    2.063 s …  2.099 s    5 runs

Summary
  abeobk: trimmed mean 2.09120156588, raw times 2.06283919988,2.08849347488,2.09662411088,2.08848711188,2.09894213488

Leaderboard

| # | Result (m:s.ms) | Implementation     | JDK | Submitter     | Notes     |
|---|-----------------|--------------------|-----|---------------|-----------|
|   | 00:02.091 | [link](https://github.com/gunnarmorling/1brc/blob/main/src/main/java/dev/morling/onebrc/CalculateAverage_abeobk.java)| 21.0.2-graal | [Van Phu DO](https://github.com/abeobk) | GraalVM native binary, uses Unsafe |


Document how to install the Streaming Integrator profile using Apt

Description:
Document how to install the Streaming Integrator profile using Apt.
Suggested Labels:
Streaming-Integration docs
Affected Product Version:
EI 7.0.0
Link
https://github.com/wso2/docs-ei/blob/master/en/streaming-integrator/docs/setup/installing-Stream-Processor-Using-Apt.md

Obsolete


develop to master

:warning: Please install the  to ensure uploads and comments are reliably processed by Codecov.
Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 89.85%. Comparing base (e94415f) to head (df740d0).

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@            Coverage Diff             @@
##           master     #116      +/-   ##
==========================================
- Coverage   90.14%   89.85%   -0.29%
==========================================
  Files          12       12
  Lines        1045     1045
==========================================
- Hits          942      939       -3
- Misses         89       91       +2
- Partials       14       15       +1

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


Allow Mac users to utilize Touch Bar to select online streamers

It would be great if MacOS users could use their Touch Bar to select streamers to watch.
This should only display currently live streamers.
These tiles should have the text name of streamer, if possible, but also the background image should be the streamer's profile picture.

Until Electron supports NSScrollView in Touch Bar, I think we'll have to mark this as wont fix. We can at least reveal how many online streamers are there and who we're currently watching, though.


[1.x] Introduce RestHandler.Wrapper to help with delegate implementations

Description
Backport #1004 to 1.x
Issues Resolved
None, this is java utility class that can be utilized by OpenSearch core and OpenSearch plugins
Check List

[ ] New functionality includes testing.

[ ] All tests pass

[ ] New functionality has been documented.

[ ] New functionality has javadoc added

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

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

start gradle check


docs: Improve disk based policy documentation

update instructions on configuring via helm
Please ensure your pull request adheres to the following guidelines:

[ ] For first time contributors, read Submitting a pull request
[ ] All code is covered by unit and/or runtime tests where feasible.
[ ] All commits contain a well written commit description including a title,
description and a Fixes: #XXX line if the commit addresses a particular
GitHub issue.
[ ] If your commit description contains a Fixes: <commit-id> tag, then
please add the commit author[s] as reviewer[s] to this issue.
[x] All commits are signed off. See the section Developer’s Certificate of Origin
[ ] Provide a title or release-note blurb suitable for the release notes.
[x] Are you a user of Cilium? Please add yourself to the Users doc
[ ] Thanks for contributing!

Image build failed due to quay outage. Let's retrigger CI by closing and re-opening

/test


QUESTION: how to run GA tests for outside contributors

Is your feature request related to a problem? Please describe.
The contributing guidelines are currently written assuming that outside contributors can run GA tests automatically.  From experience in pysat/pysatNASA#139, this needs to be initiated by a member of the team.
Describe the solution you'd like
Update the docs to explain this.
Describe alternatives you've considered
Can GA be configured to run automatically for all?  Do we want this instead?
Additional context
n/a

pinging @rstoneback, @aburrell, @JonathonMSmith for discussion.

I'm not sure this has the answer to the first question but I think the permissions/access to GA is configurable.
As for what everyone wants. I'm usually of the mind that we can leave permissions very open until there's a problem with excessive GA test runs.

Updated contributing doc to reflect. 99737b73ce18d6573a98ed0bd63826cfcfd801c5


Uncaught TypeError: Cannot read property 'overlayMouseTarget' of null

I previously posted this on StackOverflow but since this is less of a “how to” question and more a case of “there might be a bug with the Overlay component”, I decided to repost it here.
When leaving the page that has the map with some OverlayView’s, I get the error message:

Uncaught TypeError: Cannot read property 'overlayMouseTarget' of null

Here is the code with the GoogleMap component:
const GMap = withGoogleMap((props) => (
  <GoogleMap
    ref={props.onMapMounted}
    defaultZoom={12}
    zoom={props.zoom}
    onDragEnd={props.onZoomChanged}
    onZoomChanged={props.onZoomChanged}
    defaultCenter={props.defaultCenter}
    center={props.center}
  >
    {
      props.markers && props.markers.map((data, index) => (
        <OverlayView
          key={index}
          position={{
            lat: data.get('loc').get('geo').get('lat'),
            lng: data.get('loc').get('geo').get('lng'),
          }}
          mapPaneName={OverlayView.OVERLAY_MOUSE_TARGET}
          getPixelPositionOffset={(width, height) => ({ x: -(width / 2), y: -(height) })}
        >
          <WnmMarker
            text={data.get('text')}
            highlight={data.get('highlight')}
          />
        </OverlayView>
      ))
    }
  </GoogleMap>
));

Could it be that something is missing in the componentWillUnmount?

Maybe the official google maps API does no longer use overlayMouseTarget in their key, so that returns undefined.
Would you mind look into it?

overlayMouseTarget seems to be still in use. If it didn’t I would get that error on mount but I only get it at unMount. Could it have anything to do with the onRemove function?

If it can help, after reading #405 , I added key={Math.random()} to <OverlayView /> and the error message disappeared.
I'm not sure if this is related but the width and height passed down to getPixelPositionOffset is sometimes wrong. I receive (0px, 13px) whereas my markers are (24px, 32px). It leads to a misplaced overlay on the map.

Here is the code with the GoogleMap component
      <GoogleMap ref={this.handleMapRef} {...this.optionalProps}
        defaultCenter={defaultCenter} defaultOptions={defaultOptions} defaultZoom={defaultZoom}
        onDragStart={this.handleDragStart} onIdle={this.handleIdle}>
        {this._selectedMarker && (
          <OverlayView /***** --> key={Math.random()} <-- *****/ position={{ lat, lng }}
            getPixelPositionOffset={this.getPixelPositionOffset}
            defaultMapPaneName={OverlayView.OVERLAY_MOUSE_TARGET}>

          </OverlayView>
        )}
        <MarkerClusterer onMarkerClick={this.handleMarkerClick} />
      </GoogleMap>

Any clue?

None on my side for map panes.
For the random width / height given to getPixelPositionOffset, I just force the output when entries are undefined / not matching icon sizes as my icons have fixed dimensions.

I need key={Math.random()} even when using the code from example https://tomchentw.github.io/react-google-maps/basics/overlay-view
https://github.com/tomchentw/react-google-maps/blob/master/src/lib/OverlayView.js#L110
mapPanes is undefined

I load map API async, this is the only difference from the example.

Any updates on this?

I'm having the same issue.  "Cannot read property 'overlayLayer' of null"
For me, the problem occurs when I zoom in and out quickly when all the Overlays are shown on the map.
As @hoschi noted, somehow key={Math.random()} temp solves this issue.

Here's my solution:
The error (at least for me) is pretty benign and it only shows up once when the OverlayView is first attempted to be rendered. With that in mind, I tried delaying its render until after the rest of the Google Map is mounted. So essentially, you're allowing the map some time to load before adding the Overlay. Bonus, no need to add a key at all.
class Map extends Component {
  constructor () {
    super()
    this.state = {
      loaded: false
    }
  }
  componentDidMount () {
    this.setState({ loaded: true })
  }

  render () {
    return (
      <GoogleMap>
        {this.state.loaded &&
          <OverlayView
            position={this.props.center}
            mapPaneName={OverlayView.OVERLAY_LAYER}
            getPixelPositionOffset={getPixelPositionOffset}
          >

My Overlay

          </OverlayView> }
      </GoogleMap>
    )
  }
}

Try v8.0.0:
https://tomchentw.github.io/react-google-maps/#!/OverlayView

I'm still experiencing this problem even if I use the solution proposed by @ericconstantinides

I've been having the same problems, after digging quite a bit it seems that the bug happens when the component is re-rendered before Google maps has completed initializing the map/panes etc.
The re-rendering causes OverlayView.componentDidUpdate to be called which then triggers Overlay.draw to be called and this is where the error occurs.
My first guess is that a check for presence of this.containerElement in componentDidUpdate before calling draw maybe all that is needed to fix this problem and when using the code below as a quick test of that theory on @gomezgoiri repo it did appear to fix it.
But that's just a theory based off the few methods in this class I've been inspecting whilst debugging this problem so there maybe unintended side effects of doing that check.
class CustomOverlay extends OverlayView{

  // quick test code to see if containerElement presence check meant error did not occur
  componentDidUpdate(prevProps, prevState){
    if (this.containerElement){
      super.componentDidUpdate(prevProps, prevState)
    }
  }

}

@tomchentw, is it possible this is cause and if so, what's the proper solution?

It seems like still an issue since it happens on 9.0.1.
Adding key to OverlayView or wait till component to be mounted, didn't work for me.
I could avoid by adding existence check before drawing of OverlayVIew like below.
  draw() {
    const { mapPaneName } = this.props
    invariant(
      !!mapPaneName,
      `OverlayView requires either props.mapPaneName or props.defaultMapPaneName but got %s`,
      mapPaneName
    )
    // https://developers.google.com/maps/documentation/javascript/3.exp/reference#MapPanes
    const mapPanes = this.state[OVERLAY_VIEW].getPanes()
    if(mapPanes){
      mapPanes[mapPaneName].appendChild(this.containerElement)

      ReactDOM.unstable_renderSubtreeIntoContainer(
        this,
        React.Children.only(this.props.children),
        this.containerElement,
        this.onPositionElement
      )
    }
  }

However I'm not sure it's a correct way to fix it.
Any suggestions?

Taking @foloinfo's advice, I implemented the following class in my project that eliminates the errors. Hopefully this will help somebody else, too!
import React from 'react';
import ReactDOM from 'react-dom';
import invariant from 'invariant';
import { OverlayView } from 'react-google-maps';
import { OVERLAY_VIEW } from 'react-google-maps/lib/constants';

export default class CustomOverlayView extends OverlayView {
  // Override draw function to catch errors with map panes being undefined to prevent console errors
  draw() {
    const { mapPaneName } = this.props;
    invariant(
      !!mapPaneName,
      `OverlayView requires either props.mapPaneName or props.defaultMapPaneName but got %s`,
      mapPaneName
    );
    // https://developers.google.com/maps/documentation/javascript/3.exp/reference#MapPanes
    const mapPanes = this.state[OVERLAY_VIEW].getPanes();
    if (mapPanes && this.containerElement) { // <-- Add conditional to ensure panes and container exist before drawing
      mapPanes[mapPaneName].appendChild(this.containerElement);

      ReactDOM.unstable_renderSubtreeIntoContainer(
        this,
        React.Children.only(this.props.children),
        this.containerElement,
        this.onPositionElement
      );
    }
  }
}

I was getting an error when removing overlays (see below) so I also had to override onRemove in @owap 's solution. — Super Hack
  onRemove() {
    if (this.containerElement) {
      return super.onRemove();
    }
  }

The error was
Uncaught TypeError: Cannot read property 'parentNode' of undefined
    at CustomOverlayView.onRemove (OverlayView.js:184)

Sorry, I haven't had the time to figure it out.
We use redux with several stores that each have an Immutable.List() of markers. When the user changes to a different section of our site we provide the map with data from the store corresponding to the given section of the site. Each Section of markers updates via callback that dispatches updates from a socket connection. Updates seem to be fine, but when we switch to a different stores marker List() is when it seems to choke.

Following code worked in my case:
`overlay: any;
getRef = (r) => this.overlay = r;
shouldComponentUpdate() {
    return !this.overlay || !!this.overlay.getPanes();//Error: Cannot read property 'overlayLayer' of undefined
}
render() {
    const { center } = this.props;
    return <OverlayView
        ref={this.getRef}
        getPixelPositionOffset={getPixelPositionOffset}
        position={center as any} mapPaneName={OverlayView.OVERLAY_LAYER}>
        <div style={{  background: `green`, border: `1px solid #ccc`, padding: 15 }}>

OverlayView

            <button style={{ height: 60 }}>
                I have been clicked   time
            </button>

    </OverlayView>

}`

I was having this issue but with the draw method, here is the solution for those using Typescript.
import * as React from "react";
import ReactDOM from "react-dom";
import { OverlayView } from "react-google-maps";
import { OVERLAY_VIEW } from "react-google-maps/lib/constants";

import { assert } from "../../util/Assertion";

export default class CustomOverlayView extends OverlayView {
  containerElement: HTMLElement | null = null;

  onRemove() {
    if (this.containerElement) {
      // @ts-ignore: Unreachable code error
      super.onRemove();
    }
  }

  draw() {
    const { mapPaneName } = this.props;
    assert.equal(!!mapPaneName, true, () => ({
      message: `OverlayView requires either props.mapPaneName or props.defaultMapPaneName but got ${mapPaneName}`,
      context: "CustomOverlayView",
    }));
    // @ts-ignore: Unreachable code error
    const mapPanes = this.state[OVERLAY_VIEW].getPanes();
    if (mapPanes && this.containerElement) {
      // <-- Add conditional to ensure panes and container exist before drawing
      // @ts-ignore: Unreachable code error
      mapPanes[mapPaneName].appendChild(this.containerElement);

      ReactDOM.unstable_renderSubtreeIntoContainer(
        this,
        React.Children.only(this.props.children),
        this.containerElement,
        // @ts-ignore: Unreachable code error
        this.onPositionElement
      );
    }
  }
}

Make sure you have this rule set to false on the tslint.json file "ban-ts-ignore": false.
Note
I don't agree with using // @ts-ignore a lot, but this made it not complain otherwise I would have have to redeclare the module with the right types. Basically redeclaring this:
declare module 'react-google-maps/lib/components/OverlayView' {
    import { Component, ReactNode } from 'react'

    export interface OverlayViewProps {
        bounds?: google.maps.LatLngBounds | google.maps.LatLngBoundsLiteral
        children?: ReactNode
        getPixelPositionOffset?: (width: number, height: number) => { x?: number, y?: number }
        mapPaneName?: string
        position?: google.maps.LatLng | google.maps.LatLngLiteral
    }

    export default class OverlayView extends Component<OverlayViewProps> {
        static FLOAT_PANE: string
        static MAP_PANE: string
        static MARKER_LAYER: string
        static OVERLAY_LAYER: string
        static OVERLAY_MOUSE_TARGET: string

        getPanes(): google.maps.MapPanes
        getProjection(): google.maps.MapCanvasProjection
    }
}

I'm getting this with version 9.4.5 @tomchentw It seems that others have been having issues since this issue was closed, and the workaround is to override the OverlayView class :( - maybe reopen this issue?

@joaoreynolds This repo is unmaintained more than a year, please refer to npm @react-google-maps/api
We have docs, examples and community.

@joaoreynolds This repo is unmaintained more than a year, please refer to npm @react-google-maps/api
We have docs, examples and community.
I have tried your version, I was struggling even to initialize the basic setup of the map!

@jetonk we have a lot of examples and docs, look at gatsby-example in our repo.


github_user RPC error

Currenting throwing an error on github_user table as follows:
> select * from github_user
Error: pq: rpc error: code = Internal desc = 'List' call requires an '=' qual for column: login

Same when using a SQL client with the service. Confirmed the Access Token has the required scopes.
Also small docs note: https://hub.steampipe.io/plugins/turbot/github
scope for read:email should be user:email I think?

The github_user table does not list all users via the API - there is not currently an efficient way to limit the results in a useable way. As a result, you must specify a user login in a where or you will get no results.
That error message could be a lot more friendly though, I've opened an issue for that here - https://github.com/turbot/steampipe/issues/80
I've fixed the user:email perm in our docs for the next version.
Thanks for the info, please let us know if you see anything else!

The github_user table does not list all users via the API - there is not currently an efficient way to limit the results in a useable way. As a result, you must specify a user login in a where or you will get no results.
That error message could be a lot more friendly though, I've opened an issue for that here - https://github.com/turbot/steampipe/issues/80
I've fixed the user:email perm in our docs for the next version.
Thanks for the info, please let us know if you see anything else!


question: is the irq_lock is necessary in console_putchar

console_putchar  try disable interrupt first and then copy char to tx_ringbuffer , but I don't think irq_lock is necessary.
int console_putchar(char c)
{
	unsigned int key;
	int tx_next;

	key = irq_lock();
	tx_next = (tx_put + 1) & (CONFIG_CONSOLE_PUTCHAR_BUFSIZE - 1);
	if (tx_next == tx_get) {
		irq_unlock(key);
		return -1;
	}

	tx_ringbuf[tx_put] = (u8_t)c;
	tx_put = tx_next;

	irq_unlock(key);
	uart_irq_tx_enable(uart_dev);
	return 0;
}

It not only copies char to tx_ringbuffer, but also updates ringbuf pointers. All these operations should be performed atomically wrt to the interrupt handler (which also updates them). So yes, irq_lock is needed. Hopefully that answers the question, so I'm closing this. If you have arguments why it's not needed, feel free to share them and reopen the ticket.

@pfalcon I don't think so. console_putchar always update tx_put and ISR only update tx_get. That's two different variable. So I think the ringbuffer used in this file is lock free.
We should get/put char from ringbuffer first and then update the tx_get/put pointer to make ringbuffer is lock free, so the tx code in ISR should in this way:
if (uart_irq_tx_ready(dev)) {
	int next = (tx_get + 1) & (CONFIG_CONSOLE_PUTCHAR_BUFSIZE - 1);

	if (tx_get == tx_put) {
		/* Output buffer empty, don't bother
		 * us with tx interrupts
		 */
		uart_irq_tx_disable(dev);
	} else {
		uart_fifo_fill(dev, &tx_ringbuf[tx_get], 1);
		tx_get = next;
	}
}

console_putchar always update tx_put and ISR only update tx_get.

Ok, you caught me. The right word there not "updates", but "accesses". Because reads, based on which are made important decisions, are as important as writes.

lock free

"Lock free" (as in "lock free algorithms") is a bit of buzzword and misnomer. It doesn't mean there're no "locks" per se, it means that there're no interdependent locks, so one part of the algorithm can't be blocked on another part. That's exactly how this and any other ringbuffer algo works. If irq_lock() is executed, then irq_unlock() is guaranteed to be executed just a few cycles later, and no external condition can affect that. What irq_lock/irq_unlock pair implement is a critical section. And why it is needed is because we need to implement an operation of increment in modular arithmetic, and common architectures don't have such an atomic operation. And not only we need to implement modular increment, we also need to check values pre/post increment just as atomically (to detect underflow/overflow conditions). Using a critical section is a natural way to achieve that.

@pfalcon Thanks for yours explain and it's a little hard to undersdtand for me. I will think more about it.
besides is the assignment is atomically  in all platform?
int next = (tx_get + 1) & (CONFIG_CONSOLE_PUTCHAR_BUFSIZE - 1);
tx_get = next; /* is atomically? */

besides is the assignment is atomically in all platform?

No, in general case assignment from one variable to another is not atomic. It depends on the type of the variables involved though. Assignment from one global variable to another is not atomic on any realistic platform. How compiler have to do it, in assembly, is to load value from source var, then store the value to the destination var:
ld $reg, [var1]
// interrupt can happen here, which can change var1, but we'll have an old value cached in $reg register
st $reg, [var2]

Of course, local variables can be kept by compiler in a register (all the time), and then assignment from it to another variable will be atomic (but that's particular case and you shouldn't rely on that).
And the way to analyze cases like we discuss is actually just like the above: to look at the assembly, and for each instruction, consider what may happen if an interrupt happens immediately after it (because it indeed can happen between any two instructions).

@pfalcon Thanks you and I got it now


CastPlayer does not support mediaMetadata

Observed behaviour
CastPlayer always returns MediaMetadata.EMPTY for getMediaMetadata(). Accordingly Player.Listener.onMediaMetadatachanged is never called.
Expected behavour
a) getMediaMetadata() returns a MediaMetadata instance that corresponds to the current MediaItem being played (see issue #25 also).
b) The callback Player.Listener.onMediaMetadataChanged is called accordingly when the metadata returned by getMediaMetadata() changes.

Closing as a duplicate of #25.


Bump timeout for default transient expansion service

Fixes #25110
Please add a meaningful description for your change here

Thank you for your contribution! Follow this checklist to help us incorporate your contribution quickly and easily:

[ ] Mention the appropriate issue in your description (for example: addresses #123), if applicable. This will automatically add a link to the pull request in the issue. If you would like the issue to automatically close on merging the pull request, comment fixes #<ISSUE NUMBER> instead.
[ ] Update CHANGES.md with noteworthy changes.
[ ] If this contribution is large, please file an Apache Individual Contributor License Agreement.

See the Contributor Guide for more tips on how to make review process smoother.
To check the build health, please visit https://github.com/apache/beam/blob/master/.test-infra/BUILD_STATUS.md
GitHub Actions Tests Status (on master branch)

See CI.md for more information about GitHub Actions CI.

Run XVR_Direct PostCommit

Run XVR_Direct PostCommit

Run XVR_Direct PostCommit

3 runs of previously flaky test all succeeded: https://ci-beam.apache.org/job/beam_PostCommit_XVR_Direct_PR/ (run 138,139,140), ready for review


Can I use my own form?

like:
$.prompt({
    html: '<form action="/user/settings" method="post"......',
})

Impromptu wraps the all of the states into a single form, so doing so would create a form inside a form, which will cause issues.


What about "sshKeySecureFile:"?

Shown in the yaml snippet, not described in the documentation.
Thanks.

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

ID: 9ce9d017-fc43-c904-d94b-87cf91265ffc
Version Independent ID: ecf3b0b7-6c2c-1cd9-33a9-2cf562932e2b
Content: Install SSH Key task - Azure Pipelines
Content Source: docs/pipelines/tasks/utility/install-ssh-key.md
Product: devops
Technology: devops-cicd
GitHub Login: @DavidStaheli
Microsoft Alias: dastahel

Ah, it's this:  SSH Key.  Not terribly obvious, please make the description names match the yaml keys.

@lbrownell-gpsw Thank you for the feedback.
Your suggestion has been made and is currently under review.


Bump node-fs-extra to 8.1.0

Follow-up #1272
We need to upgrade node-fs-extra as well.
Thank you for reporting @hiroyuki-sato san.

@szyn Thank you for your work!
LGTM 👍
> Task :digdag-ui:buildUi

><EMAIL_ADDRESS>install /Users/user/OpenProjects/digdag/digdag/digdag-ui/node_modules/fsevents
> node install

node-pre-gyp WARN Using request for node-pre-gyp https download
[fsevents] Success: "/Users/user/OpenProjects/digdag/digdag/digdag-ui/node_modules/fsevents/lib/binding/Release/node-v72-darwin-x64/fse.node" is installed via remote

><EMAIL_ADDRESS>install /Users/user/OpenProjects/digdag/digdag/digdag-ui/node_modules/node-sass
> node scripts/install.js

Cached binary found at /Users/user/.npm/node-sass/4.13.0/darwin-x64-72_binding.node

><EMAIL_ADDRESS>postinstall /Users/user/OpenProjects/digdag/digdag/digdag-ui/node_modules/node-sass
> node scripts/build.js

Binary found at /Users/user/OpenProjects/digdag/digdag/digdag-ui/node_modules/node-sass/vendor/darwin-x64-72/binding.node
Testing binary
Binary is fine
added 1489 packages in 17.253s

><EMAIL_ADDRESS>build /Users/user/OpenProjects/digdag/digdag/digdag-ui
> npm run clean && npm run build:js && npm run build:copy

><EMAIL_ADDRESS>clean /Users/user/OpenProjects/digdag/digdag/digdag-ui
> rimraf public

><EMAIL_ADDRESS>build:js /Users/user/OpenProjects/digdag/digdag/digdag-ui
> cross-env NODE_ENV=production webpack --config webpack.build.js -p --bail

=== Digdag ===
Config:  Release
Build path:  /Users/user/OpenProjects/digdag/digdag/digdag-ui/public
Output path:  assets/
Timestamp: 2019-12-23T13:57:06.108Z
Sha: assets
Browserslist: caniuse-lite is outdated. Please run next command `npm update caniuse-lite browserslist`
Hash: 57bd07c129098c491ab2
Version: webpack 4.41.2
Time: 29520ms
Built at: 12/23/2019 10:57:35 PM
            Asset       Size  Chunks                          Chunk Names
          app.css  760 bytes       0  [emitted]               app
      app.css.map   1.09 KiB       0  [emitted] [dev]         app
           app.js   1.56 MiB       0  [emitted]        [big]  app
       app.js.map   6.09 MiB       0  [emitted] [dev]         app
    bootstrap.css    155 KiB       1  [emitted]               bootstrap
bootstrap.css.map    201 KiB       1  [emitted] [dev]         bootstrap
     bootstrap.js    172 KiB       1  [emitted]               bootstrap
 bootstrap.js.map    788 KiB       1  [emitted] [dev]         bootstrap
       index.html  531 bytes          [emitted]
    manifest.json   1.46 KiB          [emitted]
        tether.js   24.9 KiB       2  [emitted]               tether
    tether.js.map   94.8 KiB       2  [emitted] [dev]         tether
Entrypoint tether = tether.js tether.js.map
Entrypoint bootstrap [big] = bootstrap.css bootstrap.js bootstrap.css.map bootstrap.js.map
Entrypoint app [big] = app.css app.js app.css.map app.js.map
  [9] ./model.js 14.1 KiB {0} [built]
 [24] (webpack)/buildin/global.js 472 bytes {0} {1} [built]
 [91] ./ace-digdag.js 1.76 KiB {0} [built]
[163] (webpack)/buildin/module.js 497 bytes {0} [built]
[177] (webpack)/buildin/amd-define.js 85 bytes {0} [built]
[208] ./style.less 39 bytes {0} [built]
[385] ./node_modules/moment/locale sync ^\.\/(en)$ 160 bytes {0} [optional] [built]
[474] ./index.jsx + 12 modules 839 KiB {0} [built]
      | ./index.jsx 178 bytes [built]
      | ./console.jsx 115 KiB [built]
      |     + 11 hidden modules
    + 469 hidden modules

WARNING in asset size limit: The following asset(s) exceed the recommended size limit (244 KiB).
This can impact web performance.
Assets:
  app.js (1.56 MiB)

WARNING in entrypoint size limit: The following entrypoint(s) combined asset size exceeds the recommended limit (244 KiB). This can impact web performance.
Entrypoints:
  bootstrap (327 KiB)
      bootstrap.css
      bootstrap.js
  app (1.56 MiB)
      app.css
      app.js

WARNING in webpack performance recommendations:
You can limit the size of your bundles by using import() or require.ensure to lazy load some parts of your application.
For more info visit https://webpack.js.org/guides/code-splitting/
Child html-webpack-plugin for "index.html":
     1 asset
    Entrypoint undefined = index.html
    [1] ./node_modules/html-webpack-plugin/lib/loader.js!./lib/html-template.js 1.17 KiB {0} [built]
        + 4 hidden modules
Child mini-css-extract-plugin node_modules/css-loader/dist/cjs.js!node_modules/less-loader/dist/cjs.js!style.less:
    Entrypoint mini-css-extract-plugin = *
    [0] ./node_modules/css-loader/dist/cjs.js!./node_modules/less-loader/dist/cjs.js!./style.less 862 bytes {0} [built]
        + 1 hidden module
Child mini-css-extract-plugin node_modules/css-loader/dist/cjs.js!node_modules/resolve-url-loader/index.js!node_modules/sass-loader/lib/loader.js?sourceMap!node_modules/bootstrap-loader/lib/bootstrap.styles.loader.js?{"bootstrapVersion":4,"loglevel":"warn","extractStyles":true,"styleLoaders":["css-loader","resolve-url-loader","sass-loader"],"styles":["mixins","print","buttons","code","forms","grid","images","reboot","tables","type","alert","badge","breadcrumb","button-group","card","close","custom-forms","dropdown","input-group","jumbotron","list-group","media","nav","navbar","pagination","progress","transitions","carousel","modal","popover","tooltip","utilities","spinners"],"scripts":["alert","button","carousel","collapse","dropdown","modal","popover","scrollspy","tab","tooltip","util"],"configFilePath":"/Users/user/OpenProjects/digdag/digdag/digdag-ui/.bootstraprc","bootstrapPath":"/Users/user/OpenProjects/digdag/digdag/digdag-ui/node_modules/bootstrap","bootstrapRelPath":"../bootstrap"}!node_modules/bootstrap-loader/no-op.js:
    Entrypoint mini-css-extract-plugin = *
       2 modules

><EMAIL_ADDRESS>build:copy /Users/user/OpenProjects/digdag/digdag/digdag-ui
> node prepare-release.js

> Task :digdag-cli:compileJava
/Users/user/OpenProjects/digdag/digdag/digdag-cli/src/main/java/io/digdag/cli/ResumeStateManager.java:68: warning: [deprecation] propagate(Throwable) in Throwables has been deprecated
            throw Throwables.propagate(ex);
                            ^
/Users/user/OpenProjects/digdag/digdag/digdag-cli/src/main/java/io/digdag/cli/Run.java:630: warning: [deprecation] propagate(Throwable) in Throwables has been deprecated
            throw Throwables.propagate(ex);
                            ^
/Users/user/OpenProjects/digdag/digdag/digdag-cli/src/main/java/io/digdag/cli/GraphvizWorkflowVisualizer.java:68: warning: [deprecation] propagate(Throwable) in Throwables has been deprecated
            throw Throwables.propagate(ex);
                            ^
/Users/user/OpenProjects/digdag/digdag/digdag-cli/src/main/java/io/digdag/cli/GraphvizWorkflowVisualizer.java:93: warning: [deprecation] propagate(Throwable) in Throwables has been deprecated
                throw Throwables.propagate(ex);
                                ^
4 warnings

Deprecated Gradle features were used in this build, making it incompatible with Gradle 5.0.
See https://docs.gradle.org/4.8/userguide/command_line_interface.html#sec:command_line_warnings

BUILD SUCCESSFUL in 2m 5s
34 actionable tasks: 34 executed


two routers in one big app

Hi i have a site built in php/laravel and want to use react/react-router partially for the site. is it possible to have two routers working on the same website?
i already used react and react-router to render UI for for our admin panel on the website with a router. when requested url hits /admin/{whatever}, i render a view has the document id.
Route::get( 'admin/{catchall}', function() {
  return view('admin.panel');
})->where('catchall', '(.*)');

and then in assets/admin/app.js, all the routes are handled by react-router like so:
var App = React.createClass({

  render() {
    return (

        <RouteHandler />

    )
  }
})

var routes = (
  <Route handler={App}>
    <Route path="/admin/panel" handler={AdminPanel} />

    <Route handler={PageApp}>
      <Route path="/admin/pages" handler={Pages} />
    </Route>

    <Route handler={UserApp}>
      <Route path="/admin/users" handler={Users} />
      <Route path="/admin/users/create" handler={Registration} />
      <Route path="/admin/users/:userId" handler={ViewUser} />
    </Route>
  </Route>
);

Router.run(routes, Router.HistoryLocation, function (Handler) {
  React.render(<Handler />, document.getElementById('app'));
});

so now i want to rewrite the view for under /users/{whatever} on the site with react/react-router. can i make another route in backend like this to return another different view and render react component when url is /users/{whatever}?
Route::get('users/{catchall}', function() {
  return view('users.welcome');
})->where('catchall', '(.*)');

and make anther router to handle  /users/{whatever}?  this is what i tried but not working. and i get Invariant Violation: _registerComponent(...): Target container is not a DOM element. when i visit /admin/{whatever}` routes(it's working without the the second router).
in assets/users/app.js:
var App = React.createClass({

  render() {
    return (

        <RouteHandler />

    )
  }
})

var Welcome = React.createClass({
  render () {
    return (

welcome

    )
  }
})

var routes = (
  <Route handler={App}>
    <Route path="/users/welcome" handler={Welcome} />
  </Route>
);

Router.run(routes, Router.HistoryLocation, function (Handler) {
  React.render(<Handler />, document.getElementById('user-app'));
});

if having two routers is not possible, how should i go about handling an issue like this? i hope my question makes sense. thanks!

Not sure if I understand you correctly. What do you mean by project exactly? Running multiple routers at the same time is not supported (also, I don't think that's what you want). If you want to serve two apps from a single server I'd say you have two options:

Use a single client-side app with a single router by using different routes. This would allow you to share code more easily, and seamlessly link from one part of the app to the other. You'd have to setup your serve to serve the same script for both /users and /admin.

var routes = (
   <Route handler={App}>
     <Route path="/users/welcome" handler={Welcome} />
     <Route path="/admin">
        {/* admin routes here */}
     </Route>
   </Route>
);

Use two different entry points each running its own router. This would isolate each of your apps, and you wouldn't be able to transition from one "app" to the other without a server round trip. You'd have to setup your server so that it serves different scripts for /users and /admin. And for linking to the other app, you'd have to use the normal  instead of <Link to>.

Hi @taurose, thanks for your solutions. option 1 is working for me for now. i dont really get option 2 though. how to have a router for each entry point in your case? i think this was what i was trying to do but failed. thanks.

Not sure if I can help you there; it's more of an backend and build system issue and I've never used laravel.
Basically you need to make sure that you're serving two different html pages with different script tags, for example
GET /users/*

..

GET /admin/*

..

common.js: for sharing some code and caching (optional)
users.js: starts the router with /user routes
admin.js: starts the router with /admin routes

I see. Thanks!


KubeConfig.from_service_account always defaults to default namespace

I noticed that KubeConfig.from_service_account doesn't read namespace from /var/run/secrets/kubernetes.io/serviceaccount/namespace which causes it to use default namespace.
Because of that I have to manually filter by namespace when trying to access objects in current namespace.
Is that by-design? If not, I could work on a patch for this.

It's not be design :smirk:


Model is reset after user navigates from the session

Small, but annoying UX glitch. Steps to reproduce:

Create a chat, select model and add 1 knowledge element
Send arbitrary message
Navigate away to settings
Navigate back to the session
Observe empty model drop-down

Might be related to https://github.com/fmaclen/hollama/issues/237

I was able to replicate the issue.

:tada: This issue has been resolved in version 0.23.1 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket: