[HOLD for payment 2023-11-09] [$1000] Chat - The green line is displayed chaotically at the recipient

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Action Performed:

Go to https://staging.new.expensify.com/ on an Android (User B)
Sign into Android app (User A)
Send a message from User B to User A
In LHN of user A, the message received will be shown in bold
5.Open the message
6.From user B, send multiple messages to User A

Expected Result:
As user A is already in conversation page, the green line must not be shown when messages received from user B
Actual Result:
The green line is displayed chaotically at the recipient
Workaround:
Unknown
Platforms:

Which of our officially supported platforms is this issue occurring on?

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

Version Number: 1.3.70-2
Reproducible in staging?: Yes
Reproducible in production?: Yes
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos: Any additional supporting documentation
https://github.com/Expensify/App/assets/78819774/1af8a7f0-1afc-4101-bb8f-26f3fd523695
Expensify/Expensify Issue URL:
Issue reported by: Applause - Internal Team
Slack conversation:
View all open jobs on GitHub
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~018a50aa27edf905a3
Upwork Job ID:<PHONE_NUMBER>212745216
Last Price Increase: 2023-10-05
Automatic offers:

situchan | Contributor | 27473899

I can't reproduce this going to reach back out to QA to see if they can confirm it's still happening and update the steps to reproduce.

Issue reproducible on Build 1.3.70-5
SG A50/Android11
Messages were sent one after another
https://github.com/Expensify/App/assets/78819774/dd41cfd0-e78d-4391-ad7e-3978d817ffe7

I still can't reproduce this... there's no green line in a chat
Using V1.3.71-2 on the Android app app Samsung Galaxy S22
Using v1.3.7 0-8 on web app Samsung
@lanitochka17 does something need to be added to these steps to make this happen?

hey @mananjadhav can you give me your thoughts on https://github.com/Expensify/App/issues/27456#issuecomment-1724503801

nudge @mananjadhav on https://github.com/Expensify/App/issues/27456#issuecomment-1724503801

I tried a few times, but I couldn't. I checked on the emulator. Does it require a physical device to check?

I was using the Chrome Website on a physical Android device (User B) and messaging the Android app through Browserstack (User A).

I updated the OP to see if that helps @mananjadhav - can you try again to reproduce and let me know what you think is best next steps here... maybe we should close since it's difficult to reproduce?

@Christinadobrzyn I think you can reassign this one. I haven't been able to spend as much time as this requires.

Hey @Santhosh-Sellavel! Catching you up here, we're still reproducing this and seeing if it's necessary for a fix based on this comment. Let me know what you think!

Yeah this is something we should fix, if its reproducible.

Thanks @Santhosh-Sellavel can this be external?

Yes, it can be external.

still waiting on proposals. Do you think this would be something that would fit one of our contractors @Santhosh-Sellavel? I can reach out to SWM to see if they have the bandwidth?

That's good idea, but lets wait for few days or a week. If no takers by then let's get help from SWM or Callstack!

I am Roksana from Callstack - expert contributor group. I’d like to work on this job.

I am Roksana from Callstack - expert contributor group. I’d like to work on this job.

Can you submit a formal proposal please, thanks!

Assigning @roksanaz But still please post a proposal here to discuss before raising a PR thanks!

I'm working on a proposal (should be ready tomorrow), but just to be sure: the desirable behavior is that when the user is active in chat screen, there shouldn't be a green line for new messages, am I correct? (citing the expected result: "As user A is already in conversation page, the green line must not be shown when messages received from user B")

Let's consider a scenario to understand the expected outcome.
There a two User A & User B. Following or the sequence of actions

User A is chatting with someone else and new messages are received from User B, thus making User B in Sidebar LHN bold.
Now User A navigates to User B's chat.
Expected Behaviour is a Line indicator that should be shown above the first unread message.
User B still sends a couple more messages.
Expected Behaviour is a Line indicator that should persist it's position
If User A responds or Navigates to a different change and comes back to chat then the
Expected Behaviour is that the indicator should be hidden now.
5. User A is active on User B's chat and scrolling the old chat, now new messages are received. Now the expected behavior is when the user scrolls to the new message manually or by using the new messages badge, should see an indicator above the first unread item.
 User A is active on User B's chat but viewing the latest, now new messages are received.
I'm not sure, but I guess there should not be any indicator new messages should be shown right away.

@Christinadobrzyn/@mountiny Can you loop someone from the product team to confirm the expected behavior, correct me if wrong on the above. thanks!

I'm sorry for taking so much time. We had a discussion that maybe another PR concerning unread messages might resolve this issue, but unfortunately that's not the case :( I need to consult 1 thing and my proposal should be ready after that.

I think this is correct but gonna ask Vit if they can double-check- https://github.com/Expensify/App/issues/27456#issuecomment-1758212639

Sounds like this job was discussed between @MonilBhavsar and @roksanaz - https://expensify.slack.com/archives/C03UK30EA1Z/p1697013288899459
so I think they should be able to answer your questions @Santhosh-Sellavel once they get things narrowed down?

@Santhosh-Sellavel and @Christinadobrzyn yes, we discussed the logic from this comment and points 1-4 are tested and working in this PR, point 5 will be implemented within this issue.
I'm on the right track with my proposal, should be ready on Monday.

Proposal
Please re-state the problem that we are trying to solve in this issue.
If the user A is already active in the chat thread with the user B, the user A receives a new message from the user B, a green line appears above the new message. If more messages come (especially at the same time) the green line appears erratically. The expected behaviour is that no green line appears for new messages if the thread is scrolled to the latest message.
What is the root cause of that problem?
I could reproduce this behaviour for all platforms. The problem isn’t specific only for Android.
The root cause for the problem is that we don’t take into account the position of the user (the vertical offset) in the conditions for the flag called shouldDisplayNewMarker, which if it’s true - the green line appears.
Currently on the first render of the message shouldDisplayNewMarker is true if the flag lastReadTime sent by the server is smaller than the message’s created time (and it is always true for new messages):
https://github.com/Expensify/App/blob/7d08e237dad360573c113d5f8c34d2b42ef49a93/src/pages/home/report/ReportActionsList.js#L292
Then, the application sends information to the server that the message is read, the message is re-rendered, shouldDisplayNewMarker is false and the green line disappears.
What changes do you think we should make in order to solve the problem?
As the desired behaviour is not to display the green line for any new messages provided that the thread is scrolled to the latest message, we should take into account the vertical offset of the user as it’s the case with the floating button. shouldDisplayNewMarker should be false for threads at the end of the threshold before sending the information to the server to avoid green line appearing (or flickering). If the thread is scrolled up to older messages, then the floating button should appear and after scrolling down to the newest messages, the green line should appear above the new message.
There is already a variable in the code called canDisplayMarker, which holds the information about the user’s position and if the user is active:
https://github.com/Expensify/App/blob/7d08e237dad360573c113d5f8c34d2b42ef49a93/src/pages/home/report/ReportActionsList.js#L297
But now it’s introduced after shouldDisplayNewMarker is already true and taken into account only to decide which message should be marked as new. So my solution is to introduce canDisplayMarker earlier and check it while deciding for the first time if shouldDisplayNewMarker should be true, like so:
shouldDisplayNewMarker = isCurrentMessageUnread && !isMessageUnread(nextMessage, report.lastReadTime) && canDisplayMarker;

Looks good, let's hold for the other PR to get merged.

I think we can move forward here since it doesn't overlap with the other PR. @roksanaz do you think we can get rid of canDisplayMarker completely and have only one variable  shouldDisplayMarker. We previously thought of doing this, but didn't, but figured it was something we could do. I think this is good opportunity to get rid of two similar variables. Also cc @gedu for thoughts on the above proposal

@MonilBhavsar We could get rid of this variable, but then shouldDisplayMarker would consist of an unnamed condition instead of canDisplayMarker, like so:
shouldDisplayNewMarker = isCurrentMessageUnread &&
      !isMessageUnread(nextMessage, report.lastReadTime) &&
      scrollingVerticalOffset.current < MSG_VISIBLE_THRESHOLD ? reportAction.created < userActiveSince.current : true;

If I were to do a complete refactor of this part, I would make it more readable, so instead of this:
https://github.com/Expensify/App/blob/cf16dacf2eb12cd5263e0a1d09eb1638b0fe5c93/src/pages/home/report/ReportActionsList.js#L290-L301
I would write it like that:
const nextMessage = sortedReportActions[index + 1];
const isCurrentMessageUnread = isMessageUnread(reportAction, report.lastReadTime);
const isNextMessageRead = !isMessageUnread(nextMessage, report.lastReadTime);
const isWithinVisibleThreshold = scrollingVerticalOffset.current < MSG_VISIBLE_THRESHOLD ? reportAction.created <
   userActiveSince.current : true;

shouldDisplayNewMarker = isCurrentMessageUnread && isNextMessageRead && isWithinVisibleThreshold;

if (shouldDisplayNewMarker && !messageManuallyMarkedUnread) {
   shouldDisplayNewMarker = reportAction.actorAccountID !== Report.getCurrentUserAccountID();
}

if (shouldDisplayNewMarker) {
   setCurrentUnreadMarker(reportAction.reportActionID);
}

Let me know which approach is best for you.

Looks like last condition is missing  currentUnreadMarker . But later one looks clean to me. Thanks!
 if (!currentUnreadMarker && shouldDisplayNewMarker) {
   setCurrentUnreadMarker(reportAction.reportActionID);
}

I think !currentUnreadMarker condition was redundant in line 299, as all of this logic is wrapped in the same condition:
https://github.com/Expensify/App/blob/91e2120e647aa9ee22171b6dbb772b4aebe64992/src/pages/home/report/ReportActionsList.js#L289
So I'll head in this direction with my PR, thank you.

Yes, you're right 👍
Thank you!

Looks like draft PR is up and in being pre-reviewed

Please assign @situchan as they took over PR while I was away.

We reverted the PR as it introduced blocker. We need a new PR

@MonilBhavsar I checked all the issues and I'll create a new PR that fixes this issue without causing https://github.com/Expensify/App/issues/30684 (sorry about that). However, https://github.com/Expensify/App/issues/30696 was not caused by my previous PR, so I didn't address that.

@MonilBhavsar As I was testing the new logic taking into account the message marked as unread manually (messageManuallyMarkedUnread), I stumbled upon a problem.
I found out that this logic:
https://github.com/Expensify/App/blob/9ee3b4a83df14589bd7af42d3aa4aac1179754da/src/pages/home/report/ReportActionsList.js#L193-L206
is fired and didManuallyMarkReportAsUnread is true even though I don't mark the message as unread by myself. From my investigation it turns out that web app is not affected (tested on mac OS chrome and safari), but native apps and mobile websites are.
I attach the recording where I simply kept sending the messages from user A from the website (chrome) to user B using Android native application (physical device, Samsung). The new messages were marked as unread and the green line appeared because messageManuallyMarkedUnread was true. I also attach the debugged logic concerning messageManuallyMarkedUnread.
https://github.com/Expensify/App/assets/44186263/d4529e7b-aaa7-42c2-b8d9-f2956f77c1da

I have a new branch for this solution (https://github.com/roksanaz/App/tree/27456-30684-green-line), but I can't create a new PR, because the green line bug from this issue won't be  properly solved.

Hello, I just want to let you know that from now on @artus9033 will take over this issue, so I would be grateful if you could assign this to him :)

@artus9033 you may need to comment anything here to be assigned.

Can we just get an update here since the payment date has passed? It sounds like we're working on fixing a regression?

Original PR was reverted. This needs re-work.

Please remove hold for payment in title. I think issue needs to restart from proposal stage.

Updated the tile, removed the awaiting payment label and added a help wanted  label to get proposals

Sure, I'm adding the comment for assignment here

I think we're looking for proposals, is that correct @roksanaz and @situchan?
Should we update the GH OP with new steps or are those still the same?

Based on https://github.com/Expensify/App/issues/27456#issuecomment-1803762900, @artus9033 is an expert agency and waiting to be assigned here.

Awesome! I added @artus9033 to this GH

@artus9033 @roksanaz @gedu
Now that we have fixed unread message case in https://github.com/Expensify/App/pull/25935
This proposal https://github.com/Expensify/App/issues/27456#issuecomment-1766129708 works if we only consider it when message is not manually marked as unread
--- a/src/pages/home/report/ReportActionsList.js
+++ b/src/pages/home/report/ReportActionsList.js
@@ -338,8 +338,9 @@ function ReportActionsList({
                 const nextMessage = sortedReportActions[index + 1];
                 const isCurrentMessageUnread = isMessageUnread(reportAction, lastReadTimeRef.current);
                 shouldDisplay = isCurrentMessageUnread && (!nextMessage || !isMessageUnread(nextMessage, lastReadTimeRef.current));
-                if (!messageManuallyMarkedUnread) {
-                    shouldDisplay = shouldDisplay && reportAction.actorAccountID !== Report.getCurrentUserAccountID();
+                if (shouldDisplay && !messageManuallyMarkedUnread) {
+                    const isWithinVisibleThreshold = scrollingVerticalOffset.current < MSG_VISIBLE_THRESHOLD ? reportAction.created < userActiveSince.current : true;
+                    shouldDisplay = reportAction.actorAccountID !== Report.getCurrentUserAccountID() && isWithinVisibleThreshold;
                 }

Looks good from my side

Perfect, thanks @gedu and @MonilBhavsar. It works as intended for me as well. Then, I will put up a PR for you @MonilBhavsar to review.

Hope this won't happen but I think we can wait until https://github.com/Expensify/App/pull/25935 hit production in case QA team or any others find any unexpected regression.

Following - https://github.com/Expensify/App/pull/25935#issuecomment-1804272308

I think we can test it appropriately and get this PR out. Let's hold onto that

I'm going ooo until Monday Nov 27th so going to assign another BZ teammate to monitor this until I'm back. Thanks!
Status: I'm not 100% sure where we are with this, @MonilBhavsar @situchan can you provide more information?

Taking this off HOLD, cc @artus9033

Sure thing @MonilBhavsar, then I will be waiting for information when / if https://github.com/Expensify/App/pull/25935 enters production and prepare the PR afterwards, as you pointed above.

That PR is deployed to staging and will be deployed to production tonight. It has also been checked off successfully in QA test run. I think we don't need to hold onto that. Feel free to create a PR! 🚀

Oh, I see, I misunderstood the last messages - perfect, I will get it done, then.

Potential regressions from https://github.com/Expensify/App/pull/25935:

https://github.com/Expensify/App/issues/31617
https://github.com/Expensify/App/issues/31621
https://github.com/Expensify/App/issues/31623

@MonilBhavsar, the PR is ready for review.

preparing for payment
Payouts due:
Issue Reporter: NA
Contributor: NA @roksanaz (is not paid in Upwork or NewExpensify)
Contributor+: $1000 @situchan (in Upwork)
Eligible for 50% #urgency bonus? N
Upwork job is here.

Just checking on the payment of this because there were several people working on this.
@MonilBhavsar @artus9033 and @situchan can you confirm this payment summary is correct.
Do we have a regression test for this?

@Christinadobrzyn it seems like I am listed as a paid contributor, however, I should be a contractor (member of Callstack). Could you update that please?

Just checking on the payment of this because there were several people working on this.
@MonilBhavsar @artus9033 and @situchan can you confirm this payment summary is correct.
Do we have a regression test for this?

Correct.
I think we already we have regression test case since reported by QA team.

Yes correct! We can close this once we have issued payment to everyone

Awesome! Thanks @situchan and @MonilBhavsar - I paid @situchan based on this payment summary - https://github.com/Expensify/App/issues/27456#issuecomment-1851069929
I think this is good to close but let me know if I'm missing anything!


ARROW-1560: [C++] Kernel implementations for "match" function

CI is "green" now (Appveyor is still backed up, but I saw it pass before the most recent rebase). @emkornfield do you have any further concerns with this PR?

@psuman65 did/do you have time to address @bkietz comments?

@psuman65 pinging on this one

@wesm @emkornfield I apologize, I couldn't find much time to work on Match. Let me know if I need to close the PR for anyone else to work on it.

@bkietz could you commit your suggestions and make a followup Jira if necessary? Would you be willing to approve and merge given that?

@psuman65 @nealrichardson I'll commit my suggestions shortly and rebase. Stand by for force push


feat: increment $SHLVL

the $SHLVL variable is a handy one for finding out how deep a person is in shells. it's pretty useful for me, where im constantly switching between unstable and stable hilbish versions. but it doesnt increment the $SHLVL, so itll stay at its default value (3, for me)

closed in https://github.com/Mewyuna/Hilbish/commit/7e970e9e81bc72b582275654a8ecada68f6ad46c


[QUESTION] About the keyword argument "feature_names_out" of "FunctionTransformer" class

The definition of ratio_pipeline() function in the jupyter notebook of Chapter 2 contains the following transformer:
FunctionTransformer(column_ratio,
                    feature_names_out=[name]),

But the keyword feature_names_out is not listed as an argument in the scikit-learn document  of FunctionTransformer class or its parent classes, and it's not clear how to understand it.
Is that just for naming the transformer to be built or for any other pourpose? And why isn't it listed as a keyword argment of the FunctionTransformer's constructor or of its parent classes'?

This is part of the upcoming changes for version 1.1, see https://github.com/scikit-learn/scikit-learn/commit/d23d589587ce5a6d5642018946511ef3818bcb32 which introduced this and https://scikit-learn.org/dev/modules/generated/sklearn.preprocessing.FunctionTransformer.html for the latest (development) docs.

@FriedrichFroebel: Thank you for the clarification.
It's now clear how to understand the output of preprocessing.get_feature_names_out() function.


pull request for e2e test at 01/11/2017 20:15:11

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


User management: Forward user changes to Bitbucket

Checklist
General

[x] I tested all changes and their related features with all corresponding user types on a test server.(https://docs.artemis.ase.in.tum.de/dev/guidelines/language-guidelines/).
[X] I chose a title conforming to the naming conventions for pull requests.

Server

[X] I followed the coding and design guidelines.
[X] I added multiple integration tests (Spring) related to the features (with a high test coverage).
[X] I implemented the changes with a good performance and prevented too many database calls.
[X] I documented the Java code using JavaDoc style.

Motivation and Context

If a password gets changed, changes only get delegated to GitLab/Jenkins but not Bitbucket so the password change only affects Artemis.
Description

I implemented the BitbucketUser ManagementService and moved the Bitbucket user creation from participation initialisation to Artemis user creation as also suggested by a TODO.
I also changed it so all internal users can access the password reset.
Steps for Testing

Prerequisites:

1 Testserver with Atlassian connected
1 Student with a local user Account
1 Programming Exercise
You need a local user for this. If you already have one, please use it, if you need one, please let me know.

Log in to Artemis
Start your participation to the exercise
Download the repository with the students credentials and push changes
Change your password using the change password function in the top-right menu
Make sure you can't do any changes to the repository with your old password but you can with your new password.
Log out and reset the password using the password reset function
Make sure you can't do any changes to the repository with your old password but you can with your new password.
Change the password back to the default

Review Progress

Code Review

[x] Review 1
[x] Review 2

Manual Tests

[x] Test 1
[x] Test 2

Test Coverage

BitbucketUserManagementService: 73.53% | 97.96%
BitbucketService: 52.38% | 71.99%

Cypress e2e tests are failing


Replicas can be restaged to a higher (slower) tier

Bug Report
iRODS Version, OS and Version
iRODS server: 4.3.1
Storage tiering plugin: 4.3.1
OS: centos 7
What did you try to do?
A test introduced in https://github.com/irods/irods_capability_storage_tiering/pull/234 revealed this issue. Here's the setup:
Have 3 resources which are configured as tiers in the same group:

ufs0 - tier 0
ufs1 - tier 1
ufs2 - tier 2

Set preserve_replicas to true on ufs0.
Set minimum_restage_tier to true on ufs1.

Put an object on ufs0.
Tier out to ufs2. There should be a replica 0 on ufs0 and a replica 2 on ufs2.
Run iget -R ufs0 on the object.

Expected behavior
After discussing with team, the expected behavior is for nothing to happen. The replica that was fetched is already on a lower (faster) tier than the minimum restage tier, so there is no benefit to restaging it to the higher (slower) tier.
Observed behavior (including steps to reproduce, if applicable)
Replica 3 appears on ufs1, restaged from ufs0.
The restaging logic needs to ensure that the minimum restage tier is lower than the tier from which the replica is being restaged.

Looks like this check needs to be expanded to include data which is on a lower tier than the minimum restage tier:
https://github.com/irods/irods_capability_storage_tiering/blob/b50254bad08d8f24b63e91dce01c5c61f455a0ca/storage_tiering.cpp#L803-L807

Agreed.   Check more scenarios, and return early.


[Bug]: [dashboard] Multiple identical results may appear when the table filter input changes

What happened?
Duplicate results may occur when using the table filter box on the optimizing?tab=tables page on the dashboard
Affects Versions
0.7.0
What table formats are you seeing the problem on?
Iceberg
What engines are you seeing the problem on?
AMS
How to reproduce
look gif:

Relevant log output
No response
Anything else
No response
Are you willing to submit a PR?

[ ] Yes I am willing to submit a PR!

Code of Conduct

[X] I agree to follow this project's Code of Conduct

I will fix it later. @7hong


allow 2 ingresses in same ns

tested with
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: same
  annotations:
    kubernetes.io/ingress.class: nginx
    ingress.kubernetes.io/whitelist-source-range: <IP_ADDRESS>/32
  labels:
    app: same
spec:
  rules:
    - host: same.com
      http:
        paths:
          - path: /blocked
            backend:
              serviceName: "same"
              servicePort: 8080
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: notsame
  annotations:
    kubernetes.io/ingress.class: nginx
  labels:
    app: same
spec:
  rules:
    - host: same.com
      http:
        paths:
          - path: /
            backend:
              serviceName: "same"
              servicePort: 8080

With the default rules:

Same NS, same hostname, different ingress names: Error from server (ingress host (same.com) conflicts with ingress same/same): error when creating "same.yaml": admission webhook "webhook.openpolicyagent.org" denied the request: ingress host (same.com) conflicts with ingress same/same
Different NS, same hostname, different ingress names: Error from server (ingress host (same.com) conflicts with ingress same/same): error when creating "same.yaml": admission webhook "webhook.openpolicyagent.org" denied the request: ingress host (same.com) conflicts with ingress same/same

After edit:

Same NS, same hostname, different ingress names: ingress.extensions/same configured ingress.extensions/notsame created
Different NS, same hostname, different ingress names: Error from server (ingress host (same.com) conflicts with ingress same/same): error when creating "same.yaml": admission webhook "webhook.openpolicyagent.org" denied the request: ingress host (same.com) conflicts with ingress same/same


Add Recursive CTE Support

Pull Request Test Coverage Report for Build 299956509

28 of 28 (100.0%)  changed or added relevant lines in 3 files are covered.
2 unchanged lines in 2 files lost coverage.
Overall coverage increased (+0.2%) to 92.022%

Files with Coverage Reduction
New Missed Lines
%

src/test_utils.rs
1
80.77%

src/tokenizer.rs
1
91.25%

Totals

Change from base Build 288554202:
0.2%

Covered Lines:
4787

Relevant Lines:
5202

💛  - Coveralls

error: match expression looks like `matches!` macro
   --> src/tokenizer.rs:385:60
    |
385 |                       let s = peeking_take_while(chars, |ch| match ch {
    |  ____________________________________________________________^
386 | |                         '0'..='9' | '.' => true,
387 | |                         _ => false,
388 | |                     });
    | |_____________________^ help: try this: `matches!(ch, '0'..='9' | '.')`
    |
    = note: `-D clippy::match-like-matches-macro` implied by `-D warnings`
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro

Thanks again!


Multiple passwords

Great plugin, thanks.
Is there a way or workaround to use a set of passwords instead of a single one?
I mean like the global password configuration option, but having many, not just one.
Thus we can distribute credentials per users, instead of granting a shared password to them all.
Otherwise there is no way to disallow someone that already knows the shared secret, but to change the password and re share it with everyone.
Regards

Hi.
No, there is no way to make multiple passwords. In fact, the notion of user itself does not exist.
I already have thought about integrating this possibility and technically it is possible, but that it involves a lot of constraints.
Maybe a dynamic site with a DB will make more sense than static mkdocs with this plugin. It's much more secure (as long as the backend/web page is properly protected)
I will not integrate the concept of user and multi password in this plugins. Sorry.

To argue a little more from a technical point of view.
Currently I encrypt the desired parts (Content + Encrypt Something + Search index) with the password defined globally or more specifically on the page. Then I hide the generated encrypted content in the page with a 'hidden' CSS style. But therefore the content is still in the page.
Several users, therefore implies several passwords and therefore to encrypt the same content several times to hide it in the page.
In addition it will be necessary to be able to know which user enters his password, otherwise it is necessary to try the password on all the encrypted chains.
We could tinker and make a kind of static DB that the user password will come to decypt to recover a password which encrypts the page for him. In this case, no more multiplication of encrypted content, but no more security either, because each user could find the password used.
Then in all cases with these two methods, you would always have to rebuild your site to remove the user. (The only advantage is the distribution of the password)

Got it.
This is a very clean solution for the single password use case, since everything is self-contained in the static site, without any additional requirement.
For our requirement I will probably use HTTP auth via .htaccess or convert the mkdocs static site build into something else (ex using next js)
Thanks anyway.


First is that in simple filter, we were not showing the Remove Filters button because of wrong class.
The second problem is described here: #2829
So I just implemented Str::slug($filter_name) to whenever we use the name of the filter.
Is just a matter of adding to the docs that ANY filter name you use will be Str::slugged!

A new inspection was created.

The inspection completed: No new issues

This is great but let's move all Str::slugs calls into the CrudFilter file, either inside the constructor as $filter['name'] = Str::slug($name) or as $field['slug'] = Str::slug($filter['name'])

So after some tests, the one that offer more consistency across different inputs, and produces valid data either for URL or  JS functions is the Str::camel('string');
dd(Str::camel('test'), Str::camel('test-test'), Str::camel('testTest'), Str::camel('test_test'), Str::camel('test test'));
"test"
"testTest"
"testTest"
"testTest"
"testTest"

So I went with it in place of Str::slug()

A new inspection was created.

The inspection completed: No new issues

A new inspection was created.

The inspection completed: No new issues

Although this solved the mentioned problem, it broke my entire application export process since I was relying on the field names as they come from my models.
When you get the parameters sent by a filter it does not revert back the Str::camel transformation. So a field in the database named as appointment_date will fail since it became appointmentDate.
Please introduce a better communication when introducing breaking changes.

Ugh! Sorry to hear that @maxacarvalho - we were unaware this would break anyone's app. Otherwise we wouldn't have merged it inside a patch release. Could you please explain in more detail how this is a breaking change for you? How you were using the filters before, so we understand this?
I'm asking because, as far as I can tell, the filters all work fine with the changes in this PR. Did you have custom filters? Or did you overwrite the export functionality? I don't understand what the connection is between export and this change inside filters.
Thanks for reaching out. And sorry again for the bad experience.
Cheers!

I can chime in here. Took me a while to find an open issue, but I knew there had to be one.
This applies mostly to filter 'dependency' which is not a documented feature but is easy to patch into an extension of the select2_ajax filter with about 8 lines of code. I have a group of tables with a 4-level hierarchy. The top level has no filter; the second level has a filter for the top level; the third and fourth levels each have a filter for each level above it.
An example of this structure: Manufacturer > Line > Series > Product
So when I'm filter my Product list by line, I need a Manufacturer value to scope it. In v3.6 and v4.0, this dependency would be the same name as the higher level filter.
 Now, my filters are all defined in snake_case like this, but the values and request fields are camelCased.
In order to get these working again, I have to change not only my field names and dependency names but also all of the options methods in the API controllers for these ajax calls.
I understand this is an extension that is broken by this change. I already know the work-around, so I'm more interested in understanding why this was done for filters specifically when it seems like they should behave the same -- at least as far as naming is concerned -- as fields?

@maxacarvalho I've just submitted PR #3069 which should fix the backwards-compatiblity problem we mistakenly introduced. Could you please give it a look (or better yet a test) and let me know what you think? I'd love to merge it as soon as possible so no more people run into the frustration of having their filter names changed.
@trip-somers same thing - could you please let me know if PR #3069 fixes your problem with filters too? Just filters, not fields.
Cheers! Sorry for the breaking change - it was bad reviewing on my end, should have seen it coming.

Hello @tabacitu,
At this moment, if you merge the PR, it will break my application again, since I already applied the changes.
And I believe that, probably, more people did it since it's a common thing (IMHO) to manipulate the data based on the filters.
That said, I think the best now is to keep compatibility with the new and the old, or, leave as it is and make it clear how it work from the docs.
As a software developer, I understand that's not always easy to keep track of changes, document and test.
I also understand that sometimes a branch becomes a little monster, pack with changes that we do along the way.
The best approach (IHMO) is to force the releases to be small, specially if they don't touch the major version, that way it's a lot easier for the maintainers to keep organized and for the users to always be aware of what's changing.


Move swarm functionality to separate repository

https://github.com/wildfly-extras/wildfly-swarm-camel


Fix: manage version information of Python file as string instead of integer list

Raised error in pytest in Linux environment.

FAILED test/script/server/test_script_version.py::test_version - ValueError: invalid literal for int() with base 10: '0rc1'

https://github.com/lyoutakoduka/spartaproject/blob/5229220b1c74c482b18e4052a710d821d37dd874/test/script/server/test_script_version.py#L32
Fix: manage version information of Python file as string instead of integer list, because basic python version is like follow "1.0.0"... but sometimes it's "1.0.0rc1". Integer list can't treat this.
So, remove function "version_to_string" and "version_from_string" in module "script_version".
https://github.com/lyoutakoduka/spartaproject/blob/5229220b1c74c482b18e4052a710d821d37dd874/pyspartaproj/script/server/script_version.py#L2
Related fixes:
https://github.com/lyoutakoduka/spartaproject/blob/5229220b1c74c482b18e4052a710d821d37dd874/pyspartaproj/script/server/local/execute_server.py#L17
https://github.com/lyoutakoduka/spartaproject/blob/5229220b1c74c482b18e4052a710d821d37dd874/test/script/server/local/test_execute_server.py#L54

Version information of Python interpreter as integer list is removed.
I changed argument and return type about module. but execution of Python code on server is not confirmed because this functionality is in development.
See feature flag in function "test_path" in module "test_execute_server".
https://github.com/lyoutakoduka/spartaproject/blob/5ec47149619b3b4efeccd842c9c8cd44f76fec13/test/script/server/local/test_execute_server.py#L76


Retry requests if storage (auth + credentials) is not ready

cc @marcaaron @tgolen

Details

There's an issue on Android where the user is logged out randomly. We're not 100% sure about the root cause, but one possibility is the existence of a race condition between the async storage and the networks requests; where the auth token and credentials are not read yet from persistent storage (Onyx) while a network request is made.
I was able to reproduce this scenario by adding a setTimeout in the Onyx.connect callback (more details in this comment):
https://user-images.githubusercontent.com/6829422/137043249-89fe6943-ce38-452e-8704-a509d5ebdcef.mov
There's a long discussion in the issue, where different approaches are discussed (both big and small changes). But we agreed on tackling the issue atm without changing the architecture of the Network Queue. This solution is comprised of the following points:

Add a unit test (StoreNetworkTest.js) that simulates the scenario where auth token + credentials are not ready.
Add the flag isReady and its setter to Network.js to process requests only if auth token + credentials are already read from storage, otherwise re-queue the requests to retry later (as long as the request don't have the property doNotRetry = true). Also, log a message to the server when this scenario happens.
Stop logging out in enhanceParameters (which is addDefaultValuesToParameters in API.js), since we're already handling that auth token + credentials are read first and the http request should logout the user if the auth token is inexistent or expired (server should return a 407 jsonCode if we are online). Also, the API.js has changed a lot since the logout (redirectToSignIn()) was added and probably is no longer needed because that's already handled in handleExpiredAuthToken.

Also a few extra comments:

In order to use the Log in Network I disabled the eslint circular dependency warning (hopefully we can fix this later with a better dependency or another design).
Fixed a few minor jsdocs types.
Added explicit Jest globals to get rid of errors in vscode and have better IntelliSense.
I updated some unit tests to verify the retry is not happening (which is an ideal scenario where auth token + credentials are already read when a network request happens).
Also added Onyx.init and Onyx.clear in some tests, because for some reason the Onyx.connect callback was not triggered and those tests were failing.

Fixed Issues

$ https://github.com/Expensify/App/issues/5619
Tests / QA Steps

In Chrome devtools go to Application -> Local Storage and:

Mess up the authToken (session) and make sure you are reauthenticated.
Mess up the credentials and authToken and make sure you are logged out.

N/A
Tested On

[x] Web
[x] Mobile Web
[x] Desktop
[x] iOS
[x] Android

Screenshots
N/A

This is testing pretty good for me manually - doesn't seem like there are any major regressions. I did have one question though...
Since we are setting the Network to "ready" when the session and credentials are available should we set it back to "not ready" when we sign out? If the Network was still in the "ready" state and we tried to sign in I'm curious if we would run into any issues if e.g. their local variables were not yet set? 🤔

Since we are setting the Network to "ready" when the session and credentials are available should we set it back to "not ready" when we sign out? If the Network was still in the "ready" state and we tried to sign in I'm curious if we would run into any issues if e.g. their local variables were not yet set? 🤔

Hmm I don't think so, because the Network.setIsReady(true) should be only called when the app is booting up to avoid the race condition between storage and network. Once session and credentials (existent or non-existent) are read from storage the Network should be ready until the app is closed by the OS. I think we should only set the network to "not ready" if the storage fails for some reason while the app is still running on a handset (not sure if that's something the OS handles making the app crash, but in any case should be a rare scenario).

Hmm I don't think so, because the Network.setIsReady(true) should be only called when the app is booting up to avoid the race condition between storage and network.

Yeah I was thinking that when you sign out the storage is cleared so the values for session and credentials look like this:

But since we "cache-first" there's no way for an Onyx.set() or Onyx.merge() to cause a "slow" Onyx.connect() on sign in.
https://github.com/Expensify/react-native-onyx/blob/224e2ba03f2365726b8c1d0785e750c54a85332b/lib/Onyx.js#L530-L537

Hmm I don't think so, because the Network.setIsReady(true) should be only called when the app is booting up to avoid the race condition between storage and network.

Yeah I was thinking that when you sign out the storage is cleared so the values for session and credentials look like this:

But since we "cache-first" there's no way for an Onyx.set() or Onyx.merge() to cause a "slow" Onyx.connect() on sign in.
https://github.com/Expensify/react-native-onyx/blob/224e2ba03f2365726b8c1d0785e750c54a85332b/lib/Onyx.js#L530-L537

Ah yeah but even if we don't read the values from the cache after signing out, I don't think we should have a problem; the storage and the network are ready and the network loop should handle any bad state.

Maybe merging main will fix the e2e test or we can restart it.

It would be nice to see if the test can be improved further, but maybe not crucial to do right now. I think what we've come up works OK for now.

Yeah, hopefully, we can improve later this test (which I think we'll require a few changes in API.js to have better control of the Onyx.connect callbacks). Also in the coverage report (running npm run test -- --coverage) I noticed we cover 75.58% of Network.js code in the unit tests:

And given the importance of Network.js in the app, should we add more unit tests to cover if possible 100% in this file? 🤔

Maybe merging main will fix the e2e test or we can restart it.

I added another commit with more comments in the unit test and now the e2e test passed 😄

Left a follow up comment about the JS doc, but I think this is good to merge.

Not sure if tests failing had anything to do with the recent change but restarted them to see if they'll pass again

: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 @marcaaron in version: 1.1.14-5 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

@marcaaron @marcochavezf Hello! I'm not sure if were testing this correctly. What I did was:

Navigate to Application in dev tools
In local storage search for session
In the session info I changed the Authtoken and the email. I just added a bunch of random characters to mess it up

After that, I was not logged out and it looked like I was logged in as the user I randomly wrote on the email

@marcaaron @marcochavezf Hello! I'm not sure if were testing this correctly. What I did was:

Navigate to Application in dev tools
In local storage search for session
In the session info I changed the Authtoken and the email. I just added a bunch of random characters to mess it up

After that, I was not logged out and it looked like I was logged in as the user I randomly wrote on the email

Ah from the app side I think this is fine because we're only verifying that authToken (from session object) and the credentials object (which is another object in the local storage) are valid or existent to keep the user logged in (which are retrieved from the server when the user enters their correct email and password). And the email from the session object is only used for the UI and not used to re-login the user.

🚀 Deployed to production by @AndrewGable in version: 1.1.15-15 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅


add a no isolation verification options to the gps rr command

There are scenarios where people make textual changes, etc. and are lazy and don't want to wait for their isolation verification checks to occur. So we should provide an option for them to override the current configured setting via the command line.

@drewdeponte  so something like gps isolate 0 --no-verify?

Yeah that is what I am thinking. Maybe we do that on rr, iso, and int?
Part of me doesn't like it because it allows people to not follow the smart process.
But at the same time I am sure there will be edge cases where you might not want it to run.
🤷♂

One way to discourage users from using it is to make the option long. Something like
--no-isolation-verification

will typically dissuade people. Is it a good idea? That is another question.

That is a good point. I like the idea of using the full long name --no-isolation-verification

This has been integrated into mainline with the option --no-isolation-verification-hook. Therefore, I am closing this issue.


Fix path-param handling for requests with JSON bodies

This PR addresses #16.

@kosorotov I think you tried to fix a similar issue.


[Snyk] Security upgrade com.fasterxml.jackson.dataformat:jackson-dataformat-cbor from 2.13.4 to 2.14.0

This PR was automatically created by Snyk using the credentials of a real user.Snyk has created this PR to fix one or more vulnerable packages in the `maven` dependencies of this project.
Changes included in this PR

Changes to the following files to upgrade the vulnerable dependencies to a fixed version:

dockstore-integration-testing/generated/src/main/resources/pom.xml

Vulnerabilities that will be fixed
With an upgrade:

Severity
Priority Score (*)
Issue
Upgrade
Breaking Change
Exploit Maturity

616/1000  Why? Proof of Concept exploit, Has a fix available, CVSS 5.9
Denial of Service (DoS) SNYK-JAVA-COMFASTERXMLJACKSONCORE-3038426
com.fasterxml.jackson.dataformat:jackson-dataformat-cbor:  2.13.4 -> 2.14.0
No
Proof of Concept

(*) Note that the real score may have changed since the PR was raised.
Check the changes in this PR to ensure they won't cause issues with your project.

Note: You are seeing this because you or someone else with access to this repository has authorized Snyk to open fix PRs.
For more information:
🧐 View latest project report
🛠 Adjust project settings
📚 Read more about Snyk's upgrade and patch logic

Learn how to fix vulnerabilities with free interactive lessons:
🦉 Denial of Service (DoS)

controlled by dropwizard-bom


Failure to find python Interpreter and Development.Module running under yocto/oe

I am attempting to use scikit-build-core 0.10.7 to build python3-pyzmq bindings at 26.2.0 in a yocto environment.
There was no existing recipe within meta-openembedded  yet, so I have attempted to create my own.
It is starting to build, but there appears to be a failure in the execution of cmake where it cannot locate python.
CMake Error at /src/platform/build/tmp/work/cortexa9t2hf-neon-xilinx-linux-gnueabi/python3-pyzmq/26.2.0/recipe-sysroot-native/usr/share/cmake-3.28/Modules/FindPackageHandleStandardArgs.cmake:230 (message):   Could NOT find Python (missing: Interpreter Development.Module)
The environment for this recipe appears to be being setup correctly by bitbake. The local recipe native sysroot does have python3 in it and the PYTHON environment variables are being set to point at those locations, so I'm wondering what it is trying to look for that it is not finding. Python is this context is version 3.12.
The PYTHON env variable is set:
export PYTHON="/src/platform/build/tmp/work/cortexa9t2hf-neon-xilinx-linux-gnueabi/python3-pyzmq/26.2.0/recipe-sysroot-native/usr/bin/python3-native/python3"
... and that location does indeed have the python3 executable:
$ ls -l ./work/cortexa9t2hf-neon-xilinx-linux-gnueabi/python3-pyzmq/26.2.0/recipe-sysroot-native/usr/bin/python3-native/python3*
lrwxrwxrwx 1 10 Nov 26 16:24 ./work/cortexa9t2hf-neon-xilinx-linux-gnueabi/python3-pyzmq/26.2.0/recipe-sysroot-native/usr/bin/python3-native/python3 -> python3.12
-rwxr-xr-x 7 14360 Nov 20 15:59 ./work/cortexa9t2hf-neon-xilinx-linux-gnueabi/python3-pyzmq/26.2.0/recipe-sysroot-native/usr/bin/python3-native/python3.12
I'm attaching the run.do_compile and log.do_compile files from the build so you can see the environment and calls into the build for context.
Any assistance you could give would be gratefully received.
Does scikit-build-core fully pass the environment through to cmake or is there some additional setup that needs to be done?
Would the following command line args to python when running the build within pyzmq have any adverse effect on scikit-build-core?
-m build --no-isolation --wheel --outdir
log.do_compile.txt
run.do_compile.txt

I'll try to look at this soon, probably after Monday.

The thing I'm worried about with openembeded is getting the cross-compilation right and there are no contamination of packages. With FindPython you have the additional complication that you need to make sure the python of the bitbake executor is not used because afaiu you want to pick up the python.h and library of the runtime system.
I tried to look into it, but the hardest part is setting up the initial docker environment with openembeded, and a test environment. Could you help share a dockerfile with a minimal setup?

pyzmq_test.zip
Hi @LecrisUT
I don't know if this would be the sort of thing you were expecting, but I've put together a failing example. Uses a dockerfile and docker compose setup to create a build container based on ubuntu. The docker compose service will run the build.sh script which pulls all the meta layers using repo and kick off a bitbake using a new layer with the recipes I was trying to scikit-build-core and pyzmq. You can always override the command and just go in on a bash prompt and interact with it directly on the terminal after that inital build fails.
Removing the REQUIRED_VERSION line from local.conf would put it back to the version released in scarthgap.
This might not be the normal way to use docker, it's just how I know to set it up to build a project with source on the host machine mounted as a volume.
I think the only environment dependency would be setting env variables DOCKER_UID and DOCKER_GID to match your users id and groups like this:
export DOCKER_GID=$(id -g)
export DOCKER_UID=$(id -u)
To run this do the following:
unzip pyzmq_test.zip
cd pyzmq_test
docker compose build yocto_xlnx
docker compose run --rm yocto_xlnx
If  that's not what you were expecting or you have any trouble with it, do let me know.

@sv662 I'm in the same boat as you and I what helped kicking this further down the road was this patch:
@@ -0,0 +1,22 @@
+From 42573aad35732223bb1467cbfdd35a5081e80d33 Mon Sep 17 00:00:00 2001
+From: Stephan Kulow<EMAIL_ADDRESS>+Date: Thu, 19 Dec 2024 12:56:28 +0100
+Subject: [PATCH] fix: check for PYTHON_INCLUDE_DIR
+
+---
+ src/scikit_build_core/builder/builder.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/scikit_build_core/builder/builder.py b/src/scikit_build_core/builder/builder.py
+index 437265f..18d55b9 100644
+--- a/src/scikit_build_core/builder/builder.py
++++ b/src/scikit_build_core/builder/builder.py
+@@ -203,7 +203,7 @@ class Builder:
+         python_sabi_library = (
+             get_python_library(self.config.env, abi3=True) if limited_api else None
+         )
+-        python_include_dir = get_python_include_dir()
++        python_include_dir = os.getenv("PYTHON_INCLUDE_DIR") or get_python_include_dir()
+         numpy_include_dir = get_numpy_include_dir()
+
+         # Classic Find Python

I hope it helps to find a proper solution. At least I've got myself a pyzmq-26.2 package now :)


When using directive require bindings, the controller does not inherit from its prototype

Note: for support questions, please use one of these channels: https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#question. This repository's issues are reserved for feature requests and bug reports.
Do you want to request a feature or report a bug?
Bug
What is the current behavior?
Normally, the created controller instances inherits from the contructor's specified prototype. When using the new require : { a : '^parent' } functionality however, it inherits from Object. This behaviour seems wrong to me, is at least inconsistent, and is - to my knowledge - not specified as breaking change in the changelog.
If the current behavior is a bug, please provide the steps to reproduce and if possible a minimal demo of the problem via https://plnkr.co or similar (template: http://plnkr.co/edit/tpl:yBpEi4).
Create a directive that has a controller with a prototype, that uses a parent directive.
angular.directive('a', function() {
  return {
    controller: angular.noop,
    controllerAs: 'theA'
  }
});

angular.directive('b', function() {
  function BController() {};
  BController.prototype.test = angular.noop;

  return {
    controller: BController,
    controllerAs: 'theB',
    require: {
       a: '^a'
    },
    link: function(scope, elem, attr, ctrl) {
       assert(ctrl.a);
       assert(ctrl.test);
    }
  }
});

What is the expected behavior?
That the above code works
What is the motivation / use case for changing the behavior?
I suppose this affects ES6 classes as well, and that seems unpreferable to me. I'd like to use prototype bound functions for their footprint and code reuse.
Which versions of Angular, and which browser / OS are affected by this issue? Did this work in previous versions of Angular? Please also test with the latest stable and snapshot (https://code.angularjs.org/snapshot/) versions.
Testing on 1.5.7, not sure when this feature was introduced.
Other information (e.g. stacktraces, related issues, suggestions how to fix)

Edit:
nevermind, I was looking at the object containing the bindings, not the actual controller instance. If you need the instantiated controller in the link function, extend the above code with:
    require: {
       self: 'b'
    },


Add new blog post for otelsql

resolve #4046
cc @svrnm

@svrnm @theletterf @chalin Thank you for the careful review! I've resolved all the comments. PTAL.

@chalin can you take another look if all your change requested have been addressed as needed?

We got 3 approvals, and the date was updated to today. Thanks all! Merging.


HDDS-5402 Support list node based on NodeOperationalState and NodeState options in printTopology CLI

What changes were proposed in this pull request?
Currently, printTopology CLI display all DN information as output.
This task is to add NodeOperationalState and NodeState as the CLI options to the command, and display the DN accordingly.
What is the link to the Apache JIRA
https://issues.apache.org/jira/browse/HDDS-5402
How was this patch tested?
bin/ozone admin printTopology -n IN_SERVICE

the s3 smoketest fail is not this pr’s problem

@cchenax opened a new MR  #2645 for HDDS-5402.  I just merged that one.
Thanks @jojochuang  and @errose28 for the code review.


feat: subgraph handling

Description
Adds support for fetching announcements via a subgraph.

closing since these changes were merged in via:
https://github.com/ScopeLift/stealth-address-sdk/pull/84


NIFI-9040 Add GitHub Workflow for System Tests

Description of PR
NIFI-9040 Adds a GitHub Workflow to run integration tests in the nifi-system-test-suite module on a daily schedule. The workflow configuration runs on Ubuntu Java 11 and MacOS Java 8. The current integration tests fail on Windows, so separate work is necessary to evaluate potential changes for the Windows platform.
Running the integration tests on a daily basis using the default main branch provides additional automated verification without burdening the existing pull request workflow.
In order to optimize the job and avoid running unnecessary tests, the workflow runs two Maven commands. The first command builds the modules required for nifi-system-test-suite:
mvn -V -nsu -ntp -ff install -D skipTests -am -pl nifi-system-tests/nifi-system-test-suite
The second command runs the integration tests:
mvn -V -nsu -ntp -ff package verify -P integration-tests -pl nifi-system-tests/nifi-system-test-suite
The following GitHub Actions link provides an example workflow run:
https://github.com/exceptionfactory/nifi/actions/runs/1140278748
In order to streamline the review of the contribution we ask you
to ensure the following steps have been taken:
For all changes:

[X] Is there a JIRA ticket associated with this PR? Is it referenced
in the commit message?

[X] Does your PR title start with NIFI-XXXX where XXXX is the JIRA number you are trying to resolve? Pay particular attention to the hyphen "-" character.

[X] Has your PR been rebased against the latest commit within the target branch (typically main)?

[X] Is your initial contribution a single, squashed commit? Additional commits in response to PR reviewer feedback should be made on this branch and pushed to allow change tracking. Do not squash or use --force when pushing to allow for clean monitoring of changes.

For code changes:

[X] Have you ensured that the full suite of tests is executed via mvn -Pcontrib-check clean install at the root nifi folder?
[X] Have you written or updated unit tests to verify your changes?
[X] Have you verified that the full build is successful on JDK 8?
[X] Have you verified that the full build is successful on JDK 11?
[ ] If adding new dependencies to the code, are these dependencies licensed in a way that is compatible for inclusion under ASF 2.0?
[ ] If applicable, have you updated the LICENSE file, including the main LICENSE file under nifi-assembly?
[ ] If applicable, have you updated the NOTICE file, including the main NOTICE file found under nifi-assembly?
[ ] If adding new Properties, have you added .displayName in addition to .name (programmatic access) for each of the new properties?

For documentation related changes:

[ ] Have you ensured that format looks appropriate for the output in which it is rendered?

Note:
Please ensure that once the PR is submitted, you check GitHub Actions CI for build issues and submit an update to your PR as soon as possible.

Rebasing from main after correcting NiFi Stateless for Java 11 in #5314 resulted in a successful workflow for both system test suites:
https://github.com/exceptionfactory/nifi/actions/runs/1144496782

Thanks for adding this in @exceptionfactory! This will be a big help. All looks good to me. +1 merging to main!


Fix datamigration with django CMS 3.1

We need to use real model, not historic one during the data migration…to get the treebeard fields

Sorry, not needed in develop


Questions about data at metropolitan/city level

We are researchers at Princeton University utilizing the g-tab google trends anchor bank recently. We have been able to access the google trends data at the US state level but were wondering if we could get to the metropolitan/city level. Could you please advise us on this?
Thank you so much!
Best,
Sam

Hey @ssiwakoti1994!
You can do it by simply using the area codes (like this: https://www.bennetyee.org/ucsd-pages/area.html).
The syntax is: "US-XX-YYY" where XX is the state (e.g., NJ) and YYY is the area code (e.g., 609).
Here is a stub on how you can make an anchorbank for the new jersey area:
import gtab
t = gtab.GTAB()
t.set_options(pytrends_config={"geo": "US-NJ-609", "timeframe": "2004-01-01 2020-12-31"})
t.create_anchorbank() # takes a while to run since it queries Google Trends.


Error : Check failed: error == cudaSuccess (30 vs. 0)  unknown error

I had created a private AMI from a running code (after the cache changes), and the Imagenet example was running correctly on this AMI.
However, today I created a new cluster from this AMI and got the error - "Check failed: error == cudaSuccess (30 vs. 0)  unknown error".

Did you get the error when running ImageNetApp.scala? Was that the only difference? What sort of nodes were you using, and what OS? Were you using the current SparkNet master, or did you modify anything?

Yes Imagenet.scala. After posting, I pulled, rebuilt, and re ran with same result.
Node - g2.8xlarge with ubuntu 14.04 (same as the AMI provided here)
No, I did not modify.

I made a private AMI, because I wanted to stick to one version of the code.

I'm not sure exactly what the problem is, but one starting point is to figure out exactly where the error is occuring. A couple ways to do this:

Start a spark shell with something like ~/spark/bin/spark-shell --jars /root/SparkNet/target/scala-2.10/sparknet-assembly-0.1-SNAPSHOT.jar and try loading a model from a model file and creating a net and calling net.forward, and see precisely where it crashes. For this purpose, you can do all of this on the Spark master and you don't need to create a net on each worker.

Sometimes running things in the Spark shell is different from running a script, so I'd suggest commenting out components of CifarApp.scala until you stop getting the error to find the minimal example that causes it to fail.

By the way, you said the problem was with ImageNetApp, but does it also occur with CifarApp?


Call to undefined method CI_Router::show_404()

When visiting this url: http://stylebot.me/styles/9869
I met this error:
 Fatal error: Call to undefined method CI_Router::show_404() in
/home/ankitahuja/stylebot.me/system/application/controllers/style.php on line 22

Thanks for reporting, i will take a look


Pass SERVICE_CLUSTER environment variable when starting API service layer

As a Thoras Engineer, I should be able to take certain customer configuration parameters for granted so that I can write more flexible code.
One of these configurations is the name of the Kubernetes cluster Thoras is running in.
Let's update our helm chart to allow customers to pass in the name of the cluster in a way that propagates the cluster name to an environment variable in the services application (services-api)
AC

Customers can define the name of their cluster in the helm chart installation config (values.yaml)
When the services-api starts up in a Thoras installation, an environment variable is set whose value is set to the name of the cluster passed in from the user in the helm chart installation
The way the value is read out of the environment variable harmonizes with the existing patterns for setting inputs to the services-api on startup
Update Installation Guide to instruct user to set cluster name value
There's a helm chart unit test that asserts this behavior works in the helm chart
There's a services-api that asserts the value is being set properly and is usable

FYI, Update Installation Guide to instruct user to set cluster name value


🎨 Adjust Invite list UI to account for pending invitations for members who already accepted another invitation

If two users invite the same person around the same time, and that invitee completes induction on one of the invitations, the other inviter will still see their invitation to the invitee as pending until it expires.
Maybe we attempt to infer whether the user has already completed the donation step and hide it if so?

I think this was addressed in #88 but we should validate that.


chore: add docs, part of #37

add pragma #![warn(missing_docs)] to the following

arrow-array
arrow-cast
arrow-csv
arrow-data
arrow-json
arrow-ord
arrow-pyarrow-integration-testing
arrow-row
arrow-schema
arrow-select
arrow-string
arrow
parquet_derive

add docs to those that generated lint warnings

Remove bitflags workaround in arrow-schema. At some point, a change in bitflags v2.3.0 had started generating lint warnings in arrow-schema. This was handled using a workaround. Here is the original issue.

bitflags v2.3.1 fixed the issue hence the workaround is no longer needed.

@alamb for your perusal.

Updated the PR.

🚀

Thanks again


Hexagon area question or so...?

.hexLink {
background: red;
}

Just add this code and see what happened (some time you can see red color). It seems like hexagons not "pixel perfect".

Hi.
Can you please add a screenshot of the issue and specify what browser you are using.
Regards,
web-tiki

http://i.imgur.com/683D18t.png now you see red color in hexagons?
Chrome 58 (latest stable release), Windows 10.

Thx for the info, I'll look into this

@xrobachok This is a rendering bug, the overflow on the .hexLink element isn't working. I have not found a workaround for it yet.


Automatic commit: Move 'xpa-sac-hxm-successfactors-writeback' from QA…

… to Production

Please make sure that you are using the correct email address when pushing your tutorials.
The one you have used this time is<EMAIL_ADDRESS>

Hi @MichaelCzcz

Please make sure that you are using the correct email address when pushing your tutorials. The one you have used this time is<EMAIL_ADDRESS>
hopefully changed to<EMAIL_ADDRESS>now.
I still see the license/cla check pending. I have signed it and whenever i click on it again, i see a confirmation that it is already signed.
br Simon

Will the CLA not allow you to sign again?  Perhaps it is needed because of the change in email address.  I am not able to merge your request until the CLA issue is resolved.

Closed due to different email.  Will reopen when email is corrected.


Allow for faster travis builds with container based infrastructure.

See http://blog.travis-ci.com/2014-12-17-faster-builds-with-container-based-infrastructure/ and http://blog.travis-ci.com/2015-03-31-docker-default-on-the-way/

nice!


Please, add the repo on InterSystems Open Exchange

Open Exchange
To increase the audience, thank you!

Repo added on Open Exchange at
https://openexchange.intersystems.com/package/webgateway-examples

Thank you!
On Wed, Aug 16, 2023 at 8:20 PM Sarah Matthews @.***>
wrote:

Closed #2
https://github.com/intersystems-community/webgateway-examples/issues/2
as completed.
—
Reply to this email directly, view it on GitHub
https://github.com/intersystems-community/webgateway-examples/issues/2#event-10111013747,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAVHEPYKLDOSNU4C6SC3WELXVT6NTANCNFSM6AAAAAA3QH3DZ4
.
You are receiving this because you authored the thread.Message ID:
<intersystems-community/webgateway-examples/issue/2/issue_event/10111013747
@github.com>


pod install failed

Hello brother. I got this error when installing this package. How can I fix it?

Seems as something happened to https://github.com/ipfs-shipyard/gomobile-ipfs library. Can you check with them, please?


nautobot.dcim.constants.WIRELESS_IFACE_TYPES is missing entries present in nautobot.dcim.choices.InterfaceTypeChoices

Environment

Nautobot version (Docker tag too if applicable): 2.3.8, 2.4.0a1
Python version:
Database platform, version:
Middleware(s):

Steps to Reproduce

Compare nautobot.dcim.constants.WIRELESS_IFACE_TYPES to the items in nautobot.dcim.choices.InterfaceTypeChoices

Expected Behavior
Expected to contain the same entries.

Observed Behavior
They do not.
Questions
I'm happy to submit a patch for this, but how would you like it fixed? It's easy enough to add the missing items to WIRELESS_IFACE_TYPES but that doesn't fix the fragility. Would you accept a patch which builds WIRELESS_IFACE_TYPES dynamically at startup by using the 'Wireless' data in choices.InterfaceTypeChoices.CHOICES ? Something along these lines:
diff --git a/nautobot/dcim/constants.py b/nautobot/dcim/constants.py
index 0446b2417..d11d786cc 100644
--- a/nautobot/dcim/constants.py
+++ b/nautobot/dcim/constants.py
@@ -33,13 +33,12 @@ VIRTUAL_IFACE_TYPES = [
     InterfaceTypeChoices.TYPE_LAG,
 ]

-WIRELESS_IFACE_TYPES = [
-    InterfaceTypeChoices.TYPE_80211A,
-    InterfaceTypeChoices.TYPE_80211G,
-    InterfaceTypeChoices.TYPE_80211N,
-    InterfaceTypeChoices.TYPE_80211AC,
-    InterfaceTypeChoices.TYPE_80211AD,
-]
+interface_type_by_category = {}
+for category_name, category_item_tuples in InterfaceTypeChoices.CHOICES:
+    interface_type_by_category[category_name] = [
+        item_tuple[0] for item_tuple in category_item_tuples
+    ]
+WIRELESS_IFACE_TYPES = interface_type_by_category["Wireless"]

 NONCONNECTABLE_IFACE_TYPES = VIRTUAL_IFACE_TYPES + WIRELESS_IFACE_TYPES

If the above works, I could also add:
CATEGORY_WIRELESS = "Wireless"

...to choices.py (and the same for the other categories) so that constants.py doesn't need to use bare strings.
Thoughts?

Your proposed dynamic approach sounds pretty reasonable to me. A quick fix (just adding the missing entries) would also be fine for now if the dynamic approach runs into any difficulties. Thanks!


(#15) Resolve failing workflows due to incorrect yml golang version.

Its gonna fail because it the branch is not rebased to the latest working go build changes on main.


handles 'Argument list too long'

this is another proposal to #14844

This patch will not work on OSX. dirname standard only supports a single input.


Error: can't fetch revocation status

While issuing a credential via SDK, I am facing this error : "Error: can't fetch revocation status"
Below is the function for creating identity:
  const { did: issuerDID, credential: issuerAuthBJJCredential } =     await identityWallet.createIdentity({       method: core.DidMethod.Iden3,       blockchain: core.Blockchain.Polygon,       networkId: core.NetworkId.Mumbai,       revocationOpts: {         type: CredentialStatusType.Iden3ReverseSparseMerkleTreeProof,         id: 'https://rhs-staging.polygonid.me'       }     });
Here is the issuerAuthBJJCredential credentials of the issuer which will issue the credentials to user
W3CCredential {   id: 'urn:0ac440df-ef01-47c3-8923-fbab84369cbd',   '@context': [     'https://www.w3.org/2018/credentials/v1',     'https://schema.iden3.io/core/jsonld/iden3proofs.jsonld',     'https://schema.iden3.io/core/jsonld/auth.jsonld'   ],   type: [ 'VerifiableCredential', 'AuthBJJCredential' ],   credentialSubject: {     x: '5484876829365717676736908371782461918096221954585422816383236586450076389851',     y: '91800604486763415508230927229839682844173663116373059195732276742646075462',     type: 'AuthBJJCredential'   },   issuer: 'did:iden3:polygon:mumbai:x1gbYoAgnpCYcyUyb7YonDW93fLntN9xEjBSDUYGw',   expirationDate: undefined,   issuanceDate: '2023-11-15T11:06:12.323Z',   credentialSchema: {     id: 'https://schema.iden3.io/core/json/auth.json',     type: 'JsonSchema2023'   },   credentialStatus: {     id: 'https://rhs-staging.polygonid.me/node?state=7202b50c648bfa6da95fefda16d748bbb4809e6590dfbefa96be770bf5c2f404',     type: 'Iden3ReverseSparseMerkleTreeProof',     revocationNonce: 0   },   proof: [     Iden3SparseMerkleTreeProof {       coreClaim: [Claim],       issuerData: [Object],       type: 'Iden3SparseMerkleTreeProof',       mtp: [Proof]     }   ] }
But I am unable to issue credentials and facing the below error:
const credential = await identityWallet.issueCredential(issuerDID, credentialRequest);
Error: can't fetch revocation status     at RHSResolver.resolve (/home/harshil/didJsSdk/js-sdk-examples/node_modules/@0xpolygonid/js-sdk/src/credentials/status/reverse-sparse-merkle-tree.ts:130:13)     at processTicksAndRejections (node:internal/process/task_queues:95:5)     at async CredentialWallet.getAuthBJJCredential (/home/harshil/didJsSdk/js-sdk-examples/node_modules/@0xpolygonid/js-sdk/src/credentials/credential-wallet.ts:251:32)     at async IdentityWallet.issueCredential (/home/harshil/didJsSdk/js-sdk-examples/node_modules/@0xpolygonid/js-sdk/src/identity/identity-wallet.ts:671:37)     at async issueCredential (/home/harshil/didJsSdk/js-sdk-examples/index2.ts:186:22)
I was using polygon's RHS server : 'https://rhs-staging.polygonid.me' and i also tried running up my own RHS server but got the same issue
After noticing the issuerAuthBJJCredential credentials, i got to know that the 'https://rhs-staging.polygonid.me/node?state=7202b50c648bfa6da95fefda16d748bbb4809e6590dfbefa96be770bf5c2f404' url is invalid, there is no api implemented in iden3's rhs server to fetch status like this. According to their docs, the effective URL should be https://rhs-staging.polygonid.me/node/7202b50c648bfa6da95fefda16d748bbb4809e6590dfbefa96be770bf5c2f404
But still i am not sure if this is the reason for the revocation error, help me out here if i am doing something wrong.
`

url  https://rhs-staging.polygonid.me/node?state=7202b50c648bfa6da95fefda16d748bbb4809e6590dfbefa96be770bf5c2f404 is tranforming inside js-sdk according to the algorithm and fetches the node information from url
https://rhs-staging.polygonid.me/node/7202b50c648bfa6da95fefda16d748bbb4809e6590dfbefa96be770bf5c2f404
Probably you didn't setup a contract address, so latest state of the issuer can't be fetched from blockchain.
Can you check that you inited the storage with a right state contract address?

Thanks @vmidyllic for the help, there was some mismatch between my RPC urls and RHS server but it is working now.
Another issue I am facing further while verifying the proof generated using AtomicQueryMTPV2 Circuit.
await proofService.verifyProof({ proof, pub_signals }, CircuitId.AtomicQueryMTPV2)
The above code is returning me this Error:
/home/harshil/didJsSdk/js-sdk-examples/node_modules/@0xpolygonid/js-sdk/dist/node/cjs/proof/witness_calculator.js:148             throw new Error(Not all inputs have been set. Only ${input_counter} out of ${this.instance.exports.getInputSize()});                   ^ Error: Not all inputs have been set. Only 167 out of 211     at WitnessCalculator._doCalculateWitness (/home/harshil/didJsSdk/js-sdk-examples/node_modules/@0xpolygonid/js-sdk/dist/node/cjs/proof/witness_calculator.js:148:19)     at WitnessCalculator.calculateWTNSBin (/home/harshil/didJsSdk/js-sdk-examples/node_modules/@0xpolygonid/js-sdk/dist/node/cjs/proof/witness_calculator.js:180:20)     at NativeProver.generate (/home/harshil/didJsSdk/js-sdk-examples/node_modules/@0xpolygonid/js-sdk/dist/node/cjs/proof/prover.js:60:51)     at async ProofService.generateProof (/home/harshil/didJsSdk/js-sdk-examples/node_modules/@0xpolygonid/js-sdk/dist/node/cjs/proof/proof-service.js:64:40)     at async issueCredential (/home/harshil/didJsSdk/js-sdk-examples/index2.ts:241:34)
I have succesfully generated the Proofs via const { proof, pub_signals } = await proofService.generateProof(proofReqMTP, userDID); and below is my MTP request
const proofReqMtp: ZeroKnowledgeProofRequest = {     id: 1,     circuitId: CircuitId.AtomicQueryMTPV2, // or AtomicQueryMTPV2onChain     optional: false,     query: {       allowedIssuers: ['*'],       type: credentialRequest.type,       context:         'https://raw.githubusercontent.com/iden3/claim-schema-vocab/main/schemas/json-ld/kyc-v3.json-ld',       credentialSubject: {         documentType: {           $eq: 99         }       }     }
};
is there any step I am missing here?


Problem: outstanding API calls accumulated seemingly without bound

Is this a workaround for something broken?

The issue title describes a solution. An alternative title might say "Repeated API calls return 500" or some other symptom. I can't tell the error code from the screenshot, but if we update the title to include the symptom, we might better be able to address the root problem.

I will correct the title.

API calls occur regularly without regard for whether the prior API call has returned. No timeout handling occurs. Even if a prior API call were to return, results would then be pending on a subsequent API call which has not yet returned. Server becomes loaded with API calls that are not even used.

I see. I tried reproducing this the other day and couldn't. Could you add some details on what page/where the problem manifest? The code for polling is located in multiple places and I'm not sure the solution is trivial enough to fix them all.

Ok a closer look at the image provided shows that some calls are taking several minutes. Thanks for the elaboration.

I'm not sure what the solution is for this issue. It seems like we need a workaround until API endpoints are more performant. Should we disable polling until this is not an issue?

Just check to make sure that the prior call has returned before invoking another.

I don't think this is an pressing issue right. It is going to the bottom of the backlog.


Use std::filesystem once Apama 10.3 is released

Apama 10.3 will include a fix to some of the plugin headers which currently fall over in newer (g++ >4.8.5) compilers. This will enable the plugin to be rewritten to use the new C++17 filesystem library, which will simplify many existing/future functions and provide cross platform compatibility
At this point, the build scripts can also be fixed up to build against latest tools, ie not hard compile against gcc4.8

Resolved by #4


typescript error

typescript complains about the initialized value of authcontext.
i think this can be fixed by initializing AuthContext on line 14 in AuthContext.tsx
change: export const AuthContext = createContext({})
to
export const AuthContext = createContext({token: "NONE"}) for example

Hi @KristianKjerstad
This version will resolve the issue :)
https://github.com/soofstad/react-oauth2-pkce/releases/tag/v1.2.3


GenericForeignKey import/export

How do you manage Generic Relations using django-import-export ?
A GenericForeignKey combines two informations to generate a relation: a content_type and an object_id.
Since each field has his own logic in django-import-export, I was thinking of using before_import_row or before_save_instance to define the combination of the above two fields.
Has anyone tried building a GenericForeignKeyWidget ?

+1

I was able to import/export a generic foreign key using the built-in ForeignKey widget

@msmaromi For a generic foreign key field called address on my model Dude, I just have this field in my ModelResource:
class DudeResource(resources.ModelResource):
    address = fields.Field(
        column_name='address',
        attribute='address',
        widget=widgets.ForeignKeyWidget(Address, 'name'))  # use a unique field

    class Meta:
        model = Dude
        fields = ['address']

So in the CSV file (or whatever format you're using), import/export will use whatever you specify in the address column like:
Address.objects.get(name=name)

If the specified address not found, can it creates new one?

@msmaromi It might be good to open a separate issue for that since it's different from the original question.

@msmaromi For a generic foreign key field called address on my model Dude, I just have this field in my ModelResource:
class DudeResource(resources.ModelResource):
    address = fields.Field(
        column_name='address',
        attribute='address',
        widget=widgets.ForeignKeyWidget(Address, 'name'))  # use a unique field

    class Meta:
        model = Dude
        fields = ['address']

So in the CSV file (or whatever format you're using), import/export will use whatever you specify in the address column like:
Address.objects.get(name=name)

This pretty much looks ike a direct relation to the Address model. How would you go about a field named general that can hold either an Address or a Organization?

Here is a clean and simple solution to resolve GenericForeignKey fields:
class OrderLineResource(resources.ModelResource):
    item = fields.Field()
    def dehydrate_item(self, orderline):
            model = apps.get_model('store', orderline.content_type.model)
            return model.objects.get(id=orderline.object_id).name
    class Meta:
        model = OrderLine

Note:

the Orderline model is the one that holds a GenericForeignKey field.
orderline.content_type.model returns the model name.
the 'store' attribute in apps.get_model('store', orderline.content_type.model) is the name of the Django app in which the unknown model resides.
model = apps.get_model('store', orderline.content_type.model) will assign the correct model to the model local variable, just as if you'd have done from app.models import "unknown_model" as model
return model.objects.get(id=orderline.object_id).name returns the name attribute of the object refered to by the GenericForeignKey field.

Finally since I needed to find models from any app, I built a little function:
def get_model_from_name(model_name):
    """
    Used to get a model instance when you only have its name.
    """
    app_labels = [a.label for a in apps.app_configs.values()]
    app_number = len(app_labels)
    for idx, app in enumerate(app_labels):
        try:
            model = apps.get_model(app, model_name)
            return model
        except LookupError as err:
            if idx == (app_number - 1):
                raise err
            continue

Hope this helps someone!

@msmaromi For a generic foreign key field called address on my model Dude, I just have this field in my ModelResource:
class DudeResource(resources.ModelResource):
    address = fields.Field(
        column_name='address',
        attribute='address',
        widget=widgets.ForeignKeyWidget(Address, 'name'))  # use a unique field

    class Meta:
        model = Dude
        fields = ['address']

So in the CSV file (or whatever format you're using), import/export will use whatever you specify in the address column like:
Address.objects.get(name=name)

Using ForeignKeyWidget to get the GenericRelation didn't work.

Finally since I needed to find models from any app, I built a little function:
def get_model_from_name(model_name):
    """
    Used to get a model instance when you only have its name.
    """
    app_labels = [a.label for a in apps.app_configs.values()]
    app_number = len(app_labels)
    for idx, app in enumerate(app_labels):
        try:
            model = apps.get_model(app, model_name)
            return model
        except LookupError as err:
            if idx == (app_number - 1):
                raise err
            continue

Hope this helps someone!

Django provide a convenient way to achieve this. Simple type:
from django.contrib.contenttypes.models import ContentType

wanted_model = ContentType.objects.get(model=input.get('name_of_model').lower()).model_class()

Then  wanted_model is an instance of desired object!
Enjoy!


[SPARK-12546][SQL] Change default number of open parquet files

A common problem that users encounter with Spark 1.6.0 is that writing to a partitioned parquet table OOMs.  The root cause is that parquet allocates a significant amount of memory that is not accounted for by our own mechanisms.  As a workaround, we can ensure that only a single file is open per task unless the user explicitly asks for more.

/cc @nongli @rxin

Do we have any off by one error?

LGTM

Test build #51661 has started for PR 11308 at commit b4da054.

Test build #51661 has finished for PR 11308 at commit b4da054.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/51661/
Test PASSed.

Merging to master and 1.6


Allow to add Blinded runs on the Leaderboards that can not be downloaded.

The functionality is in principle there, but there is currently a minor bug.


cannot find 2.4.0-release

https://github.com/apache/incubator-shenyu/releases/tag/2.4.0
The page is 404

we will release in next days

https://github.com/apache/incubator-shenyu/releases/tag/v2.4.0


add support for the -scheme commandline flag with etcd

Examples:
confd
2016-02-21T14:35:29+01:00 rkaufmann confd[11784]: INFO Backend set to etcd
2016-02-21T14:35:29+01:00 rkaufmann confd[11784]: INFO Starting confd
2016-02-21T14:35:29+01:00 rkaufmann confd[11784]: INFO Backend nodes set to http://<IP_ADDRESS>:4001

confd -scheme https                                                                                :(
2016-02-21T14:39:11+01:00 rkaufmann confd[12162]: INFO Backend set to etcd
2016-02-21T14:39:11+01:00 rkaufmann confd[12162]: INFO Starting confd
2016-02-21T14:39:11+01:00 rkaufmann confd[12162]: INFO Backend nodes set to https://<IP_ADDRESS>:4001

confd -node localhost -node <IP_ADDRESS>:4002 -scheme https
2016-02-21T14:56:30+01:00 rkaufmann confd[14663]: INFO Backend set to etcd
2016-02-21T14:56:30+01:00 rkaufmann confd[14663]: INFO Starting confd
2016-02-21T14:56:30+01:00 rkaufmann confd[14663]: INFO Backend nodes set to https://localhost:4001, https://<IP_ADDRESS>:4002

@HeavyHorst Can you try just setting the correct address using the node flag? For example https://<IP_ADDRESS>:2379

@kelseyhightower Yes this also works.
But then we have to update some docs: https://github.com/kelseyhightower/confd/blob/master/docs/quick-start-guide.md
etcd
confd -onetime -backend etcd -node <IP_ADDRESS>:4001
this for example will not work.

@HeavyHorst I think we should require the full URL going forward. Maybe we should update the docs going forward. Each backend behaves differently when it comes to this. Some backends will accept <IP_ADDRESS> and do the right thing, others require the full URL.

Ok, then we can close this.
One question:
-scheme string
    the backend URI scheme (http or https) (default "http")

is this just used in conjunction with SRV records ?

@HeavyHorst That's right, the only reason I added the scheme flag was to allow users to set the scheme when using SRV records.

@HeavyHorst Thanks for hacking on confd, I'm closing this per our discussion, but maybe you can take a jab at updating the docs to make things more clear?


Folder name declaration in structure

I think it would be useful to be able to explicitly declare a folder name -- I think that would evolve this tool from 'build a component' to 'speed up your workflow.'
Suggestion:
      "fastFolderStructure.structures": [
        {
          "name": "Component",
          "structure": [
            {
              V--- this would go into ./<Component>/...
              "fileName": "./<FSSName | lowercase>/style.scss"
            },
            {
              V--- this would go into ./, a sibling to <Component>
              "fileName": "./index.js",
              "template": "Component File"
            }
          ]
        }
      ],

This would promote the following:

Allow creation of items outside of the initial folder we're creating, and totally exclude the folder we're creating if we don't declare FSSName in any of the structural items
Allow transforming of the folder name -- this would enable you to, ultimately, have whatever you want as your 'component name' (in addition to my next issue) and be able to have it be formatted properly in each scenario

This would most likely be a breaking change. Having to require the FSSName in the structure would bork old versions and put the children somewhere they shouldn't be

I did some Monday morning testing with this, and despite my currently simple setup I can see huge value in this for simplifying file-structure for templates.
I currently have
 "fastFolderStructure.structures": [
         {
             "name": "ROBO Test Directory Create",
             "structure": [
                 {
                     "fileName": "/expected/<functionDirectory>/<functionName>/snippets",
                     "template": "EmptyDirectory"
                 },
                 {
                     "fileName": "/expected/<functionDirectory>/<functionName>/sections",
                     "template": "EmptyDirectory"
                 },
                 {
                     "fileName": "/original/sections",
                     "template": "EmptyDirectory"
                 },
                 {
                     "fileName": "/original/snippets",
                     "template": "EmptyDirectory"
                 }
             ],
             "customVariables":[
                 "functionDirectory",
                 "functionName",
             ]
         }
     ]

Thanks for reaching out! Sounds like a valid request you have there.
Since this would be a breaking change I'm thinking about adding a new opt-in configuration ( "fastFolderStructure.disableAutomaticComponentFolderCreation" or something like that) which would force you to define every folder yourself but also give you more freedom in customization. I'd like to prevent the tool from breaking for existing users that do not need this feature, as I personally feel like this would be used less than the default.
But for now if I understood you correctly you could do
{
      "name": "TS React Functional Component",
      "customVariables": ["customVar1"],
      "structure": [
        {
          "fileName": "<FFSName>.tsx",
          "template": "TS React Functional Component"
        },
        {
          //note the ../ at the start of the path
          "fileName": "../expected/<customVar1>.test.ts"
        },
        {
          "fileName": "index.ts",
        }
      ]
    },

This would create a structure like this
components
    componentName
        componentName.tsx
        index.ts
    expected
        variable.test.ts

I understand that the componentName folder is still forcibly created with this even when nothing is in there but maybe it helps a little until I find the time to implement this.

@UserAnon91

Once I start implementing file templates there's going to be a lot of repeat directory declaration which can be simplified with this suggestion. I'm all for it!

Could you please elaborate a little more if you don't mind? I don't think I understand what you mean with repeat directory declaration

Come to think of it, I think I imagined this incorrectly. This may only be useful for cases where you don't want a folder template, but strictly a file template (provided you can use ../ already in the structure.)

Ah, my mistake, after re-reading the suggestion I realize the suggestion is for creating files directly within the directory that was selected, rather than creating a sub-directory each time.
My thought was allowing for the equivalent to a %path% variable which would shorten declarations for directories within the declarations.
eg;
 would be equal to /<FFSName>/someDirectory/DirectoryAgain/ThirdDirectoryAgain
such that it can be used as
<pathEquivalent>/somefile.js
<pathEquivalent>/testfile1.html
<pathEquivalent>/testFile2.cs

resulting in
/<FFSName>/someDirectory/DirectoryAgain/ThirdDirectoryAgain/somefile.js
etc
Useful for overly complex file-structures like I'm currently working in, but likely not something everyone would need

@UserAnon91 your use case is probably a rare one as you said yourself.
I also think that we might get into "configuration for configuration sake" territory.
Defining new templates is something you do once every project or maybe even less so I don't think it's so bothersome as to give the possibility to reuse paths for
That being said, I do encourage you to create a new Issue for your request and if some more people chip in and say they would welcome this I will add a way to reuse paths.
I will keep this open as well since I do see a use in the ability to define your structure more freely.


Send Remote Control Commands

Is it possible to send the commands that are on the remote to the player through Home Assistant? If so, how to you do it?
I'm trying to send arrow keys, select, and eject. At least the eject command seems to be part of sonyapilib, but I don't know enough to try to implement it.
I have a Sony BDP-S3700 registered and connected to Home Assistant.
Thanks.

At the time this was implemented there was no option to support buttons like this. I'm currently very busy and can't check if this changed but I don't think home assistant offers a way to show these buttons on the UI altough they are implemented in the api lib.
An option could be to create a button which calls a python script but this would be a bit of programming effort.
If you have an suggestion on how to implement this or can provide an example for other devices supporting an input like that I'd be more than happy to implement this as soon as my schedule clears up a bit.

https://github.com/alexmohr/media_player.sony/issues/20 is related to this and aims to improve the UI

Home assistant still does not support this natively on the UI.
At the moment the only option you have is described above.


Error: Attempting to register a platform 'homebridge-eWeLink.eWeLink' which has already been registered!

hi,
i am Arnaud From France
i am new on Homebridge/ Debian ...etc
I did install Homebridge on a VM and tried to install also ewe link plugin,
i edit my config.json but I have trouble when I try to launch HOMEBRIDGE
here is the complete error message
root@debian:/home/freebox# homebridge
[10/22/2019, 11:48:57 AM] Loaded config.json with 0 accessories and 1 platforms.
[10/22/2019, 11:48:57 AM] ---
[10/22/2019, 11:48:58 AM] Loaded plugin: homebridge-ewelink
homebridge API version: 2.4
[10/22/2019, 11:48:58 AM] Registering platform 'homebridge-eWeLink.eWeLink'
[10/22/2019, 11:48:58 AM] ---
[10/22/2019, 11:48:58 AM] Loaded plugin: homebridge-ewelink-max
homebridge API version: 2.4
/usr/lib/node_modules/homebridge/lib/api.js:150
throw new Error("Attempting to register a platform '" + fullName + "' which has already been registered!");
^
Error: Attempting to register a platform 'homebridge-eWeLink.eWeLink' which has already been registered!
at API.registerPlatform (/usr/lib/node_modules/homebridge/lib/api.js:150:11)
at Plugin.module.exports [as initializer] (/usr/lib/node_modules/homebridge-ewelink-max/index.js:30:16)
at Server. (/usr/lib/node_modules/homebridge/lib/server.js:171:14)
at Array.forEach ()
at Server._loadPlugins (/usr/lib/node_modules/homebridge/lib/server.js:145:22)
at new Server (/usr/lib/node_modules/homebridge/lib/server.js:57:24)
at module.exports (/usr/lib/node_modules/homebridge/lib/cli.js:32:16)
at Object. (/usr/lib/node_modules/homebridge/bin/homebridge:17:22)
at Module._compile (internal/modules/cjs/loader.js:945:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:962:10)
thanks a lot for your support

Hi @arno93, it seems you have multiple ewelink plugin installed. Please uninstall other ewelink plugin (such as homebridge-ewelink and homebridge-ewelink-plus) and try again:
npm uninstall -g homebridge-ewelink homebridge-ewelink-plus

Closing due to inactivity.


RouterStatusCollector hardcodes a short timeout

RouterStatusCollector#collectRouter hardcodes a relatively short timeout value (10s).  In systems with large numbers of addresses defined, especially when the system is otherwise stressed, this timeout is too short.  A GC pause in standard-controller would cause it too.
If the timeout does occur, the code goes onto NPE.  This is handled as if the address were unreconciled for this router, which leads to an ETCD update of the address.status for every defined address in the system.  In a system with a large number of addresses, this results in a  flood of addresss updates hitting agent.

The timeout should be raised to a more reasonable value.  In addition, the code should retry the failed router query to reduce the change of a spurious set of updates.


Fixed getResourceById

A GET request to http://localhost:4200/api/v1/auth/resources/{id} should now work properly.

Added authentication to getResourceById.
Should there be validation on the response from getAllVisibleResources?

Added authentication to getResourceById. Should there be validation on the response from getAllVisibleResources?

I see that getAllVisibleResources currently has a couple lines to return HTTP 200 on success. Is this what you mean @Caleb-Rogers ?

It handles HTTP 200 OK if successful or HTTP 404 Not Found if not, but upon realization, not found is only useful when querying specific resources. If I am correct with this thought process, an all-encompassing query for all resources wouldn't ever return not found, meaning the validation is useless?

@Caleb-Rogers I think you are correct but, I do not think it would cause any harm to leave it in. Just to confirm you are discussing lines 107-112 in the resourceController?
 else {
        const message = ApiMessage.createApiMessage( 404, "Not Found", "Resources not found" );
        res.set( "x-agora-message-title", "Not Found" );
        res.set( "x-agora-message-detail", "Resources not found" );
        res.status( 404 ).json( message );
    }


add title And validation

how can i add a title to the dropdown button and validation

Hello @devZakariya ,
To add a label to the Widget, see the "Multi custom display dialog" example available here and with result visible here (4th example).
Here is the description of the label parameter:
label String|Widget|Function with parameter: value returning String|Widget displayed above the selected item or the hint if none.

Thank you a lot

You're welcome @devZakariya , enjoy!

but how can i add label with single dropdown ?