[UI]: RTK Migration for Filter.js

Notes for Reviewers
This PR fixes #9985

[x] (fix): refactor dataFetch for schema to RTK
[x] (fix): refactor dataFetch for user data to RTK
[x] (feat): add deploy() and undeploy() for Filter using RTK

ScreenShot

Signed commits

[x] Yes, I signed my commits.

@sudhanshutech, do we need to use schema from sistent here?

Yes @dottharun , @senthil-athiban don't change the schema part since it will be used from sistent and there is already a pr which i will merge today.
@dottharun yo didn't removed the deploy and undeploy functionality since its not been used?

@dottharun please ensure @senthil-athiban is doing rtk migration at those places where its left.
@senthil-athiban see the rtk migration tracker  spreadsheet in the issue or search codebase with datafetch and change that to rtk . I thing deploy and undeploy is not being used in filter so it can removed completely and schema will sistent.

@sudhanshutech I think mine was merged before I could make the change. We need to remove those.

@sudhanshutech @dottharun Do I need to remove schema, deploy and undeploy ?

@sudhanshutech @dottharun Do I need to remove schema, deploy and undeploy ?

For schema: Revert the changes in this PR.
For deploy and undeploy: Make changes and remove the endpoints and functions from master.
For userPref query: Investigate if it's used anywhere, as I notice there is no state used from useState. Remove if not used anywhere.

Thanks @dottharun

@dottharun please ensure @senthil-athiban is doing rtk migration at those places where its left. @senthil-athiban see the rtk migration tracker spreadsheet in the issue or search codebase with datafetch and change that to rtk . I thing deploy and undeploy is not being used in filter so it can removed completely and schema will sistent.

@sudhanshutech some of the components are not listed in the spreadsheet which needs to be migrated to RTK such as Header, and so on.

@sudhanshutech @dottharun seems to be like deploy and undeploy are used in confirmation modal, can we remove the confirmation modal ?, it doesn't used anywhere, correct me if am wrong.

@sudhanshutech @dottharun seems to be like deploy and undeploy are used in confirmation modal, Can we remove the confirmation modal? It isn't used anywhere, correct me if I'm wrong.

Yes, Remove if not used anywhere.

@senthil-athiban let's discuss this PR during the Meshery dev meeting call, if you would. Please add it as an agenda item to the meeting minutes.

@senthil-athiban everything works fine right all other functionalities ?

@sudhanshutech, seems to be everything is fine.
https://github.com/user-attachments/assets/86059325-248d-454a-9956-e27057c2af24


Image caption length is short and creates awkward line breaks

The caption length seems short and causes awkward line breaks.
Needs design spec for column width.

I changed the column width from 4 to 6 for image captions. This seems to fit most of our captions and eliminates most of the orphans. The 6 column width sets total character length around 75 characters per line.
https://deploy-preview-1146--carbon-website.netlify.com/

6 columns is too long for the caption and goes against line length guidance on IDL.
The idea in keeping them short is to keep the writing short and succinct.
Let's run this by Mike on wednesday.

@designertyler is right the line length on IDL for larger captions is longer than ours is right now... looks like they set a 75 character count line length vs. using columns though, but it's close.
IDL

6 columms

Merged. Closing https://github.com/carbon-design-system/carbon-website/pull/1146


push the updates to GitHub

Type: Bug
The VS code couldn't push the updates to GitHub throught the VS code and still showing the waiting icon for a long time under the source control word :(
VS Code version: Code 1.70.0 (Universal) (da76f93349a72022ca4670c1b84860304616aaa2, 2022-08-04T04:38:55.829Z)
OS version: Darwin arm64 21.6.0
Modes:

System Info

Item
Value

CPUs
Apple M1 (8 x 24)

GPU Status
2d_canvas: enabledcanvas_oop_rasterization: disabled_offdirect_rendering_display_compositor: disabled_off_okgpu_compositing: enabledmetal: disabled_offmultiple_raster_threads: enabled_onopengl: enabled_onrasterization: enabledraw_draw: disabled_off_okskia_renderer: enabled_onvideo_decode: enabledvideo_encode: enabledwebgl: enabledwebgl2: enabled

Load (avg)
2, 2, 2

Memory (System)
8.00GB (0.06GB free)

Process Argv
--crash-reporter-id 4909c607-42fd-4a28-88b2-22ef48593e3e

Screen Reader
no

VM
0%

Extensions (8)

Extension
Author (truncated)
Version

askia-qexml-generator-extension
Ask
1.0.1

vscode-intelephense-client
bme
1.8.2

dart-code
Dar
3.46.1

vscode-html-css
ecm
1.13.1

batch-rename-extension
Jan
0.0.5

live-server
ms-
0.2.13

onedrive-browser
ms-
0.0.1

LiveServer
rit
5.7.5

A/B Experiments
vsliv368:30146709
vsreu685:30147344
python383:30185418
vspor879:30202332
vspor708:30202333
vspor363:30204092
vslsvsres303:30308271
pythonvspyl392:30443607
vserr242cf:30382550
pythontb:30283811
vsjup518:30340749
pythonptprofiler:30281270
vshan820:30294714
vstes263cf:30335440
vscoreces:30445986
pythondataviewer:30285071
vscod805cf:30301675
binariesv615:30325510
bridge0708:30335490
bridge0723:30353136
vsaa593cf:30376535
vsc1dst:30438360
pythonvs932:30410667
wslgetstarted:30449410
vscscmwlcmt:30465135
cppdebug:30492333
pylanb8912:30529769
vsclangdf:30486550
c4g48928:30535728
hb751961:30541207
dsvsc012cf:30540253

If you mean by clicking push under the menu in source control panel, you can press cmd+shift+p (on windows: ctrl+shift+p) and search show git output to open git command history and check what's stuck.
It's most probably caused by

network issue
incorrectly configured git config or git related vscode settings
askpass is set and the program is already waiting for password (maybe on the top of vscode workbench)

@OmarSAlGhamdi Are you still hitting this?

I tried to fix the problem but nothing have changed

@OmarSAlGhamdi Are you still hitting this?

nothing have changed

If you mean by clicking push under the menu in source control panel, you can press cmd+shift+p (on windows: ctrl+shift+p) and search show git output to open git command history and check what's stuck.
It's most probably caused by

network issue
incorrectly configured git config or git related vscode settings
askpass is set and the program is already waiting for password (maybe on the top of vscode workbench)

I already tried them but nothing have changed on Mac but it's working fine now on Windows

Hey @lszomoru, this issue might need further attention.
@OmarSAlGhamdi, you can help us out by closing this issue if the problem no longer exists, or adding more information.

@OmarSAlGhamdi, are you still seeing this issue on your Mac while things are working fine on Windows? Are you using the same protocol (HTTPS vs SSH) on both machines? Do you by any chance using the git credential manager? Is it installed/enabled on both machines? Would it be possible for you to share the contents of the git output window from your Mac? Thanks!

It working perfect after the last update

@OmarSAlGhamdi, that is great news! I will go ahead and close this issue.


[ROX-15458][ROX-16687]: Add mechanism for resending NodeInventory when no ACK arrives

Description
A detailed explanation of the changes in your PR.
Feel free to remove this section if it is overkill for your PR, and the title of your PR is sufficiently descriptive.
Checklist

[ ] Investigated and inspected CI test results
[ ] Unit test and regression tests added
[ ] Evaluated and added CHANGELOG entry if required
[ ] Determined and documented upgrade steps
[ ] Documented user facing changes (create PR based on openshift/openshift-docs and merge into rhacs-docs)

If any of these don't apply, please comment below.
Testing Performed
TODO(replace-me)
Use this space to explain how you tested your PR, or, if you didn't test it, why
you did not do so. Valid reasons include, for example, "CI is sufficient",
"No testable changes". Feel free to attach JSON snippets, curl commands,
screenshots.
In addition to reviewing your code, reviewers must also review your testing
instructions and make sure they are sufficient.
Logs
│ pkg/logging: 2023/06/01 10:57:44.852514 logger.go:170: Info: Scanning node "piotr-work-30may-npst5-worker-b-62rlb"                                                                  │
│ pkg/logging: 2023/06/01 10:57:44.859013 logger.go:170: Info: Observing message scan being sent. Waiting for an ACK for 15s                                                          │
│ pkg/logging: 2023/06/01 10:57:44.859130 logger.go:170: Info: Next node scan in 41.425088147s                                                                                │
│ pkg/logging: 2023/06/01 10:57:47.526111 logger.go:165: Info: Message has been acknowledged

/retest

/test ocp-4-13-qa-e2e-tests

Failure on ocp-4-13-qa-e2e-tests are due to collector crashing being unable to download kernel objects from sensor. Slack thread checking with Collector team

Failure in cp-4-12-core-bpf-qa-e2e-tests is addressed by ROX-17557


Max height for tags in the image window.

Is your feature request related to a problem? Please describe
Well to put it simply :
Not all the tag can be accessed, the thumbnail is so small too, I know we can increase the height of the window, but it feel weird that the app can't use a scrolling on the tags when there is so much of them.
Describe the solution you'd like
Putting a max height on the tags part of the window ? Like 30% and add scrolling with mouse wheel ?
Describe alternatives you've considered
Don't show "ignored" tag  in the list, but it feel less pertinent.

Indeed, that's quite horrible.
I hope Qt allows doing something like this easily though 😟


Change the Transaction Isolation Level

Is there something similar to this:
http://sequelize.readthedocs.org/en/latest/api/transaction/
where by you can change the transaction isolation level?  I would like to be able to read data that has been inserted as part of the current transaction.  Looks like Postgres connection default does not allow for this without changing the isolation level.

Working on adding this in knex, will have something for this soon.

+1

The project leadership of Bookshelf recently changed. In an effort to advance the project we close all issues older than one year.
If you think this issue needs to be re-evaluated please post a comment on why this is still important and we will re-open it.
We also started an open discussion about the future of Bookshelf.js here https://github.com/bookshelf/bookshelf/issues/1600. Feel free to drop by and give us your opinion.
Let's make Bookshelf great again


Error while minifying in prebuild

When doing the prebuild, it was not possible to minify the code, because there is an arrow function.

I have the same issue

I've the same error too...


module_directive Loses Information in a Named-Only Tree

Problem description
module_directive does not sufficiently delineate the different types of directives which are available. This causes it to become ambiguous when a tree with only named nodes is used.
Example input
module X {
  exports F;
  uses F;
  opens F;
}

Tree-sitter Output
[program] [0, 0] - [5, 0]
  [module_declaration] [0, 0] - [4, 1]
    name: [identifier] [0, 7] - [0, 8]
    body: [module_body] [0, 9] - [4, 1]
      [module_directive] [1, 2] - [1, 12]
        [identifier] [1, 10] - [1, 11]
      [module_directive] [2, 2] - [2, 9]
        [identifier] [2, 7] - [2, 8]
      [module_directive] [3, 2] - [3, 10]
        [identifier] [3, 8] - [3, 9]

Suggested Resolution
Make module_directive a super and create a node for each possible directive type.

Resolved with https://github.com/tree-sitter/tree-sitter-java/pull/104.


correctly respect limit in async mode

swapped two lines because otherwise the first page of results is never shown because the counter is incremented prematurely
I hope this explanation is enough - if needed I can create a minimal demo

Please someone merge this!!!

+1 please merge
also @vigorouscoding here is a test to reproduce issue hopefully it will help move this along.
it('display all async results when local suggestions is empty', function() {

          this.source.andCallFake(function (query, sync, async) {
              sync([]);

              var mockSuggestionsDisplayFn = [
                  { display: '4' },
                  { display: '5' },
                  { display: '6' }
              ];

              setTimeout(function() {
                  async(mockSuggestionsDisplayFn);
              }, 0);

          });

          //this.dataset.limit = mockSuggestionsDisplayFn.length;
          this.dataset.update('foo');

          waits(100);

          runs(function() {
              var rendered = this.dataset.$el.find('.tt-suggestion');
              expect(rendered).toHaveLength(3);
          });
      });

typeahead.js has not been updated since 2 years. Any good fork out there were this PR could be included (or were this issue is already fixed)?

sadly, i dont know of any good fork of typeahead - i'm hoping that @jharding will find time to react to a couple of PRs (hopefully at least the low-hanging fruit like this PR...)

@alexpirine and @vigorouscoding : Check out this fork: https://github.com/corejavascript/typeahead.js

thx @jlbooker for bringing this to my attention! closing this PR


added crossval for NER evaluation

Proposed changes:

Added entity extraction to the crossvalidation

Status (please check what you already did):

[x] made PR ready for code review
[ ] added some tests for the functionality
[ ] updated the documentation
[ ] updated the changelog

@tmbo can you comment on the changes I made before I continue fixing things and writing tests? Specifically on the use of Counters to merge the dictionaries of intents (the entity one doesn't work yet because it's a dictionary of dictionaries, there's probably a better way to do that)

@tmbo this PR is ready now. I can look at the duckling thing and put that in a separate PR. Unless @twerkmeister is already on that?

yes let's do that in a separate one, sounds good :+1:


Setting to change port number

Is your feature request related to a problem? Please describe.
A setting to change the port number for seeding LBRY content.
Describe the solution you'd like
In the settings, to have a setting the change the port number.
Describe alternatives you've considered
None
Additional context
Some people are limited on what ports they can use. In the case of users who use a VPN with a port forwarding feature you cannot choose what ports to use. LBRY by default uses port 3333, please allow this to be change to any number in the settings to allow more users to be able to seed LBRY content to help keep the network strong.

This is a good point to help hosting.
https://github.com/lbryio/lbry-desktop/issues/949


Lambda Layers & Cognito support

Description
This merges the following PRs with the 0.50.0 release
https://github.com/Miserlou/Zappa/pull/1842
To add support for Lambda layers
And fixes
https://github.com/Miserlou/Zappa/issues/1879

Coverage decreased (-61.1%) to 11.836% when pulling 7afd132c3e0a0c3e8173c6606beb679366594f96 on updraft-com:master into f4e846fc79e83eb4f0f3f644db04ee2554256064 on Miserlou:master.

And... the only coverage change here is the fact that "there is a new version of Zappa" is no longer covered!  :-)


实例化对象如何显示 @Formula 属性？

@Entity
interface Author {

    val firstName: String

    val lastName: String

    @Formula(dependencies = ["firstName", "lastName"])
    val fullName: String
        get() = "$firstName $lastName"

    ...省略其他属性...
}

val author = new(Author::class).by {
    firstName = "A"
    lastName = "B"
}
println("fullName: ${author.fullName}")
println("author: $author")

fullName: A B
author: {"firstName": "A", "lastName": "B"}

纠缠属性和可见性：https://babyfish-ct.gitee.io/jimmer-doc/docs/object/visibility
手动控制可见性：https://babyfish-ct.gitee.io/jimmer-doc/docs/object/tool


why BCUninstaller.dll Error in Windows 7

Try running windows update and install all available system updates.

install all available system updates.

what should be installed?

I don't know which update fixes it exactly, I think it was a feature update but it's easier to just let it install everything. You don't need to go up a service pack if you don't want to.

I added a note about this in the wiki, and I'll close the issue. If updating didn't solve this issue, please reopen it.


Can't install under Windows 10

Describe the bug
Newish Windows 10 installation. I have Python 3.9.0 installed. Running pip3 install datapane fails with a massive error output and an error.
To Reproduce

Install Python 3.9.0 on Win10 and ensure it's working.
Start Windows 10 cmd prompt.
Run pip3 install datapane
Get error

Expected behavior
It installs
Screenshots
error: Command "C:\Program Files (x86)\Microsoft Visual Studio\2019\Preview\VC\Tools\MSVC\14.28.29515\bin\HostX86\x64\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE=1 -D_LARGEFILE64_SOURCE=1 -DNPY_NEEDS_MINGW_TIME_WORKAROUND -Inumpy\core\include -Ibuild\src.win-amd64-3.9\numpy\core\include/numpy -Inumpy\core\src\common -Inumpy\core\src -Inumpy\core -Inumpy\core\src\npymath -Inumpy\core\src\multiarray -Inumpy\core\src\umath -Inumpy\core\src\npysort -Ic:\python39\include -Ic:\python39\include -Ibuild\src.win-amd64-3.9\numpy\core\src\common -Ibuild\src.win-amd64-3.9\numpy\core\src\npymath -Ibuild\src.win-amd64-3.9\numpy\core\src\common -Ibuild\src.win-amd64-3.9\numpy\core\src\npymath -IC:\Program Files (x86)\Microsoft Visual Studio\2019\Preview\VC\Tools\MSVC\14.28.29515\ATLMFC\include -IC:\Program Files (x86)\Microsoft Visual Studio\2019\Preview\VC\Tools\MSVC\14.28.29515\include -IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\include\um -IC:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt -IC:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\shared -IC:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\um -IC:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\winrt -IC:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\cppwinrt /Tcnumpy\random\mtrand\mtrand.c /Fobuild\temp.win-amd64-3.9\Release\numpy\random\mtrand\mtrand.obj" failed with exit status 2
      ----------------------------------------
  ERROR: Command errored out with exit status 1: 'c:\python39\python.exe' -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\charlie\\AppData\\Local\\Temp\\pip-install-ocppwjbp\\numpy\\setup.py'"'"'; __file__='"'"'C:\\Users\\charlie\\AppData\\Local\\Temp\\pip-install-ocppwjbp\\numpy\\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record 'C:\Users\charlie\AppData\Local\Temp\pip-record-3r3z4ygi\install-record.txt' --single-version-externally-managed --prefix 'C:\Users\charlie\AppData\Local\Temp\pip-build-env-lvrb5b68\overlay' --compile --install-headers 'C:\Users\charlie\AppData\Local\Temp\pip-build-env-lvrb5b68\overlay\Include\numpy' Check the logs for full command output.
  ----------------------------------------
ERROR: Command errored out with exit status 1: 'c:\python39\python.exe' 'c:\python39\lib\site-packages\pip' install --ignore-installed --no-user --prefix 'C:\Users\charlie\AppData\Local\Temp\pip-build-env-lvrb5b68\overlay' --no-warn-script-location --no-binary :none: --only-binary :none: -i https://pypi.org/simple -- 'cython >= 0.29' 'numpy==1.14.5; python_version<'"'"'3.7'"'"'' 'numpy==1.16.0; python_version>='"'"'3.7'"'"'' setuptools setuptools_scm wheel Check the logs for full command output.

Desktop (please complete the following information):

OS: Windows 10

Thanks for raising @tig - will try running in a VM and see if can repro. It looks like it's trying to compile some extensions - I think this may be due to Python 3.9, and some of our binary dependencies only support up to 3.8 at the moment.
Could you try running with Python 3.8?
We also have some addition Window troubleshooting docs at https://docs.datapane.com/tut-getting-started#windows-tips-and-troubleshooting which may help

Closing as Python 3.9 currently unsupported - please try Python 3.6-8.
Python 3.9 should be supported within the next few weeks whilst we wait for an upstream dependency. Thanks!

Closing as Python 3.9 currently unsupported - please try Python 3.6-8.
Python 3.9 should be supported within the next few weeks whilst we wait for an upstream dependency. Thanks!


[Bug]: DropdownMenu(Trigger) will be slow to display when there's a lot of render elements

Environment
Shadcn Vue version: 0.8.7
Vue version: 3.4.15

Link to minimal reproduction
https://github.com/frankchen211/shadcn-vue/tree/draft/blue-violet
Steps to reproduce
For task page example,

Make more data like 1000 rows
Set pageSize to 1000
click View button to open the dropdown menu, it will take a while to display(remove any functions from TanStack Table).

const columns = ['col1', 'col2', 'col3']

<DropdownMenuCheckboxItem
        v-for="column in columns"
        :key="column"
        class="capitalize"
        :checked="true"
>
        {{ column }}
</DropdownMenuCheckboxItem>

click and compare with the FacetedFilter(using Popover) which is faster.

Describe the bug
For task page example, if you have large dataset to display at one page,
like 1000 per/page, then click View button to open the dropdown menu, it will take a while to display, but the FacetedFilter(using Popover) is faster.
Expected behavior
Faster
Conext & Screenshots (if applicable)
No response

@sadeghbarati I can get this issue to working process, ok?

@romanhrynevych absolutely 💯 ❤

First of all we need to clarify that amount of elements 1000 is a big number, so I think you need to use vue-virtual-scroller
This package only renders some elements near you scroll position, not all, I think that this might fix your error at all.
Try to make a demo and receive some errors with table elements and library, but will send you link when something will happens 🙂
Don't think that this issue is legit for this package, maybe we will add one more example of BigData scroll after successful implementation 😁

I followed @hrynevychroman advice about vue-virtual-scroller.
My dropdown was taking a few seconds to open, due the dynamic items being loaded, so thx @hrynevychroman.
Things i want to point out first:
The virtual scroller docs are poorly written, so you might get into some issues.
So i will share how used it.
I added a search bar in my dropdown to filter items, and had an issue, on keydown it was focusing on dropdown item, and to fix it, i did this recommendation to stop it: https://github.com/radix-ui/primitives/issues/2193#issuecomment-1790564604
Also another issue was about virtual scroller bad docs, and found this solution: https://github.com/Akryum/vue-virtual-scroller/issues/865

the final result is this:
<ClientOnly>

          <DropdownMenu>
            <DropdownMenuTrigger>Country</DropdownMenuTrigger>
            <DropdownMenuContent
              :avoidCollisions="true"
              side="bottom"
              align="start"
            >
              <DropdownMenuLabel>

 $event.stopPropagation()">
                  <JInput
                    v-model="searchQuery"
                    placeholder="Search country"
                    class="w-full"
                    id="query-country"
                    name="search"
                  >
                    <template #icon>
                      <component
                        :is="SearchIcon"
                        class="size-4 text-muted-foreground ml-1.5"
                      />
                    </template>
                  </JInput>

              </DropdownMenuLabel>
              <DropdownMenuSeparator />

                  <Map class="size-4" />

Current Location

                <DropdownMenuItem>{{ getSelected }}</DropdownMenuItem>

              <DropdownMenuSeparator />
              <DynamicScroller
                :items="filteredCountries"
                :min-item-size="10"
                class="max-h-48 overflow-y-auto"
                key-field="country_code"
              >
                <template v-slot="{ item, index, active }">
                  <DynamicScrollerItem
                    :item="item"
                    :active="active"
                    :size-dependencies="[item.name]"
                    :data-index="index"
                    :index="index"
                    :key="item.country_code"
                  >
                    <DropdownMenuItem
                      :key="`${item.country_code}-${index}`"
                      @click="selected_country = item.country_code"
                    >
                      {{ item.name }}
                    </DropdownMenuItem>
                  </DynamicScrollerItem>
                </template>
              </DynamicScroller>
            </DropdownMenuContent>
          </DropdownMenu>

</ClientOnly>


How to return answer instead of just printing it?

When I run an agent, the agent's thought process and answer gets printed out to the terminal.  However, I want to call the agent from a different function and have the agent return its answer to the function.  How should I do that?

@Tylersuard .. does this address your issues/.

@victordibia   Very helpful, thank you!

@victordibia  clearly user error on my part but I could only get the manager in my multichat to output their last message.  I want all the other agents dialog to get logged to.  For example at the end of my script I have the first two lines below (many agents) , then I initiate chat (line 3), if I include line 4 I just get the prompt message I gave to my manager written to output.txt, and if I include line5 my output.txt is empty even though "mdDoc" had output I saw in the terminal.
groupchat = autogen.GroupChat(agents=[mdDoc,doDoc,docHarmGen,docHarmDose], messages=[], max_round=3)
manager = autogen.GroupChatManager(groupchat=groupchat, llm_config=llm_config)
user_proxy.initiate_chat(manager, message=task)
json.dump(user_proxy.chat_messages[manager], open(output.txt, "w"), indent=2)
json.dump(user_proxy.chat_messages[mdDoc], open(output.txt, "w"), indent=2)

@victordibia  clearly user error on my part but I could only get the manager in my multichat to output their last message.  I want all the other agents dialog to get logged to.  For example at the end of my script I have the first two lines below (many agents) , then I initiate chat (line 3), if I include line 4 I just get the prompt message I gave to my manager written to output.txt, and if I include line5 my output.txt is empty even though "mdDoc" had output I saw in the terminal.
groupchat = autogen.GroupChat(agents=[mdDoc,doDoc,docHarmGen,docHarmDose], messages=[], max_round=3)
manager = autogen.GroupChatManager(groupchat=groupchat, llm_config=llm_config)
user_proxy.initiate_chat(manager, message=task)
json.dump(user_proxy.chat_messages[manager], open(output.txt, "w"), indent=2)
json.dump(user_proxy.chat_messages[mdDoc], open(output.txt, "w"), indent=2)

You can consider using: manager.chat_messages[mdDoc]. user_proxy is not involved in the group chat based on your setting.


.astro file extension is not recognised

Steps to reproduce

open any file which ends with .astro
see, no syntax highlighting

Expected behaviour
.astro files are recognised by vim.
I found a Plugin but upstream support would be nicer:
https://github.com/wuelnerdotexe/vim-astro
Version of Vim
9.1.0300
Environment

macos 14.4.1
iTerm
xterm-256color
zsh 5.9

Logs and stack traces
No response

closing this for #14561


[W.I.P] VR tutorial cleanup and code refactor

This PR contains a number of changes I made to the project after getting it working with Godot 3.1.
Most of the changes are just code refactors that make the code a little cleaner and easier to understand. I also fixed a few bugs in the project and added some (minor) additional features.
Changes:

[x] Added rumble when objects are picked up, the guns are fired, and when the sword collides with something.
[x] Added a raycast "laser sight" to the Shotgun for easier aiming
[x] Added a new knockback/collision-force system to the pistol, shotgun, and bomb objects. Now the closer the object is to the collision, the farther it goes.

This change also makes the bombs a little more consistent and natural looking.

[x] Added some code to silence the GDScript code warnings. Nothing major was silenced, with most of the warnings being due to not using the return value from the connect function.
[x] Created a base class, VR_Interactable_Rigidbody, to use for all interactable Rigidbodies in the game.

This makes the code a little easier and should allow for defining a consistent interface for intractable VR objects. Right now the class is rather bare, but in a future PR I might expand upon it, moving some of the object related code out of the VR controller script and into this class.

[x] Changed the code within the VR controller to use VR_Interactable_Rigidbody instead of checking for methods.
[x] Changed the name of the project to "Godot OpenVR FPS"
[x] Changed the Vignette shader strength to a uniform so the strength can be changed without having to edit the shader.
[x] Refactored the VR controller class.

The code has been broken down into smaller functions. The code itself didn't really change any, but by breaking it down into smaller, more compact functions, it should be easier to made adjustments in the future. Breaking everything down into smaller functions should also make writing/updating the tutorial a lot easier too.

[x] Refactored the sword code and scene

Now it uses a KinematicBody for collision detection. While this may impact performance slightly, as the collision detection is done every frame, the entire thing feels WAY better and the code is simpler.

[x] Updated all of the comments within the code. Now they are accurate and reflect the changes within this PR.

The comments also have better explanations and I fixed some code style inconsistencies.

[x] Removed the glow effect from the WorldEnvironment. While it made a minor difference to the visuals, removing it should make performance a little better while also making the project more compatible with GLES2.
[x] Fixed issue where the shotgun raycasts would send targets towards the player. Now when the shotgun fires, objects hit fly away from the end of the shotgun.
[x] Fixed issue where the meshes used for teleportation and raycast-grabbing in the VR controller were initially visible. Now the meshes are only visible when the player starts teleporting and/or changes grab modes.

I think the list above contains most, if not all, of the changes. I made most of the initial changes late at night, so I may have missed a few. Also, some of the changes are made by Godot when opening the TSCN files.
If there are other small additional things anyone can think of, please let me know either by commenting in this PR and/or by making a GitHub issue. I'll update this post as additional changes are made

Okay! Now all that is left is updating the tutorial on the Godot documentation repository. Once that is done and this PR is merged, the VR starter tutorial is fully ready and updated for Godot 3.1.
Right now I'm leaving the PR in case I bugs are found and/or I need to make minor changes as I update the tutorial.

Sorry for the late reply, finally got some time to play around with this. It all works on my index for the most part :)
Understandably with the Vive you have a grab action and drop action, but with both the index knuckles and oculus touch controllers I would add an option so you need to keep the button pressed to hold an object.
I also found that I had to have my hands on an object to grab it instead of being in range. A more physical interaction but not always handy if you lack full roomscale tracking.
But looks like all your changes work fine. I need to play more and start seeing what I can tweak/improve :)
I'm going to see if I can make this work on the quest this week :)

ps, I'm happy to merge this and will do separate PRs as we improve things, that way we can match the PRs with any changes in documentation.

No problem, thanks for looking through it!
As for the changes, I agree that keeping the button held for grabbing would be a good idea for controllers that have more natural grabbing buttons.
For the Windows Mixed Reality controllers, which is what I use, in my opinion having grabbing where you do not need to hold the button makes it easier. I don't know for the other VR controllers out there, but I think it would probably be best to make the default grab behavior more like a toggle, where you can change it (somehow) to be where objects are only held when the grab button is held.
As far as having to have your hands on an object to grab it, that is the default grab mode. You can change the grab mode to use a Raycast by pressing the menu button on the VR controller, which makes it easier to grab objects when you lack full roomscale tracking. That said, the Raycast is rather short, so that still might be an issue.
Thanks again for looking through it! I'll merge this PR in and when the project is good to go, I'll update the PR for the Godot documentation to reflect any changes made to the VR project.


Add service proxy plugin example

Plugin that implements a "service proxy". Eases the composition of separate ARIA managed services by gathering the outputs of services into the service proxy attributes.

Can one of the admins verify this patch?


Added Hindi Aggressive Tokenizer

Hindi Language aggressive tokenizer.

Added Hindi Language aggressive tokenizer which considers language specific symbols to be swallowed.
And to test them added several test cases as well.
I request fellow maintainers and contributors to review and merge my PR or raise queries or suggest changes.
I would highly appreciate inputs.
Thanks in Advance.

Please restrict the copyright notice to the file you authored. Now it says that you authored the aggressive tokenizer as a whole. Also remove the line with "Aggressive Tokenization Open-Source License (Version 1.0)" That is not an actually existing license. We are using MIT license.
Otherwise your license text is compatible with MIT license.

Thanks @Hugo-ter-Doest  for your inputs,
I made the the changes regarding license text.

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

40 of 40 (100.0%)  changed or added relevant lines in 2 files are covered.
1 unchanged line in 1 file lost coverage.
Overall coverage increased (+0.02%) to 87.316%

Files with Coverage Reduction
New Missed Lines
%

lib/natural/brill_pos_tagger/lib/Brill_POS_Trainer.js
1
65.84%

Totals

Change from base Build<PHONE_NUMBER>:
0.02%

Covered Lines:
9660

Relevant Lines:
10691

💛  - Coveralls

Thanks for your contribution! Very nice to have a Hindi tokenizer as part of the natural library.

Welcome ! I will try adding more more contributions ahead.

FYI I added the Hindi tokenizer to the API (index.js and index.d.ts files) and added it to the documentation at https://naturalnode.github.io/natural/


How should polarizations be passed around?

In GitLab by @gregory.ashton on Mar 29, 2018, 23:49
Currently, we have two implemented methods to pass polarizations around. Let's agree on one method and stick to it.
A) The source method should return a dictionary of all the polarizations
I think this is what @rory-smith and @sylvia.biscoveanu are assuming in other parts of the code (is that correct?)
class Source:

    def model(self, times, parameters):
       ...
       return {'plus': h_plus, 'cross': h_cross}

B) The source method should return a tuple of hplus and hcross
This is how @paul-lasky has written the BinaryBlackHole source
class Source:

    def model(self, times, parameters):
       ...
       return h_plus, h_cross

This is the more natural way to do things, but B A (edited) allows more flexibililty for other modes. It is important to define now exactly what should be returned as many other functions are going to make assumptions about it.
In case A, should we assume there is always at least h_plus and h_cross? Is one enough?

In GitLab by @ColmTalbot on Mar 30, 2018, 00:08
Why do you say B allows more flexibility for other modes?  Case A doesn't assume anything about the polarizations that are going to be passed.
The likelihood currently looks like:
    def logL(self, times, params):
        ...
        waveform_polarizations = self.source.model(times, params)
        for Interferometer in self.Interferometers:
            for mode in params['modes']:

We could probably change the second for loop to be a little more explicit that we only care about the returned modes.
    def logL(self, times, params):
        ...
        waveform_polarizations = self.source.model(times, params)
        for Interferometer in self.Interferometers:
            for mode in waveform_polarizations.keys():

In GitLab by @gregory.ashton on Apr 4, 2018, 06:30
Okay. Given more recent developments I'm closing this. For future reference (at least for now), polarizations should be passed in a dictionary (i.e. option A)

In GitLab by @gregory.ashton on Apr 4, 2018, 06:30
closed

In GitLab by @gregory.ashton on Mar 30, 2018, 00:29
Sorry I meant to say A provides more flexibility - I edited the original comment.


fix(ipfs-coord): Updating to v7.1.4

:tada: This PR is included in version 2.4.5 :tada:
Your semantic-release bot :package::rocket:


[BugFix] Increase default broker_client_timeout.

Increase default broker_client_timeout from 10s to 2min. Get rid of timeout errors when listing directories in S3 or Hadoop.
What type of PR is this：

[X ] BugFix

Which issues of this PR fixes ：

Fixes # directory listing timeout when loading data into Starrocks
Problem Summary(Required) ：

Starrocks get timeout when loading data from S3 or Hadoop. The root reason is, broker get timeout after 10s. This PR increase the default broker timeout to 2min, to get rid of the timeout problem

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

[FE PR Coverage Check]
:heart_eyes: pass : 1 / 1 (100.00%)
file detail

path
covered_line
new_line
coverage
not_covered_line_detail

:large_blue_circle:
com/starrocks/common/Config.java
1
1
100.00%
[]

@zhenxiao Congrats on your first PR on StarRocks！🎉


LGTV2012 Plugin and Webos-tv plugin interfer to each other

I have installed the plugin LGTV2012 to my homebridge, configured with the TV info, it has worked quiet well, but then I notice that when I turn off the TV connected to this device all homebridge stop working no shelly plugin and now webos.tv plugin works properly, it could be interference between the two LG Plugins ? I decide to uninstall the plugin LGTV and erease from the Json the confirguration, all came to normal. How to fix this issue?
My LGTV2012 JSON configurations was:
{
"platform": [
{
"platform": "lgtv-2012",
"name": "MY LG KITCHEN",
"ip": "<IP_ADDRESS>",
"pairingKey": "123456",
"min_volume": 2,
"max_volume": 20,
}
]
}
Any ideas how could I fix it?
Thank you

Sorry i do not understand what you exactly mean? You need to specify your TV model and debug log... Do i understand it correctly that you have a LG 2012 TV and try to use this plugin for that TV? If so then this will most probably do not work...

Yes, one of the tvs is with Netcast system which works well with the plugin LGTV2012. As the other TV´s are with WEBOS and there are working well with your plugin webos-tv, but when I turn of the tv that use the plugin LGTV2012 with netcast, the plugin webs stops working and it seems to me cause also that Homebridge stop working. I don't if could be interference between both LG plugins. Sorry If I am disturbing you with that is just interesting but not really important.

Sorry i do not understand what you exactly mean? You need to specify your TV model and debug log... Do i understand it correctly that you have a LG 2012 TV and try to use this plugin for that TV? If so then this will most probably do not work...

There is a possibility that the tv with Netcast LG could work over the  WEBOS-TV Plugin ?

If homebridge stops working then you have an error log which you need to analyse. This plugin will not work with netcast TVs since that is a completely different API.

thank you, I will check it.


Range as table in-out function

This PR changes the range table function to a table in-out function.
What that means is that the function can now take a subquery ("table" in) as parameter and output tuples for every tuple of the input table ("table" out)
As an illustrative example, this now works:
D create table tbl as (VALUES(1, 2), (3, 4));
D select * from tbl;
┌───────┬───────┐
│ col0  │ col1  │
│ int32 │ int32 │
├───────┼───────┤
│     1 │     2 │
│     3 │     4 │
└───────┴───────┘
D select * from range((select * from tbl));
┌───────┐
│ range │
│ int64 │
├───────┤
│     1 │
│     3 │
└───────┘

1 is produced from range(1, 2)
3 is produced from range(3, 4)

This might be problematic, there is some complexity that I don't feel is entirely needed.
One being that we need to extract the POINTER values used in python's map method, because they are needed at bind time.
The other being that because the ICU's "range" function isn't a table in-out function, we need to deal with this in the bind and possibly correct our assumption after we've retrieved the correct overload.
Another thing to note is that we probably don't deal with named parameters properly, because we include it in the subquery.
We should probably exclude the named parameters from being included in the subquery, maybe we can kill two birds with one stone by changing the map method to provide the POINTER values as named parameters.


Add a benchmark for a scrolling list of Links

This benchmark should speed up significantly when the Link widget is marked invisible.
This optimization in the engine improves performance for non-painting platform views: https://github.com/flutter/engine/pull/30003
Pre-launch Checklist

[x] I read the Contributor Guide and followed the process outlined there for submitting PRs.
[x] I read the Tree Hygiene wiki page, which explains my responsibilities.
[x] I read and followed the Flutter Style Guide, including Features we expect every widget to implement.
[x] I signed the CLA.
[x] I listed at least one issue that this PR fixes in the description above.
[x] I updated/added relevant documentation (doc comments with ///).
[x] I added new tests to check the change I am making, or this PR is test-exempt.
[x] All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel on Discord.

Answering myself, the benchmarks can be seen here:
Flutter Perf (bench_link_infinite_scroll)


USD value on Exchange page

Hi, first of all, thank you for this awesome extension.
I often find myself converting BTC value to USD in my mind, when I'm buying/selling on poloniex. It would be awesome to have an USD value next to the BTC in Buy/Sell box.
something like this

Thank you,
Ondrej

Hi Ondrej,
Thanks for your input! I think it's worthwhile considering and might prove valuable.
Due to life circumstances, I'm currently putting new feature development efforts on hold until autumn/winter. If you'd really like this feature, I would accept a pull request and do my best to review in a timely manner.
Cheers! Btw, the giveaway is still active.

At the moment, I'm quite busy, but I might squeeze it into my schedule next month. We will see... :)

Hi,
I have made this.... I'ts ok?


[Regression] JSON-dependency change in 2.3.1 causes sudden incompatibilities

(contd. of #7695)
The change #7674 in 2.3.1 forced a downgrade of activesupport from <IP_ADDRESS> to 4.0.13. Reason: fastlane depends on < 5 and the latest <IP_ADDRESS> depends on json ~> 1.7. To solve that conflict gem reverts to an earlier version that didn't specify json as a dependency.
While I have this issue, others are running into this as well already: See #7696
We have to make a choice:

Support system and 2.4
Support system and a more complex user Gemfile

Existing projects
Projects with plugins

I personally think the #7674 change should be reverted to keep users in 2.0 to 2.3 world happy and updated until we find a better solution.
A workaround for 2.4 users would be to do gem install json -v "2.0.1" before installing fastlane.

The two dependencies that are the contradicting forces here are:

spec.add_dependency 'activesupport', '< 5'

Transitive dependency through xcodeproj
Needed to support system Ruby since gem is stupid and would try to install 5 which requires Ruby 2.2
Prevents users from upgrading to newer activesupport version.

spec.add_dependency 'json', '>= 2.0.1', '< 3.0.0'

Transitive dependency through activesupport in later 4.x releases
Needed to support 2.4 since gem will try to install 1.8.3 which is not compatible with Ruby 2.0.

yup, running into this same error too.
/Users/secretariat/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/rubygems/specification.rb:2284:in `raise_if_conflicts': Unable to activate activesupport-4.2.6, because json-2.0.2 conflicts with json (>= 1.7.7, ~> 1.7) (Gem::ConflictError)
	from /Users/secretariat/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/rubygems/specification.rb:1407:in `activate'
	from /Users/secretariat/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/rubygems/specification.rb:1441:in `block in activate_dependencies'
	from /Users/secretariat/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/rubygems/specification.rb:1427:in `each'
	from /Users/secretariat/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/rubygems/specification.rb:1427:in `activate_dependencies'
	from /Users/secretariat/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/rubygems/specification.rb:1409:in `activate'
	from /Users/secretariat/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/rubygems/core_ext/kernel_gem.rb:68:in `block in gem'
	from /Users/secretariat/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/rubygems/core_ext/kernel_gem.rb:67:in `synchronize'
	from /Users/secretariat/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/rubygems/core_ext/kernel_gem.rb:67:in `gem'
	from /Users/secretariat/.rvm/gems/ruby-2.3.0/bin/fastlane:22:in `<main>'
	from /Users/secretariat/.rvm/gems/ruby-2.3.0/bin/ruby_executable_hooks:15:in `eval'
	from /Users/secretariat/.rvm/gems/ruby-2.3.0/bin/ruby_executable_hooks:15:in `<main>'

Exact same issue here:
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/specification.rb:2007:in `raise_if_conflicts': Unable to activate activesupport-4.2.3, because json-2.0.1 conflicts with json (>= 1.7.7, ~> 1.7) (Gem::LoadError)
	from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/specification.rb:1176:in `activate'
	from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/specification.rb:1212:in `block in activate_dependencies'
	from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/specification.rb:1198:in `each'
	from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/specification.rb:1198:in `activate_dependencies'
	from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/specification.rb:1180:in `activate'
	from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_gem.rb:48:in `gem'
	from /usr/local/bin/fastlane:22:in `<main>'

the same

Rollback to release 2.3.0 of fastlane is temporary workaround.
sudo gem uninstall fastlane
sudo gem install fastlane --version 2.3.0

The rollback doesn't fix a slightly different json dependancy issue for me when trying to use the S3 action:
/usr/local/Cellar/ruby/2.3.1/lib/ruby/2.3.0/rubygems/specification.rb:2284:in `raise_if_conflicts': Unable to activate aws-sdk-v1-1.66.0, because json-2.0.2 conflicts with json (~> 1.4) (Gem::ConflictError)

Got the same problem here.

+1

I installed json-2.0.1, but:
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/specification.rb:2007:in `raise_if_conflicts': Unable to activate activesupport-4.2.6, because json-2.0.1 conflicts with json (>= 1.7.7, ~> 1.7) (Gem::LoadError)

hey folks can you try curent fastlane version, i think the json issues have been resolved.

@hjanuschka yes, this is resolved.

@hjanuschka for the current fastlane version(2.18.3)  this issue is still not resolved: /usr/local/Cellar/ruby/2.4.0/lib/ruby/2.4.0/rubygems/specification.rb:2288:in `raise_if_conflicts': Unable to activate aws-sdk-v1-1.66.0, because json-2.0.2 conflicts with json (~> 1.4)

@hjanuschka Looks good to me, too.


NSKeyedUnarchiver validateAllowedClass Warnings in Xcode Console

[REQUIRED] Step 1: Describe your environment

Xcode version: 13.1
Firebase SDK version: 8.9.1
Installation method: CocoaPods
iOS: 15.1
Firebase Component: _____ (Auth, Core, Database, Firestore, Messaging, Storage, etc)
pod 'Firebase/Auth'
pod 'Firebase/Core'
pod 'Firebase/Database'
pod 'Firebase/Firestore'
pod 'Firebase/Messaging'
pod 'Firebase/Storage'
pod 'Firebase/Functions'
pod 'Firebase/Analytics'
pod 'Google-Mobile-Ads-SDK'

[REQUIRED] Step 2: Describe the problem
During the launch of the app, i am receiving following warning messages in Xcode Debug console.
2021-11-08 23:01:30.560774+0300[6093:1053556] [general] *** -[NSKeyedUnarchiver validateAllowedClass:forKey:] allowed unarchiving safe plist type ''NSString' (0x1da3076e8) [/System/Library/Frameworks/Foundation.framework]' for key 'NS.objects', even though it was not explicitly included in the client allowed classes set: '{(     "'NSSet' (0x1da2fd038) [/System/Library/Frameworks/CoreFoundation.framework]" )}'. This will be disallowed in the future. 2021-11-08 23:01:30.561011+0300[6093:1053556] [general] *** -[NSKeyedUnarchiver validateAllowedClass:forKey:] allowed unarchiving safe plist type ''NSString' (0x1da3076e8) [/System/Library/Frameworks/Foundation.framework]' for key 'NS.objects', even though it was not explicitly included in the client allowed classes set: '{(     "'NSSet' (0x1da2fd038) [/System/Library/Frameworks/CoreFoundation.framework]" )}'. This will be disallowed in the future. 2021-11-08 23:01:30.561076+0300[6093:1053556] [general] *** -[NSKeyedUnarchiver validateAllowedClass:forKey:] allowed unarchiving safe plist type ''NSString' (0x1da3076e8) [/System/Library/Frameworks/Foundation.framework]' for key 'NS.objects', even though it was not explicitly included in the client allowed classes set: '{(     "'NSSet' (0x1da2fd038) [/System/Library/Frameworks/CoreFoundation.framework]" )}'. This will be disallowed in the future. 2021-11-08 23:01:30.722599+0300[6093:1053556] [general] *** -[NSKeyedUnarchiver validateAllowedClass:forKey:] allowed unarchiving safe plist type ''NSString' (0x1da3076e8) [/System/Library/Frameworks/Foundation.framework]' for key 'NS.objects', even though it was not explicitly included in the client allowed classes set: '{(     "'NSSet' (0x1da2fd038) [/System/Library/Frameworks/CoreFoundation.framework]" )}'. This will be disallowed in the future. 2021-11-08 23:01:30.722764+0300[6093:1053556] [general] *** -[NSKeyedUnarchiver validateAllowedClass:forKey:] allowed unarchiving safe plist type ''NSString' (0x1da3076e8) [/System/Library/Frameworks/Foundation.framework]' for key 'NS.objects', even though it was not explicitly included in the client allowed classes set: '{(     "'NSSet' (0x1da2fd038) [/System/Library/Frameworks/CoreFoundation.framework]" )}'. This will be disallowed in the future. 2021-11-08 23:01:30.722872+0300[6093:1053556] [general] *** -[NSKeyedUnarchiver validateAllowedClass:forKey:] allowed unarchiving safe plist type ''NSString' (0x1da3076e8) [/System/Library/Frameworks/Foundation.framework]' for key 'NS.objects', even though it was not explicitly included in the client allowed classes set: '{(     "'NSSet' (0x1da2fd038) [/System/Library/Frameworks/CoreFoundation.framework]"

Hi @Sunrise17,
Thanks for the report. We had several reports regarding a similar warning that led to a patch release for one of Firebase's dependencies.  Considering you're on 8.9.1; however, it seems likely you have the latest updates. Could you share your Podfile.lock so I can take a closer look? Thanks!

Hi @ncooke3,
You can find Podfile.lock in the attached file
Podfile.lock.zip
.

The Podfile.lock looks up to date with versions that should have the Firebase instance of the NSKeyedUnarchiver bug resolved.
Are you able to isolate the log to a specific line?

After i have checked the issue, i have found that it is caused by the Facebook SDK initializer in AppDelegate as follows.
`@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
ApplicationDelegate.shared.application(application, didFinishLaunchingWithOptions: launchOptions)
}
}`
After i have disabled, ApplicationDelegate.shared.application(application, didFinishLaunchingWithOptions: launchOptions), it has stopped warning.

@Sunrise17 Thanks for sharing the resolution!


Fixed modifier order.

I fixed the order of the modifiers and removed obsolete white spaces.

To be honest: The queue already was static. This is a minor pull request with coding style changes only. My IDE complains about the oder of the modifiers of the queue so I changed that.

Great, thank you.


Fixed a double negative

no model valie is not specified

Merged into https://github.com/angular-ui/bootstrap/commit/2724b46282bf38d63b24a7c366fc68e285758cac


Appcenter's @types/node clash with @types/react-native

Appcenter pulls in @types/node which clashes with @types/react-native which re-defines some of the functionality from @types/node which ends up with a lot of compiler errors.
I'm not sure the best way to resolve this?
See https://github.com/DefinitelyTyped/DefinitelyTyped/issues/15960 for related topic.

Hey @hojberg, I'm sorry, I don't quite understand what you mean. Did you mean "App Center pulls in crashes that re-defines the functionality that results in a lot of compiler errors"? Would you mind please rephrasing your question? :)

@amchew Appcenter pulls in a dependency that pulls in @types/node. @types/react-native has similar definitions to that. Specifically they both define require which causes compilation errors (see the DefinitelyType issue I linked)
I think this PR: I think https://github.com/Microsoft/appcenter-cli/pull/424 fixes the issue by moving the dependency, but there does not seem to be a release out yet.
Errors are like linked in the issue:
../node_modules/@types/node/index.d.ts(49,13): error TS2451: Cannot redeclare block-scoped variable 'global'.
../node_modules/@types/node/index.d.ts(73,13): error TS2300: Duplicate identifier 'require'.
../node_modules/@types/react-native/index.d.ts(8541,11): error TS2451: Cannot redeclare block-scoped variable 'global'.
../node_modules/@types/react-native/index.d.ts(8542,14): error TS2300: Duplicate identifier 'require'.

@hojberg What are you trying to do here? Are you trying to build the appcenter cli into a react native app?

We're using the appcenter-cli for automated deploys and want to add it to our package as a dev dependency for our deploy tools to work with it.
We got around this with a sub folder install. Either way I think the PR that i mentioned fixes this as it moved the dependencies around, but has not been released yet.

That PR should have been released in version 1.0.16. I just released 1.0.17, please give that one a try.
Although with this scenario I think the sub folder install would be the supported way to do this sort of thing - I don't want to commit to maintaining compatibility with arbitrary other packages that somebody might embed the code into.

Hey @hojberg, our CLI v1.0.17 was just released on May 17 - could you please give that a try? It should solve your issue - let us know if not.

Hmm it did not, I had thought having the dependency in dev would have solved this. For now i've gone with the sub folder solution.


AI: Generate bio prompt

For generating identity sets, which could possibly be NFT'd, we need a prompt that will generate them out of useful examples. It can be prefixed by appropriate lore, but we would need to keep it tight to allow at least a full generation to complete before we run out of tokens.

Blocked on rounded logo design.

I've been using (not AI generated):
# Classes

Artist: Drawing, modeling, producing music, performing
Booster: Collecting cards, promoting, streaming
Hacker: Programming, creating objects, creating spaces
Parascientist: Writing lore, interacting with the AI, metaphysics ideas and planning
Linker: Connects people, greets them, makes introductions, helps out with production

# Character Bio

Name: Scillia Dodge
Username: sdcru
Class: Booster
Favorite weapon: sword
Description: A drop hunter on a quest to get to the end of the street. She wants to slay the Basilisk.
Style: Sporty but a little mismatched, showing off her loot
Homespace: A penthouse apartment with a lot of glass looking out onto the city. There are holographic fish swimming around. It is messy but not dirty.
Activities: Running around juiced up on ability enhancing potions.
Favorite food: Pizza
Favorite time of day: sunset, because it looks cool
Likes: Drop storms, being the best she can be, swords, loot, potions, fantastical animals
Dislikes: Slow people, vehicles, slime, people who call her a booster

Looking for review of the catagories.

I think parascientist is too long of a name, scientist would be better.

Yeah I had that as well, but Scientist is less of an accurate descriptor.
But I guess if you are "discovering" the metaphysics then it makes sense...

I changed it to Scientist.

Welcome to the Webaverse Discord server. Please select as many roles which describe you.

:art: Artist
Drawing, modeling, producing music, performing

:tools: Hacker
Programming, creating objects, creating spaces

:writing_hand: Scientist
Writing lore, interacting with the AI, metaphysics ideas and planning

:bridge_at_night: Linker
Connects people, greets them, makes introductions, helps out with production


Using existing VPC for NICs

having 8 NICs, We're trying to add all 8 internal NICs (none are external) using existing VPCs, one of them is dedicated for HA-SYNC and the remaings have ILB for each NIC
Appreciate your support to give another example on using an existing VPC as you did for VPC_protected.

Hi @aymanelbacha-ismena ,
Thanks for raising this issue.
I need a bit more clarity on the requirement to "add all 8 internal NICs using existing VPCs"?
Are you suggesting that the Terraform project should not create any new VPCs and ILBs, and instead utilize the existing infrastructure?
Here are two conceptual diagrams to illustrate potential implementations:
The first one is similar to the autoscale_fgt_lb_sandwich, and the Terraform project will create 8 VPCs and 7 ILBs for you.

As for the second one, the Terraform project will not create any VPCs; rather, it will configure NICs to connect with your pre-existing VPCs. (The structure of existing VPCs depends on your implementation. The structure of VPC1 and VPC2 are different in this diagram.)

I think the second diagram better fits your current needs. Do you need Internet access? Please provide further details to help us tailor an example that best fits your needs.
Thanks,
Dux

Hi Dux,
I realllyy appreaciate the effort of sharing the above !! really intrested the way you put this code for auto-scale
Indeed, I am trying to add/merge the code to GCP fast fabric(VPC, firewall rules as well peering already created), where it should connect to pre-existing VPCs, where their would be an option in the tfvars under the list of network interfaces for example to specify subnets and VPCs already created
So I suggest if the following can be added:

removal of public IP and external load balancer, since it will be an internal/DC Firewall
ILB for each NIC except for HA sync as not routes will be involved
Custom routes where the forwarders created are the next hopes

Let me know if that answers your doubts
I'd like to share that better to make a condition on the password, since it will fail to reset since it won't conform with password policy and I have increased the timeout to 60 seconds in the function

Hi Dux,
I really appreciate your effort and prompt support since day 1.
indeed, your description mentioned above clearly describe of what we except to have in our Landing Zone.
Looking to hear from you on the status of this release since customer is looking to have it working as expected the soonest
Thanks,
Ayman

Hi Dux,
Having said that "This Github project is expected to be updated every two months"
We're wondering about the status of our shared request sent 2 months ago.
is there any info you'd like us to share
Thanks
Ayman

Hi @aymanelbacha-ismena,
Sorry for not updating recently. A new example "autoscale_fgt_as_hub" has been developed and is now in the QA process. This example is expected to be released next week (before 11/15).
Here is the previous document
Any suggestions are welcome. I will bring more code information next workday.
Thanks,
Dux

We are fine-tuning this example now. and the new example is expected to be released before 11/15.
You can check the "autoscale_fgt_as_hub.md" in preview version document to see more deployment details about this project.
When this example is released, you need to specify following variables to deploy the new example "autoscale_fgt_as_hub".
# Project variables
project = "<YOUR-OWN-VALUE>"        # Your GCP project name.
prefix  = "fgt-hub"                 # Prefix of the resources in this project. It should be unique to avoid name conflict between projects.
region  = "<YOUR-OWN-VALUE>"        # e.g., "us-central1"
# zone  = "<YOUR-OWN-VALUE>"        # e.g., "us-central1-a". Deploy FortiGates in a signle zone.
zones   = ["<YOUR-OWN-VALUE-1>",    # e.g., ["us-central1-b", "us-central1-c"]. Deploy FortiGates across multiple zones.
           "<YOUR-OWN-VALUE-2>"]
                                    # Variable "zone" is mutually exclusive with variable "zones".
                                    # If neither is specified, GCP will select 3 zones for you.

# FortiGate variables
fgt_password = "<YOUR-OWN-VALUE>"   # Your own value (at least 8 characters), or this terraform project will create one for you.
machine_type = "n1-standard-4"      # The Virtual Machine type to deploy FGT.

# FortiGate image.
# You can use "image_type" to deploy the latest public FortiGate image, or use "image_source" to deploy the custom image.
# One of the variables "image_type" and "image_source" must be provided, otherwise an error occurs.
# If both are provided, "image_source" will be used, and "image_type" will be ignored.
image_type   = "fortigate-76-byol"  # The type of public FortiGate Image.
                                    # fortigate-76-byol: bring your own licenses, you need to specify cloud_function->license_source;
                                    # fortigate-76-payg: pay as you go, you don't need to specify license_source.
# image_source = "projects/fortigcp-project-001/global/images/fortinet-fgt-760-20240726-001-w-license"  # The source of the custom image.

# Additional disk (Optional)
# additional_disk = {
#   size = 50                       # Log disk size (GB) for each FGT. If set to 0, no additional log disk is created.
#   type = "pd-standard"            # The Google Compute Engine disk type. Such as "pd-ssd", "local-ssd", "pd-balanced" or "pd-standard".
# }

# Network
network_interfaces = [
  # Port 1 of your FortiGate. This interface has one internal load balancer (ilb), and a route to the ilb.
  {
    network_name  = "user1-network"        # Name of your network.
    subnet_name   = "user1-subnet"         # Name of your subnet.
    has_public_ip = true                   # Whether FortiGates in this network have public IP. Default is false.
    internal_lb = {                        # If "internal_lb" is specified, an internal load balancer will be created in the "subnet_name" subnet.
      ip_range_route_to_lb = "<IP_ADDRESS>/8"  # If "ip_range_route_to_lb" is specified, a route will be created in the "subnet_name" subnet.
                                           # And all traffic to "ip_range_route_to_lb" will be routed to the internal load balancer (ilb) in this subnet.
    }
  },
  # Port 2 of your FortiGate. This interface has one internal load balancer (ilb), and a route to the ilb.
  {
    network_name = "user2-network"
    subnet_name  = "user2-subnet"
    internal_lb = {
      ip_range_route_to_lb = "<IP_ADDRESS>/8"
    }
  },
  # Port 3 of your FortiGate. This interface has one internal load balancer (ilb), and a route to the ilb.
  {
    network_name = "user3-network"
    subnet_name  = "user3-subnet"
    internal_lb = {
      ip_range_route_to_lb = "<IP_ADDRESS>/8"
    }
  },
  # Port 4 of your FortiGate. This interface doesn't specify "internal_lb", so no ilb and route to ilb will be created.
  {
    network_name = "user4-network"
    subnet_name  = "user4-subnet"
  }
]
network_tags = ["<YOUR-OWN-VALUE1>", "<YOUR-OWN-VALUE2>"]  # The list of network tags attached to FortiGates.
ha_sync_interface = "port4"                # Please make sure you at least have N interfaces specified in "network_interfaces" if you set it to "portN".

# Cloud function (Manage FGT synchronization and inject license to FGT.)
cloud_function = {
  cloud_func_interface = "port1"           # To communicate with FGTs, the Cloud Function must be connected to the VPC where FGTs also exist.
                                           # By default, this project assumes the Cloud Function connects to the first VPC you specified in "network_interfaces", and configure your FGTs through port1.
                                           # You can also set it to "port2", "port3", ..., "port8" to force the Cloud Function to connect to other VPC and communicate with your FortiGates through that port.
                                           # But you need to specify the corresponding route of FGTs in "config_script" or "config_file" so FGTs can reply to the Cloud Function requests from "cloud_function.function_ip_range".
  function_ip_range   = "<IP_ADDRESS>/28"   # Cloud function needs to have its own CIDR ip range ending with "/28", which cannot be used by other resources.
  license_source      = "file"             # The source of license if your image_type is "fortigate-xx-byol".
                                           # Possible value: "none", "fortiflex", "file", "file_fortiflex"
  license_file_folder = "./licenses"       # The folder where all ".lic" license files are located.
  autoscale_psksecret = "<RANDOM-STRING>"  # The secret key used to synchronize information between FortiGates. If not set, the module will randomly generate a 16-character secret key.
  logging_level       = "INFO"             # Verbosity of logs. Possible values include "NONE", "ERROR", "WARN", "INFO", "DEBUG", and "TRACE". You can find logs in Google Cloud Logs Explorer.
  # Specify fortiflex parameters if license_source is "fortiflex" or "file_fortiflex"
  # fortiflex = {
  #   retrieve_mode = "use_active"           # How to retrieve an existing fortiflex license (entitlement)
  #                                          # "use_stopped" selects and reactivates a stopped entitlement where the description field is empty;
  #                                          # "use_active" selects one active and unused entitlement where the description field is empty.
  #   username      = "<YOUR-OWN-VALUE>"     # The username of your FortiFlex account.
  #   password      = "<YOUR-OWN-VALUE>"     # The password of your FortiFlex account.
  #   config        = <YOUR-OWN-VALUE>       # The config ID of your FortiFlex configuration.
  # }

  # This parameter controls the instance that runs the cloud function.
  service_config = {
    max_instance_count               = 1    # The limit on the maximum number of function instances that may coexist at a given time.
    max_instance_request_concurrency = 3    # Sets the maximum number of concurrent requests that one cloud function can handle at the same time.
    available_cpu                    = "1"  # The number of CPUs used in a single container instance.
    available_memory                 = "1G" # The amount of memory available for a function.
    timeout_seconds                  = 420  # The function execution timeout.
  }
}

# Autoscaler (When to autoscale and the maximum number of instances.)
autoscaler = {
  max_instances     = 4     # The maximum number of FGT instances
  min_instances     = 3     # The minimum number of FGT instances
  cooldown_period   = 360   # Specify how long (seconds) it takes for FGT to initialize from boot time until it is ready to serve.
  cpu_utilization   = 0.8   # Autoscaling signal. If CPU utilization is above this value, Google Cloud will create new FGT instances.
  health_check_port = 8008  # The port used for health checks by autohealing.
                            # Autohealing recreates VM instances if your application cannot be reached by the health check.

}

# Additional FGT configuration script. Modify config_script based on your needs.
# NOTE: After deploying this terraform project, changing the variable config_script (and contents in config_file) will not change the FortiGate configuration.
# The following script is just an example: it allows all traffic between port1 and port2.
config_script = <<EOF
config firewall policy
    # Allow all port2 to port1 traffic
    edit 0
        set name "port2_to_port1"
        set srcintf "port2"
        set dstintf "port1"
        set action accept
        set srcaddr "all"
        set dstaddr "all"
        set schedule "always"
        set service "ALL"
    next
    # Allow all port1 to port2 traffic
    edit 0
        set name "port1_to_port2"
        set srcintf "port1"
        set dstintf "port2"
        set action accept
        set srcaddr "all"
        set dstaddr "all"
        set schedule "always"
        set service "ALL"
    next
    # Allow all port2 to port2 traffic
    edit 0
        set name "port2_to_port2"
        set srcintf "port2"
        set dstintf "port2"
        set action accept
        set srcaddr "all"
        set dstaddr "all"
        set schedule "always"
        set service "ALL"
    next
    # Allow all port1 to port1 traffic
    edit 0
        set name "port1_to_port1"
        set srcintf "port1"
        set dstintf "port1"
        set action accept
        set srcaddr "all"
        set dstaddr "all"
        set schedule "always"
        set service "ALL"
    next
end
EOF

# In addition to the variable config_script, you can also save the configuration script as a file and upload the script using the variable config_file.
# If you specify both config_script and config_file, this terraform project will upload both of them.
# config_file = "<YOUR-OWN-VALUE>" # e.g., your_config_file.conf

Based on your request, you can use "ha_sync_interface" to specify the HA-SYNC port.
ha_sync_interface = "port4"

You can use following script to specify 4 NICs (This example supports 8 NICs at most),
The first NICs of all FortiGates connect to the subnet "user1-subnet" (must exist before using this example) of VPC "user1-network"....

This example will create a new internal load balancer If you specify "internal_lb".
This example will create a custom route where the front of ILB is the next hop If you specify "internal_lb.ip_range_route_to_lb ".
This example will not create any ILB or custom route if you don't specify "internal_lb" (Like port4)

network_interfaces = [
  # Port 1 of your FortiGate. This interface has one internal load balancer (ilb), and a route to the ilb.
  {
    network_name  = "user1-network"        # Name of your network.
    subnet_name   = "user1-subnet"         # Name of your subnet.
    has_public_ip = true                   # Whether FortiGates in this network have public IP. Default is false.
    internal_lb = {                        # If "internal_lb" is specified, an internal load balancer will be created in the "subnet_name" subnet.
      ip_range_route_to_lb = "<IP_ADDRESS>/8"  # If "ip_range_route_to_lb" is specified, a route will be created in the "subnet_name" subnet.
                                           # And all traffic to "ip_range_route_to_lb" will be routed to the internal load balancer (ilb) in this subnet.
    }
  },
  # Port 2 of your FortiGate. This interface has one internal load balancer (ilb), and a route to the ilb.
  {
    network_name = "user2-network"
    subnet_name  = "user2-subnet"
    internal_lb = {
      ip_range_route_to_lb = "<IP_ADDRESS>/8"
    }
  },
  # Port 3 of your FortiGate. This interface has one internal load balancer (ilb), and a route to the ilb.
  {
    network_name = "user3-network"
    subnet_name  = "user3-subnet"
    internal_lb = {
      ip_range_route_to_lb = "<IP_ADDRESS>/8"
    }
  },
  # Port 4 of your FortiGate. This interface doesn't specify "internal_lb", so no ilb and route to ilb will be created.
  {
    network_name = "user4-network"
    subnet_name  = "user4-subnet"
  }
]

I will update this GitHub Issue once we release the new version.

Hi @aymanelbacha-ismena,
The new example has been released. You can use this example to deploy a FortiGate Autoscale Group and connect your existing VPCs.
Please feel free to let me know if you have any questions regarding this example.
Best regards,
Dux

Hi Ayman,
Thanks for reaching out. I'm pleased to answer your question.
[For the first configuration problem, I may need more detailed information.]
"config_script" and "config_file" are only used for initialization. Once your autoscale group is created, you can modify the primary FGT for further configuration (and please do backup/restore on this primary FGT). And the primary FGT will automatically send the configuration to the secondary FGTs. And for the newly created secondary FGT, its initial config might be defined by the "config_script" and "config_file", but then, the "Cloud Function" will tell it to sync with the primary, it may take some time (usually few minutes) for the secondary FGTs get configuration data from the primary FGTs and finally have the same configuration as the primary FGT.
Both "autoscale_fgt_lb_sandwich" and "autoscale_fgt_as_hub" examples have the variable "autoscaler->cooldown_period", which allows you to specify how long (seconds) it takes for the secondary FGTs to initialize and sync configuration until it is ready to serve.
[For the "create static route to the connector subnet"]
If you mean the route to your existing VPC: the cloud function automatically creates them.
(The cloud function is a key component of both "autoscale_fgt_lb_sandwich" and "autoscale_fgt_as_hub" examples. The cloud function helps you manage primary-secondary FGTs selection, sends necessary configurations to FGTs, and licenses FGTs for you.)

If you mean the route to the cloud function:
The cloud function needs to have its only IP range and it needs the resource "google_vpc_access_connector" to connect to one of your existing VPCs.
By default, the cloud function connects to your first VPC (cloud_func_interface = "port1").
In this example document, I set (function_ip_range   = "<IP_ADDRESS>/28"), so the IP range of the cloud function is  "<IP_ADDRESS>/28".
Your FGTs need to route function_ip_range ("<IP_ADDRESS>/28") to cloud_func_interface("port1").
In the example document, "port1" is the default route port, and all unmatched traffic will be sent to the default route (It may not be true in your scenario), therefore, I ignored the static route for the cloud function.
The ignored route for the cloud function should be:
config router static
  edit 0
    set device port1   # port1 is the value of "cloud_func_interface"
    set gateway <IP_ADDRESS>   # <IP_ADDRESS> is the gateway of your existing VPC connecting to port1
    set dst <IP_ADDRESS>/28  # <IP_ADDRESS>/28 is "function_ip_range"
  next
end

If your "cloud_func_interface" is port1, usually, you can ignore the above script. However, if your "cloud_func_interface" is "port2", "port3"..., please add the above script so "FGTs can reply to the Cloud Function requests from "cloud_function.function_ip_range"".
Once you deploy the Terraform project, if your FGT password is still its "Instance Id" and not the value you specified in "fgt_password", it may indicate the cloud function can't connect with the FGTs, and it is possible because the above route is missing.
Regards,
Dux

hi Dux,
Thanks for your reply.
even though there's no static route, instance's pass is updated
I added the route to the VPC connector trying to solve the syncing issue whenever new secondary device is added, I dont see the route added neither on the primary nor the secondary, thus, still config is not synced
Do I still have something missing
The below is used for the config
config_script = <<EOF
config router static
edit 100
set device port1   # port1 is the value of "cloud_func_interface"
set gateway <IP_ADDRESS>   # <IP_ADDRESS> is the gateway of your existing VPC connecting to port1
set dst <IP_ADDRESS>/28  # <IP_ADDRESS>/28 is "function_ip_range"
next
end
EOF
Moreover, I am using existing ILB so that I don't recreate routes, while changing the backend to the new instance group,
I am only updating the env variables list of ILB and redeploy.
A screenshot is attached showing the logs for both primary and secondary

Hi @aymanelbacha-ismena,
[About Cloud Function]
Based on the log screenshot, the Cloud Function works well, it can connect your FGTs and send the initial configuration to your FGTs. And since you said "even though there's no static route, instance's pass is updated", the "config router static" script is optional.
[About router static]
You mentioned "I dont see the route added neither on the primary nor the secondary", do you mean you added
config_script = <<EOF
config router static
edit 100
set device port1 # port1 is the value of "cloud_func_interface"
set gateway <IP_ADDRESS> # <IP_ADDRESS> is the gateway of your existing VPC connecting to port1
set dst <IP_ADDRESS>/28 # <IP_ADDRESS>/28 is "function_ip_range"
next
end
EOF

But when you check the router static of the FGT, the FGT doesn't have this rule?
There are two possible reasons I could imagine:

The grammar of some scripts in your "config_script"/"config_file" is incorrect, and the FGT could not parse parts of those incorrect scripts, so those incorrect scripts are ignored. For example:

config system interface
...
# missing end
config router static #<- doesn't work, because you are still in the "config system interface"
...

 Changing the contents in "config_script"/"config_file" won't change the config of deployed FGTs. So if you try to change the "config_script" after the project has been deployed, it doesn't work.

[About sync]
Please check the port used for sync.
ha_sync_interface = "port4"

In this example, port4 is used to synchronize information.
It may be a problem if, for example, your FGTs only have 2 ports yet you set port4 as ha_sync_interface.
Please also check whether the FGTs are synchronized by checking the GUI:
The primary FGT should look like:

The secondary FGTs should look like:

And if you change the Firewall rules/route static... in the primary FGT through GUI, the secondary FGT will be changed automatically and quickly (I would say, usually, less than 5 seconds).
[Others]
You mentioned "Moreover, I am using existing ILB so that I don't recreate routes, while changing the backend to the new instance group, I am only updating the env variables list of ILB and redeploy."
This may cause a problem since the environment variable ILB is used in the FGT initialization: When one new FGT is created, the Cloud Function will read all environment variables, generate a corresponding config script, and send it to the FortiGate.
So the following steps may cause a problem:

New FGT is created, and the cloud function sends the config script to the FGT with the old ILB value.
You change the environment variable ILB to a new value and change the backend of your ILB to the new instance group.
This results in the config of FGT using an old ILB value, which is different from the ILB you are using in real.

I will do further research to figure out whether it is possible to use existing ILB.
Best,
Dux

hi Dux,
Unfortunatley after a lot of retries, the result is the same, no sync between secondary and primary.
Although route is added into both to connect to the VPC connector.
The only change I added from your tfvars, is having 8 NIC, commenting the routes, attached
as well I have updated the main.py, so the HA-sync and default route NIC are updated.
I have hardcoded the ILB_IP_LIST  in function.tf as jsonencode(["<IP_ADDRESS>","<IP_ADDRESS>","<IP_ADDRESS>","<IP_ADDRESS>","<IP_ADDRESS>","","","<IP_ADDRESS>"])
the 2 unused are for mgmt and ha-sync, since they don't have ILB.
Moreover I have that the psk encyrpted pass is different on both for the HA-sync (could it be related for not syncing?)
Appreciate your support and your guidance, if you'd like we can connect on quick gmeet
terraform.txt


Bug? Same message is received over and over

We have a strange issue where under load over 200K RPS one of grain instances starts receiving the same request over and over. I'm sure that we don't send this request multiple times. And of course responses from such repeated requests never reach original request sender. We run everything on the same machine without remoting. The issue appears usually after few minutes of load when I use Release configuration and run without debugging (but later I attach after the issue reproduces).
Can you suggest where to start debugging it?
    <PackageReference Include="Proto.Actor" Version="1.1.0" />
    <PackageReference Include="Proto.Cluster" Version="1.1.0" />
    <PackageReference Include="Proto.Cluster.CodeGen" Version="1.1.0" />
    <PackageReference Include="Proto.Cluster.Consul" Version="1.1.0" />
    <PackageReference Include="Proto.Cluster.Dashboard" Version="1.1.0" />
    <PackageReference Include="Proto.Cluster.Kubernetes" Version="1.1.0" />
    <PackageReference Include="Proto.Cluster.TestProvider" Version="1.1.0" />
    <PackageReference Include="Proto.OpenTelemetry" Version="1.1.0" />
    <PackageReference Include="Proto.OpenTracing" Version="0.27.0" />
    <PackageReference Include="Proto.Persistence" Version="1.1.0" />
    <PackageReference Include="Proto.Remote" Version="1.1.0" />

This sounds like a serious bug.
Have you been able to reproduce it in any other conditions than just high load?

My colleague reported something similar during debugging but it could be caused by different reasons like timeouts due to debugger pauses. I don't know any other ways to reproduce it without high load.
The setup is pretty simple: 3 virtual actor types but only one is actually used. This actor has 3000 instances and requests are spread among them. The actor handles two types of requests: place order and cancel order. The benchmark sends up to 256 requests simultaneously without waiting for results (limited by SemaphoreSlim). The bug occurs only when I run without a debugger attached. I added Debugger.Launch call in place where duplicate order id gets detected. The counter in DefaultClusterContext.RequestAsync goes higher than 600000 at that time for this specific request.

Many thanks for the report.
Using actorSystemConfig.SharedFutures = false is safe and is the original behavior, so you can keep using that for now.
It's just a bit slower due to the allocation/deallocation of PIDs per Future.
I'm still trying to figure out what causes this, if it is inside the shared future implementation itself.
I'll report my findings here

I am not sure how much it relates to this, but we get these exceptions every now and then in production servers:
System.IndexOutOfRangeException: Index was outside the bounds of the array.
   at Proto.Future.SharedFutureProcess.Cancel(UInt32 requestId)
   at Proto.SenderContextExtensions.RequestAsync[T](ISenderContext self, PID target, Object message, CancellationToken cancellationToken)
   at Proto.SenderContextExtensions.RequestAsync[T](ISenderContext self, PID target, Object message, TimeSpan timeout)
   ....

System.IndexOutOfRangeException: Index was outside the bounds of the array.
   at Proto.Future.SharedFutureProcess.SendUserMessage(PID pid, Object message)
   ....

@rogeralsing I hope the callstacks help in some way.
We have been ignoring it as it didn't result in messages being processed again and again for us.
I guess we will also disable shared futures and deploy that way.
One thing to note is that we get these exceptions even though our per-actor throughput doesn't exceed 200 msgs/sec.

@AqlaSolutions Could you share a reproducing example? Trying to reproduce with just high load on shared futures has come up empty here, no issues.

@mhelleborg I'm not sure cause NDA, you know... Also it will require some time to prepare and minimize it. I will let you know if I get the permission.

I am having a similar problem. The OnReceive function keeps getting the same message over and over again if I send the message as follows:
ActorSystemHelper.fSystem.Cluster().RequestAsync<object>(request.DeviceID, "FieldbusWorker_" + device.Gateway.Oid, "STOP", CancellationToken.None);
However, if I send it with the function index, the problem does not occur:
ActorSystemHelper.fSystem.Cluster().RequestAsync<object>(request.DeviceID, "FieldbusWorker_" + device.Gateway.Oid, new GrainRequestMessage(2,null), CancellationToken.None);

the source code to reproduce the problem described by AqlaSolutions in the attachment
shared_futures_repro_2.zip

Just run project benchmarks/PrototypeBenchmark from BEP.sln solution  without debugger and in Release configuration.
After a few minutes (may require several runs) you will see the message:

Order 12345 for market abc_def was already processed

I'm running the example right now and the first thing that comes to mind is that you are probably queueing up a lot of fire and forget tasks on the threadpool
.5987 RPS, 99% latency 17,61 ms, 95% latency 9,39 ms, max latency 167,61 ms
...60692 RPS, 99% latency 15,4 ms, 95% latency 6,51 ms, max latency 610,77 ms
...44698 RPS, 99% latency 20,9 ms, 95% latency 9,33 ms, max latency 745,69 ms
..35911 RPS, 99% latency 28,62 ms, 95% latency 11,54 ms, max latency 725,73 ms
.27488 RPS, 99% latency 33,26 ms, 95% latency 15,39 ms, max latency 999,47 ms
..31520 RPS, 99% latency 22,41 ms, 95% latency 11,55 ms, max latency 975,2 ms
.19651 RPS, 99% latency 39,24 ms, 95% latency 20,35 ms, max latency 1050,25 ms
.19856 RPS, 99% latency 39,76 ms, 95% latency 17,88 ms, max latency 1366,85 ms

The increasing latency might be that the threadpool is busy with other tasks.
e.g.
omsGrain.ProccedExecutionReport(omsRequest, CancellationToken.None).AndForget(TaskOption.Safe);

Eventually, the entire threadpool queue might be filled with this kind of tasks.
I'll dig deeper later today, but the increasing latency is very suspicious.

@rogeralsing  In this issue repro we don't have ProccedExecutionReport method. May be you meant to post here https://github.com/asynkron/protoactor-dotnet/issues/1977

yes 👍🏻


Const Metrics / Custom Collectors

Hi,
Thanks for creating an official Rust crate for Prometheus. :)
I'm wondering how we should handle Const Metrics with this crate. Are these supported at the moment? If they are, it's a little non-obvious.
My use case is for exporting counters from the operating system. The OS itself guarantees that these are always increasing (unless the counter wraps, etc), but they're difficult to export with only the inc and inc_by methods as additional variables must be maintained to work out the difference between the old OS counter and the current OS counter, so we can finally inc_by.
If Const Metrics are not currently supported, please consider this a feature request.
Thanks!

Thanks for creating an official Rust crate for Prometheus. :)

Happy that it is of some use :heart:

My use case is for exporting counters from the operating system. The OS itself guarantees that these are always increasing (unless the counter wraps, etc), but they're difficult to export with only the inc and inc_by methods as additional variables must be maintained to work out the difference between the old OS counter and the current OS counter, so we can finally inc_by.

In this particular use-case, would a metric type called constant not be misleading? In other words, the use-case here produces a non-constant metric, thus one would not expect to be using a metric type with const in its name, no?
The crate allows you to access the inner (atomic) type of a Counter via Counter::inner which then allows you to set the value of the counter. The API contract though is, that you uphold the guarantees of a Prometheus Counter:
    /// Exposes the inner atomic type of the [`Counter`].
    ///
    /// This should only be used for advanced use-cases which are not directly
    /// supported by the library.
    ///
    /// The caller of this function has to uphold the property of an Open
    /// Metrics counter namely that the value is monotonically increasing, i.e.
    /// either stays the same or increases.
    pub fn inner(&self) -> &A {

With this little trick in mind, would the following work for you?
let counter: Counter = Counter::default();

// Register the counter with a registry.

// Update the counter value to represent the OS value.
counter.inner().store(os_value);

In addition to achieving your goal, your metric would also properly be tagged with the OpenMetrics Counter type.

If they are, it's a little non-obvious.

I agree that this is not obvious. On top of that, there is an additional solution to the same problem, namely to implement EncodeMetric on a custom type, though I would argue that is over-engineered for your use-case. I am happy for any suggestions to make this more intuitive, as a start, a simple example using the initial proposal above might suffice.

In this particular use-case, would a metric type called constant not be misleading?

I agree, but that's the terminology in the official Go Prometheus client, see for example the mysql_exporter where it used for exporting counters from the database itself, or node_exporter where it's used for host CPU stats.
The examples from the linked Const Metrics Golang documentation also mention the use case of using const metrics for external values.
It appears to be "const" because after you create it there are no methods to do fancy things (inc, set, etc), you just get an exportable metric that lasts some short period of time (probably until you're done with the scrape). This matches the comment for the type:
// NewConstMetric returns a metric with one fixed value that cannot be
// changed. Users of this package will not have much use for it in regular
// operations. However, when implementing custom Collectors, it is useful as a
// throw-away metric that is generated on the fly to send it to Prometheus in
// the Collect method.

The Python client calls them Custom Collectors which is probably a less confusing name, and also registers the custom collector with the registry.  The Python version seems far clearer in intent and usage.

On top of that, there is an additional solution to the same problem, namely to implement EncodeMetric on a custom type, though I would argue that is over-engineered for your use-case.

That's actually a pretty interesting approach, and one I may try out. It would probably simplify my existing code quite a bit by taking care of a few weird edge cases.
For now, as long as rust counter.inner().store(value); works and doesn't mind the occasional reset (my interpretation of "A MetricPoint in a Metric's Counter's Total MAY reset to 0. If present, the corresponding Created time MUST also be set to the timestamp of the reset." leads me to believe it should be fine), then this should be good enough.
Thanks a lot for the discussion :)

Looking at the EncodeMetric stuff, an example in this area would be appreciated. I was trying to write one myself to contribute, but I'm bumping into issues while looking at how other types get encoded as they're able to use private methods from certain structs/traits.
For example, when looking at how existing Counters are encoded there's an issue due to no_bucket and encode_value being private. I'm unsure if those being private are bugs, or if I'm going about the encoding the wrong way.

Oh my bad. Thanks @phyber for raising this.
Would you mind giving https://github.com/prometheus/client_rust/pull/41 a review? It exposes the methods and adds an example on how to implement a custom metric type.

With #41 merged, can this crate support your use-case now @phyber?

Possibly. I'm going to have to take a while and try to adapt it to something much closer to what I'm actually doing at the moment. My actual code that's going to use this is at jail_exporter/exporter.rs. This is an exporter for FreeBSD jails, it currently uses the tikv/prometheus crate.
Most of the metrics there will be easy to adapt, they're simple gauges and don't need anything fancy. The cputime_seconds_total and the wallclock_seconds_total are the metrics that require custom collectors, since I'm exporting OS counters.
I also need the ability to remove label sets from a metric family, I'm not sure that this is implemented yet. This is because jails may come and go while the exporter is running.
In the tests and some code there, you can see the horrific counter bookkeeping that this custom collector feature should help me avoid. :)

I'm going to have to take a while and try to adapt it to something much closer to what I'm actually doing at the moment. My actual code that's going to use this is at jail_exporter/exporter.rs

Feel free to tag me on any pull request for a review in case I can be of some help.

I also need the ability to remove label sets from a metric family, I'm not sure that this is implemented yet. This is because jails may come and go while the exporter is running.

Correct. That is not supported today, though is easy to add as one only has to expose HashMap::remove on Family::metrics:
https://github.com/prometheus/client_rust/blob/16aa166225a54759db96431b73f9b6b5045e75bb/src/metrics/family.rs#L100-L101

Cross referencing proposal here: https://github.com/prometheus/client_rust/pull/82

Thanks, that proposal is looking good. I may also have a PR shortly for the HashMap::remove stuff to allow us to remove labels sets from a metric family.

You definitely can't reset a counter to 0 arbitrarily :) A counter can only be incremented, it must never be decremented or set to an arbitrary value, resets to 0 are acceptable under the assumption that the process hosting that counter has restarted.


Implement an NDArray compression interface

An interface for compressing NDArrays has multiple uses:

Reducing file size (for example, saving w2v models, or for distribution (mobile, etc))
Spark training (to reduce data transfers over the network - for example, FP16)
Compression for storing network predictions (for example, in a database)

Having a general purpose compression interface would be useful.
Some implementations would be lossless (zip, etc) while others would be lossy (conversion to fp16).
The expectation here is that compression of INDArrays is a storage only mechanism; we'd need to decompress them in order to actually use them.

Added in various PRs earlier.
https://github.com/deeplearning4j/nd4j/search?utf8=✓&q=compression


Change the shape of the legend in density plots with ggplot2

to change boxes shown in the density plot legend into lines, and I understand I need to use guides. However, the following codes are not working:
> set.seed(0)
> library(ggplot2)
> df <- data.frame(Income=c(rnorm(500,1000,200),rnorm(500,900,10)),Type=c(rep("A",500),rep("K",500)))
> p2p <- ggplot(df,aes(x=Income))+geom_density(aes(colour=Type))+
+   guides(colour = guide_legend(override.aes = list(linetype = 1, shape = 3)))
> p2p

ggplot(df,aes(x=Income))+
  geom_density(aes(colour=Type), show.legend = FALSE)+
  stat_density(aes(x=Income, colour=Type),
               geom="line",position="identity")

Plot


Greenkeeper/mocha 3.5.0

Coverage remained the same at 97.436% when pulling b487455eb6d9ecdda2714669de4012791f346359 on greenkeeper/mocha-3.5.0 into 398abc2ad5a7d1a9b9e710aa0b4f89aa261ca78a on master.


typo: Double word "through"

@nschonni : Thanks for your contribution! The author, @stevestein, has been notified to review your proposed change.

Hi @nschonni , this PR isn't showing any differences on my end. Can you please resubmit? Thanks! #hold-off

Hi @nschonni , just kidding, I found it.. the UI isn't highlighting it for some reason! Thanks again for your contribution! #sign-off

@MashaMSFT: I'm sorry - only the author of this article, @stevestein, can sign off on your changes. But we do have an exception process - if you are on the Microsoft content or product team for this product area, you can ask the PR review team to review and merge it by sending mail to the techdocprs alias.

@MashaMSFT yup, sometimes long lines don't diff that well. The trick I find useful for Markdown is to switch to the "rich diff" and then the works show up as the rendered word add/delete


OneDrive checks the wrong field for the External Sharing permission level

🐛 Summary
OneDrive policy 2.1 checks the OneDriveLoopSharingCapability field to get the value of the external sharing permission level. It should check the OneDriveSharingCapability field instead.
The OneDriveSharingCapability field is not found in the MS documentation for Set-SPOTenant but it was identified as the correct field via testing and I verified that it is in the ProviderSettingsExport.json. The OneDriveLoopSharingCapability field corresponds to a different feature related to the sharing of whiteboards in Teams meetings.
Details
Run the command below and you will see that it enables the ability for OneDrive users to share files externally with Anyone.
set-spotenant -OneDriveSharingCapability ExternalUserAndGuestSharing

Run the command below and you will see that it prevents the ability for OneDrive users to share files externally with Anyone (that option is greyed out).
set-spotenant -OneDriveSharingCapability Disabled

I also verified that changing this setting reflects in the Sharepoint Admin center external sharing slider widget for OneDrive and vice-versa, changing the admin center widget modifies the value of the OneDriveSharingCapability field in ProviderSettingsExport.json.
Addressing this in the Dolphin release
Since there is already a pull request in progress that modifies the respective Rego policy, the fix will be incorporated into that and should not be heavy lift.

Will addresses in PR #122

close as #122 is merged


Refactor reserve to take extra capacity needed

It was only ever used to make sure that there was a certain capacity beyond the current length.