🔒 M-03 - Add Authorization Control to Fallback Function

M-03. Anyone can call the fallbackFunction because of missing authorization control

Issue: Lack of authorization control in the fallback function.
Affected Functions: fallback function in ModuleManager.
Fix: Implement proper authorization control to ensure only authorized entities can invoke it.

@Aboudjem
what is done specific to this?

Fix: Implement proper authorization control to ensure only authorized entities can invoke it

I don't see changes related to it. we also discussed fallback handler should implement it's own auth control and we are gonna make changes on the EIP PR. cc @filmakarov
can you close this PR and redo it if only there are additional test cases. bunch of linting makes it very hard to review..

Should this be a remediation for this https://codehawks.cyfrin.io/c/2024-07-biconomy/s/179 ?

Should this be a remediation for this https://codehawks.cyfrin.io/c/2024-07-biconomy/s/179 ?

No, anyone should be able to invoke fallback handlers.
the actual access control (if required) should be implemented in the handlers themselves..

@Aboudjem
what is done specific to this?

Fix: Implement proper authorization control to ensure only authorized entities can invoke it

I don't see changes related to it. we also discussed fallback handler should implement it's own auth control and we are gonna make changes on the EIP PR. cc @filmakarov
can you close this PR and redo it if only there are additional test cases. bunch of linting makes it very hard to review..

Implement proper authorization control in the fallback function to ensure that only authorized entities can invoke it. This can be achieved by adding a modifier to check the sender's authorization before routing the call to the fallback handler. The existing onlyEntryPointOrSelf modifier could be used or an new modifier also including executorModuls might be appropriate.

@Aboudjem
what is done specific to this?

Fix: Implement proper authorization control to ensure only authorized entities can invoke it

I don't see changes related to it. we also discussed fallback handler should implement it's own auth control and we are gonna make changes on the EIP PR. cc @filmakarov
can you close this PR and redo it if only there are additional test cases. bunch of linting makes it very hard to review..

Implement proper authorization control in the fallback function to ensure that only authorized entities can invoke it. This can be achieved by adding a modifier to check the sender's authorization before routing the call to the fallback handler. The existing onlyEntryPointOrSelf modifier could be used or an new modifier also including executorModuls might be appropriate.
At this point, the entrypoint and the onlyEntrypoint or onlySelfOrEntrypoint are not visible, any suggestion?
Yes my husky script messed a bit with the linter

dont think any of this change makes sense.

@Aboudjem
what is done specific to this?

Fix: Implement proper authorization control to ensure only authorized entities can invoke it

I don't see changes related to it. we also discussed fallback handler should implement it's own auth control and we are gonna make changes on the EIP PR. cc @filmakarov
can you close this PR and redo it if only there are additional test cases. bunch of linting makes it very hard to review..

Implement proper authorization control in the fallback function to ensure that only authorized entities can invoke it. This can be achieved by adding a modifier to check the sender's authorization before routing the call to the fallback handler. The existing onlyEntryPointOrSelf modifier could be used or an new modifier also including executorModuls might be appropriate.
At this point, the entrypoint and the onlyEntrypoint or onlySelfOrEntrypoint are not visible, any suggestion?
Yes my husky script messed a bit with the linter

dont think any of this change makes sense.

then close the PR


GRADLE-796/673 Preserving permissions by default in copy/archive tasks

Implemented changes as discussed on the mailing list.

permissions are preserved by default
dirMode/fileMode still works, but are nullable
copy actions can see & change permissions

This looks good. We're just working on getting 1.0-milestone-8 out of the door, so we'll apply the patch after milestone 8 is out.

Ok good.. Found another issue that is fixed as well after this is merged... GRADLE-971


perf(ibmsecretsmanager): Get secrets concurrently

Description
Uses goroutines to have 20 concurrent requests to the IBM SM API at any given time, so that we are able to retrieve the payloads for all secrets in a group faster. Previously we were retrieving them sequentially. To avoid rate limit problems, the IBM SM SDK is instantiated with a setting to do 3 retries, 20 second apart for each request.
Also handles pagination in IBM SM - a group with more than 200 secrets requires additional API calls to get the rest. Logic is added to AVP to handle this.
Partially addresses: #207
Checklist
Please make sure that your PR fulfills the following requirements:

[ ] Reviewed the guidelines for contributing to this repository
[ ] The commit message follows the Conventional Commits Guidelines.
[ ] Tests for the changes have been updated
[ ] Docs have been added / updated

Type of Change

[ ] Bugfix
[ ] Feature
[ ] Code style update (formatting, local variables)
[ ] Refactoring (no functional changes, no api changes)
[ ] New tests
[ ] Build/CI related changes
[ ] Documentation content changes
[ ] Other (please describe)

Other information

Benchmark stats. Each test was ran with a 60 minute gap between runs to let the IBM SM cache expire. The test was a 4 YAML document file with 2 placeholders each in a secret group with ~ 40 secrets.
On main:
real    0m31.934s
user    0m0.231s
sys     0m0.100s

This branch:
TODO

After comparing this branch to an existing Secret Manager group with 90+ secrets and an application with 20+ resources.
Main branch - 0.81s user 0.33s system 0% cpu 2:14.35 total
Perf branch - 1.03s user 0.48s system 6% cpu 23.006 total


Crash on startup

logs: https://mclo.gs/CWziiHs
OS: linux mint 21.3
Forge: 47.3.10
MC: 1.20.1
AAAParticles: 1.4.3
This mod causes a crash whenever it's loaded.

same issue here using flatpak, using a native modlauncher works fine if libGLU.so.1 is installed


I'm really stuck on styling

I am really not sure how to customize the styling of this input field, ideally I'd like to just get rid of all the defaults so I can apply some classNames from a css library I use. Can anyone help me with this?

same issue, how did you fix this?


Getting "'int' object has no attribute 'tzinfo'" while editing an object

Hello
While editting objects with the unixdatetimefield in the admin site I get the following error.
'int' object has no attribute 'tzinfo'

In the templates the field displays just as an integer, not date.
This is a bit of code from my model showing the unixdatetimefield definition.
lastvisit = UnixDateTimeField(db_column='lastVisit',
        verbose_name=_('ostatnia wizyta'), null=True, blank=True)

My Django version is 1.8.3. Could you help me to fix it, please? Thanks.

this has been fixed now - https://github.com/Niklas9/django-unixdatetimefield/commit/07f0a48c4aaa5b8f1aa450ae839121e0f3d90a37, submitted new version 0.1.4 to pip as well!

Has this fix been ported to Django 1.10?

Yes @juliocarrera, are you experiencing a problem with 1.10 with this?

No, I'm not. I thought I was but the root problem was that I was not closing the database connection before forking a process. Everything is good now. Thanks for following up.

Okay cool, np 👍


Allow trigger of comments only on additions/deletions

In https://github.com/freckle/commenter-action/pull/106 we added the ability to comment conditionally where a diff contains some substring.
It would be nice to extend this to be able to differentiate on additions and deletions. For example, a config like
UnsafeMentionedInCode:
  paths:
    - "backend/**/*.hs"
  where:
    additions:
      contain:
        - unsafe
  body: |
    :wave: Hi, I see an addition of "unsafe" in Haskell code. Please consider
    finding a safer alternative!

would only comment if the additions to a patch matching backend/**/*.hs contained the substring unsafe. The current additions_or_deletions key will comment if the change is found anywhere in the patch.

@pbrisbin I think that reads nicely :+1:


Monty Python reference in about_control_statements.py

Forgive me if I'm being pedantic or missing a joke of some sort, but it's African and European swallows' airspeed velocity that determines whether or not we get across the Bridge of Death.

As a pedantic Python fan, I approve. Thanks!
Hope this doesn't ruffle any feathers (haha); merging this seemed like a good idea at the time.

Heh heh, great stuff! Thanks guys


fix anchor ref on PopoverReportActionContextMenu

Details
Follow-up of #18809
Fixed Issues
$ https://github.com/Expensify/App/issues/19543
Tests

Open Settings
Click F12 if chrome to open console window
Right click on 'Help' to open popup for external link
Verify that popup shows

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

Offline tests
Same as Tests step
QA Steps
Same as Tests step

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

PR Author Checklist

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Screenshots/Videos

Web
https://github.com/Expensify/App/assets/97473779/10c456bb-e7a6-4c61-a693-9e7148e7a1fa

Mobile Web - Chrome
https://github.com/Expensify/App/assets/97473779/a2fa9efb-64a9-4531-a873-3e4933cb7d3e

Mobile Web - Safari
https://github.com/Expensify/App/assets/97473779/83242013-ddc6-4218-864d-620eca46d351

Desktop
https://github.com/Expensify/App/assets/97473779/860de933-9142-4ddc-ba49-d99aaab0c131

iOS
https://github.com/Expensify/App/assets/97473779/22df6895-f235-4259-92a6-95e3b8bde2f6

Android
https://github.com/Expensify/App/assets/97473779/c8704269-9b94-4c9f-a3c7-1ae28ddf4dff

Yes

@mountiny @aimane-chnaif This is happening because the description of the ContextMenuItem (the actual url) is being set to an empty string before the animation for the closing of contextMenu is complete.
https://github.com/Expensify/App/blob/4cd496d6e439b9aff1b23b67b2d423d098b3fdef/src/pages/home/report/ContextMenu/PopoverReportActionContextMenu.js#L212-L217
When the copy button is pressed (or tapped outside to close), the menu is starts closing after 800ms wait time because shouldDelay is true. But the animation starts when the isPopoverVisible prop is changed. So, what we can do is have the animation run after 800ms by setting the isPopoverVisible to false first then, after 300ms when the closing animation is complete, we can reset the the other two items in the state as we are doing in the above file.
I would not think of this as a workaround because when adding the animation, it is natural to wait for stuff to wait for the animation to complete.. Moreover, this would help us fix both the problems. So, let me know what you think of this approach!
https://github.com/Expensify/App/assets/77237602/65de8719-749d-4568-9ae6-7e53ae8126f9

@aimane-chnaif So would you agree with that solution then?

🚀 Cherry-picked to staging by https://github.com/puneetlath in version: 1.3.17-5 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

@Expensify/applauseleads please QA this PR and check it off on the deploy checklist if it passes.

🚀 Deployed to production by https://github.com/chiragsalian in version: 1.3.17-5 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

🚀 Cherry-picked to staging by https://github.com/AndrewGable in version: 1.3.28-2 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

@Expensify/applauseleads please QA this PR and check it off on the deploy checklist if it passes.

🚀 Deployed to production by https://github.com/AndrewGable in version: 1.3.28-5 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅


GlobalAttributeValueQuote Initial influencing empty attributes

https://github.com/zzzprojects/html-agility-pack/blob/973972a5d96a542a3efce84ffa172c1d1019cc25/src/HtmlAgilityPack.Shared/HtmlDocument.cs#L1870
1. Description
Since version v1.11.62, when the InternalQuoteType was introduced, I have noticed some unwanted changes in my conversions because it mixes the behavior of the QuoteType and WithoutValue in the attributes.
I'm my case I want to set the document to consider the Inicial QuoteType (the default, I believe) to maintain the original QuoteType and also set it to convert to an empty attribute (att=""). Supustly, converting to an empty attribute was the expected behavior but that isn't happening. Setting the GlobalAttributeValueQuote to Inicial the behavior is the same.
Example:
<bar ng-app class='message'></bar>
Actual:
<bar ng-app class='message'></bar>
Expected:
<bar ng-app="" class='message'></bar>
UT with default configs:
[Fact]
public void PreserveEmptyAttributesWithInitialTest()
{
    var d = new HtmlDocument();
    d.LoadHtml("<bar ng-app class='message'></bar>");
    var node = d.DocumentNode.SelectSingleNode("//bar");
    var outer = node.OuterHtml;
    Assert.Equal("<bar ng-app=\"\" class='message'></bar>", outer);
}

My suggestions:

Considering by default that setting the GlobalAttributeValueQuote to Initial will set the isWithoutValue to false;

PR - https://github.com/zzzprojects/html-agility-pack/pull/576

Splitting the QuoteType and WithoutValue setting in two different settings;

PR - https://github.com/zzzprojects/html-agility-pack/pull/577

@JonathanMagnan, I have 2 branches with my suggestions. Can you give me permission to push?

Hello @cx-ricardop ,
Thank you for your PR; I will look at them soon.
Indeed, v1.11.62 introduced many unwanted changes, and I feel that I should revert to the previous version for this part of the code. Since this version, we kept "patching" the code to get the right behavior.
I will certainly look at the PR you are proposing.
Best Regards,
Jon

Hello @cx-ricardop ,
If I understand correctly, you are currently suggesting two different fixes. So, I need to choose between both of your pull requests and cancel the other one.
At this moment, I prefer the #576 as no new option has been added.
What do you prefer?
I will try to add more unit tests once we choose around the quoting to ensure we have and keep the right behavior.
Best Regards,
Jon

Hello @cx-ricardop ,
Perfect, I will check more the #576 this week.
I don't have any doubt about your code. But I want to ensure that we don't cause more side impact as we did in the v1.11.62

Hello @cx-ricardop ,
Sorry for the long delay,
What about adding a new AttributeValueQuote.InitialExceptWithoutValue?
Fix 1: will introduce a kind of new bug (at least the same behavior as before those changes). People would expect that  an attribute without value keep being without a quote.
Fix 2: will introduce a new option that most people will not be aware. So it might be harder for people to understand or to know this option.
Fix 3: Adding new options such as AttributeValueQuote.InitialExceptWithoutValue will allow people using this attribute to change it to have the expected behavior easily.
I feel that Fix 3 is like a combination of both of your PRs. A little bit the best of both worlds.
Let me know your opinion
Best Regards,
Jon

Hi @JonathanMagnan,
I agree with you, your suggestion is the best to solve the problem easily with less impact.
From my side, you can go ahead with this approach.
Many thanks for your effort in this issue.
best regards

Hello @cx-ricardop ,
The v1.11.72 has been released.
As said, you will now find the InitialExceptWithoutValue that should behave as you want.
Feel free to offer a PR if you have to change the behavior if I missed something. We still have time to change it ;)
That is no problem. Thank you for helping me improve this library.
Best Regards,
Jon

Hi @JonathanMagnan,
I’ve tested it and it works perfectly... exactly as expected! Well done.
I’m the one who should be thanking you so much for your dedication and effort.
Wishing you a fantastic year ahead!
Best regards


Cannot connect to Broker (Kafka 2.0.0)

Running a 3-node-cluster with a Zookeeper on each node, Kafka 2.0.0. Although trying different things and studying the readme, i do not get a connection to a broker on the same machine, or any broker of my cluster. I tried:

-zookeeper localhost:2181
-zookeeper <full qualified hostname>:2181
I also tried adding -broker-host, -broker-port and -broker-id, in different variations, no success. Error is unable to connect to broker, retrying in 5s (cannot connect).

Either i am missing something obvious that i could not extract from the Readme, or connection to a 2.0.0 broker is not possible. What is the commandline option(s) that is/are expected to do a health check against a local zookeeper/kafka? Thanks.

Same here for kafka_2.11-<IP_ADDRESS>-cp1
INFO[0000] using topic broker-33-health-check for broker 33 health check
INFO[0000] using topic broker-33-health-check for broker 33 replication check
INFO[0005] unable to connect to broker, retrying in 5s (cannot connect)
INFO[0010] unable to connect to broker, retrying in 5s (cannot connect)
INFO[0014] unable to connect to broker, retrying in 5s (cannot connect)
Where can we enable debug logging for it ?
thanks

@dl1ely and @mariano-dm  I have the same issue and using the option -broker-id instead of -broker-host helped to solve my problem . Broker Id is an integer number (1,2,3...) which I see from kafka-manager tool. Hope this helps.


Cleanup old sound instances in sync layer

Not critical.

Was accidentally marked as fixed - we only fixed this in the unity side, not the sync layer

There are 3 separate cases to deal with:

non-looping sounds expire after a certain amount of time - should clean themselves up
when an actor is freed, the sound instances should be freed, too
when a sound asset is freed, it should find and free those sound isntances, too


improve the alignment of map legend items on mobile

Close 221 - Make the map legend 2x2 on mobile
I set flex-direction: column instead of flex-direction: row to make sure that the orange item is below red (instead than on the first row).

Can @mikelehen review? Thanks!

 UI fix on homepage: Make homepage legend 2x2 on mobile.

Nice!  Though now, between 600-960px, it looks kinda' funky:

Fixable?

So, I played around with it, but the fix is pretty ugly https://codepen.io/pnavarrc/pen/XWXKaed
In desktop, we have a container with flex-direction: column to have the title and the legend items in the second div, no problem there.

For mobile, in order to have orange under red, I changed the direction of the legend items to be column and set a maximum height and set flex-wrap to wrap, so the items distribute from top to bottom and left to right (red, orange, and then yellow and green on the second column)
I think that the width of the container of the items becomes the width of only one column (I highlighted it here), which makes the legend to be off-center by one column to the right

In the pen (https://codepen.io/pnavarrc/pen/XWXKaed), I tried another solution, keeping the container of the legend items to have flex-direction: row and setting the order of the items on mobile to make the second item (orange) to be the 3rd, and the third item (yellow) to be the 2nd, so they will have the right order.
With this solution, alignment is better but the code is awful (it's kind of hard to explain why we are setting 2nd → 3rd and 3rd → 2nd on mobile, the solution feels weird. @mikelehen any ideas? I probably spent more time than I should on this and couldn't make it much better. :/

Haha no problem!


on_chat_start function called if background task takes too long

While processing on_message, I am doing some background processing. If it takes too long (~30 seconds), the function decorated by on_chat_start gets called again and so the app basically resets. Is there a timeout configured somewhere in the chainlit code or further down in asyncio or something that would cause that? I have dug around in the source code a bit and haven't found the smoking gun yet.

I also encountered the same problem. I need to be able to set the timeout mechanism. When encountering a long-term execution situation, need to extend the timeout time

It's a lot of code, that I can't share directly, but I'll describe it. I started with the openai-functions example from the chainlit cookbook repo. Instead of calling the synchronous get_current_weather function, I am calling an asynchronous function that can do various things depending on the current state. The two places where it currently times out is a call to the OpenAI API using the gpt-4 model with a large prompt and a large response. The other is is a path that makes a dozen or more calls sequentially to the ElevenLabs API.
The common denominator is the amount of time it takes. Everything works fine if I reduce the prompt and response size in the call to OpenAI and limit it to only a few calls to ElevenLabs so it completes in  under 15 seconds.

Was able to reproduce, the issue when you call your LLMChain. Just replace the invocation by:
   scriptResult = await scriptChain.acall(
        inputs={
            "query": query,
            "participants": participants,
            "outline": outline,
        },
        return_only_outputs=True,
    )

You should never call a long running agent synchronously. If it supports async (which is the case here) call the async implementation and await it. If it doesn't you can use make_async.
Works like a charm now!
Btw you have good music taste

You can further improve it by passing a callback handler and enable streaming!
async def generate_podcast_script():
    llm = ChatOpenAI(model_name="gpt-4-0613", streaming=True, temperature=0.7)
    participants = """
    John is the host and has a neutral stance
    Paul is a guest and has a positive stance
    George is a guest and has a negative stance
    Ringo is a guest and has a neutral stance
    """

    outline = """
I. Introduction
A. Sir Paul McCartney's use of artificial intelligence to create a final Beatles song

II. Background on the song
    A. 1978 Lennon composition called Now And Then
    B. Considered as a possible reunion song in 1995
    C. Demo received by Sir Paul from Yoko Ono

III. Previous attempts to record the song
    A. Free As A Bird and Real Love completed and released in 1995 and 96
    B. Session for Now And Then quickly abandoned

IV. Technical issues and speculation
    A. Issues with original recording, including persistent "buzz"
    B. Speculation on stolen recording released in 2009

V. Sir Paul's desire to finish the song
    A. Repeatedly expressed desire to finish the song
    B. Collaboration with Jeff Lynne mentioned

VI. Technology enabling completion of the song
    A. Peter Jackson's Get Back documentary and AI separation of voices
    B. Sir Paul's ability to "duet" with Lennon on recent tour
    C. Creation of new surround sound mixes of Revolver album

VII. Concerns and excitement about AI
    A. Sir Paul's concern about AI being used to create fake recordings
    B. Acknowledgment of the future and uncertainty surrounding AI

VIII. Conclusion
    A. Mention of Sir Paul's new book and photography exhibition at the National Portrait Gallery
"""

    scriptTemplate = f"""You are an assistant that helps write a script for a podcast based on an outline.
    Answer the prompt based on the outline and article below.

    Participants:
    {{participants}}

    Outline:
    {{outline}}

    Prompt: {{query}}

    Answer: """

    query = f"From the outline write a long, detailed script for a podcast. The podcast will have participants in roles with perspectives. Each line in the script needs to start with only the first name of who is talking."

    scriptChain = LLMChain(llm=llm, prompt=PromptTemplate.from_template(scriptTemplate))
    scriptResult = await scriptChain.acall(
        inputs={
            "query": query,
            "participants": participants,
            "outline": outline,
        },
        return_only_outputs=True,
        callbacks=[cl.AsyncLangchainCallbackHandler()],
    )

    return scriptResult["text"]

You will be able to see what happens in real time before the final answer is returned

Got it. Thanks very much. I was hoping it was a simple mistake on my part.

print("START")
    time.sleep(40)
    print("DONE")
    await cl.Message(content="Ok").send()

with time.sleep(50) I always does not receive the responce.

https://github.com/Chainlit/chainlit/issues/803


move beyond tc39 to home page, slight reorder

In line with some of @tomByrer's suggestions. Keeping cheatsheet simpler, moving "why Civet?" type features to the home page.

IMHO the home page and the cheatsheet should be merged. I can’t think of any reason to keep them separate.

Duplicating on the homepage is fine, I'm thinking of it like a special highlights.
Current cheatsheet should cover everything though maybe splitting into a 2-4 page "cheatsheet" and an exhaustive "handbook" would be a nice way to give people an appropriate reference scaled to their needs.
The goal is to highlight attention catching features while assuaging concerns that Civet is a radical departure from JS/TS (it may or may not be a radical departure but the home page shouldn't scare interested yet timid JS/TS devs). For this current iteration showcasing how we've already added pipes, dedent, expanded object shorthand (should add), pattern matching (coming soon) will illustrate the value of Civet. Keeping the examples close to existing TS syntax and less like CoffeeScript should prevent people from an initial gut reaction where they judge before understanding the core value.
import/export could probably be cut from the Homepage. throw expression is definitely a weaker example... maybe an "Everything is an expression" section would be better. It's not quite true that everything is an expression but we intend it to be and the homepage can be slightly aspirational.
under_construction.gif


@orta -> Size Favorites cells relative to screen width

I'm making a beta that includes this.
I noticed on iphone6, the Favorite Item cells (used for artist and gene favorites, as well as in related artists in the Artist view) were too small given the screen size because they were hard coded. This is more responsive -- results in slightly different pixel values.

will push snapshots

I just ran tests on my last commit twice -- the first time this failed:
 ARAppSearchViewControllerSpec
  test_searching__with_no_results__as_ipad, expected a matching snapshot named displays zero state as ipad

the second :
SiteHeroUnitSpec
  test_currentlyActive__current, expected: a truthy value, got: 0, which is falsy
  /Users/distiller/eigen/Artsy Tests/SiteHeroUnitTests.m:16

Not sure why these are failing some of the time but not all of the time. Maybe a leak from somewhere else.

yay! @orta

:green_heart:

Looks great :+1:


Synthesis failed for python-service-directory

Hello!

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

  git checkout -b <new-branch-name>

HEAD is now at 4461f94 chore: add default CODEOWNERS (#27)
2020-10-30 01:17:21,724 autosynth [DEBUG] > Running: git checkout 6542bd723403513626f61642fc02ddca528409aa
Note: checking out '6542bd723403513626f61642fc02ddca528409aa'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

  git checkout -b <new-branch-name>

HEAD is now at 6542bd7 fix(python_library): fix external unit test dependencies (#831)
2020-10-30 01:17:21,730 autosynth [DEBUG] > Running: git checkout 00bbad4dfd6633cf4b5f9596c1f93b756bb5c776
Note: checking out '00bbad4dfd6633cf4b5f9596c1f93b756bb5c776'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

  git checkout -b <new-branch-name>

HEAD is now at 00bbad4d feat: add AnalyzeIamPolicy and AnalyzeIamPolicyLongrunning RPCs
2020-10-30 01:17:21,746 autosynth [DEBUG] > Running: git branch -f autosynth-616
2020-10-30 01:17:21,749 autosynth [DEBUG] > Running: git checkout autosynth-616
Switched to branch 'autosynth-616'
2020-10-30 01:17:21,753 autosynth [INFO] > Running synthtool
2020-10-30 01:17:21,754 autosynth [INFO] > ['/usr/local/bin/python', '-m', 'synthtool', '--metadata', 'synth.metadata', 'synth.py', '--']
2020-10-30 01:17:21,754 autosynth [DEBUG] > log_file_path: /kokoro/artifacts/logs/python-service-directory/616/sponge_log.log
2020-10-30 01:17:21,755 autosynth [DEBUG] > Running: /usr/local/bin/python -m synthtool --metadata synth.metadata synth.py --
2020-10-30 01:17:21,985 synthtool [DEBUG] > Executing /root/.cache/synthtool/python-service-directory/synth.py.
On branch autosynth-616
nothing to commit, working tree clean
2020-10-30 01:17:22,107 synthtool [DEBUG] > Using precloned repo /root/.cache/synthtool/synthtool
2020-10-30 01:17:22,115 synthtool [DEBUG] > Ensuring dependencies.
Traceback (most recent call last):
  File "/usr/local/lib/python3.6/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/usr/local/lib/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/synthtool/synthtool/__main__.py", line 102, in <module>
    main()
  File "/usr/local/lib/python3.6/site-packages/click/core.py", line 829, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/click/core.py", line 782, in main
    rv = self.invoke(ctx)
  File "/usr/local/lib/python3.6/site-packages/click/core.py", line 1066, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/local/lib/python3.6/site-packages/click/core.py", line 610, in invoke
    return callback(*args, **kwargs)
  File "/synthtool/synthtool/__main__.py", line 94, in main
    spec.loader.exec_module(synth_module)  # type: ignore
  File "<frozen importlib._bootstrap_external>", line 678, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "/root/.cache/synthtool/python-service-directory/synth.py", line 22, in <module>
    gapic = gcp.GAPICMicrogenerator()
  File "/synthtool/synthtool/gcp/gapic_microgenerator.py", line 46, in __init__
    self._ensure_dependencies_installed()
  File "/synthtool/synthtool/gcp/gapic_microgenerator.py", line 255, in _ensure_dependencies_installed
    f"Dependencies missing: {', '.join(failed_dependencies)}"
OSError: Dependencies missing: docker
2020-10-30 01:17:22,173 autosynth [ERROR] > Synthesis failed
2020-10-30 01:17:22,173 autosynth [DEBUG] > Running: git reset --hard HEAD
HEAD is now at 4461f94 chore: add default CODEOWNERS (#27)
2020-10-30 01:17:22,178 autosynth [DEBUG] > Running: git checkout autosynth
Switched to branch 'autosynth'
2020-10-30 01:17:22,183 autosynth [DEBUG] > Running: git clean -fdx
Removing __pycache__/
Traceback (most recent call last):
  File "/usr/local/lib/python3.6/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/usr/local/lib/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/synthtool/autosynth/synth.py", line 354, in <module>
    main()
  File "/synthtool/autosynth/synth.py", line 189, in main
    return _inner_main(temp_dir)
  File "/synthtool/autosynth/synth.py", line 334, in _inner_main
    commit_count = synthesize_loop(x, multiple_prs, change_pusher, synthesizer)
  File "/synthtool/autosynth/synth.py", line 65, in synthesize_loop
    has_changes = toolbox.synthesize_version_in_new_branch(synthesizer, youngest)
  File "/synthtool/autosynth/synth_toolbox.py", line 259, in synthesize_version_in_new_branch
    synthesizer.synthesize(synth_log_path, self.environ)
  File "/synthtool/autosynth/synthesizer.py", line 120, in synthesize
    synth_proc.check_returncode()  # Raise an exception.
  File "/usr/local/lib/python3.6/subprocess.py", line 389, in check_returncode
    self.stderr)
subprocess.CalledProcessError: Command '['/usr/local/bin/python', '-m', 'synthtool', '--metadata', 'synth.metadata', 'synth.py', '--']' returned non-zero exit status 1.

Google internal developers can see the full log here.

Autosynth passed, closing! :green_heart:


Monitor for Kubernetes Resource Limits

In order to tune/monitor/alert the resource limits we need a way to compare actual usage with reserved limits.

Collect usage metrics from Nodes
Collect resource allocations from Kubernetes
Create alerts for running out of capacity
Create alerts for nodes hitting resource limits
Create a Grafana Dashboard to visualize the data

Done!


Verification code email images and links

The email currently includes internal images and links, these should be updated to dynamically use the current stack domain & path.

Already done as per https://github.com/o2Labs/office-booker/blob/master/infrastructure/cognito/email.ts


Communicate about location, call to action as well as sponsor abilities

Tweet, website, social media...

Resolving for 2021 - please feel free to re-open / adjust for 2022.


[Feature][Dashboard] Support ClickHouse node

Description
No response
Use case
No response
Are you willing to submit PR?

[X] Yes, I am willing to submit a PR!

Code of Conduct

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

duplicate issue

duplicate issue


Do not download body using requests stream=True

I'm trying to just check the content-length without downloading the body. I can't use a HEAD request as the server only excepts GETs and content-length is not always included anyway. Thus I am using a GET request with stream=True and then closing the connection
with requests.get(self.url, stream=True) as r:
     return int(r.headers['content-length'])

However with vcrpy the body is being downloaded and stored in the cassette, how can I avoide this? Ideally I would avoide this instead of filtering out the body after the fact as the files I am downloading are around 60GB

A lot of changes have happened to VCRpy since this ticket was opened. As this ticket has become stale and we have a lot of old tickets that need to be groomed, I'm closing this for now to make it easier to see what is still relevant.
However if it is still needed, please feel free to re-open or create a new ticket.
Thanks! 🙏


Add Collapse component

Should more things be customizable? Mainly thinking of the title/header and whether the separator should be hideable...
Resolves #352.

https://user-images.githubusercontent.com/12349477/208420408-13b07028-09d6-451c-b93b-eed4369fb6c1.mov

The version with fixed Text is good enough for what Orbit provides in design. In real usage, the non-collapsed content will be more custom than simple text though.
On top of the existing String based init, the component should accept two ViewBuilder arguments - the collapsed version (header) and the expanded content (these two will be concatenated in the VStack). The String-based init will then call this more generic one.
The header will probably again use HStack with custom content, spacer and trailing chevron.

Ok, what about some highlight on touchdown for the header? Currently there is none, but maybe there should be something similar to Tile?

@PavelHolec updated with header content.

Ok, what about some highlight on touchdown for the header? Currently there is none, but maybe there should be something similar to Tile?

That would be nice. The highlight could be done as a background behind the header, driven by the Button isPressed state. This would expect the header to have a transparent background though. It would be worth deciding how to unify this behaviour with the similar components like Tile/ListChoice in a follow-up.


Extract Codable conformance of RawSyntax into an extension

Extract the conformance of RawSyntax to Codable into an extension for clearer separation of concerns.

https://ci.swift.org/job/swift-PR-osx/7348/
https://ci.swift.org/job/swift-PR-Linux/7389/

@rintaro I know it's conflicting, I'll resolve the conflicts in #3 later. And thanks for triggering CI from the swift repo.

@ahoppen Sorry, but please hold off from merging PRs until both @nkcsgexi and I approve them.
We'll finishing it by tomorrow.
(No need to revert)


Files windows should refresh when enabling view of hidden files

What's the Problem?
No response
Solution/Idea
When enabling the view of hidden files and folders, they don't appear immediately. That is because one needs to refresh the current view (either by pressing the associated button or by switching to a new folder). It seems intuitive to me that upon clicking the slider to view the hidden files and folder (or to stop viewing them), the explorer should automatically refresh without further user input.
I am not sure whether a this auto-refresh principle would apply also to other changes in view that don't already get immediately refreshed.
Alternatives
None.
Priorities

Capability
Priority

This proposal will allow developers to accomplish W
Must

This proposal will allow end users to accomplish X
Should

This proposal will allow developers to accomplish Y
Could

This proposal will allow end users to accomplish Z
Won't

Files Version
Versione <IP_ADDRESS> OS Version: 10.0.22000.160
Windows Version
Windows 11 Home 21H2 - 22000.160
Additional comment
No response

Merging with #2857


encoding/json: Sequential Key Casing

What version of Go are you using (go version)?
go version go1.9.3 linux/amd64
What operating system and processor architecture are you using (go env)?
GOARCH="amd64"
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOROOT="/usr/lib/go"
GOTOOLDIR="/usr/lib/go/pkg/tool/linux_amd64"
GCCGO="gccgo"
CC="gcc"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build924240465=/tmp/go-build -gno-record-gcc-switches"
CXX="g++"
CGO_ENABLED="1"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
What did you do?
package main

import (
	"fmt"
	"encoding/json"
)

type Test struct {
	Event string `json:"v"`
	Bytes json.RawMessage `json:"B"`
}

func main() {
	string := []byte(`{"v": "Test", "V": 1234, "B": {"key": "value"}}`)
	var test Test
	json.Unmarshal(string, &test)
	fmt.Printf("%+v\n", test)
}

Link: https://play.golang.org/p/FNjS_tks7Ps
What did you expect to see?
{Event:Test Struct:[123 34 107 101 121 34 58 32 34 118 97 108 117 101 34 125]}

What did you see instead?
{Event:Test Struct:[]}

Why does the lower case "v", followed by an upper case "V", cause the byte array to be empty?

@andreidorin13 don't ignore error from json.Unmarshal — it's non-nil here: json: cannot unmarshal number into Go struct field Test.v of type string.
As I see it the real caveat here is presence of v and V attributes in json object, and the following documented behavior of json.Unmarshal:

To unmarshal JSON into a struct, Unmarshal matches incoming object keys to the keys used by Marshal (either the struct field name or its tag), preferring an exact match but also accepting a case-insensitive match.

Please see the illustration here: https://play.golang.org/p/A9OXJRX4LlL
I believe that in presence of two or more attributes whose names differ only by case the preferring an exact match clause of json.Unmarshal doesn't hold — it seem to always use the value from the last attribute it encounters.

Duplicate of #14750.
Closing this one.


[SPARK-40175][CORE][SQL][MLLIB][DSTREAM][R] Optimize the performance of keys.zip(values).toMap code pattern

What changes were proposed in this pull request?
This pr introduce two new toMap method to o.a.spark.util.collection.Utils,  use while loop manually style to optimize the performance of keys.zip(values).toMap code pattern in Spark.
Why are the changes needed?
Performance improvement
Does this PR introduce any user-facing change?
No
How was this patch tested?
Pass GitHub Actions

Performance data is here:

https://github.com/apache/spark/pull/37609#issuecomment-1245153126
https://github.com/apache/spark/pull/37609#issuecomment-1245286689

cc @cloud-fan

thanks, merging to master!

I tested it using a real job and the bottleneck seems to be still in MapBuilder.$plus$eq？
And i have used a for loop manually for testing but still no significant improvement.
Do you know the reason?
Gently ping @LuciferYang

my testing code:
import spark.implicits._
val df = spark.sql("select triggerId,adMetadata,userData from iceberg_test_catalog.test_db.test_table" +
  " where date = 20220801 and adMetadata is not null and size(adMetadata) > 0  and userData is not null")
  .map(x =>
    x.getInt(0) + "_" + x.getStruct(1).toString() + "_" + x.getMap(2).keySet.toString()
  )
  .count()

my testing code:
import spark.implicits._
val df = spark.sql("select triggerId,adMetadata,userData from iceberg_test_catalog.test_db.test_table" +
  " where date = 20220801 and adMetadata is not null and size(adMetadata) > 0  and userData is not null")
  .map(x =>
    x.getInt(0) + "_" + x.getStruct(1).toString() + "_" + x.getMap(2).keySet.toString()
  )
  .count()

iceberg_test_catalog.test_db.test_table is a iceberg table with complex types such as struct, Map, etc

@caican00 Yes, it was also clear before that when the collection size is greater than 500, there will be no significant performance improvement.
In fact, according to the test results from GA, when the collection size is between 100 and 500, the revenue is about 10%, and this is only a partial tuning. I don't think it will significantly improve the overall situation,  but this performance is similar to keys.zip(values)(collection.breakOut[From, T, To])

my testing code:
import spark.implicits._
val df = spark.sql("select triggerId,adMetadata,userData from iceberg_test_catalog.test_db.test_table" +
  " where date = 20220801 and adMetadata is not null and size(adMetadata) > 0  and userData is not null")
  .map(x =>
    x.getInt(0) + "_" + x.getStruct(1).toString() + "_" + x.getMap(2).keySet.toString()
  )
  .count()

iceberg_test_catalog.test_db.test_table is a iceberg table with complex types such as struct, Map, etc

Cloud you provide a test case that is easier to test in Spark project?

the collection size is greater than 500

the collection size is greater than 500, is it the number of elements in a collection?

the collection size is greater than 500

the collection size is greater than 500, is it the number of elements in a collection?

Yes

@caican00 I'm not sure whether it would be better change o use toJavaMap or toJavaMap.asScala here?  Can you help test it?

@caican00 Or if you can provide a micro-bench that can be run with GA, I am happy to continue to solve your issue together

my testing code:
import spark.implicits._
val df = spark.sql("select triggerId,adMetadata,userData from iceberg_test_catalog.test_db.test_table" +
  " where date = 20220801 and adMetadata is not null and size(adMetadata) > 0  and userData is not null")
  .map(x =>
    x.getInt(0) + "_" + x.getStruct(1).toString() + "_" + x.getMap(2).keySet.toString()
  )
  .count()

iceberg_test_catalog.test_db.test_table is a iceberg table with complex types such as struct, Map, etc

Cloud you provide a test case that is easier to test in Spark project?

Data collection is hard to build, and i'm sorry that it's hard to provide cases that are easy to test in Spark project

@caican00 I'm not sure whether it would be better change o use toJavaMap or toJavaMap.asScala here? Can you help test it?

Hmm... Could you try this one?

@caican00 I'm not sure whether it would be better change o use toJavaMap or toJavaMap.asScala here? Can you help test it?

yep. i would change to use toJavaMap.asScala and test it with my real case.

@caican00 I'm not sure whether it would be better change o use toJavaMap or toJavaMap.asScala here? Can you help test it?

Hmm... Could you try this one?

Okay.

Thanks ~ @caican00   waiting for your feedback :)

Thanks ~ @caican00 waiting for your feedback :)
The bottleneck was still in MapBuilder.$plus$eq, because the method convertToMapData return a immutable.Map value and i must to convert mutable.Map to immutable.Map invoking toMap
@LuciferYang

using java Map

I haven't thought of a better way yet

I haven't thought of a better way yet

Thanks. I'll share it with you if I can think of a better way

I haven't thought of a better way yet

Thanks. I'll share it with you if I can think of a better way

@LuciferYang
I have a question , why ArrayBasedMapData#toScalaMap method return  immutable.Map type rather than mutable.Map type?
I write a simple case to compare building mutable.Map and building immutable.Map and building mutable.Map is about twice as fast as building immutable.
test code:
    case class Test(id: Int, name: String)

    // build immutable.Map
    val builder = immutable.Map.newBuilder[Test, String]
    var index: Int = 0
    val start = System.currentTimeMillis()
    while (index < 10000000) {
      builder += (Test(index, s"$index _ $index"), index.toString).asInstanceOf[(Test, String)]
      index += 1
    }
    builder.result()
    val end = System.currentTimeMillis()
    // scalastyle:off println
    println(s"immutable map spent time: ${(end - start)/1000}s")
    // scalastyle:off println

    // build mutable.Map
    val map = mutable.Map[Test, String]()
    index = 0
    val start1 = System.currentTimeMillis()
    while (index < 10000000) {
      map.put(Test(index, s"$index _ $index"), index.toString)
      index += 1
    }
    val end1 = System.currentTimeMillis()
    // scalastyle:off println
    println(s"mutable map spent time: ${(end1 - start1)/1000}s")
    // scalastyle:off println

I haven't thought of a better way yet

Thanks. I'll share it with you if I can think of a better way

@LuciferYang I have a question , why ArrayBasedMapData#toScalaMap method return immutable.Map type rather than mutable.Map type? I write a simple case to compare building mutable.Map and building immutable.Map and building mutable.Map is about twice as fast as building immutable.Map
test code:
    case class Test(id: Int, name: String)

    // build immutable.Map
    val builder = immutable.Map.newBuilder[Test, String]
    var index: Int = 0
    val start = System.currentTimeMillis()
    while (index < 10000000) {
      builder += (Test(index, s"$index _ $index"), index.toString).asInstanceOf[(Test, String)]
      index += 1
    }
    builder.result()
    val end = System.currentTimeMillis()
    // scalastyle:off println
    println(s"immutable map spent time: ${(end - start)/1000}s")
    // scalastyle:off println

    // build mutable.Map
    val map = mutable.Map[Test, String]()
    index = 0
    val start1 = System.currentTimeMillis()
    while (index < 10000000) {
      map.put(Test(index, s"$index _ $index"), index.toString)
      index += 1
    }
    val end1 = System.currentTimeMillis()
    // scalastyle:off println
    println(s"mutable map spent time: ${(end1 - start1)/1000}s")
    // scalastyle:off println

test result:
5000000 elements:
immutable map spent time:  8s
mutable map spent time:  4s

10000000 elements:
immutable map spent time:  21s
mutable map spent time:  9s

cc @cloud-fan

@caican00 For the performance gap between mutable.Map and immutable.Map, I think it is better to turn to the Scala community


adds useGeolocation custom hook

Solution description
Creates a useGeolocation custom hook that returns an object with latitude and longitude
Code is clear and maintainable:

[x] My code follows the style guidelines of this project
[x] My code is consistently formatted.
[x] No instance on duplicate code.

Tested this issue fix on all browser

[x] Chrome
[x] Safari
[x] Internet Explorer
[x] Firefox

Looking great!


Production Deployment

Hi Harness team - congrats on v3.0!
I would love to start hosting Harness Open Source (love the rebrand btw!) for my lab, however I would prefer to do so in a "production-ready" manor.
There's a few features which are either missing or undocumented, and it would be great to hear if they are planned on being public, or only accessible within your managed offering for large enterprises.
These features include:

Highly available deployments of Harness (2-3 node clusters)
Distributed pipeline runners (running CI pipelines on other VMs, allows easier multi-arch builds)
SSO authentication

These features would bring the platform closer in-line with other open source alternatives, such as GitLab.
Absolutely love what you all are doing, and look forward to whatever comes next.

Hi @p5 we're glad you like the product! All the features you've requested are currently available in our commercial offering at app.harness.io, and we encourage you to check it out to see what we offer.
Our goal with Harness Open Source is to provide small teams with an end-to-end DevOps platform that delivers the same great user experience as our commercial offering, before they are ready for an enterprise-grade platform. Features like SSO and HA are planned to remain part of the enterprise offering.
Thanks again for your interest and we're excited to see what you build with Harness Open Source!

Having distributed CI runners for sure is even important for hobby projects given the current industry standard.
Not having HA or SSO are expected.


update readme

Hi @IlyasMoutawwakil , please review this PR, thanks.
IPEXModel don't need export now.

The docs for this PR live here. All of your documentation changes will be reflected on that endpoint. The docs are available until 30 days after the last update.


Search lines in file

Fails

:no_entry_sign:

Tests/DangerTests/DangerUtilsLineSearchTests.swift#L11 - Match found

:no_entry_sign:

Tests/DangerTests/DangerUtilsLineSearchTests.swift#L23 - Match found

Warnings

:warning:

Any changes to library code should be reflected in the Changelog.
Please consider adding a note there and adhere to the Changelog Guidelines.

  Generated by :no_entry_sign: dangerJS against 62ff4816a3aad741d2d311bbab11b113de88ec76

@orta the build is failing with this error.
Failing the build, there are 3 fails.
Request failed [422]: https://api.github.com/repos/danger/swift/pulls/155/comments
Response: {
  "message": "Validation Failed",
  "errors": [
    {
      "resource": "PullRequestReviewComment",
      "code": "custom",
      "field": "pull_request_review_id",
      "message": "pull_request_review_id must be pending"
    }
  ],
  "documentation_url": "https://developer.github.com/v3/pulls/comments/#create-a-comment"
}
Feedback: https://github.com/danger/swift/pull/155#issuecomment-449481015

I suppose is related to danger-js, can you help with that please?

{ warnings:
   [ { message: ' Any changes to library code should be reflected in the Changelog.\n\n Please consider adding a note there and adhere to the [Changelog Guidelines](https://github.com/Moya/contributors/blob/master/Changelog%20Guidelines.md).' } ],
  markdowns: [],
  fails:
   [ { file: 'Tests/DangerTests/DangerUtilsLineSearchTests.swift',
       message: 'Match found',
       line: 9 },
     { file: 'Tests/DangerTests/DangerUtilsLineSearchTests.swift',
       message: 'Match found',
       line: 12 },
     { file: 'Tests/DangerTests/DangerUtilsLineSearchTests.swift',
       message: 'Match found',
       line: 24 } ],
  meta:
   { runtimeHref: 'https://danger.systems',
     runtimeName: 'Danger Swift' },
  messages: [] }

The generated JSON looks good

That fail looks intentional I think


Update features on homepage

@mridgway @jedireza
I moved the features from home.md to here, so we could lay them out side by side. Also added a couple new ones and link to gitter and slack. Alternatively, I could move this code to the home.md in fluxible repo, but given the reliance on atomic, I thought it made sense to put it here.

CLA is valid!

Coverage remained the same at 90.82% when pulling c22ac2cbc044de19d79e2e376bc9c1f9277489a8 on docs into 065f76d139d50fcddf47797029d9db9691795ed1 on master.

:shipit:

Coverage remained the same at 90.82% when pulling d62de3a17f472ccd4ecf40bd28eb97466bf2896c on docs into 065f76d139d50fcddf47797029d9db9691795ed1 on master.


4.7.1 Update

Release notes and wallet page updates for 4.7.1
https://deploy-preview-252--navcoin.netlify.com/en/notices
https://deploy-preview-252--navcoin.netlify.com/en/notices/2019-10-29-navcoin-core-4.7.1/
https://deploy-preview-252--navcoin.netlify.com/en/wallets/#download-core
https://deploy-preview-252--navcoin.netlify.com/es/wallets/#download-core
https://deploy-preview-252--navcoin.netlify.com/it/wallets/#download-core
https://deploy-preview-252--navcoin.netlify.com/jp/wallets/#download-core
https://deploy-preview-252--navcoin.netlify.com/kr/wallets/#download-core
https://deploy-preview-252--navcoin.netlify.com/ru/wallets/#download-core
https://deploy-preview-252--navcoin.netlify.com/zh/wallets/#download-core

https://deploy-preview-252--navcoin.netlify.com/en/notices/2019-10-29-navcoin-core-4.7.1/
" (because of a reorganization)> which" maybe substitute ">" for ","

https://deploy-preview-252--navcoin.netlify.com/en/notices/2019-10-29-navcoin-core-4.7.1/
" (because of a reorganization)> which" maybe substitute ">" for ","

Good spotting, i did some auto-formatting which left this stray > symbol. I've just removed it.

I don't seem to be able to merge.


Option to use the previous theme colors

It would be great to have a "classic" option, because the old theme was great and I would like to continue using it.
In case you're not interested, would it be cool to fork it?

Hey, @danieljpgo. Thanks for reaching out.
More people contacted me since the latest release about having a possibility to use the previous version of the theme.
How to use the previous theme?

Open your VS Code.
Install nako (see README).
Open command palette, choose "Extensions: Install Specific Version of Extension...":

In the prompt, choose "Nako".
In the prompt of versions, choose 0.1.5 (the latest 0.1.x version).
Enjoy.

You may also want to disable autoupdates for this extension so that VS Code doesn't automatically update you to the next version (although that'd be a semver breach, forcing a breaking change to the consumer; you never know).

Released: v0.2.1 🎉
This has been released in v0.2.1!

📄 Release notes
📦 npm package

Make sure to always update to the latest version (npm i nako@latest) to get the newest features and bug fixes.

Predictable release automation by @ossjs/release.


data type examples

introduce Example object for RAML 1.0
use separate test files for 0.8 and 1.0; they will not have anything
in common

Codecov Report

Merging #143 into v0.2.0-dev will decrease coverage by 0.18%.
The diff coverage is 97.43%.

@@              Coverage Diff               @@
##           v0.2.0-dev     #143      +/-   ##
==============================================
- Coverage       95.61%   95.43%   -0.19%
==============================================
  Files              40       40
  Lines            1940     2015      +75
==============================================
+ Hits             1855     1923      +68
- Misses             85       92       +7

Impacted Files
Coverage Δ

ramlfications/models/base.py
100% <100%> (ø)
:arrow_up:

ramlfications/models/data_types.py
100% <100%> (ø)
:arrow_up:

ramlfications/parser/parameters.py
100% <100%> (ø)
:arrow_up:

ramlfications/utils/types.py
93.67% <94.59%> (+0.81%)
:arrow_up:

ramlfications/utils/__init__.py
90.55% <0%> (-3.94%)
:arrow_down:

Continue to review full report at Codecov.

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

Ready for review again.

Commits have been squashed.

Awesome! :)


Update tooltip icon indicators

The note icon that we've been using is a bit confusing. Let's go for a book-with-an-exclamation-mark, because that's obviously a lot clearer for users. This doesn't impact the register list (yet).
Additionally, the size of icons in the bottom row of the tooltip have been increased to make this one asset look good. Also, reuse the old icon to mark profiles that have notes.

Probably needs to at least update the icon used in the directory to be consistent, I'll do it in a few hours if you haven't returned since.

The new icon looks good, but it feels a bit out of place because it does not match the style of the yellow note and the yellow spinner.
I feel that either all of them should be given some sort of consistent modern look, or the new icon should match the yellow style more.

Yes daddy

A "walkup friendly" was added to this PR (as it also uses a new icon of a smiley to indicate you're happy with people walking up to you.. Or something like that!).
Status Panel

Dashboard
Yes
No

Tooltip

[!TIP]
This translates to the "Looking For Contact" option in MRP!

Added the walkup button to profiles
https://github.com/Total-RP/Total-RP-3/assets/172234435/9c10001a-1550-41f9-b7ba-48be77608fa7
This sort of deals with the issue of where people might not necessarily understand what the icon means on the tooltip.
We present it with a hover tooltip on people's profile so they can hover over it and get used to it consciously (or unconsciously) while it hopefully gets added to people's memory that it means "this person doesn't mind walk ups!".
Also fixes the dropdown not showing the icon if you chose "Yes".

[!IMPORTANT]
This adds one new translation:

REG_PLAYER_RESIDENCE_WALKUP_TT

The options are now "Yes" or "Do not show".

Directory now displays the updated icons for character profiles, and only the new unread icon for companion profiles.

While I checked the companion profiles list, I also noticed the header was still called "Master's name", so changed it to be consistent with everywhere else in the addon.


integrations: Use TestHttpResponse to type send_webhook_fixture_message.

Since we in fact are using the django test client to generate a response
here, the return type should be TestHttpResponse instead.
Affected errors:
5c5
< Found 202 errors in 71 files (checked 1401 source files)
---
> Found 200 errors in 70 files (checked 1401 source files)
211,212d210
< zerver/views/development/integrations.py error Incompatible return value type (got "_MonkeyPatchedWSGIResponse", expected "HttpResponse")  [return-value]
< zerver/views/development/integrations.py error Argument 5 to "post" of "Client" has incompatible type "**Dict[str, str]"; expected "bool"  [arg-type]

Self-review checklist

[x] Self-reviewed the changes for clarity and maintainability
(variable names, code reuse, readability, etc.).

Communicate decisions, questions, and potential concerns.

[ ] Explains differences from previous plans (e.g., issue description).
[ ] Highlights technical choices and bugs encountered.
[ ] Calls out remaining decisions and concerns.
[ ] Automated tests verify logic where appropriate.

Individual commits are ready for review (see commit discipline).

[ ] Each commit is a coherent idea.
[ ] Commit message(s) explain reasoning and motivation for changes.

Completed manual review and testing of the following:

[ ] Visual appearance of the changes.
[ ] Responsiveness and internationalization.
[ ] Strings and tooltips.
[ ] End-to-end functionality of buttons, interactions and flows.
[ ] Corner cases, error conditions, and easily imagined bugs.

Merged, thanks @PIG208!


Bind pv and pod to same node

Description
When setting pod over mayastor storage class with 1 replica, I want ensure that pod is scheduled and run on same node as the pv is.
in theory i should be able to achieve this by defining storagecass: volumeBindingMode: WaitForFirstConsumer which im using already.
But that seems to not really work for mayastor. I have multiple pod that are running on different nodes than their mayastor PVs.
There was parameter local in past which seems that did what is expected now, but the local parameter is deprecated now:
"local"
A flag of the type Boolean, with the default value of true. The flag controls the scheduling behaviour of nexus and replicas to storage nodes in the cluster.

All the following values are interpreted as "true" and anything else as "false": 'y', 'Y', 'yes', 'Yes', 'YES', 'true', 'True', 'TRUE', 'on', 'On', 'ON'.

This value must be set to true for correct operation of Mayastor provisioning and publishing. It is recommended that the volumeBindingMode in storage class be set to WaitForFirstConsumer. This limitation will be removed in a future release
A consequence of the above limitation is that applications pods which use Mayastor provisioned PVs may only be scheduled on nodes which are running Mayastor pods (i.e. data engine container). That is to say, only on MSNs. This limitaion will be removed in a future release.

I don't see that as limitation is that application pod will be scheduled only on the node that is hosting the actual volume.
I see it rather as expected as an optimal way running applications when you dont have dedicated storage k8s nodes, but want to just run an app on same node as data is.
Context
In situation that with having 2 k8s nodes, and 2 pods that running replicated application. Both pods are sts but not in same stsgroup.
sts1-0 was running on node1 with mayastor pv on node2
sts2-0 was running on node2 with mayastor pv on node1
when any node die both 2 pods/sts are not working.
Possible Solution
provide back the local parameter?
Screenshots

Hi @fara-tode, I think indeed pinning of the volume is a good idea for single replica volumes.
One thing to consider though, is that these single-replica volumes may be moved to another node, and in this case the pinning is not desirable as would prevent the application from starting on another node.
A custom scheduler perhaps is what's needed here, to ensure application is placed together with the storage?
Probably a very bad idea, but just throwing it out there: adding a label to the nodes for every volume with a replica living there, and then we'd simply move the label to another node, thus achieving a flexible pinning. Obvious downside is lots of labels on the nodes...
But IIRC the main issue with pinning was with multi-replica volumes, because during rebuilds, replicas may move to other nodes, thus negating the pinning and yet constraining the application.
Perhaps we bring pinning as it was, as an opt-in but only allowed for single replica volumes. And also disable failover for these volumes.

#One thing to consider though, is that these single-replica volumes may be moved to another node, and in this case the pinning is not desirable as would prevent the application from starting on another node
Not really understand that, you meant that even it is initial volume is created on node1 it can move by its own to node2 ? If so the expected is that it won't in single replica bind node.
#Perhaps we bring pinning as it was, as an opt-in but only allowed for single replica volumes. And also disable failover for these volumes.
will appreciate that :)
Futhermore i see that im achieving about 6x more iops if my pod and volume are running on same node. So that also is additional point for having this bind.

Not really understand that, you meant that even it is initial volume is created on node1 it can move by its own to node2 ? If so the expected is that it won't in single replica bind node.

You can move it, by temporarily increasing the replica count and then decreasing it, though it's not that easy since today there's no way of telling which replica we prefer to remove, but this will be possible with pool cordon and pool drain.

will appreciate that :)

:+1:

Futhermore i see that im achieving about 6x more iops if my pod and volume are running on same node. So that also is additional point for having this bind.

Also btw, ublk is on the roadmap, that will also help massively with both single replica performance and cpu reduction because you won't nvme-tcp from the initiator.

thanks for input. Waiting for bring back 'local' parameter, then

@tiagolobocastro does this binding could be restored in next release?

Will need to be discussed with the other maintainers and figure out the priority etc.
Would be good to raise an OEP for this, if you're willing. Here's an example: https://github.com/openebs/openebs/commit/2dc739b4a6815f62bf1964f32d34a162d7adb69f


Startup crash on GLES devices

Hello, I've been trying the 64 bit builds out on Anbernic (etc) aarch64 devices which use GLES. It seems to work really well, much better than an N64 emulator. However, one line causes problems:
port/fast3d/gfx_sdl2.cpp:
SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_COMPATIBILITY);

On some devices with GLES only, this fails because SDL_GL_CONTEXT_PROFILE_COMPATIBILITY is not available (only SDL_GL_CONTEXT_PROFILE_ES). On others with older OS, it fails with Can't window GBM/EGL surfaces on window creation. because they don't allow GL profile to be set until after window creation.
My understanding is that this line only sets the GL profile of the window temporarily for the window creation process, and the real setup happens later. This suggests to me that the line is not necessary. The game runs fine on these devices and others if it is simply commented out.

If it errors out (i.e. SDL_CreateWindow returns NULL and the game exits with a fatal error message), then this should probably be rewritten to retry creating the window the same way it does with the context below. I assumed you're supposed to set the attributes before creating the context, but it seems like you actually have to do it even before creating the window itself.
If it actually crashes with no error message, then this would probably be a bug in SDL2 similar to this, since the window/context creation is supposed to fail gracefully if the requested version is not available.

These are both errors as opposed to crashes. Trying again with SDL_GL_CONTEXT_PROFILE_ES works fine in the first case (where the device just doesn't support SDL_GL_CONTEXT_PROFILE_COMPATIBILITY). I'm not sure if it will work in the second case (Can't window GBM/EGL surfaces on window creation.). I don't have access to the device where the second case happens, so it's hard to know, especially given the seemingly garbled error message.

I'll close this then. Comment if it's still broken.

fixed, thank you!


Kimchanyoung requests resources

@StevenXL @saraho-shea
Oops forgot to add presence validations to association validations

@StevenXL @saraho-shea
Features added:

Users can make requests
Users can cancel requests
Users can respond to requests to become responders

@StevenXL Fixed!

@StevenXL Thanks for catching that -- I always make this mistake. Fxied!

:+1:


ValueError: invalid version string '

from livy import LivySession
LIVY_URL =**
with LivySession.create(LIVY_URL) as session:
# Run some code on the remote cluster
session.run("filtered = df.filter(df.name == 'Bob')")
When I try to run this code, I got this error. LivySession.create result in the following error:

ValueError: invalid version string '
Does anyone know the reason ?

this error caused by an error from spark. When it solves, i can also started to use pylivy


SSL support

It would be great if docker would support https connection to configure on domains.

I'm afraid I don't know what you mean by that.


Too many failures during pressure test (x/dubbo)

Describe the bug
A clear and concise description of what the bug is.
There are two official images, sofastack/e2e-dubbo-provider:0.2.1 and sofastack/e2e-dubbo-consumer:0.2.1. The dependency between the two is simple, that the consumer expose a http port, by make calls to this http port triggers consumer calls provider.
I copied the dubbo-provider.jar from provider image, run in a vm (ip <IP_ADDRESS>) with:
java -Ddubbo.protocol.port=12345 -jar dubbo-provider.jar

then config mosn with settings below at another vm (ip <IP_ADDRESS>):
{
  "servers": [
    {
      "default_log_path": "stdout",
      "default_log_level": "TRACE",
      "listeners": [
        {
          "name": "consumer",
          "address": "<IP_ADDRESS>:12345",
          "bind_port": true,
          "filter_chains": [
            {
              "filters": [
                {
                  "type": "proxy",
                  "config": {
                    "downstream_protocol": "X",
                    "name": "consumer",
                    "upstream_protocol": "X",
                    "router_config_name": "consumer",
                    "extend_config": {
                      "sub_protocol": "dubbo"
                    }
                  }
                },
                {
                  "type": "connection_manager",
                  "config": {
                    "router_config_name": "consumer",
                    "virtual_hosts": [
                      {
                        "name": "consumer",
                        "domains": [
                          "*"
                        ],
                        "routers": [
                          {
                            "match": {
                              "path": "/"
                            },
                            "route": {
                              "cluster_name": "consumer"
                            }
                          }
                        ]
                      }
                    ]
                  }
                }
              ]
            }
          ]
        },
        {
          "name": "provider",
          "address": "<IP_ADDRESS>:23456",
          "bind_port": true,
          "filter_chains": [
            {
              "filters": [
                {
                  "type": "proxy",
                  "config": {
                    "downstream_protocol": "X",
                    "name": "provider",
                    "upstream_protocol": "X",
                    "router_config_name": "provider",
                    "extend_config": {
                      "sub_protocol": "dubbo"
                    }
                  }
                },
                {
                  "type": "connection_manager",
                  "config": {
                    "router_config_name": "provider",
                    "virtual_hosts": [
                      {
                        "name": "provider",
                        "domains": [
                          "*"
                        ],
                        "routers": [
                          {
                            "match": {
                              "path": "/"
                            },
                            "route": {
                              "cluster_name": "provider"
                            }
                          }
                        ]
                      }
                    ]
                  }
                }
              ]
            }
          ]
        }
      ]
    }
  ],
  "cluster_manager": {
    "clusters": [
      {
        "name": "consumer",
        "type": "SIMPLE",
        "lb_type": "LB_ROUNDROBIN",
        "hosts": [
          {
            "address": "<IP_ADDRESS>:23456"
          }
        ]
      },
      {
        "name": "provider",
        "type": "SIMPLE",
        "lb_type": "LB_ROUNDROBIN",
        "hosts": [
          {
            "address": "<IP_ADDRESS>:12345"
          }
        ]
      }
    ]
  }
}

at the same vm mosn ran, i started the consumer container (run in container, I didn't succeed with running in vm directly).
docker run --rm -ti -p 8080:8080 --entrypoint bash sofastack/e2e-dubbo-consumer:0.2.1

# inside the container
java -Ddubbo.reference.com.alibaba.boot.dubbo.demo.consumer.DemoService.url=dubbo://<IP_ADDRESS>:12345 -Dserver.port=8080 -Dlogging.level.org.springframework.web=DEBUG -Ddubbo.consumer.check=false -jar dubbo-consumer.jar

# <IP_ADDRESS> is the host vm's ip mosn ran directly in host vm with binary.

finally, make a call to the consumer:
curl -v http://<IP_ADDRESS>:8080/sayHello?name=hello

to check the settings works.
Ok, we continue to do the pressure test. I used ab command in another vm:
ab -n 10000 -c 200 <IP_ADDRESS>:8080/sayHello?name=hello

Expected behavior
I hope it works.
Actual behavior
root@parinirmita-vasavartin:~# ab -n 10000 -c 200 <IP_ADDRESS>:8080/sayHello?name=hello
This is ApacheBench, Version 2.3 <$Revision: 1807734 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking <IP_ADDRESS> (be patient)
Completed 1000 requests
Completed 2000 requests
Completed 3000 requests
Completed 4000 requests
Completed 5000 requests
Completed 6000 requests
Completed 7000 requests
Completed 8000 requests
Completed 9000 requests
Completed 10000 requests
Finished 10000 requests

Server Software:
Server Hostname:        <IP_ADDRESS>
Server Port:            8080

Document Path:          /sayHello?name=hello
Document Length:        70 bytes

Concurrency Level:      200
Time taken for tests:   59.985 seconds
Complete requests:      10000
Failed requests:        200
   (Connect: 0, Receive: 0, Length: 200, Exceptions: 0)
Non-2xx responses:      200
Total transferred:      2226151 bytes
HTML transferred:       898951 bytes
Requests per second:    166.71 [#/sec] (mean)
Time per request:       1199.698 [ms] (mean)
Time per request:       5.998 [ms] (mean, across all concurrent requests)
Transfer rate:          36.24 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0   13 110.4      0    1032
Processing:    16 1179 2444.8    800   19419
Waiting:       14  980 2347.0    610   19074
Total:         17 1192 2449.3    801   19421

Percentage of the requests served within a certain time (ms)
  50%    801
  66%    929
  75%   1024
  80%   1098
  90%   1349
  95%   1663
  98%  15285
  99%  18142
 100%  19421 (longest request)

Steps to reproduce
I then do the same test without the mosn (start consumer with -Ddubbo.reference.com.alibaba.boot.dubbo.demo.consumer.DemoService.url=dubbo://<IP_ADDRESS>:12345, <IP_ADDRESS> is the original provider, 254 is exposed by mosn).
I can't say without mosn everything is perfect, but at least, there is no failure.
Minimal yet complete reproducer code (or GitHub URL to code)
Environment

SOFAMosn Version

P.S.: with -c 100 no failures.

could you upload the error log？

x.dubbo.log.gz
@taoyuanyuan
The logs is kinda big so I lzmaed it. But github didn't allow an lzme extension file uploaded and I gzed it again.
# here is how I created the tar
tar -Jcf x.dubbo.log.tar.lzma x.dubbo.log x.dubbo.stdout.log dubbo.x.json
tar -zcf x.dubbo.log.gz x.dubbo.log.tar.lzma

the log is very difficult to understand...
could you please run two mosns， one for consumer，and other for consumer ?
configure different log paths.
@teitoku-kento

@taoyuanyuan
Hi,
I tried with two mosn instances serve each listener individually. Find even with -c 1000 things goes currectly. I mean with two mosn not one mosn with two listener, I can't reproduce this issue.
But if back to use only one mosn like describe above, problem remains.

I find #639 not adapt xprotocol, will several streams share the same ctx?
please check it
@neverhook
conn.OnReceive(conn.context, streamID, protocol.CommonHeader(headers), reqBuf)

#795
please try the branch，If still wrong， upload the log
by the way, what‘s the error code ？
Non-2xx responses:      200

@taoyuanyuan Thanks for reply.
The response code is 500, because e2e-dubbo-cunsumer may simply throw dubbo timeout exception to SpringBoot, the SpringBoot response all unhandled exception as 500. I guess. I have no access to the source code of the offical e2e-dubbo-XXX.

@teitoku-kento  any problem with this branch?

@taoyuanyuan
I've not tested yet. Feel free to close this issue. I can issue up new one if I needs help.


Hey, still on sweeping duty?
Here is a first batch, in raw format for copy-paste:
* Fixes #2755
* Fixes #2972
* Fixes #3015
* Fixes #3016
* Fixes #3024
* Fixes #3179
* Fixes #3379
* Fixes #3437
* Fixes #3492
* Fixes #3634
* Fixes #3662
* Fixes #3722
* Fixes #3734

Thanks! Updated and sorted to spot duplicates easier

As far as #3356, I ran into this today so I don't think this problem is truly squashed. If you have a clear idea of what causes it and the best way to fix it, probably best to explain that in your troubleshooting page. I found a lot of suggestions which didn't work and the only one that did work was  this comment from way back in issue #630.

@jcrben just did, thanks.

:100:

:heart

Nice! Good job @mcornella ;-)


Viewstub must have a valid layout resource error

I have this error after calling notifydatasetchanged.

try not to using it.

removing notifydatasetchanged, i have the following error:
attempt to write to field 'int android.support.v7.widget.RecyclerView$ViewHolder.mItemViewType' on a null object reference

Can be beacuse  recyclerview is trying to call setVisibility on ViewStub when ViewStub is not actually inflated?

Yeah I have the same issue.

I have the same issue. Is there any update on this?

I encounter the same error too using compile 'com.hkm.slidingmenulib:libmenu:0.4.9'.
However, on the older version build like 0.3.18 works well.
04-11 13:13:48.932: E/AndroidRuntime(23408): Caused by: java.lang.IllegalArgumentException: ViewStub must have a valid layoutResource
04-11 13:13:48.932: E/AndroidRuntime(23408): 	at android.view.ViewStub.inflate(ViewStub.java:289)
04-11 13:13:48.932: E/AndroidRuntime(23408): 	at android.view.ViewStub.setVisibility(ViewStub.java:240)
04-11 13:13:48.932: E/AndroidRuntime(23408): 	at com.marshalchen.ultimaterecyclerview.UltimateRecyclerView.updateHelperDisplays(UltimateRecyclerView.java:868)
04-11 13:13:48.932: E/AndroidRuntime(23408): 	at com.marshalchen.ultimaterecyclerview.UltimateRecyclerView.access$600(UltimateRecyclerView.java:61)
04-11 13:13:48.932: E/AndroidRuntime(23408): 	at com.marshalchen.ultimaterecyclerview.UltimateRecyclerView$3.onChanged(UltimateRecyclerView.java:823)
04-11 13:13:48.932: E/AndroidRuntime(23408): 	at android.support.v7.widget.RecyclerView$AdapterDataObservable.notifyChanged(RecyclerView.java:9242)
04-11 13:13:48.932: E/AndroidRuntime(23408): 	at android.support.v7.widget.RecyclerView$Adapter.notifyDataSetChanged(RecyclerView.java:5493)

Have this bug been fixed?

Just found another similar bug, but now it came from removeInternal
4-11 14:08:27.882: E/AndroidRuntime(5283): Caused by: java.lang.IllegalArgumentException: ViewStub must have a valid layoutResource 04-11 14:08:27.882: E/AndroidRuntime(5283): 	at android.view.ViewStub.inflate(ViewStub.java:289) 04-11 14:08:27.882: E/AndroidRuntime(5283): 	at android.view.ViewStub.setVisibility(ViewStub.java:240) 04-11 14:08:27.882: E/AndroidRuntime(5283): 	at com.marshalchen.ultimaterecyclerview.UltimateRecyclerView.updateHelperDisplays(UltimateRecyclerView.java:868) 04-11 14:08:27.882: E/AndroidRuntime(5283): 	at com.marshalchen.ultimaterecyclerview.UltimateRecyclerView.access$600(UltimateRecyclerView.java:61) 04-11 14:08:27.882: E/AndroidRuntime(5283): 	at com.marshalchen.ultimaterecyclerview.UltimateRecyclerView$3.onItemRangeRemoved(UltimateRecyclerView.java:811) 04-11 14:08:27.882: E/AndroidRuntime(5283): 	at android.support.v7.widget.RecyclerView$AdapterDataObservable.notifyItemRangeRemoved(RecyclerView.java:9276) 04-11 14:08:27.882: E/AndroidRuntime(5283): 	at android.support.v7.widget.RecyclerView$Adapter.notifyItemRemoved(RecyclerView.java:5653) 04-11 14:08:27.882: E/AndroidRuntime(5283): 	at com.marshalchen.ultimaterecyclerview.UltimateViewAdapter.removeInternal(UltimateViewAdapter.java:429) 04-11 14:08:27.882: E/AndroidRuntime(5283): 	at sg.ListAdapter.removeItemAt(ListAdapter.java:124)
My adapter have extends UltimateViewAdapter.
It was working fine on  0.3.18 as well.

Hey guys, after looking through the UltimateRecyclerView.java, which i realise that now the structure for the library require the mEmpty to be inflate first and this can be done using the following:
ultimateRecyclerView.setEmptyView(R.layout.empty_view, R.id.no_image);
Thus, this helps me to resolve the above issue.

greate!

tnx @lkwjohn "setEmptyView" works

You can also set that in the layout, e.g.:
<com.marshalchen.ultimaterecyclerview.UltimateRecyclerView
...
app:recyclerviewEmptyView="@layout/empty_view"/>

reference: http://blog.marshalchen.com/UltimateRecyclerView/

@jackcsk
Emptyview not showing even if I add this in xml or using "setEmptyView" in code, leaving a huge white area on the screen. Any idea on what happened?

@lkwjohn @cymcsg
ultimateRecyclerView.setEmptyView(@LayoutRes int emptyResourceId, final int emptyViewPolicy);
after read source code, the second param needs pass a Policy Id I think, but the comment is
@param emptyViewPolicy the Resource Id from the empty view
is that wrong?


Update dependencies

What does this PR do?

Motivation

Additional Notes

Review checklist (to be filled by reviewers)

[ ] Feature or bugfix MUST have appropriate tests (unit, integration, e2e)
[ ] PR title must be written as a CHANGELOG entry (see why)
[ ] Files changes must correspond to the primary purpose of the PR as described in the title (small unrelated changes should have their own PR)
[ ] PR must have changelog/ and integration/ labels attached

/azp run PR All Comment

/azp run PR All Comment

/azp run PR All Comment

/azp run PR All Comment

/azp run PR All Comment


Changing the copyright is against the TOS

Please read the terms here: https://nova.laravel.com/terms, it states that modifying the copyright notices is against the TOS.
"All copyright and proprietary notices and logos in the Control Panel and within the Software files must remain intact."

@JapSeyz Please also research it more deeply about this issue
https://github.com/cendekia/nova-setting-tool/issues/4

@cendekia I apologize, I didn't find it when I looked through the issues. I was trying to keep everyone out of breaking the TOS, but you seem to have it covered already.


Merge to main

/infra

Hey, @eosho!
:rocket: Deploying infra to 'wbademo-RG' is beginning! :rocket:


Token affiliation doesn't work

Hello,
I've installed both token_affiliation and token_owner_party, but affiliation seems to not work properly. I'm using Jitsi in Docker, but I've configured all necessary specified in the readme.
Each user that join conference receive moderator rights even if "affiliation":"member" in JWT token, and if the property "affiliation" is not provided it prevent user to join.
This other plugin instead works (https://github.com/nvonahsen/jitsi-token-moderation-plugin), but I need token_owner_party to be working.
I'm not sure what can cause the issue, but I can debug whatever if needed.
Version Jitsi I use is the stable-6173.
Many Thanks :)

I just got this plugin working on 6726.

not work docker 6865
example config

prosody
admins = {
<EMAIL_ADDRESS><EMAIL_ADDRESS>}

unlimited_jids = {
<EMAIL_ADDRESS><EMAIL_ADDRESS>}

plugin_paths = { "/prosody-plugins/", "/prosody-plugins-custom" }

muc_mapper_domain_base = "meet.jitsi";
muc_mapper_domain_prefix = "muc";

http_default_host = "meet.jitsi"

consider_bosh_secure = true;

-- Deprecated in 0.12
-- https://github.com/bjc/prosody/commit/26542811eafd9c708a130272d7b7de77b92712de

cross_domain_websocket = { "https://localhost:8443","https://meet.jitsi" }
cross_domain_bosh = { "https://localhost:8443","https://meet.jitsi" }

VirtualHost "meet.jitsi"

    authentication = "token"
    app_id = "myappid"
    app_secret = "myappsecret"
    allow_empty_token = false

    ssl = {
        key = "/config/certs/meet.jitsi.key";
        certificate = "/config/certs/meet.jitsi.crt";
    }
    modules_enabled = {
        "bosh";

        "websocket";
        "smacks"; -- XEP-0198: Stream Management

        "pubsub";
        "ping";
        "speakerstats";
        "conference_duration";

        "muc_lobby_rooms";

        "muc_breakout_rooms";

        "av_moderation";

    }

    main_muc = "muc.meet.jitsi"

    lobby_muc = "lobby.meet.jitsi"

    muc_lobby_whitelist = { "recorder.meet.jitsi" }

    breakout_rooms_muc = "breakout.meet.jitsi"

    speakerstats_component = "speakerstats.meet.jitsi"
    conference_duration_component = "conferenceduration.meet.jitsi"

    av_moderation_component = "avmoderation.meet.jitsi"

    c2s_require_encryption = false

VirtualHost "auth.meet.jitsi"
    ssl = {
        key = "/config/certs/auth.meet.jitsi.key";
        certificate = "/config/certs/auth.meet.jitsi.crt";
    }
    modules_enabled = {
        "limits_exception";
    }
    authentication = "internal_hashed"

VirtualHost "recorder.meet.jitsi"
    modules_enabled = {
      "ping";
    }
    authentication = "internal_hashed"

Component "internal-muc.meet.jitsi" "muc"
    storage = "memory"
    modules_enabled = {
        "ping";
        }
    restrict_room_creation = true
    muc_room_locking = false
    muc_room_default_public_jids = true

Component "muc.meet.jitsi" "muc"
    storage = "memory"
    modules_enabled = {
        "muc_meeting_id";
        "token_affiliation";
        "token_verification";
        "polls";
        }
    muc_room_cache_size = 1000
    muc_room_locking = false
    muc_room_default_public_jids = true

Component "focus.meet.jitsi" "client_proxy"
    target_address =<EMAIL_ADDRESS>
Component "speakerstats.meet.jitsi" "speakerstats_component"
    muc_component = "muc.meet.jitsi"

Component "conferenceduration.meet.jitsi" "conference_duration_component"
    muc_component = "muc.meet.jitsi"

Component "avmoderation.meet.jitsi" "av_moderation_component"
    muc_component = "muc.meet.jitsi"

Component "lobby.meet.jitsi" "muc"
    storage = "memory"
    restrict_room_creation = true
    muc_room_locking = false
    muc_room_default_public_jids = true

Component "breakout.meet.jitsi" "muc"
    storage = "memory"
    restrict_room_creation = true
    muc_room_locking = false
    muc_room_default_public_jids = true

jicofo
jicofo {

    authentication {
      enabled = true
      // The type of authentication. Supported values are XMPP, JWT or SHIBBOLETH (default).

      type = JWT

      login-url = "meet.jitsi"

      enable-auto-login=true
    }

    // Configuration related to jitsi-videobridge
    bridge {
      brewery-jid =<EMAIL_ADDRESS>    }
    // Configure the codecs and RTP extensions to be used in the offer sent to clients.
    codec {
      video {

      }
    }

    conference {

      enable-auto-owner = false

    }

    octo {
      // Whether or not to use Octo. Note that when enabled, its use will be determined by
      // $jicofo.bridge.selection-strategy. There's a corresponding flag in the JVB and these
      // two MUST be in sync (otherwise bridges will crash because they won't know how to
      // deal with octo channels).
      enabled = false

      id = "1"
    }

    sctp {
      enabled = false
    }

    xmpp {
      client {
        enabled = true
        hostname = "xmpp.meet.jitsi"
        domain = "auth.meet.jitsi"
        username = "focus"
        password = "db797951dda7933606bc2b45f65eb5c8"
        conference-muc-jid = "muc.meet.jitsi"
        client-proxy = "focus.meet.jitsi"
        disable-certificate-verification = true
      }

    }

}

problem this https://github.com/jitsi/jicofo/blob/master/src/main/java/org/jitsi/jicofo/conference/JitsiMeetConferenceImpl.java#L472
module token_affiliation always doesn't work, jicofo always set owner all user if usage jwt auth

jicofo always set owner all user if usage jwt auth

You are right. External JWT authentication should be disable (which is the default) for jicofo.
jicofo.authentication.enabled

thanks @clchera :) your solution relly worked on docker I have expend hour trying to make this code work
local LOGLEVEL = "debug"

local is_admin = require "core.usermanager".is_admin
local is_healthcheck_room = module:require "util".is_healthcheck_room
module:log(LOGLEVEL, "loaded")

local function _is_admin(jid)
    return is_admin(jid, module.host)
end

module:hook("muc-room-created", function(event)
    log(LOGLEVEL, 'room created, prevent auto owner');

    local room = event.room;
    -- Wrap set affilaition to block anything but token setting owner (stop pesky auto-ownering)
    local _set_affiliation = room.set_affiliation;
    room.set_affiliation = function(room, actor, jid, affiliation, reason)
        -- let this plugin do whatever it wants
        if actor == "token_affiliation_plugin" then
            return _set_affiliation(room, true, jid, affiliation, reason)
        -- noone else can assign owner (in order to block prosody/jisti's built in moderation functionality
        elseif affiliation == "owner" then
            return nil, "modify", "not-acceptable"
        -- keep other affil stuff working as normal (hopefully, haven't needed to use/test any of it)
        else
            return _set_affiliation(room, actor, jid, affiliation, reason);
        end;
    end;
end);

module:hook("muc-occupant-joined", function (event)
    local room, occupant = event.room, event.occupant

    if is_healthcheck_room(room.jid) or _is_admin(occupant.jid) then
        module:log(LOGLEVEL, "skip affiliation, %s", occupant.jid)
        return
    end

    if not event.origin.auth_token then
        module:log(LOGLEVEL, "skip affiliation, no token")
        return
    end

    local affiliation = "member"
    local context_user = event.origin.jitsi_meet_context_user

    if context_user then
        if context_user["affiliation"] == "owner" then
            affiliation = "owner"
        elseif context_user["affiliation"] == "moderator" then
            affiliation = "owner"
        elseif context_user["affiliation"] == "teacher" then
            affiliation = "owner"
        elseif context_user["moderator"] == "true" then
            affiliation = "owner"
        elseif context_user["moderator"] == true then
            affiliation = "owner"
        end
    end

    module:log(LOGLEVEL, "affiliation: %s", affiliation)
    room:set_affiliation("token_affiliation_plugin", occupant.bare_jid, affiliation);
end)