RHOARDOC-1529 Removed link to extraneous file, removed extraneous file, and removed…

@tradej @akoniar @inoxx03
As noted above, removed extra file and removed the link to it. Removed two extra spaces from a table heading. No content changes.

Can one of the admins verify this patch?

@huntley There are merge conflicts, please resolve first.

[test]

The changes in this PR have been merged into master by PR #1299. Closing.


Build gRPC Python with Bazel

I think this is going to be important in a year or so and I'm not sure how long it's going to take, so... now's probably the time to start.

Whoops; forgot that we already had issue 8079. Closing as duplicate.


Is that possible to optimize binary output?

I have successfully compiled and executed the demo client project with TLS on Rust stable version 1.74. When adjusting dependencies such as replacing pretty_env_logger with env_logger (excluding couple morefeatures) and using a minimal subset of Tokio's features, the resulting binary size is still substantial at 2.4 MB for a build after stripping debug symbols.
My target environment is an embedded Linux platform running FreeRTOS, with approximately 18MB of total flash space and around 6-8MB available. The current binary size eating almost 40% of available space, considering the intended simplicity of the MQTT program, akin to a "Hello, world!" equivalent. In the context of Rust binaries, it might not be excessively large, but for my specific use case, it poses challenges. For comparison, the existing MQTT system, written in C using mosquitto, has a total size around 125kB based on pluging.
Reducing the binary size is crucial for me as it necessitates writing four other parts in C if I choose to implement the MQTT components in Rust. While cargo bloat assists in identifying contributing packages, pinpointing specific ones remains challenging. The primary culprits are std (as expected), rustls, and ring, with Tokio following closely. I think there are possibilities to address that.

I propose the following solutions:

Feature-gating additional components, if feasible.
Allowing compatibility with non-Tokio runtimes, such as async-std, smol, etc, or adapting to event loops based on file-descriptors, like Calloop.
Generalizing runtime to be also a pluging, assuming current universal approach

Not sure how hard to implement it but I might help if I understand correct approach


chore(maintain): fix formatting error in package.json

:tada: This PR is included in version 3.0.4 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Crash on CowData

Godot version:
Godot build accc51f3012e0010eba2c56b8ed48c11a0fee3a7
GDProcMesh build 39d39ab74ea4ee06150970e26e004f408e99652b
OS/device including version:
Windows 10, GTX 1060
Issue description:
I don't know if this is specific to my ProcMesh GDNative module or an issue in Godot itself but it's a weird one.
ProcMesh basically uses ArrayMesh to generate meshes. Meshes I've already generated previously work fine, I can alter them, regenerate them, etc. and it all goes well.
But starting with an empty ArrayMesh, setting ProcMesh as the script and then generating a simple box (or anything really) crashes Godot with the following:
OpenGL ES 3.0 Renderer: GeForce GTX 1060/PCIe/SSE2
ERROR: CowData<class RID>::get: FATAL: Index p_index=0 out of size (size()=0)
   At: C:\Users\basti\Development\godot3-git\core/cowdata.h:149
CrashHandlerException: Program crashed
Dumping the backtrace. Please include this when reporting the bug on https://github.com/godotengine/godot/issues
[0] CowData<RID>::get (c:\users\basti\development\godot3-git\core\cowdata.h:149)
[1] Vector<RID>::operator[] (c:\users\basti\development\godot3-git\core\vector.h:85)
[2] RasterizerSceneGLES3::_fill_render_list (c:\users\basti\development\godot3-git\drivers\gles3\rasterizer_scene_gles3.cpp:3170)
[3] RasterizerSceneGLES3::render_scene (c:\users\basti\development\godot3-git\drivers\gles3\rasterizer_scene_gles3.cpp:4147)
[4] VisualServerScene::_render_scene (c:\users\basti\development\godot3-git\servers\visual\visual_server_scene.cpp:2145)
[5] VisualServerScene::render_camera (c:\users\basti\development\godot3-git\servers\visual\visual_server_scene.cpp:1714)
[6] VisualServerViewport::_draw_viewport (c:\users\basti\development\godot3-git\servers\visual\visual_server_viewport.cpp:70)
[7] VisualServerViewport::draw_viewports (c:\users\basti\development\godot3-git\servers\visual\visual_server_viewport.cpp:308)
[8] VisualServerRaster::draw (c:\users\basti\development\godot3-git\servers\visual\visual_server_raster.cpp:107)
[9] VisualServerWrapMT::draw (c:\users\basti\development\godot3-git\servers\visual\visual_server_wrap_mt.cpp:104)
[10] Main::iteration (c:\users\basti\development\godot3-git\main\main.cpp:1874)
[11] OS_Windows::run (c:\users\basti\development\godot3-git\platform\windows\os_windows.cpp:2754)
[12] widechar_main (c:\users\basti\development\godot3-git\platform\windows\godot_win.cpp:150)
[13] _main (c:\users\basti\development\godot3-git\platform\windows\godot_win.cpp:172)
[14] main (c:\users\basti\development\godot3-git\platform\windows\godot_win.cpp:184)
[15] __scrt_common_main_seh (f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:283)
[16] BaseThreadInitThunk
-- END OF BACKTRACE --

Procmesh uses Pools extensively so I'm wondering if the recent changes to how COW is handled has something to do with it. Specifically if some of the pools in the surface array are empty/nil ?
Steps to reproduce:
Easiest way is to clone my current procmesh master: https://github.com/BastiaanOlij/gdprocmesh
It has a compiled 64bit binary and a demo project. Just use the test.tscn then:

select the meshinstance
select the associated mesh
click on the edit procmesh graph button and hook up the output of the "box"
node to the input of the "output" node

Minimal reproduction project:
https://github.com/BastiaanOlij/gdprocmesh

May or may not be related but I just had a similar crash but this time unrelated to GDNative. This was exporting a meshlib:

created a few simple shapes in Blender
exported with better collada
opened dae in Godot
export to meshlib -> crashes

CrashHandlerException: Program crashed
Dumping the backtrace. Please include this when reporting the bug on https://github.com/godotengine/godot/issues
[0] CowData<Ref<Image> >::get (c:\users\basti\development\godot3-git\core\cowdata.h:149)
[1] Vector<Ref<Image> >::operator[] (c:\users\basti\development\godot3-git\core\vector.h:85)
[2] RasterizerStorageGLES3::texture_get_data (c:\users\basti\development\godot3-git\drivers\gles3\rasterizer_storage_gles3.cpp:1036)
[3] VisualServerRaster::texture_get_data (c:\users\basti\development\godot3-git\servers\visual\visual_server_raster.h:153)
[4] VisualServerWrapMT::texture_get_data (c:\users\basti\development\godot3-git\servers\visual\visual_server_wrap_mt.h:88)
[5] EditorInterface::make_mesh_previews (c:\users\basti\development\godot3-git\editor\editor_plugin.cpp:129)
[6] MeshLibraryEditor::_import_scene (c:\users\basti\development\godot3-git\editor\plugins\mesh_library_editor_plugin.cpp:163)
[7] MeshLibraryEditor::update_library_file (c:\users\basti\development\godot3-git\editor\plugins\mesh_library_editor_plugin.cpp:186)
[8] EditorNode::_dialog_action (c:\users\basti\development\godot3-git\editor\editor_node.cpp:1251)
[9] MethodBind1<EditorNode,String>::call (c:\users\basti\development\godot3-git\core\method_bind.gen.inc:815)
[10] Object::call (c:\users\basti\development\godot3-git\core\object.cpp:945)
[11] Object::emit_signal (c:\users\basti\development\godot3-git\core\object.cpp:1231)
[12] Object::emit_signal (c:\users\basti\development\godot3-git\core\object.cpp:1288)
[13] EditorFileDialog::_action_pressed (c:\users\basti\development\godot3-git\editor\editor_file_dialog.cpp:445)
[14] EditorFileDialog::_file_entered (c:\users\basti\development\godot3-git\editor\editor_file_dialog.cpp:231)
[15] MethodBind1<EditorFileDialog,String const &>::call (c:\users\basti\development\godot3-git\core\method_bind.gen.inc:815)
[16] Object::call (c:\users\basti\development\godot3-git\core\object.cpp:945)
[17] Object::emit_signal (c:\users\basti\development\godot3-git\core\object.cpp:1231)
[18] Object::emit_signal (c:\users\basti\development\godot3-git\core\object.cpp:1288)
[19] LineEdit::_gui_input (c:\users\basti\development\godot3-git\scene\gui\line_edit.cpp:269)
[20] MethodBind1<LineEdit,Ref<InputEvent> >::call (c:\users\basti\development\godot3-git\core\method_bind.gen.inc:815)
[21] Object::call_multilevel (c:\users\basti\development\godot3-git\core\object.cpp:779)
[22] Object::call_multilevel (c:\users\basti\development\godot3-git\core\object.cpp:886)
[23] Viewport::_gui_input_event (c:\users\basti\development\godot3-git\scene\main\viewport.cpp:2209)
[24] Viewport::input (c:\users\basti\development\godot3-git\scene\main\viewport.cpp:2608)
[25] Viewport::_vp_input (c:\users\basti\development\godot3-git\scene\main\viewport.cpp:1293)
[26] MethodBind1<Viewport,Ref<InputEvent> const &>::call (c:\users\basti\development\godot3-git\core\method_bind.gen.inc:815)
[27] Object::call (c:\users\basti\development\godot3-git\core\object.cpp:945)
[28] Object::call (c:\users\basti\development\godot3-git\core\object.cpp:869)
[29] SceneTree::call_group_flags (c:\users\basti\development\godot3-git\scene\main\scene_tree.cpp:262)
[30] SceneTree::input_event (c:\users\basti\development\godot3-git\scene\main\scene_tree.cpp:418)
[31] InputDefault::_parse_input_event_impl (c:\users\basti\development\godot3-git\main\input_default.cpp:440)
[32] InputDefault::parse_input_event (c:\users\basti\development\godot3-git\main\input_default.cpp:260)
[33] OS_Windows::process_key_events (c:\users\basti\development\godot3-git\platform\windows\os_windows.cpp:1008)
[34] OS_Windows::process_events (c:\users\basti\development\godot3-git\platform\windows\os_windows.cpp:2200)
[35] OS_Windows::run (c:\users\basti\development\godot3-git\platform\windows\os_windows.cpp:2754)
[36] widechar_main (c:\users\basti\development\godot3-git\platform\windows\godot_win.cpp:150)
[37] _main (c:\users\basti\development\godot3-git\platform\windows\godot_win.cpp:172)
[38] main (c:\users\basti\development\godot3-git\platform\windows\godot_win.cpp:184)
[39] __scrt_common_main_seh (f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:283)
[40] BaseThreadInitThunk
-- END OF BACKTRACE --

From IRC:
tmm
05:38
Mux213 ERROR: CowData<class RID>::get: FATAL: Index p_index=0 out of size (size()=0) <--- that is supposed to crash

Mux213
21:10
tmm: yeah but why is it zero when exporting a few objects to a meshlib? Only thing I can think of is that a mesh has a few optional arrays that may indeed be empty
tmm: and that could very well mean we're looking at an issue thats been in the system for awhile ;)
tmm: but it could also mean its not checking it properly and not handling that those indeed may be empty

Not sure if this will explain the second crash but the first crash is caused by the materials array on the MeshInstance node not being resized to the number of surfaces in the mesh. If I read this correctly when the mesh is assigned or when the mesh is changed a changed signal should be emitted that leads up to MeshInstance::_mesh_changed being called. This in turn resizes the materials array to match.
With an incorrectly sized materials array the render code breaks on:
https://github.com/godotengine/godot/blob/master/drivers/gles3/rasterizer_scene_gles3.cpp#L3170
int ssize = mesh->surfaces.size();

for (int i = 0; i < ssize; i++) {
	int mat_idx = inst->materials[i].is_valid() ? i : -1;
	RasterizerStorageGLES3::Surface *s = mesh->surfaces[i];
	_add_geometry(s, inst, NULL, mat_idx, p_depth_pass, p_shadow_pass);
}

Now as far as I can tell the signal is emitted when ArrayMesh::add_surface_from_arrays is called (which is what drives procmesh).
Could this be a timing issue? Where the scene is rendered before the signal was processed?

It is a timing issue but its not related to the signals, there are a good 5 to 6 frames rendered where the materials array in the mesh instance has been resized but the array stored within the visual server is still empty.
@reduz any ideas?
I'll at least put a size check in the code that crashes.

Note: the second crash is fixed by #24651.
The first crash (OP) is worked around by #24650, but @reduz would like to have a closer look at what the actual cause may be.


[Feature request]Make icon similar to new fluent design concepts

Hi, since new style of windows 10 tile icons are coming, it would be awesome to see notepads app with the same background as other ones. example all the office icons, some certain microsoft icons which already got.
Right now, i am having an icon with accent background which i dont like to be honest. Attaching a screenshot so that you can get idea what i mean.

If the new icon is already implemented and its an option made for it, kindly direct me the location as i was unable to look it.

I made it the same grayish color few weeks ago and a lot of users don't like it that way. They prefer accent color. I will not change it until Microsoft can provide a solution for user to choose or forcibly make everything white/dark background. Otherwise it will be a mess since you will anyway have apps that use accent color.

Me cri😭
It's not possible to add a toggle or something to switch between the icons? Like people who want accented can leave the toggle to be off, rest can enable.

Me cri😭
It's not possible to add a toggle or something to switch between the icons? Like people who want accented can leave the toggle to be off, rest can enable.

No... there is no such option in the system setting yet and app can only declare one color.

If you make two programs? Haha Notepads Accent
Dont take it seriously


Building requires docker's buildx

Hello,
As I'm trying to build on an arch linux based installation with docker up and running, I was faced with the following error message:
ERROR: BuildKit is enabled but the buildx component is missing or broken.
       Install the buildx component to build images with BuildKit:
       https://docs.docker.com/go/buildx/

Installing the docker-buildx package fixed it, but it might be worth mentioning it in the README.

Nice catch! I'm not an Arch user but I assume we can just add docker-buildx to the yay command?

Yes, indeed, that would be enough

I am using utils.sh to build/install and it also does not contain dockerx. I had to install it manually.

@kristiankielhofner I think you need to also add it to deps/ubuntu.sh


Make src/node/tools/package.json consistent with its template

Fix an error introduced in #6912.

LGTM. Thanks!


tests(proxy) rewrite preserve_hosts suite

We'd rather not depend on any third-party service for testing such a
behavior since preserve_host typically creates invalid HTTP requests
to upstream services.
Here we introduce custom Nginx locations that allow us to mimic (and
improve) httpbin.org behavior locally. The long term goal is to
transition all of the tests relying on httpbin.org to such local code,
so this is a step forwards, regardless of the testing framework or Nginx
configuration handling we might have in the future.

I think we should not be doing this for headers only. I couldn't find a way to get the raw request from openresty, that would make sense. This has too much fiddling in between (OR changes the header casing for example).


add plotting template

First pass at a visualization template for future examples

@kafitzgerald I added a references section per our discussion yesterday. I think this is good to go. Next applications meeting let's compare the comp and viz templates to make them potentially more uniform.


pagebreak() breaks counters (or containers?)

Description
+ A
#pagebreak()
+ B

Should output "1. A" on the first page and "2. B" on the second page but instead outputs "1. A" and "1. B". They are treated as separate containers and the counter starts from one again.
Reproduction URL
No response
Operating system
No response
Typst version

[X] I am using the latest version of Typst

Yeah, enums reset when they are inserted in a different container and in several other contexts. You're looking for 1. A  #pagebreak() 2. B instead

I'm closing this one, as I'm fairly sure it's the intended behavior. Without putting it on the same line, or by indenting the #pagebreak, typst interprets this as two different lists.

Sadly indenting doesn't help :(

Sadly indenting doesn't help :(

My bad, I misread it. You can use
  #v(1fr)
+ A

or
+ B

Yes and I think the same should work with #pagebreak()

I am having this issue when trying to use columns and break the page. I know the answer is "Use a colbreak() instead of a pagebreak()," but there may be a case where I want to force a page break regardless of where I am in the columns layout. If nothing else, maybe this comment will help someone else avoid the confusion I created for myself by hiding the show: columns.with() in a page template.
main.typ:
#import "template.typ": project
#show: project

#for value in range(30) {
  [
    + #value
  ]
}

// #pagebreak() // error: Pagebreaks are not allowed inside of containers
#colbreak() // works to break the page, but only if I know the last text ended on the second column

#for value in range(30) {
  [
    + #value
  ]
}

template.typ:
#let project(title: "", cols: 2, body) = {
  set page(
    paper: "a6",
  )
  show: columns.with(cols, gutter: 1.3em)
  body
}

https://typst.app/project/rW2DXeoRiTiwxau1zLbjE3


Move various first-party plugins into this repo

image_picker
firebase_analytics
firebase_storage
google_sign_in
firebase_auth
firebase_database

I support this!  But I'm also curious to know why this was done? :)  Presumably there are no limitations to having plugins not in this repo, right?

Plugins can live anywhere. We just wanted to have all the first-party plugins (maintained by the flutter team) in one place to make it easier to adapt them to changes. If the plugin system changes, this is the one place where you need to update everything (instead of hunting down all relevant repositories).


refactor default google_compute_region_backend_service timeout_sec to…

This allows the internal load balancer health check timeout_sec to be applied to the timeout_sec of the google_compute_region_backend_service, instead of having one hardcoded value for the latter.
Fixes #53

@morgante I get permission error in the GCP account, for the int-trigger? Can you help me out with this, please?


Scrolling lag on M1 Pro Max

Type: Bug

Open text file (HTML, etc.).
Scroll using the trackpad -- keep your fingers on it (no inertia).
Notice the scroll lagging so badly it slows to 1 FPS or so.

Expected results: smooth scrolling.
Note: Opening a file with word wrapping makes the issue far worse.
VS Code version: Code 1.81.1 (6c3e3dba23e8fadc360aed75ce363ba185c49794, 2023-08-09T22:40:25.698Z)
OS version: Darwin arm64 22.6.0
Modes:

System Info

Item
Value

CPUs
Apple M1 Max (10 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_okvideo_decode: enabledvideo_encode: enabledvulkan: disabled_offwebgl: enabledwebgl2: enabledwebgpu: enabled

Load (avg)
2, 2, 2

Memory (System)
32.00GB (1.20GB free)

Process Argv
--crash-reporter-id bb8f29d5-8631-4571-84a5-eb72eadd2676

Screen Reader
no

VM
0%

Extensions (7)

Extension
Author (truncated)
Version

cpptools
ms-
1.17.5

sublime-keybindings
ms-
4.0.10

savebackup
pur
0.0.4

code-spell-checker
str
2.20.5

vscode-icons
vsc
12.5.0

vscode-todo-highlight
way
1.0.5

material-theme
zhu
3.16.0

Screencast
https://github.com/microsoft/vscode/assets/700765/9d7c1d44-934e-428a-9c6d-80618933e213
Notice the extreme lag on that relatively small HTML file.  Now, here is the interesting bit.  If I scroll with inertia (push the trackpad then release my fingers so the scroll coasts and glides to a stop), it's perfectly smooth.  Shown here:
https://github.com/microsoft/vscode/assets/700765/2f9b0cb2-f562-4017-8b99-9927f335161e
So, the issue only occurs when I scroll while holding my fingers on the trackpad, i.e. preventing inertia scroll.
Performance Profile Recording
Here is a profile I recorded while producing the scroll lag:
Profile-20230901T151227.json
It seems like the debugger thinks that VSCode is "idle" during the lag stalls.

Note: Restarting VSCode fixes this issue.

Same issue here and restarting the VS Code doesn't help at all. I am editing Jupyter Notebook file and it's never been OK.

when I scroll to the very end of the file, i have to use slider to get back up, scrolling is of no use there


update() should animate color changes too

We're using Chart.js to display a pie chart which shows how close we are to a target. Once the target is hit, the color changes to denote that we've hit it and that we're now over.
In my interval, I'm doing:
this.chart.segments[0].value = results.currently;
this.chart.segments[0].color = results.times < 1 ? "#ED7669" : "#F5D451";
this.chart.segments[1].value = results.target;
this.chart.segments[1].color = results.times < 1 ? "#BFE1ED" : "#F1C40F";
this.chart.update();

But the color value isn't being respected.

Agree. I don't even care that it does or doesn't animate, but I would like to be able to change the color.

I have also run into this problem and ended up having to change the color and "_saved" color of the actual segment. I have a PR open right now that assesses this problem by using the original config object to track updates to color and values. Take a look at my branch and test it out if you'd like.

@jbrooksuk @nathanziarek @ganna-shmatova  Huzzah! The first alpha of Chart.js 2.0 has landed and should fix this issue. Check out the release and try it out! We've got a lot of momentum right now, so please help us test so we can launch 2.0 Gold by the end of the month.
https://github.com/nnnick/Chart.js/releases/tag/v2.0-alpha
I'm closing this issue for now, but if you have implementation questions or find bugs, please create a jsfiddle and post the link here and we'll reopen this issue and get it fixed.

:tada: :+1: :beers:


Device Admin authorization_rules - commands_sets attribute not read into terraform plan/apply

When creating a Device Admin Policy set with the nested authentication_rules and authorization_rules blocks, the command_sets attribute is not captured and read into the TF plan/apply operation. As such, the AuthZ Policy created in ISE is lacking the Command Sets value.
Example code block
ise:
  device_administration:
    policy_sets:
## Create Device Admin Policy Set - Routers and Switches
      - name: Routers and Switches
        description: Cisco Routers and Switches
        condition:
          type: ConditionOrBlock
          children:
            - type: ConditionAttributes
              attribute_name: DEVICE:Device Type
              operator: equals
              attribute_value: "All Device Types#Cisco Switch"
            - type: ConditionAttributes
              attribute_name: DEVICE:Device Type
              operator: equals
              attribute_value: "All Device Types#Cisco Router"
        service_name: PAP
        authentication_rules:
          - name: PAP
            condition:
              type: ConditionAttributes
              attribute_name: Network Access:AuthenticationMethod
              operator: equals
              attribute_value: PAP_ASCII
            identity_source_name: ISELAB_AD
        authorization_rules:
          - name: Router Switch ReadOnly
            condition:
              type: ConditionAndBlock
              children:
                - type: ConditionOrBlock
                  children:
                    - type: ConditionAttributes
                      attribute_name: DEVICE:Device Type
                      operator: equals
                      attribute_value: All Device Types#Cisco Router
                    - type: ConditionAttributes
                      attribute_name: DEVICE:Device Type
                      operator: equals
                      attribute_value: All Device Types#Cisco Switch
                - type: ConditionAttributes
                  attribute_name: ISELAB_AD:ExternalGroups
                  operator: equals
                  attribute_value: "trappedunderise.com/Users/Net Monitor"
            profile: IOS_Admin_Priv10
            commands_sets:
              - PermitShowCommands

Example TF plan output
Terraform will perform the following actions:

  # module.ise.ise_device_admin_authorization_rule.device_admin_authorization_rule_0["Routers and Switches/Router Switch ReadOnly"] will be created
  + resource "ise_device_admin_authorization_rule" "device_admin_authorization_rule_0" {
      + children            = [
          + {
              + children       = [
                  + {
                      + attribute_name  = "Device Type"
                      + attribute_value = "All Device Types#Cisco Router"
                      + condition_type  = "ConditionAttributes"
                      + dictionary_name = "DEVICE"
                      + is_negate       = false
                      + operator        = "equals"
                    },
                  + {
                      + attribute_name  = "Device Type"
                      + attribute_value = "All Device Types#Cisco Switch"
                      + condition_type  = "ConditionAttributes"
                      + dictionary_name = "DEVICE"
                      + is_negate       = false
                      + operator        = "equals"
                    },
                ]
              + condition_type = "ConditionOrBlock"
              + is_negate      = false
            },
          + {
              + attribute_name  = "ExternalGroups"
              + attribute_value = "trappedunderise.com/Users/Net Monitor"
              + condition_type  = "ConditionAttributes"
              + dictionary_name = "ISELAB_AD"
              + is_negate       = false
              + operator        = "equals"
            },
        ]
      + condition_is_negate = false
      + condition_type      = "ConditionAndBlock"
      + default             = false
      + id                  = (known after apply)
      + name                = "Router Switch ReadOnly"
      + policy_set_id       = "813c3812-fec1-4bd0-a78f-4d95c79a6cfb"
      + profile             = "IOS_Admin_Priv10"
      + state               = "enabled"
    }

@kuba-mazurkiewicz : Of course! That was my silly mistake. I tested it with the corrected syntax and the apply worked as expected.
The iac-validate doesn't catch this, so that should help in future when it's available.

Closing this issue. User error.


Scrollbar causes deadlock if dragged while fling is in progress

Describe the bug
Scrollbar causes deadlock if dragged while fling is in progress
Affected platforms
Select one of the platforms below:

iOS

Versions

Compose Multiplatform version*: 1.5.11

To Reproduce
Steps and/or the code snippet to reproduce the behavior:

Display lazy list with scroll bar.
Scroll lazy list
Drag scroll bar while fling is running.
App hangs forever on runBlockingIfPossible call

Please check the following ticket on YouTrack for follow-ups to this issue. GitHub issues will be closed in the coming weeks.


[BUG] creationDate time format inconsistent (sometimes wrong) in profile data

Describe the bug
The creationDate time values in profile logs, when ep_name = Profile, are using the wrong time format. (Time format is correct when ep_name = PII.) The result is inconsistent creationDate time values. Here is a sample of a uuid with two creationDate timestamps in profile data:
Profile | 2020/08/18T16:23:52
PII | 2020-08-18T16:24:46.407Z
The preferred format is the ISO 8601-compatible version, the one being used where ep_name = PII:
2020-08-18T16:24:46.407Z
To Reproduce
I'm not sure what produces the error, I can only see the evidence of it in the logs.
To see the issue...
Search logs, aggregate by uuid (user_uuid) and list creationDate.
In Splunk, use the following command from Rokwire Team app. (Has dependency of user_uuid field extraction/eval available in the app.)  If you use 'verbose' mode, you can then view the events individually.
index=apps-rokwire_illinois sourcetype="illinois:rokwire:profile"
| stats list(ep_name) AS ep_name list(creationDate) AS creationDate by user_uuid
| eval ep_name = mvdedup(ep_name)
| eval creationDate = mvdedup(creationDate)

Expected behavior
timestamps should always be written with the same time format in the profile logs (preferably in ISO 8601-compliant time format).

I can fix the code for profiles but that would not change the time format that has already been recorded. Should we fix all the time format of the all profiles records in the existing db?

Anyway, I fixed the issue and made a PR so after this fix get deployed, the Profiles record will have the same timestamp format as PII.

Thanks @ywkim312.
I would recommend fixing this for future cases, If there are no issues with Slunk logs/dashboards.


Clee/travis

Coverage increased (+0.3%) to 87.665% when pulling 7825785bf3ea7edd65b3a59a72045198f6e04a52 on BenjiLee:clee/travis into af0f9ef7bd8df8bde6b47088630786c737869bce on samgiles:master.

Coverage increased (+0.3%) to 87.665% when pulling 7825785bf3ea7edd65b3a59a72045198f6e04a52 on BenjiLee:clee/travis into af0f9ef7bd8df8bde6b47088630786c737869bce on samgiles:master.


UAA with session-store set to database for session sharing across instances

This is not a bug request, rather a query:
We are using UAA version 74.13.00. We are trying to leverage session-store (database) for session sharing across multiple instances.
session-store feature has been available since 74.04.
Here is the property to be set.
uaa.servlet.session-store = database
The issue we are facing is, lot of classes from org.opensaml.* are not serializable, and we have been overriding those by copying those in source structure, and making them serializable.
I need to use open id as well, and am sure there will be more classes I would need to pull from different libraries, and add serialization.
But, this really doesnt sound right.
Has anyone tried using session-store and without having to work out serializable changes on these library classes?
Here is the log:
uaa-exception.log

Hi, thanks for the bug report. We've had a few reports of sessions size exceeding the allocated column size in the DB, but none about serialization issues.
Thanks for providing some logs, those will definitely help in triaging the issue!

Thats interesting. We are using saml, and as a part of session attributes, I see lot of classes from opensaml library are getting persisted, and hence the serialization need.

is there any update on this?

Adding more information.
This is the exception that I got when I enabled database session store on vanilla code (i.e. before starting to override classes to implement Serializable interface)
2020-09-04 16:52:03.002,"[2020-09-04 16:52:03.001] [                                ] uaa - [http-nio-8080-exec-10] ERROR org.cloudfoundry.identity.uaa.home.HomeController:error500 Internal error
org.springframework.core.convert.ConversionFailedException: Failed to convert from type [java.lang.Object] to type [byte[]] for value 'org.cloudfoundry.identity.uaa.provider.saml.ExtendedMetadataDelegateCache@32516014'; nested exception is org.springframework.core.serializer.support.SerializationFailedException: Failed to serialize object using DefaultSerializer; nested exception is java.lang.IllegalArgumentException: DefaultSerializer requires a Serializable payload but received an object of type [org.cloudfoundry.identity.uaa.provider.saml.ExtendedMetadataDelegateCache]
at org.springframework.core.convert.support.ConversionUtils.invokeConverter(ConversionUtils.java:47) ~[spring-core-5.2.2.RELEASE.jar:5.2.2.RELEASE]
at org.springframework.core.convert.support.GenericConversionService.convert(GenericConversionService.java:191) ~[spring-core-5.2.2.RELEASE.jar:5.2.2.RELEASE]
at org.springframework.session.jdbc.JdbcIndexedSessionRepository.serialize(JdbcIndexedSessionRepository.java:589) ~[spring-session-jdbc-2.2.0.RELEASE.jar:2.2.0.RELEASE]
at org.springframework.session.jdbc.JdbcIndexedSessionRepository.lambda$insertSessionAttributes$5(JdbcIndexedSessionRepository.java:486) ~[spring-session-jdbc-2.2.0.RELEASE.jar:2.2.0.RELEASE]
at org.springframework.jdbc.core.JdbcTemplate.lambda$update$0(JdbcTemplate.java:865) ~[spring-jdbc-5.2.2.RELEASE.jar:5.2.2.RELEASE]
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:617) ~[spring-jdbc-5.2.2.RELEASE.jar:5.2.2.RELEASE]
at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:862) ~[spring-jdbc-5.2.2.RELEASE.jar:5.2.2.RELEASE]
at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:917) ~[spring-jdbc-5.2.2.RELEASE.jar:5.2.2.RELEASE]
at org.springframework.session.jdbc.JdbcIndexedSessionRepository.insertSessionAttributes(JdbcIndexedSessionRepository.java:483) ~[spring-session-jdbc-2.2.0.RELEASE.jar:2.2.0.RELEASE]
at org.springframework.session.jdbc.JdbcIndexedSessionRepository.access$1300(JdbcIndexedSessionRepository.java:130) ~[spring-session-jdbc-2.2.0.RELEASE.jar:2.2.0.RELEASE]
at org.springframework.session.jdbc.JdbcIndexedSessionRepository$JdbcSession.lambda$save$10(JdbcIndexedSessionRepository.java:817) ~[spring-session-jdbc-2.2.0.RELEASE.jar:2.2.0.RELEASE]
at org.springframework.transaction.support.TransactionOperations.lambda$executeWithoutResult$0(TransactionOperations.java:68) ~[spring-tx-5.2.2.RELEASE.jar:5.2.2.RELEASE]
at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:140) ~[spring-tx-5.2.2.RELEASE.jar:5.2.2.RELEASE]
at org.springframework.transaction.support.TransactionOperations.executeWithoutResult(TransactionOperations.java:67) ~[spring-tx-5.2.2.RELEASE.jar:5.2.2.RELEASE]
at org.springframework.session.jdbc.JdbcIndexedSessionRepository$JdbcSession.save(JdbcIndexedSessionRepository.java:799) ~[spring-session-jdbc-2.2.0.RELEASE.jar:2.2.0.RELEASE]
at org.springframework.session.jdbc.JdbcIndexedSessionRepository$JdbcSession.access$200(JdbcIndexedSessionRepository.java:631) ~[spring-session-jdbc-2.2.0.RELEASE.jar:2.2.0.RELEASE]
at org.springframework.session.jdbc.JdbcIndexedSessionRepository.save(JdbcIndexedSessionRepository.java:409) ~[spring-session-jdbc-2.2.0.RELEASE.jar:2.2.0.RELEASE]
at org.springframework.session.jdbc.JdbcIndexedSessionRepository.save(JdbcIndexedSessionRepository.java:130) ~[spring-session-jdbc-2.2.0.RELEASE.jar:2.2.0.RELEASE]
at org.springframework.session.web.http.SessionRepositoryFilter$SessionRepositoryRequestWrapper.commitSession(SessionRepositoryFilter.java:225) ~[spring-session-core-2.2.0.RELEASE.jar:2.2.0.RELEASE]
at org.springframework.session.web.http.SessionRepositoryFilter$SessionRepositoryRequestWrapper.access$100(SessionRepositoryFilter.java:192) ~[spring-session-core-2.2.0.RELEASE.jar:2.2.0.RELEASE]
at org.springframework.session.web.http.SessionRepositoryFilter.doFilterInternal(SessionRepositoryFilter.java:144) ~[spring-session-core-2.2.0.RELEASE.jar:2.2.0.RELEASE]
at org.springframework.session.web.http.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:82) ~[spring-session-core-2.2.0.RELEASE.jar:2.2.0.RELEASE]
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:358) ~[spring-web-5.2.2.RELEASE.jar:5.2.2.RELEASE]
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:271) ~[spring-web-5.2.2.RELEASE.jar:5.2.2.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[catalina.jar:8.5.51]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[catalina.jar:8.5.51]
at org.apache.catalina.filters.HttpHeaderSecurityFilter.doFilter(HttpHeaderSecurityFilter.java:126) ~[catalina.jar:8.5.51]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[catalina.jar:8.5.51]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[catalina.jar:8.5.51]
at org.cloudfoundry.identity.uaa.web.XFrameOptionsDisableFilter.doFilter(XFrameOptionsDisableFilter.java:20) ~[cloudfoundry-identity-server-1.0-mds-228177-im-sam-integration-dev.jar:?]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[catalina.jar:8.5.51]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[catalina.jar:8.5.51]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199) ~[catalina.jar:8.5.51]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) ~[catalina.jar:8.5.51]
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:543) ~[catalina.jar:8.5.51]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139) [catalina.jar:8.5.51]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81) [catalina.jar:8.5.51]
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:688) [catalina.jar:8.5.51]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) [catalina.jar:8.5.51]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) [catalina.jar:8.5.51]
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:609) [tomcat-coyote.jar:8.5.51]
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) [tomcat-coyote.jar:8.5.51]
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:818) [tomcat-coyote.jar:8.5.51]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1623) [tomcat-coyote.jar:8.5.51]
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-coyote.jar:8.5.51]
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [?:?]
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-util.jar:8.5.51]
at java.lang.Thread.run(Unknown Source) [?:?]

It happens during SAML based login flow where browser calls
GET http://core.piam.local/saml/discovery?returnIDParam=idp&entityID=core.piam.local&idp=myten&isPassive=true
Any clue to circumvent this issue would really help us, as without session sharing we are really having weird issues during scale up / scale down. Even, rolling deployment causes session outages.

Thanks for following up. We're just digging into this now.  I was hoping you might provide a bit more information to help this investigation.
Could you provide a minimal UAA configuration that demonstrates the problem?
The UAA has a lot of configuration options. We're trying to replicate, but not succeeding with the testbed we currently have in place.

Thanks shamus for looking into it.
I am attaching 3 files.
uaa-common.yml -> common uaa configuration
provider_uaa -> application specific uaa configuration
aviato-saml-config.json -> idp configuration
My observation is, when I make an api call that involves client credentials grant, I dont get any error.
But, when I want to log in using authorization code grant, where SAML flow triggers in, I see the issue.

Thanks for the extra config. Unfortunately, it still didn't help us reproduce the issue.
I think we might still missing some context.
How are you deploying the UAA?

using a bosh release I downloaded from bosh.io
using cf-deployment
as part of a commercial Cloud Foundry distribution
other (please explain)

How are you using the UAA?
Are you using the UAA solely as an authorization server integrating with external IdPs? Are you also taking advantage of the UAA's SAML IdP functionality? Are you taking advantage of any other features which might be relevant to debugging this issue?
We suspect you are using the UAA as a SAML IdP. We deduced this from the XML document supplied in the metadataLocation field in aviato-saml-config.json:
<md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="http://aviato.user-uaa:8080/uaa_app/saml/idp/SSO/alias/aviato.cloudfoundry-saml-login-user-uaa"/>
Is that suspicion correct? If so, is the same instance of the UAA acting as both the authorization server and the SAML IdP?

If you are using the UAA as a SAML IdP, it's quite likely you've found an issue with the database backed sessions. I don't believe that feature was tested against a UAA in that configuration.

Here are the responses:
How is UAA deployed:
we download the source code. We build it to create war, and deploy it in tomcat.
How are we using UAA:
we use 2 UAAs.
uaa1 --SAML-> uaa2 -SAML/OIDC--> IDP
You are right that, SAML leg is creating problem. Its not going beyond uaa2.
We certainly need session persistence. What could we do to address this ? Any workaround or any fix that we can try?

Is there any update on any workaround fix that we can add in code or a release with fix?
It would be great if you could help us with fix in code, as upgrading UAA would be quite heavy activity for us to undertake at this moment.

Sorry for the delay.  After some investigation, we've identified that running the UAA with uaa.servlet.session-store set to database is not compatible with the UAA running as a SAML IdP.
SAML IdP functionality isn't a high priority for us as it doesn't support any core CF feature. I'm not sure we'll invest in fixing this beyond updating the documentation to reflect the limitation.
Thanks for highlighting the problem.

Oh ok  :(
We are stuck as long as we use SAML.
2 questions:

Is it possible to guide us for the fix, that we can put in the code? pure guidance and no strings attached
Could you please confirm that, if we move to OIDC, the problem will arise? This is significant effort, which we are trying to avoid though :(
Any other option that you think of, to address HA.
We do use session stickiness, but with kubernates ... instances being added on the fly and removed as per its own algorithm.
We are facing random session invalidations.


Implicit CallDeps not working

Environment

Covalent version: 0.209.1rc0
Python version: Python 3.8.16
Operating system: Ubuntu 20.04

What is happening?
Using Implicit form of CallDeps in a workflow seems to throw an issue (i.e using raw python functions into call_before or call_after instead of using the call deps class
How can we reproduce the issue?
Running the following workflow using implicit call deps fails:

def execute_before_electron(a,b):
   pass
def execute_after_electron():
   pass

@ct.electron(
    call_before=[execute_before_electron, (1, 2)],
    call_after=[shutdown_after_electron],
)
def identity(x):
    return x

@ct.lattice
def workflow(x):
    return identity(x)

dispatch_id = ct.dispatch(workflow)(9)
r = ct.get_result(dispatch_id, wait=True)
print(r)

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
Cell In[6], line 1
----> 1 @ct.electron(
      2     call_before=[execute_before_electron, (1, 2)],
      3     call_after=[shutdown_after_electron],
      4 )
      5 def identity(x):
      6     return x
      8 @ct.lattice
      9 def workflow(x):

File ~/.pyenv/versions/3.8.16/envs/qa/lib/python3.8/site-packages/covalent/_workflow/electron.py:603, in electron(_func, backend, executor, files, deps_bash, deps_pip, call_before, call_after)
    594 call_after = internal_call_after_deps + call_after
    596 constraints = {
    597     "executor": executor,
    598     "deps": deps,
    599     "call_before": call_before,
    600     "call_after": call_after,
    601 }
--> 603 constraints = encode_metadata(constraints)
    605 def decorator_electron(func=None):
    606     @wraps(func)
    607     def wrapper(*args, **kwargs):

File ~/.pyenv/versions/3.8.16/envs/qa/lib/python3.8/site-packages/covalent/_workflow/transport.py:271, in encode_metadata(metadata)
    269         for i, dep in enumerate(metadata["call_before"]):
    270             if not isinstance(dep, dict):
--> 271                 encoded_metadata["call_before"][i] = dep.to_dict()
    273 if "call_after" in metadata:
    274     if metadata["call_after"] is not None:

AttributeError: 'function' object has no attribute 'to_dict'

What should happen?
One should be able to execute the above workflow successfully

This issue is a part of Hacktoberfest.  Closing this issue will earn you 1 point.

Hey could you please assign this issue to me. I would like to try it once.

Hey could you please assign this issue to me

I believe Covalent's serialization logic only supports the CallDeps class for function calls and expects a callable object however not raw python functions in the call_before and call_after sections of the electron API. Hence It's necessary to wrap the raw python functions in CallDeps objects for function calls. The following updations in the workflow should help resolve the issue:
@ct.electron(
call_before=[ct.DepsCall(execute_before_electron, args=(1, 2))],
call_after=[ct.DepsCall(execute_after_electron)]
)
OR
call_deps_before = ct.DepsCall(execute_before_electron, 1, 2)
call_deps_after = ct.DepsCall(execute_after_electron)
@ct.electron(
call_before=[call_deps_before],
call_after=[call_deps_after],
)

I believe Covalent's serialization logic only supports the CallDeps class for function calls and expects a callable object however not raw python functions in the call_before and call_after sections of the electron API. Hence It's necessary to wrap the raw python functions in CallDeps objects for function calls. The following updations in the workflow should help resolve the issue:
@ct.electron(
call_before=[ct.DepsCall(execute_before_electron, args=(1, 2))],

call_after=[ct.DepsCall(execute_after_electron)]

)
OR
call_deps_before = ct.DepsCall(execute_before_electron, 1, 2)
call_deps_after = ct.DepsCall(execute_after_electron)
@ct.electron(
call_before=[call_deps_before],

call_after=[call_deps_after],

)

Indeed true !

@AlejandroEsquivel is this open?


Improve Loader policy specification/move stateful Container options into Loader policy

Followup from issue #4489, pull #4862
There are some stateful options (LoaderHeader.cache, LoaderHeader.pause, LoaderHeader.reconnect, and forceReadonly in particular) that can be provided in a Loader request that get applied in some way when the Container is created.  These options should not vary per Container, and should be consistent across all Containers created by a Loader.  If different options are needed, a new Loader should be created first.  This is particularly relevant in the guest component case, where a container will load another container.  The loading container does not know about the host's policies, but they should be applied by default to the loaded container.  To that end, these options should be moved into the Loader policy from request headers, and consumers should be updated to create a new Loader where needed.

related to this, i've also thought we might was container create event on the loader, than a host can you to manage all containers created by their loader. this will then give the host visibility into guest containers and allow it to apply a consistent policy to those as well as host created containers

related to this, i've also thought we might was container create event on the loader, than a host can you to manage all containers created by their loader. this will then give the host visibility into guest containers and allow it to apply a consistent policy to those as well as host created containers

Some points came up about how static loader policy may go against the goals of the loader which I was hoping @vladsud you could comment on (going off your comment here from an earlier pr.  Particularly, that these options that currently exist in request headers (e.g. cache, pause, and reconnect) tend to lead us to create a loader for every single container (where we may typically expect to create many containers with a single loader), and where the idea of creating a new loader for a different policy doesn't really feel like it solves the problem and only introduces additional steps that weren't present before.  Though I don't think this applies as much to an arbitrary policy function that a host may provide (which may be more what you were referring to, in which case this is more about what to do with the existing stateful options).
The summarizer for example already changes these options, meaning in a very basic case an additional loader is getting created.  For other cases that want a specific policy and may not be aware of the host policy, if they are allowed to create a new loader it sounds like this will lead to them creating a new one in every case, which also feels like it defeats the point of having the policy in the first place (though not sure if this is expected to be possible in a data object).
So I think for the existing options, even if they are made available as static loader policy, it would make sense to still allow them to be overridden to be more restrictive as part of requests.  This provides a bit more flexibility to avoid creating extra loaders, while also enforcing the same restrictions.

Closing for the above reasons.  The arbitrary policy callback for the loader is handled in another issue.


Change default locations of addon and test-app

Potentially pending feedback on #2

Merged this and then realized it's incomplete. Search for packages and lots of other stuff is broken.

Addressing in #28


Activate RememberMissing rule for detekt

Issue

close #520

Overview (Required)

Activate RememberMissing rule for detekt.
I ran ./gradlew composeLint, but there is no need to fix anything.

Thanks!


refactor: use page().mainFrame() instead of manually computing the ro…

…ot frame
Bug: #11072

This is now possible as https://github.com/puppeteer/puppeteer/commit/d99f9d752bfa04152da387455eb6310a37a4221a was merged.


added new user

Good job @Deepanshu0810
Congrats 🎉, your PR got merged. To be eligible for the swags from ClueLess. Follow this steps.

SignIn / SignUp in ClueLess Website .

Go to profile section from the top right hand corner.

Comment your profile URL under this comment tagging the person who merged your PR.

That’s it. Follow the leaderboard !
And don’t forget to share your achievement with your friends.

Good job @Deepanshu0810
Congrats 🎉, your PR got merged. To be eligible for the swags from ClueLess. Follow this steps.

SignIn / SignUp in ClueLess Website .
Go to profile section from the top right hand corner.

Comment your profile URL under this comment tagging the person who merged your PR.

That’s it. Follow the leaderboard !
And don’t forget to share your achievement with your friends.

Thank you @Rajdip019

my ClueLess profile:
https://www.clueless.tech/profile/admin/86042980
Thanks once again @Rajdip019


Feat723 endpoint color

This PR adds an ability to set the background color for endpoint when it's active.
For color input <input type="color"> was used which supported by all major browser except for IE.
By default first endpoint won't be having any color. When a new endpoint is created random color will be proposed.

Closes #723

Thanks @G07cha for working on that. After some discussion, we decided to not integrate this feature. Actually, we don't see any added value for this feature and the fact that it implies changes on the backend only complexify the codebase IMO.
The current endpoint selection system might be changed in a near future so we might review how the information is displayed to the user when we'll work on that.
I'll reject the PR as well as the feature request.


Fix documentation bugs/inaccuracies

OpenStack Release
Liberty +
Description
I asked @jgruber to review the docs and give me feedback. Now I need to fix all the issues he identified in his email.

email from John G
Supported Features – Notes
HA Mode:– Remove from Preqs
Two (2) VLANs configured in Neutron to be used for BIG-IP internal and external traffic.
The setup of the cluster is not documented here, so there are no ‘VLAN requirements’.
L2/L3 Segmentation Modes
Overview:
I would rewrite this sentence from:
The F5® agent doesn’t manage any networking components. Rather, it relies on the L2/L3 segmentation mode settings to determine how your BIG-IP® device(s) is configured.
to:
The F5 agent determine you BIG-IP device(s) L2 and L3 network configurations base on the L2/L3 segmentation mode settings in the agent configuration.
Use Case:
This highlights Global Routed mode, but the default mode of operation is actually L2 Adjacent mode. We’ll have to create a picture.
I messed up when I said the Global Routed mode picture was OK.. Sorry.. You need to remove the line between the routers that says ‘bridge’ and replace it with a ‘cloud’ which is symbolic of a L3 routed network.  This same picture needs to be corrected in the Global Routed mode section.
Under the Prerequisites sections we need this bullet item:

     Use of GRE or VxLAN tunnels requires an active BIG-IP SDN Services License

Under L3 Binding section, this:
The L3 Binding driver is required for overcloud BIG-IP deployments. This setting binds L3 addresses to specific ports to allow communications between Nova guest instances.
Uncomment this line in the Agent Configuration File if you’re using an undercloud VE.
Needs to read:
The L3 Binding driver is required for overcloud BIG-IP deployments. This setting binds L3 addresses to specific ports to allow communications between Nova guest instances.
Uncomment this line in the Agent Configuration File if you’re using an overcloud VE.
 I just don’t have any better ones to give you.
F5 OpenStack LBaaSv2 User Guide - Notes
Install the F5 Service Provider Package
The installation of the packages using file copies is a really bad idea. We need to get things packaged as RPMs and Debs. The current instructions need to say CentOS7 and Ubuntu 14.04 or 16.04 as the default version of python and the file path for the PYTHONLIB path can change from release to release of CentOS or Ubuntu.
Let’s review this at the next Sprint.. we’re asking for bad installs.
Install the F5 Agent
“You can also install it on any host for which you’d like to provision BIG-IP services.”
Needs to read:
“You can also install it on any host FROM which you’d like to provision BIG-IP services.” There are not BIG-IP services installed on the host running the agent process.
I also assume we will include a section on install the F5 agent similar to the ‘Install the F5 LBaaSv2 Driver’ section that follows. It should have the pip commands to install the agent.
Managing BIG-IP Cluster: Use Cases:
Remove this sentence:
A few commonly-used BIG-IP clustering examples are Sync-Failover device groups and Sync-Only device groups.
Only a Sync-Failover device group provides HA for data traffic that could cause a service disruption. We don’t use Sync-Only device groups in our LBaaS solution at all.
In the footnotes.. I’m not sure I understand:
You can use the following F5 Heat templates to prep an overcloud VE and deploy an active/standby cluster of BIG-IP devices (over- or undercloud).


Auto append required packages from Pipfile by pipenv

I'm not 100% sure if we should do that here. setup.py is a means to setuptools for applications and libraries - and thus, defining their dependencies. Pipenv only handles dependencies for applications (and dev-dependencies for libraries (kind of)).
So, I'm kinda hesitating to merge that.

Pipfile is a great way to manage libraries dependencies, and there are now many packages that use Pipfile for management dependencies. I think it is necessary.
Also, if it checks that there is no Pipfile, it does not interrupt the setup.py.

not recommened. use setup.py and $ pipenv install -e . instad.


cortex: clarify range inclusivity via test

im basing this intent off the ram cortex implementation:
https://github.com/vivisect/synapse/blob/e3834f4845a0d69e015844bab7031e1d3a670940/synapse/cores/ram.py#L27

👍

Coverage decreased (-0.4%) to 80.609% when pulling bee400b502c3a721b98731b4323baafb738c7923 on williballenthin:patch-5 into 45f71ba59b3d4f04aa3dd01bc2cde0ac970a2f69 on vivisect:master.


pruning 之后使用 无法读取模型

我尝试使用
model = AutoModelForCausalLM.from_pretrained(args.model_path, device_map="auto", trust_remote_code=True, low_cpu_mem_usage=True）
但是会报错
“Traceback (most recent call last):
File "/home/ubuntu/test_scripts/benchmark_r.py", line 154, in
main()
File "/home/ubuntu/test_scripts/benchmark_r.py", line 63, in main
model = AutoModelForCausalLM.from_pretrained(args.model_path, device_map="auto", trust_remote_code=True, low_cpu_mem_usage=True,
File "/home/ubuntu/miniconda3/envs/xxx/lib/python3.10/site-packages/transformers/models/auto/auto_factory.py", line 556, in from_pretrained
return model_class.from_pretrained(
File "/home/ubuntu/miniconda3/envs/xxx/lib/python3.10/site-packages/transformers/modeling_utils.py", line 3502, in from_pretrained
) = cls._load_pretrained_model(
File "/home/ubuntu/miniconda3/envs/xxx/lib/python3.10/site-packages/transformers/modeling_utils.py", line 3926, in _load_pretrained_model
new_error_msgs, offload_index, state_dict_index = _load_state_dict_into_meta_model(
File "/home/ubuntu/miniconda3/envs/xxx/lib/python3.10/site-packages/transformers/modeling_utils.py", line 805, in _load_state_dict_into_meta_model
set_module_tensor_to_device(model, param_name, param_device, **set_module_kwargs)
File "/home/ubuntu/miniconda3/envs/xxx/lib/python3.10/site-packages/accelerate/utils/modeling.py", line 348, in set_module_tensor_to_device
raise ValueError(
ValueError: Trying to set a tensor of shape torch.Size([2048, 2785]) in "weight" (which has shape torch.Size([2048, 5504])), this look incorrect.
”
我也尝试了在加载的时候添加参数 ignore_mismatched_sizes=True
model = AutoModelForCausalLM.from_pretrained(args.model_path, device_map="auto", trust_remote_code=True, low_cpu_mem_usage=True, ignore_mismatched_sizes=True）
同样也会报错:
Some weights of QWenLMHeadModel were not initialized from the model checkpoint at /data/xxxx and are newly initialized because the shapes did not match:

transformer.h.10.mlp.c_proj.weight: found shape torch.Size([2048, 2785]) in the checkpoint and torch.Size([2048, 5504]) in the model instantiated
transformer.h.10.mlp.w1.weight: found shape torch.Size([2785, 2048]) in the checkpoint and torch.Size([5504, 2048]) in the model instantiated
transformer.h.10.mlp.w2.weight: found shape torch.Size([2785, 2048]) in the checkpoint and torch.Size([5504, 2048]) in the model instantiated
transformer.h.11.mlp.c_proj.weight: found shape torch.Size([2048, 2518]) in the checkpoint and torch.Size([2048, 5504]) in the model instantiated
transformer.h.11.mlp.w1.weight: found shape torch.Size([2518, 2048]) in the checkpoint and torch.Size([5504, 2048]) in the model instantiated
transformer.h.11.mlp.w2.weight: found shape torch.Size([2518, 2048]) in the checkpoint and torch.Size([5504, 2048]) in the model instantiated
transformer.h.12.attn.c_attn.weight: found shape torch.Size([3840, 2048]) in the checkpoint and torch.Size([6144, 2048]) in the model instantiated
transformer.h.12.attn.c_proj.weight: found shape torch.Size([2048, 1280]) in the checkpoint and torch.Size([2048, 2048]) in the model instantiated
transformer.h.12.mlp.c_proj.weight: found shape torch.Size([2048, 2393]) in the checkpoint and torch.Size([2048, 5504]) in the model instantiated
transformer.h.12.mlp.w1.weight: found shape torch.Size([2393, 2048]) in the checkpoint and torch.Size([5504, 2048]) in the model instantiated
transformer.h.12.mlp.w2.weight: found shape torch.Size([2393, 2048]) in the checkpoint and torch.Size([5504, 2048]) in the model instantiated
transformer.h.13.attn.c_attn.weight: found shape torch.Size([3072, 2048]) in the checkpoint and torch.Size([6144, 2048]) in the model instantiated
transformer.h.13.attn.c_proj.weight: found shape torch.Size([2048, 1024]) in the checkpoint and torch.Size([2048, 2048]) in the model instantiated
transformer.h.13.mlp.c_proj.weight: found shape torch.Size([2048, 3776]) in the checkpoint and torch.Size([2048, 5504]) in the model instantiated
transformer.h.13.mlp.w1.weight: found shape torch.Size([3776, 2048]) in the checkpoint and torch.Size([5504, 2048]) in the model instantiated
transformer.h.13.mlp.w2.weight: found shape torch.Size([3776, 2048]) in the checkpoint and torch.Size([5504, 2048]) in the model instantiated
transformer.h.14.attn.c_attn.weight: found shape torch.Size([2688, 2048]) in the checkpoint and torch.Size([6144, 2048]) in the model instantiated
transformer.h.14.attn.c_proj.weight: found shape torch.Size([2048, 896]) in the checkpoint and torch.Size([2048, 2048]) in the model instantiated
transformer.h.14.mlp.c_proj.weight: found shape torch.Size([2048, 3594]) in the checkpoint and torch.Size([2048, 5504]) in the model instantiated
transformer.h.14.mlp.w1.weight: found shape torch.Size([3594, 2048]) in the checkpoint and torch.Size([5504, 2048]) in the model instantiated
transformer.h.14.mlp.w2.weight: found shape torch.Size([3594, 2048]) in the checkpoint and torch.Size([5504, 2048]) in the model instantiated
transformer.h.15.attn.c_attn.weight: found shape torch.Size([3072, 2048]) in the checkpoint and torch.Size([6144, 2048]) in the model instantiated
transformer.h.15.attn.c_proj.weight: found shape torch.Size([2048, 1024]) in the checkpoint and torch.Size([2048, 2048]) in the model instantiated
transformer.h.15.mlp.c_proj.weight: found shape torch.Size([2048, 4113]) in the checkpoint and torch.Size([2048, 5504]) in the model instantiated
transformer.h.15.mlp.w1.weight: found shape torch.Size([4113, 2048]) in the checkpoint and torch.Size([5504, 2048]) in the model instantiated
transformer.h.15.mlp.w2.weight: found shape torch.Size([4113, 2048]) in the checkpoint and torch.Size([5504, 2048]) in the model instantiated
transformer.h.16.attn.c_attn.weight: found shape torch.Size([3072, 2048]) in the checkpoint and torch.Size([6144, 2048]) in the model instantiated
transformer.h.16.attn.c_proj.weight: found shape torch.Size([2048, 1024]) in the checkpoint and torch.Size([2048, 2048]) in the model instantiated
transformer.h.17.attn.c_attn.weight: found shape torch.Size([2688, 2048]) in the checkpoint and torch.Size([6144, 2048]) in the model instantiated
transformer.h.17.attn.c_proj.weight: found shape torch.Size([2048, 896]) in the checkpoint and torch.Size([2048, 2048]) in the model instantiated
transformer.h.17.mlp.c_proj.weight: found shape torch.Size([2048, 3263]) in the checkpoint and torch.Size([2048, 5504]) in the model instantiated
transformer.h.17.mlp.w1.weight: found shape torch.Size([3263, 2048]) in the checkpoint and torch.Size([5504, 2048]) in the model instantiated
transformer.h.17.mlp.w2.weight: found shape torch.Size([3263, 2048]) in the checkpoint and torch.Size([5504, 2048]) in the model instantiated
transformer.h.18.mlp.c_proj.weight: found shape torch.Size([2048, 3861]) in the checkpoint and torch.Size([2048, 5504]) in the model instantiated
transformer.h.18.mlp.w2.weight: found shape torch.Size([3861, 2048]) in the checkpoint and torch.Size([5504, 2048]) in the model instantiated
transformer.h.18.attn.c_attn.weight: found shape torch.Size([1536, 2048]) in the checkpoint and torch.Size([6144, 2048]) in the model instantiated
transformer.h.18.attn.c_proj.weight: found shape torch.Size([2048, 512]) in the checkpoint and torch.Size([2048, 2048]) in the model instantiated
transformer.h.18.mlp.w1.weight: found shape torch.Size([3861, 2048]) in the checkpoint and torch.Size([5504, 2048]) in the model instantiated
transformer.h.19.attn.c_attn.weight: found shape torch.Size([2688, 2048]) in the checkpoint and torch.Size([6144, 2048]) in the model instantiated
transformer.h.19.attn.c_proj.weight: found shape torch.Size([2048, 896]) in the checkpoint and torch.Size([2048, 2048]) in the model instantiated
transformer.h.20.attn.c_attn.weight: found shape torch.Size([2688, 2048]) in the checkpoint and torch.Size([6144, 2048]) in the model instantiated
transformer.h.20.attn.c_proj.weight: found shape torch.Size([2048, 896]) in the checkpoint and torch.Size([2048, 2048]) in the model instantiated
transformer.h.20.mlp.c_proj.weight: found shape torch.Size([2048, 3291]) in the checkpoint and torch.Size([2048, 5504]) in the model instantiated
transformer.h.20.mlp.w1.weight: found shape torch.Size([3291, 2048]) in the checkpoint and torch.Size([5504, 2048]) in the model instantiated
transformer.h.20.mlp.w2.weight: found shape torch.Size([3291, 2048]) in the checkpoint and torch.Size([5504, 2048]) in the model instantiated
transformer.h.21.attn.c_attn.weight: found shape torch.Size([1536, 2048]) in the checkpoint and torch.Size([6144, 2048]) in the model instantiated
transformer.h.21.attn.c_proj.weight: found shape torch.Size([2048, 512]) in the checkpoint and torch.Size([2048, 2048]) in the model instantiated
transformer.h.22.attn.c_attn.weight: found shape torch.Size([3072, 2048]) in the checkpoint and torch.Size([6144, 2048]) in the model instantiated
transformer.h.22.attn.c_proj.weight: found shape torch.Size([2048, 1024]) in the checkpoint and torch.Size([2048, 2048]) in the model instantiated
transformer.h.9.mlp.c_proj.weight: found shape torch.Size([2048, 2630]) in the checkpoint and torch.Size([2048, 5504]) in the model instantiated
transformer.h.9.mlp.w1.weight: found shape torch.Size([2630, 2048]) in the checkpoint and torch.Size([5504, 2048]) in the model instantiated
transformer.h.9.mlp.w2.weight: found shape torch.Size([2630, 2048]) in the checkpoint and torch.Size([5504, 2048]) in the model instantiated
You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.
Traceback (most recent call last):
File "/home/ubuntu/test_scripts/benchmark_r.py", line 152, in
main()
File "/home/ubuntu/test_scripts/benchmark_r.py", line 63, in main
model = AutoModelForCausalLM.from_pretrained(args.model_path, device_map="auto", trust_remote_code=True, low_cpu_mem_usage=True, ignore_mismatched_sizes=True)
File "/home/ubuntu/miniconda3/envs/qwen/lib/python3.10/site-packages/transformers/models/auto/auto_factory.py", line 556, in from_pretrained
return model_class.from_pretrained(
File "/home/ubuntu/miniconda3/envs/xxx/lib/python3.10/site-packages/transformers/modeling_utils.py", line 3558, in from_pretrained
dispatch_model(model, **device_map_kwargs)
File "/home/ubuntu/miniconda3/envs/xxx/lib/python3.10/site-packages/accelerate/big_modeling.py", line 474, in dispatch_model
model.to(device)
File "/home/ubuntu/miniconda3/envs/xxx/lib/python3.10/site-packages/transformers/modeling_utils.py", line 2556, in to
return super().to(*args, **kwargs)
File "/home/ubuntu/miniconda3/envs/xxx/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1152, in to
return self._apply(convert)
File "/home/ubuntu/miniconda3/envs/xxx/lib/python3.10/site-packages/torch/nn/modules/module.py", line 802, in _apply
module._apply(fn)
File "/home/ubuntu/miniconda3/envs/xxx/lib/python3.10/site-packages/torch/nn/modules/module.py", line 802, in _apply
module._apply(fn)
File "/home/ubuntu/miniconda3/envs/xxx/lib/python3.10/site-packages/torch/nn/modules/module.py", line 802, in _apply
module._apply(fn)
[Previous line repeated 2 more times]
File "/home/ubuntu/miniconda3/envs/xxx/lib/python3.10/site-packages/torch/nn/modules/module.py", line 825, in _apply
param_applied = fn(param)
File "/home/ubuntu/miniconda3/envs/xxx/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1150, in convert
return t.to(device, dtype if t.is_floating_point() or t.is_complex() else None, non_blocking)
NotImplementedError: Cannot copy out of meta tensor; no data!

请问你们在prune模型之后是怎么去加载的呢。
很着急尝试FLAP，期待您的回复，谢谢。

hei JCDemon, if you want to load the model, you can use the pytorch api(torch.load, torch.save) instead of huggingface api(from_pretrained,save_pretrained).

hei JCDemon, if you want to load the model, you can use the pytorch api(torch.load, torch.save) instead of huggingface api(from_pretrained,save_pretrained).When you finish pruning the model, you use torch.save to save it and then use torch.load to load the pruned model.

I've solved the loading issue, thank you for your response. I was using FLAP to prune a llama-version of Qwen model (I converted the Qwen 1.8B model into llama2 version beforehand). I found that I can use save_pretrained to save the model in HF format. Then I convert the HF format pruned llama model into Qwen model and I found I couldn't load it using from_pretrained(). Fortunately, I managed to modify the qwen structure that is defined in modeling.py (by applying dynamic head_size to each layer, and then I finally can load the model using from_pretrained()).
Currently, I got problem using the pruned model to generate text. The currently output of the model seems to be some garbled codes instead of correct sentences. I think it could be the reason I didn't modify the word embedding step (I checked the input_ids running in the model, it is correct. But when converted to input_embed, the input_embed seems totally wrong)? any suggestion about this?

#the input_ids here is correct, but the inputs_embeds is wrong. I checked "self.wte" it is a nn.embedding object
# the above print inputs_embeds  is torch.Size([1, 12, 2048])", but I think it should be "([1,12,768])"??? Bec I already set the hidden_size of the first layer to 768, I don't know why it is still the original value 2048.
Also, I couldn't use the above-mentioned pruned llama model (which is actually a llama-version Qwen model) to generate text (I used the exactly same code to load the model as you guys put in the github "generate.py"), I encountered similar "garbled codes" issue as mentioned earlier. BTW, the tokenizer I used is the Qwen tokenizer.

hi @JCDemon
can u share with me the code that u used to load using from_pretrained()
I am trying to save with torch.save but it doesn't seem to save the model for me.
#9

hi @JCDemon can u share with me the code that u used to load using from_pretrained()
I am trying to save with torch.save but it doesn't seem to save the model for me. #9

sure thing, here is the code I used to prune the llama-version Qwen model and save in HF format. The line "model.save_pretrained(args.save_model, safe_serialization=True)" actually made it work.
"import argparse
import os
import numpy as np
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
from models.hf_llama.modeling_llama import LlamaForCausalLM
from importlib.metadata import version
from lib.prune import prune_wanda_sp, prune_flap, prune_magnitude_sp, check_sparsity
from lib.eval import eval_ppl
print('torch', version('torch'))
print('transformers', version('transformers'))
print('accelerate', version('accelerate'))
print('# of gpus: ', torch.cuda.device_count())
def get_llm(model, cache_dir="llm_weights"):
# model = AutoModelForCausalLM.from_pretrained(
#     model,
#     torch_dtype=torch.float16,
#     cache_dir=cache_dir,
#     low_cpu_mem_usage=True,
#     device_map="auto"
# )
model = LlamaForCausalLM.from_pretrained(
model,
torch_dtype=torch.float16,
cache_dir=cache_dir,
low_cpu_mem_usage=True,
# device_map="auto"
)
print(len(model.model.layers))
for i in range(len(model.model.layers)):
model.model.layers[i].self_attn.o_proj.bias = torch.nn.Parameter(torch.zeros_like(model.model.layers[i].self_attn.o_proj.bias, device='cpu'))  # 或 'cuda'
model.model.layers[i].mlp.down_proj.bias = torch.nn.Parameter(torch.zeros_like(model.model.layers[i].mlp.down_proj.bias, device='cpu'))  # 或 'cuda'
torch.nn.init.zeros_(model.model.layers[i].self_attn.o_proj.bias)
torch.nn.init.zeros_(model.model.layers[i].mlp.down_proj.bias)
model.seqlen = 128
return model

def main():
parser = argparse.ArgumentParser()
parser.add_argument('--model', type=str, help='LLaMA model')    # Huggingface model name
parser.add_argument('--seed', type=int, default=0, help='Seed for sampling the calibration data.')
parser.add_argument('--nsamples', type=int, default=2048, help='Number of calibration samples.')
parser.add_argument('--pruning_ratio', type=float, default=0, help='Pruning ratio.')
parser.add_argument('--remove_heads', type=int, default=8, help='Remove num_heads')
parser.add_argument("--metrics", type=str, default="WIFV", choices=["IFV", "WIFV", "WIFN", 'N/A'])
parser.add_argument("--structure", type=str, default="AL-AM", choices=["UL-UM", "UL-MM", "AL-MM", "AL-AM", 'N/A'])
parser.add_argument("--prune_method", type=str, default="flap", choices=["flap", "wanda_sp", "mag_sp"])
parser.add_argument("--cache_dir", default="llm_weights", type=str)
parser.add_argument('--unstr', action="store_true")
parser.add_argument('--eval', action="store_true")
parser.add_argument('--save_model', type=str, default=None, help='Path to save the pruned model.')
args = parser.parse_args()
# Setting seeds for reproducibility
np.random.seed(args.seed)
torch.random.manual_seed(args.seed)

# Build the model and tokenizer
print(f"loading llm model {args.model}")
model = get_llm(args.model, args.cache_dir)
device = torch.device("cuda:0")
model.to(device)
model.eval()
tokenizer = AutoTokenizer.from_pretrained(args.model, use_fast=False, trust_remote_code=True)

if "30b" in args.model or "65b" in args.model: # for 30b and 65b we use device_map to load onto multiple A6000 GPUs, thus the processing here.
    device = model.hf_device_map["lm_head"]
print("use device ", device)

# Prune the model
print("pruning starts")
if args.prune_method == "flap":
    if args.metrics == 'N/A':
        raise ValueError("For FLAP pruning, the metrics parameter must be chosen from ['IFV', 'WIFV', 'WIFN']. 'N/A' is not a valid choice.")
    if args.structure == 'N/A':
        raise ValueError("For FLAP pruning, the compressed model structure parameter must be chosen from ['UL-UM', 'UL-MM', 'AL-MM', 'AL-AM']. 'N/A' is not a valid choice.")
    prune_flap(args, model, tokenizer, device)
elif args.prune_method == "wanda_sp":
    prune_wanda_sp(args, model, tokenizer, device)
elif args.prune_method == "mag_sp":
    prune_magnitude_sp(args, model, tokenizer, device)

# Check the sparsity of the model
print("*"*30)
sparsity_ratio = check_sparsity(model)
print(f"sparsity sanity check {sparsity_ratio:.4f}")
print(f"model parameter {sum(p.numel() for p in model.parameters()) / 1000 ** 3:.2f}B")
print("*"*30)
# Evaluate the model
if args.eval:
    ppl = eval_ppl(model, tokenizer, device)
    print(f"ppl on wikitext {ppl}")

# Save the model
if args.save_model:
    if not os.path.exists(args.save_model):
        os.makedirs(args.save_model)
    # torch.save(model, f'{args.save_model}/pruned_model.pt')
    # torch.save(model, f'{args.save_model}/pruned_model.bin')
    model.save_pretrained(args.save_model, safe_serialization=True)
    # tokenizer.save_pretrained(args.save_model)

if name == 'main':
main()"

hi @JCDemon can u share with me the code that u used to load using from_pretrained()
I am trying to save with torch.save but it doesn't seem to save the model for me. #9

I'm think that the reason I can use "save_pretrained" to save my model might bec it's not a official llama2 model. The model I used was converted from Qwen 1.8B.
Also, I think the issue u mentioned in #9  doesn't make sense as the weight_dict should be modified after pruning. It's weird to output the original model. Maybe you can try checking the weight before using save_pretrained?

I implement my own model from LlamaForCausalLM I over write the layer size based on tensor shape read from *.safetensors in order to use LlamaForCausalLM.from_pretrained

if anyone else is facing issues, try something in the lines of
https://github.com/nyunAI/nyuntam/blob/686f4c4c0da9c7b2f1acc9f916f760bdd3fdeba8/examples/text-generation/flap_pruning/convert_to_hf.py#L11


The operator-sdk can't be used with vendored kubevirt

Is this a BUG REPORT or FEATURE REQUEST?:

Uncomment only one, leave it on its own line:
/kind bug
/kind enhancement

What happened:
We have
func init() {
	flag.StringVar(&kubeconfig, "kubeconfig", "", "absolute path to the kubeconfig file")
	flag.StringVar(&master, "master", "", "master url")
}

in
https://github.com/kubevirt/kubevirt/blob/master/pkg/kubecli/kubecli.go#L55
The flags here are also defined in the operator-sdk and they clash:
log is DEPRECATED and will be removed in a future version. Use logs instead.
kubevirt-vm-operator flag redefined: kubeconfig
panic: kubevirt-vm-operator flag redefined: kubeconfig

goroutine 1 [running]:
flag.(*FlagSet).Var(0xc00007a180, 0x18cf060, 0x27590a0, 0x16aa419, 0xa, 0x16ed85b, 0x37)
        /usr/lib/golang/src/flag/flag.go:850 +0x4af
flag.StringVar(...)
        /usr/lib/golang/src/flag/flag.go:759
github.com/masayag/kubevirt-vm-operator/vendor/sigs.k8s.io/controller-runtime/pkg/client/config.init.0()
        /home/masayag/work/go/src/github.com/masayag/kubevirt-vm-operator/vendor/sigs.k8s.io/controller-runtime/pkg/client/config/config.go:38 +0x98

What you expected to happen:
Setting these flags should be optional. Let's keep this in mind for #2286.
How to reproduce it (as minimally and precisely as possible):
Anything else we need to know?:
Environment:

KubeVirt version (use virtctl version):
Kubernetes version (use kubectl version):
VM or VMI specifications:
Cloud provider or hardware configuration:
OS (e.g. from /etc/os-release):
Kernel (e.g. uname -a):
Install tools:
Others:

/cc @masayag thanks for reporting.


Update InputEventKey doc: Clarify behavior when setting event properties

Fixes #84731
Suggestions are welcomed as I'm not a native English speaker.

I don't think this explains the problem. You're just describing the nature of all properties to be set to their default value on creation, which is true for any Variant, not just InputEventKey.
The core of #84731 is assuming setting one of keycode, physical_keycode, and unicode automatically updates other fields.

setting one of keycode, physical_keycode, and unicode automatically updates other fields

Or it's just the name confuses them, a little hard to clarify though.

Or it's just the name confuses them

Not really, the confusion is that people assume they are linked and update together, and aren't separate properties

I think adding docs here is useful, as the behavior is far from obvious. It's not an oversight that only one of keycode or physical_keycode is non-zero, it's actually how InputEventKey knows where it's a physical or not physical event.
But to fix #84731 itself, I would add documentation to OS.get_keycode_string(), to point out this difference between keycode and physical_keycode.

I would add documentation to OS.get_keycode_string(), to point out this difference between keycode and physical_keycode.

OS.get_keycode_string() simply maps the Key enum into String, it has no concept of keycode and physical_keycode.
Another possible cause is that the 4.1.3 documentation for physical_keycode also says you should use keycode. This is already fixed in 4.2.
https://github.com/godotengine/godot/blob/2d3b2abcf6edcc9b02a9b1894ba43f79845ad2f4/doc/classes/InputEventKey.xml#L80-L83

I would add documentation to OS.get_keycode_string(), to point out this difference between keycode and physical_keycode.

OS.get_keycode_string() simply maps the Key enum into String, it has no concept of keycode and physical_keycode.

My point is that OS.get_keycode_string() is used with an int, and we don't tell users what that int should be explictly enough. If they have an event, and want the string for that event's key code, they need to use the right property based on the type of key code their event uses.
And the event is one they receive and they don't know ahead of time if it's physical or not, they basically need to reimplement the internal logic we use:
OS.get_keycode_string(event.physical_keycode if event.keycode == KEY_NONE else event.keycode)

which doesn't feel very satisfactory as API design, but at least this can be documented.

And the event is one they receive and they don't know ahead of time if it's physical or not, they basically need to reimplement the internal logic we use:

I do feel a little curious about this, why we have all three fields together instead of a tagged union or something like a variant to represent a InputKeyEvent, is there any corner cases that we need consider?

Because we don't usually do that and it's not necessary simple or stable to do so I'd say

And the event is one they receive and they don't know ahead of time if it's physical or not

They should know. Physical keycode and keycode are in different domains. A physical "E" and a regular "E" are two different keys.
#84731 can only be handled reasonably in 4.2 via the new API:
OS.get_keycode_string(DisplayServer.keyboard_get_keycode_from_physical(e.physical_keycode))

And this is already documented in InputEventKey.

Right, see also #82092. OS.get_keycode_string() description should likely advise users to check the description of InputEventKey.physical_keycode.

They should know what they want to get. Physical keycode and keycode are in different domains.

If we don't need to store keycode and phyiscal keycode simultaneously, I believe this adds more weight to my initial thought of use a tagged union to store all these fields, in this way we can print some warning when user try to access the incorrect field. But I suspect it will break compatibility, the public interface doesn't have to change, but the serialized format will change.

It would require a lot of potentially fragile code to access and update the data, I'd say it's not worth it for a little data savings

Not for data saving, but for prevent get the wrong data. Maybe add a tag will do the sam, but as you said, it is more work compared to gain.


Canceling the chain notifier block notifications logs at error level

Background
Callers of the chain notification streaming RPC should explicitly call cancel on the stream to stop the gRPC subscription when they are finished with the subscription. However when doing this, an error event is logged even though this is expected behavior.
[ERR] RPCS: [/chainrpc.ChainNotifier/RegisterBlockEpochNtfn]: context canceled

Your environment

lnd 0.11.1-beta

Steps to reproduce

Subscribe to block notifications: chainrpc.ChainNotifier/RegisterBlockEpochNtfn
Stop the subscription with cancel

Expected behavior
No ERR entry should be logged
Actual behavior
An ERR is logged

running into this issue as well:
chain notifier RPC is still in the process of starting
2021-03-15 13:05:59.973 [ERR] RPCS: [/chainrpc.ChainNotifier/RegisterBlockEpochNtfn]: chain notifier RPC is still in the process of starting
2021-03-15 13:06:05.210 [ERR] RPCS: [/chainrpc.ChainNotifier/RegisterBlockEpochNtfn]: chain notifier RPC is still in the process of starting
2021-03-15 13:06:07.903 [ERR] RPCS: [/chainrpc.ChainNotifier/RegisterBlockEpochNtfn]: chain notifier RPC is still in the process of starting
2021-03-15 13:06:07.922 [ERR] RPCS: [/chainrpc.ChainNotifier/RegisterBlockEpochNtfn]: chain notifier RPC is still in the process of starting
2021-03-15 13:07:07.941 [ERR] RPCS: [/chainrpc.ChainNotifier/RegisterBlockEpochNtfn]: chain notifier RPC is still in the process of starting
2021-03-15 13:07:08.041 [ERR] RPCS: [/chainrpc.ChainNotifier/RegisterBlockEpochNtfn]: chain notifier RPC is still in the process of starting
2021-03-15 13:07:15.388 [ERR] RPCS: [/chainrpc.ChainNotifier/RegisterBlockEpochNtfn]: chain notifier RPC is still in the process of starting
2021-03-15 13:07:15.392 [ERR] RPCS: [/chainrpc.ChainNotifier/RegisterBlockEpochNtfn]: chain notifier RPC is still in the process of starting

@nicolasburtey please open a new issue as this seems unrelated. We can possibly identify the culprit with a goroutine dump at the time of the issue occurring (see https://github.com/lightningnetwork/lnd/blob/master/docs/debugging_lnd.md#capturing-pprof-data-with-lnd for instructions how).

I am seeing this error too.


LHN - Bottom of the conversation list is cut off

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

Action Performed:

Open the app
Scroll to the bottom of the LHN

Expected Result:
Conversation list should be rendered all the way to the bottom
Actual Result:
Bottom of the conversation list is cut off .
Workaround:
Can the user still use Expensify without this being fixed? Have you informed them of the workaround?
Platform:

Where is this issue occurring?

iOS
Android

Version Number: 1.0.91-0
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos: Any additional supporting documentation

Expensify/Expensify Issue URL:
View all open jobs on GitHub

From @shawnborton https://expensify.slack.com/archives/C01GTK53T8Q/p1630487034256700

The bottom of the chats list view is cut off on iOS, likely because of the bottom home bar. I think the list view should extend to the bottom edge of the screen below the home bar, will share a screenshot of how other apps do it in thread

Triggered auto assignment to @flodnv (Engineering), see https://stackoverflow.com/c/expensify/questions/4319 for more details.

Triggered auto assignment to @jboniface (External), see https://stackoverflow.com/c/expensify/questions/8582 for more details.

I just tested in v1.0.91-3 on iOS simulator. Bottom margin there and I can scroll up to end properly. Not tested yet in real device so not sure about it.  Debug purpose I also set light green color, so we can see bottom margin clearly.
Wandering that someone had already fixed it in recent version? or This problem shows on real device only?
Attached is the iOS simulator screenshot.

Sorry about that @PrashantMangukiya I jumped the gun too quickly. I was testing on my physical Android device and got sidetracked. Indeed, I do not experience this bug (Pixel 3). I am also on 1.0.91-0... @isagoico which device did you test on?

I'm also not able to reproduce this on my Android device but @parasharrajat mentioned in the thread he is able to reproduce in his. @parasharrajat Can you please share your device information?

@isagoico I don't see this issue on my Android device anymore.

It sounds like this issue isn't validated to be happening any longer. I am removing External and unassigning myself. Please close the issue if you are confident the issue is no longer occurring, or re-add the External label if you become confident that it is occurring.

@shawnborton are you still able to reproduce this issue in your iOS?

Still happening to me on my physical device.
On Thu, Sep 2, 2021 at 3:00 PM Isabella Goicoechea @.***>
wrote:

@shawnborton https://github.com/shawnborton are you still able to
reproduce this issue in your iOS?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/Expensify/App/issues/5005#issuecomment-912011733, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AARWH5U3L6EIPMBLSLV2VXTT77JWPANCNFSM5DHWLQLQ
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

Whoops! This issue is 2 days overdue. Let's get this updated quick!

Eep! 4 days overdue now. Issues have feelings too...

Now this issue is 8 days overdue. Are you sure this should be a Daily? Feel free to change it!

10 days overdue. I'm getting more depressed than Marvin.

12 days overdue now... This issue's end is nigh!

This issue has not been updated in over 14 days.  eroding to Weekly issue.

This issue has not been updated in over 15 days.  eroding to Monthly issue.
P.S. Is everyone reading this sure this is really a near-term priority? Be brave: if you disagree, go ahead and close it out. If someone disagrees, they'll reopen it, and if they don't: one less thing to do!

This is still happening to me. How can we get this triaged and posted to Upwork?

@shawnborton If you want contributors to work on this, then you should apply External. This issue is already triaged, I suppose.

Sounds great, adding External now.

So, to clarify. We will revert this and this issue would go away, but bring back the old issue?
If so, which issue do we think is worse? Seems the other one, right? If so, even though I agree the previous fix is a hack and not a real fix, I don't think we should revert it without fixing the other issue.

n6-hold is lifted, label removed! PR is waiting on review from @iwiznia

Ping for

@mallenexpensify that's for you

Paid in Upwork, inc. the $250 bonus for n6 hold, canceled job, now closing this (need a emoji for this...  🌂?)


[t3][p1L]T3 transfer api test

Goal
Implement unit test for Transfer API.
In this PR

Implement TransferControllerTest using standard format.
Refactor previous test file directories.

Next PR

Implement TransferServiceImplTest.
Probably some other services' unit tests.


The API documentation site doesn't make it clear immediately that it is only an API documentation site.

https://run-z.github.io/run-z/
If one is unfamiliar with TypeDoc, this site could be easily mistaken as the main site, the API documentation site, and the Wiki all in one.
Proposal: Change the title to "API docs | run-z"
Didn't make a pull request for this because wasn't sure if this change is wanted.
Of course, if you change the site to the main site, and API documentation site, and the Wiki all in one, that is a better solution.

Done

It seems that another problem was introduced:

Not sure why this is now on the API docs site, but it's clearly irrelevant. Can we do something about it?

Aha. TypeDoc chooses wrong README automatically. Fixed.


Add keybord key capture

Describe the bug
A simple case I have is that when search keyword is inputed, then press enter key, search is executed, like Google web search box, it has the same effect as I manually click search bottun.
To Reproduce
Steps to reproduce the behavior:

Code/Link to Repo:

Expected behavior
A clear and concise description of what you expected to happen.
Screenshots
If applicable, add screenshots to help explain your problem.
** Specifics (please complete the following information):**

Python Version:
Pynecone Version:
OS:
Browser (Optional):

Additional context
Add any other context about the problem here.

I think you can already this. For your specific example, you can simply wrap the pc.input in a pc.form which has the on_submit event that gets triggered when the user presses enter while the form has focus.
Generally, the on_key_down and on_key_up events of pc.input should also pass the pressed key to their event handler, so you could check in the event handler if it is the enter key (or whatever other key you are interested) that is pressed/released.

Is there a component called pc.form?  I found pc.form_control in this Docs page https://pynecone.io/docs/library/forms/formcontrol, and there is no event trigger on_submit.  pc.forms raise an error said module not callable.
Tried on_key_down of input, but this will trigger event each time when a single key is pressed. This causes to much event when typing  search word. Anyway, I'll filter it to see if it's "Enter", then do the search.

Thank you both, I'll try and go back here.

Upgraded to 0.1.31, new problem occurs:

The code works in version 0.1.29:
pc.table(                 pc.tr(                     pc.foreach(State.th_fields, generate_th)                 ),                 pc.foreach(                     State.return_lists,                     generate_tr                 )             ),
`def generate_td(value, index) -> pc.Component:
return pc.cond(
index == State.last_index,
pc.cond(
value == "",
pc.td(pc.icon(tag="download", on_click=lambda x: State.download_pdf(value), _hover={"cursor": "pointer"}), border_width="1.5px", margin="0px", padding="8px", text_align="center"),
pc.td("", border_width="1.5px", margin="0px", padding="8px", text_align="center")
),
pc.td(value, border_width="1.5px", margin="0px", padding="8px")
)
def generate_tr(row) -> pc.Component:
return pc.tr(
pc.foreach(
row,
lambda value, index: generate_td(value, index)
),
_hover={"bg": "lavender"}
)`


Ensure records with a deletion date are invisible for clients

The models that can have a deletion date:

User
Group
Message

Related issue: https://github.com/turms-im/turms/issues/979


Headless mode print listener address info

dlv headless mode print address info if --listen flag default
Example

dlv debug --headless
start listener addr <IP_ADDRESS>:49635

dlv connect <IP_ADDRESS>:49635

maybe we should only do this if --log=true?

This address information is provided to the dlv client to use, This information does not belong to --log information.

I agree with @aarzilli that this belongs in the logs, however maybe we should consider logging to be enabled by default when running in headless mode?

I want a dlv connect client to use the address (the dlv server not specified --listen), but do not want to print the log, so as to avoid mixing applications and log output. Perhaps there should be a new flags marker?

IMHO it's a reasonable use case, maybe only print if if Headless && Addr == "localhost:0

@aarzilli , yes it is my intention. I'm changed the pull request, thanks.
if Headless {
		if Addr == "localhost:0" {
			// Print listener address
			fmt.Printf("API server listening at: %s\n", listener.Addr())
		}
...

@visualfc sorry for the delay on this. I don't think you saw my last comment, but let's just be consistent and always print the listener address, even if the user specified one themselves. After that, please squash into a single commit, and format it as specified by https://github.com/derekparker/delve/blob/master/CONTRIBUTING.md#format-of-the-commit-message and I will merge.
Sorry for all of the delay and back & forth on this, it has been an especially busy few weeks.

update, headless always print listener address
fmt.Printf("API server listening at: %s\n", listener.Addr())


Repo sync for protected CLA branch

The pull request is created from main637862655177296845 to main to fix git push error for protected CLA branch

@ghogen : Thanks for your contribution! The author(s) have been notified to review your proposed change. @evanwindom


Can we get coin locking to protect rug pulls and make investors comfortable, I need this ASAP PLEASE

Please propose new CIPs by creating a new Discussion.

Yes please, I believe this is crucial before gas on fire.

Please propose new CIPs by creating a new Discussion.

Sorry wrong place
On Fri, Jul 9, 2021 at 11:41 AM maebeam @.***> wrote:

Closed #23 https://github.com/bitclout/cips/issues/23.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/bitclout/cips/issues/23#event-5001057202, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AUEECVE37IL4RGC6C2HBE33TW4KB7ANCNFSM5AC33CEQ
.

--
Brandon P. Parker
757-751-7791 va
917-475-6150 ny
www.theParkerazzi.com
www.instagram.com/theparkerazzi


Numbers with counter aren't correctly considered

Numbers with counter aren't correctly considered, like with 2日 it will have only にち above the 日 and ignore the 2.
https://github.com/shogo82148/igo-javascript/issues/4

Please provide a dictionary whose license compatible with MIT license, and it can solve such issue. Otherwise I won't have no time and interest to fix this.

Seem nobody want to spend their free time to solve this so close this issue.


[DNM] hack in the moveonly and lexical borrow scope flags to on

@swift-ci smoke test

this PR was just for experimentation


Automated daily update to rustc (to nightly-2024-11-13)

Automated update to Github CI workflow rust.yml by create-pull-request GitHub action

Pull Request Test Coverage Report for Build<PHONE_NUMBER>2
Details

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 82.47%

Totals

Change from base Build<PHONE_NUMBER>9:
0.0%

Covered Lines:
19773

Relevant Lines:
23976

💛  - Coveralls


Dashboard-Admin-App - Sprint 1

Description:

Build the Screen using the style guide.
Integrate Screen with the Backend

I'll be working on this
@emmsdan


Code blocks within lists don’t render correctly

GFM allows for lists to contain backtick fenced code blocks by just indenting the entire block by 4 spaces for each nested list. These spaces are then removed for rendering.
GitHawk seems to have some issues parsing these, and the rendering issues as a result seem to cascade as the code blocks aren’t correctly interpreted: https://github.com/Instagram/IGListKit/issues/1081#issuecomment-362993099

Sent with GitHawk

Very weird! Will dig


[BEAM-22] Use CommittedResult in InMemoryWatermarkManager

Be sure to do all of the following to help us incorporate your contribution
quickly and easily:

[x] Make sure the PR title is formatted like:
[BEAM-<Jira issue #>] Description of pull request
[x] Make sure tests pass via mvn clean verify. (Even better, enable
Travis-CI on your fork and ensure the whole test matrix passes).
[x] Replace <Jira issue #> in the title with the actual Jira issue
number, if there is one.
[x] If this contribution is large, please file an Apache
Individual Contributor License Agreement.

This enable unprocessed elements to be handled in the Watermark manager
after they are added to the CommittedResult structure.

R: @kennknowles

LGTM once you rebase to the direct-java directory. I'll take one more look then and merge.

Done.


Modified websocket example to automatically retrieve server's hostname.

Oh, I made a trivial mistake. Thank you for the PR.


Interceptoor Loggers aren't displaying.

Package version v1.0.0
Dio version v5.3.2
IDE - Visual Studio Code
Flutter version 3.13.0
The interceptors aren't displaying on the debug console on VScode anymore.

Hi @levi956,
Are running your app using "Start Debugging"? the log function only works within the debugging mode so if you're running your app without debugging it won't work!

Oh mind me, thank you. I hadn't realized I was not running on debug mode.