How to speed up progressive encoding?

Hi all, I wrote the following code to compare the speed of progressive encoding vs non-progressive encoding for a 1GB file with 200 data shards and 20 parity shards:
//go:build ignore
// +build ignore

// Copyright 2015, Klaus Post, see LICENSE for details.
//
// Simple encoder example
//
// The encoder encodes a single file into a number of shards
// To reverse the process see "simpledecoder.go"
//
// To build an executable use:
//
// go build simple-decoder.go
//
// Simple Encoder/Decoder Shortcomings:
// * If the file size of the input isn't divisible by the number of data shards
//   the output will contain extra zeroes
//
// * If the shard numbers isn't the same for the decoder as in the
//   encoder, invalid output will be generated.
//
// * If values have changed in a shard, it cannot be reconstructed.
//
// * If two shards have been swapped, reconstruction will always fail.
//   You need to supply the shards in the same order as they were given to you.
//
// The solution for this is to save a metadata file containing:
//
// * File size.
// * The number of data/parity shards.
// * HASH of each shard.
// * Order of the shards.
//
// If you save these properties, you should be able to detect file corruption
// in a shard and be able to reconstruct your data if you have the needed number of shards left.

package main

import (
	"bufio"
	"flag"
	"fmt"
	"io/ioutil"
	"os"
	"path/filepath"
	"time"

	"github.com/klauspost/reedsolomon"
)

var dataShards = flag.Int("data", 200, "Number of shards to split the data into, must be below 257.")
var parShards = flag.Int("par", 20, "Number of parity shards")
var outDir = flag.String("out", "", "Alternative output directory")

func init() {
	flag.Usage = func() {
		fmt.Fprintf(os.Stderr, "Usage of %s:\n", os.Args[0])
		fmt.Fprintf(os.Stderr, "  simple-encoder [-flags] filename.ext\n\n")
		fmt.Fprintf(os.Stderr, "Valid flags:\n")
		flag.PrintDefaults()
	}
}

func main() {
	start := time.Now()
	// Parse command line parameters.
	flag.Parse()
	args := flag.Args()
	if len(args) != 1 {
		fmt.Fprintf(os.Stderr, "Error: No input filename given\n")
		flag.Usage()
		os.Exit(1)
	}
	fname := args[0]

	// Create encoding matrix.
	enc, err := reedsolomon.New(*dataShards, *parShards)
	checkErr(err)
	fmt.Println("Finished creating reedsolomon encoding matrix.")

	// Open the file for reading
	f, err := os.Open(fname)
	checkErr(err)
	defer f.Close()

	dir, file := filepath.Split(fname)
	if *outDir != "" {
		dir = *outDir
	}
	// calculate the shard size
	fi, err := f.Stat()
	if err != nil {
		// Could not obtain stat, handle error
	}
	fmt.Printf("The file is %d bytes long\n", fi.Size())

	filesize := fi.Size()
	if filesize%200 != 0 {
		panic("file size must be a multiple of 200 bytes")
	}
	shardsize := filesize / 200 // 200 file shards
	println("shard size:", shardsize)

	// create the parity shard buffer
	parity := make([][]byte, 20) // 20 recovery shards
	for i := range parity {
		parity[i] = make([]byte, shardsize)
	}

	// create the parity shards
	buf := make([]byte, shardsize)
	index := 0
	r := bufio.NewReader(f)
	elapsed := time.Since(start)
	fmt.Println("time elapsed until starting to encode file:", elapsed)
	for {
		start := time.Now()

		// read in a chunk
		_, read_err := r.Read(buf)
		if read_err != nil { // assume EOF
			println("all done!")
			break
		}
		// write it out into a file
		outfn := fmt.Sprintf("%s.%d", file, index)
		err = os.WriteFile(filepath.Join(dir, outfn), buf, 0644)
		checkErr(err)

		elapsed := time.Since(start)
		fmt.Println("reading + writing time:", elapsed)
		start = time.Now()

		// encode the chunk
		err = enc.EncodeIdx(buf, index, parity)
		checkErr(err)
		index++

		elapsed = time.Since(start)
		fmt.Println("encoding time for shard", index, ":", elapsed)
	}
	start = time.Now()

	// Write out parity shards into files.
	for i, shard := range parity {
		outfn := fmt.Sprintf("%s.%d", file, 200+i)

		fmt.Println("Writing to", outfn)
		err = ioutil.WriteFile(filepath.Join(dir, outfn), shard, 0644)
		checkErr(err)
	}

	elapsed = time.Since(start)
	fmt.Println("time taken to write out parity files:", elapsed)

}

func checkErr(err error) {
	if err != nil {
		fmt.Fprintf(os.Stderr, "Error: %s", err.Error())
		os.Exit(2)
	}
}

Output:
reedsolomon/examples$ time go run simple-encoder.go ~/Downloads/1GB.zip
Finished creating reedsolomon encoding matrix.
The file is<PHONE_NUMBER> bytes long
shard size: 5368709
time elapsed until starting to encode file: 65.674005ms
reading + writing time: 8.242166ms
encoding time for shard 1 : 133.489673ms
reading + writing time: 8.663781ms
encoding time for shard 2 : 32.475082ms
reading + writing time: 11.068881ms
encoding time for shard 3 : 39.272467ms
reading + writing time: 15.424516ms
encoding time for shard 4 : 33.573678ms
reading + writing time: 19.12296ms
encoding time for shard 5 : 39.149728ms
reading + writing time: 18.893182ms
encoding time for shard 6 : 38.416607ms
reading + writing time: 10.466169ms
... lines omitted for brevity ...
encoding time for shard 195 : 39.498974ms
reading + writing time: 11.668383ms
encoding time for shard 196 : 35.514783ms
reading + writing time: 17.014156ms
encoding time for shard 197 : 42.856191ms
reading + writing time: 12.128048ms
encoding time for shard 198 : 47.070398ms
reading + writing time: 7.328568ms
encoding time for shard 199 : 39.252697ms
reading + writing time: 8.452414ms
encoding time for shard 200 : 42.781552ms
all done!
time taken to write out parity files: 133.70886ms
total time spent on encoding: 8.088607059s

real    0m11.404s
user    0m7.337s
sys     0m2.276s

Am I doing anything wrong? This is significantly slower (around 2.5x slower) than the non-progressive version which takes around 4 seconds though uses around 1.5GB of memory. Is there a way to speed it up?

So when progressively encoding progressively you are encoding each shard to each of the 20 output shards.
There is assembler for up to 10 inputs or outputs. When you encode them separately you are doing 2 times 1 in -> 10 out.
This means 2 x 200 operations and each output being written 200 times.
When you do everything in one operation it will do 10 in to 10 out in each operation.
This means that each output is only written 2 x 20 = 40 times, so 5x less. Since your output is too small to fit in any cache you are likely limited by memory speed.
However, if you do your read/writes async you can probably claw back some wall time. Let me make an example.

A bit faster. Not massively if IO is fast SSD.

Thanks! It indeed is faster, went from 12s to 8s on my machine :+1:

So when progressively encoding progressively you are encoding each shard to each of the 20 output shards.

Is this parallelizable? Or does it have to wait until the previous shard has been encoded to each of the 20 shards before moving on to the next shard?

Actually it seems like we can do some rather simple improvements to get better speed.

See #248 - for me it is twice as fast now.


Nexys video with SD

Hi
The opentitan works on nexys video with Vivado hardware manager.
But I am just wondering if it support SD card and booting from that without the need of Vivado to do it ?
Best Regards

It seems that there is solution with digilent user guide.


Does RTD support installing from custom conda channels (e.g. conda-forge?)

Details

Project URL: https://readthedocs.org/projects/scikit-sparse/
Build URL (if applicable): https://readthedocs.org/projects/scikit-sparse/builds/4496612/
Read the Docs username (if applicable): anntzer

Expected Result
I need to install a package (suitesparse) from the conda-forge channel (https://anaconda.org/conda-forge/suitesparse) to build my package (scikit-sparse).  conda env export marks the custom channel as conda-forge::suitesparse, and conda env create -f environment.yml -n foo properly installs from it -- so I was hoping the same would happen on RTD.
Actual Result
The build immediately fails:
conda env create --name latest --file /home/docs/checkouts/readthedocs.org/user_builds/scikit-sparse/checkouts/latest/environment.yml
Fetching package metadata: ....
Solving package specifications: .
Error:  Package missing in current linux-64 channels:
  - conda-forge::suitesparse 4.5.3*

Even if RTD cannot afford installing from random channels for security reasons(?), perhaps conda-forge could be whitelisted?

I'm having the exact same problem:
Details

Project URL: https://github.com/CCI-Tools/ect-core
Build URL (if applicable): https://readthedocs.org/projects/ect-core/builds/4505081/
readthedocs.yml: https://github.com/CCI-Tools/ect-core/blob/master/readthedocs.yml
environment.yml: https://github.com/CCI-Tools/ect-core/blob/master/environment.yml

Local the exact same environment.yml files works.

I have  fixed the problem for my project.
I can confirm channels are supported in the environment.yml file.

The order is important, "default" has to be first.
I contrast to what you get from "conda env export" the channel name as a prefix to the package name is not allowed.

Awesome, thanks.  I'll leave this open as perhaps the docs should be updated accordingly.

@anntzer the environment.yml isn't it something specific from conda envs? I mean, the channels attribute (https://conda.io/docs/using/envs.html#create-environment-file-by-hand).
I'm closing this issue since I think RTD shouldn't duplicate the conda documentation for the environment.yml file.

When I initially opened this ticket there was some difference in behavior between conda on my computer and conda on RTD (namely, the default channel needed to be listed first on RTD).  I do not know whether it is still the case though.


Code block should use monospace font

Idk if this is due to my web browser setting, but I can't see code blocks with monospace.
(FYI, e.g. code blocks in GitHub's README come with monospace)
Example:

It'd be better to use monospace in such blocks.

I left the font for the code blocks as styled by the Toast UI Editor.
font-family: Consolas,Courier,Apple SD 산돌고딕 Neo,-apple-system,Lucida Grande,Apple SD Gothic Neo,맑은 고딕,Malgun Gothic,Segoe UI,돋움,dotum,sans-serif;

The first 2 (Consolas and Courier) are monospaced but many of the fallbacks are not. Presumably, you don't have Consolas or Courier available and so are ending up with one of the others. I'll update the font-family in an upcoming release which should solve this.


Uncaught TypeError: (intermediate value).setFromPoints is not a function

I am trying to get three-dxf to work on my liferay tomcat server. I believe I have dxf-parser.js fully working and I have r79 of three.min.js loaded.
When trying to display a dxf with the line
cadCanvas = new window.ThreeDxf.Viewer(dxf,document.getElementById('mainwrap'),400,400,font);
I get the error
Uncaught TypeError: (intermediate value).setFromPoints is not a function
    at drawArc (index.js?b635:445)
    at drawEntity (index.js?b635:212)
    at new Viewer (index.js?b635:112)
    at three.min.js:387
    at XMLHttpRequest.<anonymous> (three.min.js:385)

I was able to get the sample working with the http-server, so I'm not sure why it doesn't work on this server. Is this an issue with the version of three.min.js that I'm using?

I checked and threejs r79 is 3 years old so it's quite likely that things changed a bit.
On the sample is running r101.
https://github.com/gdsestimating/three-dxf/blob/ba3c3195bcd99291419a737966e20d31c4806060/sample/package.json#L11

The error was definitely related to using an older version of three.min.js. I ripped out the portlet that was causing conflicts with newer versions of three.min.js so I could switch to r101.
Everything works great. Thank you again.


drivers: usb: nordic: Fix max packet size handling

This commit fixes the issue with non-default max packet size (<64).
The max packet size value was not passed to low-level driver
in norfic hal (nrfx_usbd) causing 64-byte being send regardless of
configured endpoint size. Size mismatch results in communication
error on Linux hosts.
Signed-off-by: Paweł Zadrożniak<EMAIL_ADDRESS>

CC @rakons

Codecov Report

Merging #10934 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master   #10934   +/-   ##
=======================================
  Coverage   53.29%   53.29%
=======================================
  Files         215      215
  Lines       25904    25904
  Branches     5710     5710
=======================================
  Hits        13805    13805
  Misses       9778     9778
  Partials     2321     2321

Continue to review full report at Codecov.

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

recheck

recheck


tracing: Add common tag name, to specify app protocol

Commit Message: Add common tag name, to specify app protocol
Additional Description: #22594 Span of skywalking has a field called spanLayer, indicate it's http, rpc, db and so on. Currently this field is hardcoded to http as it's default value in ctor. Other telemetry impls may also have similar concept, so it's better introduce a common tag key,  to specify app protocol through setTag, to achieve protocol independent.
Why not add something like setSpanLayer to Tracing::Span interface:
- Because, the parameter type varies and coupling with impl, e.g. skywalking::v3::SpanLayer. And there are impls without this concept, currently among tracers that envoy supported, only skywalking comes with this. On the other hand, opentelemetry comes with kind indicating it's server or client, xray comes with direction stands for it's ingress or egress, both of kind and direction could be set using operation_name. Meanwhile operation name of skywalking is set to path due to #21199 .
Risk Level: Low
Testing:
Docs Changes:
Release Notes:
Platform Specific Features:
[Optional Runtime guard:]
[Optional Fixes #Issue]
[Optional Fixes commit #PR or SHA]
[Optional Deprecated:]
[Optional API Considerations:]

/assign-from @envoyproxy/first-pass-reviewers

/assign-from @envoyproxy/first-pass-reviewers

The tracers can get protocol from protocol method of TracingContext. So I don't think we need get the protocol value by setTag.

The tracers can get protocol from protocol method of TraceContext. So I don't think we need get the protocol value by setTag.

Thanks for reply.
I noticed there was a protocol method in TraceContext, StreamInfo also had a protocol method. But both the two stands for HTTP1, HTTP2, HTTP3, and finally set to tag with the key Tracing::Tags::get().HttpProtocol.
If reuse the protocol method, we have to write code like this at somewhere,
// pseudocode
SpanPtr startSpan(......, TraceContext& conetxt, ......) {
  const auto& protocol = context.protocol();
  if (protocol == "HTTP1" || protocol == "HTTP2" || protocol == "HTTP3") {
    setTag(Tracing::Tags::get().HttpProtocol, protocol);
  } else if (protocol == "Dubbo") {
    setSpanLayer(...... /* Dubbo */);
  } else if (protocol == "Thrift") {
     ......
  }
}

If this is acceptable, I will correct my code.

If reuse the protocol method, we have to write code like this at somewhere

Sorry, I didn't get it. Why we need these code? why couldn't we just set spanlayer of skywalking with the value of context.protocol()?

If reuse the protocol method, we have to write code like this at somewhere

Sorry, I didn't get it. Why we need these code? why couldn't we just set spanlayer of skywalking with the value of context.protocol()?

Because common callee method like startSpan or something else dosen't know the caller wants to set http protocol or span layer. So the if/else is needed.
Or it have to implement new tracer for each protocol, then we can set span layer directly with context.protocol().

I mean just always call the setSpanLayer here base on the protocol() value. Some if/else is necessary but we needn't iterate every possible protocol values. Except HTTP, we can even set all other protocols' span layer to Unknow.

Hi @wbpcode ,
I took your advice, getting protocol from trace context to set skywalking span layer. Please take a look. Thanks.


Remove unnecessary setting of _hatchet_nid in dataframe

Any reader or operation that modifies the graph was traversing the graph, then
traversing the node column of the dataframe to set the _hatchet_nid. Traversing
the dataframe is unnecessary, since updated node objects will be reflected in
both the graph and dataframe. This does not change the functionality, it
just removes an extra (duplicated) step that has been covered by traversing the
graph.

Is this similar to the extra traverse we had in unify?

Yes exactly the same issue. I was updating the node objects in the graph, then updating the node objects in the dataframe, not realizing the second update is duplicate


feat(MatStepper): Ability to focus the current step header

Feature Description
I would like to be able to programmatically set focus to the current step header.
Use Case
There are 2 use cases where I would like to be able to programmatically set focus to a step header:

When initially loading a page, I want to be able to give focus to the current step header.
When switching between steps programmatically using MatStepper.next, if anything has been done that caused the focus to shift outside of the stepper, the intended behavior of focusing the newly-selected header does not happen. I need to be able to move the focus back to the current step header.

Hello,
Thank you for reaching out. Changing which element is focused without user input can cause accessibility issues. For that reason, it would be hard for us to consider adding that as a feature.
Why do you want to move the focus back into the stepper? Are there other ways you can achieve.
-Zach

Javascript gives us the ability to set focus programmatically. It is up to us as developers to use that ability wisely.
In my case, the focus leaves the stepper because there is a process between steps to retrieve data using an HTTP request. While this is happening, we show a progress spinner on an overlay. When the HTTP request completes, we call MatStepper.next to advance to the next step. Showing the overlay causes the focus to go to the body element. I need to set the focus back to the proper element (the next step header) once the overlay is removed. Note that the overlay is a simple div with position:absolute, not a CDK overlay.
Even if there is a solution to the intra-step issue, it would still be helpful to be able to initialize focus as desired on page load.

Hello,
Thanks for getting back to us.

Javascript gives us the ability to set focus programmatically. It is up to us as developers to use that ability wisely.

I believe there should still be a way for you manage focus for your specific application, but I do not think this is something we need to build into the stepper component. Having a loading spinner in the middle of steps in the stepper is not something we want to build into the Stepper component.
What you're doing sounds reasonable, and I think there should be a way to do it using our library. I think that this can be accomplished by using some of the other components and directives in our library.
Sounds like when the overlay with spinner closes. You want browser focus to go back to what it was on before the spinner  overlay opened. I think using Dialog would be easier than using Overlay here. That's because the dialog will restore focus to where it originally was when closing.
Am I understanding your use case correctly?
-Zach

I'm in no way suggesting that a loading spinner be built into the stepper.
The same thing can happen if you disable the form while executing the HTTP request. Example: https://stackblitz.com/edit/mbcuhm
It's possible that the intra-step focus issue can be solved using focus restoration. However, that doesn't address the initial focus issue.
To me this request seems to be consistent with focus management features provided by other Material components. For example, MatDialog provides an initial focus feature that includes the dialog itself, and the MatTab component provides a focusTab method.


Entry list is blank on first local run

After cloning the repo and then running npm i followed by npm run start, the locally-hosted page doesn't show any entries. It seems you have to touch one of the md files to cause a rebuild, at which point all of the entries populate. Maybe there's a command we can run to force a rebuild on the first run, and we can add that to the readme?

Fixed!


feat(ssa): Expand instructions that can be hoisted in loop invariant code motion

Description
Problem*
No issue as something I noticed while profiling the blob
Summary*
In https://github.com/noir-lang/noir/pull/6563 we added a pass for loop invariant code motion. In the PR we block hoisting instructions out of loops that may have side effects or are unsafe to hoist (such as load and store). We reuse the can_be_deduplicated method on Instruction. However, PR #6563 was too restrictive and set deduplicate_with_predicate to be false. This prevents operations such as ArrayGet and ArraySet with dynamic indices from being hoisted. In ACIR gen this is not safe as we rely on the EnableSideEffectsIf context to appropriately handle predicates, but as loop invariant code motion only applies to Brillig we can safely hoist these instructions.
EDIT: This would require extra logic and checks so going to close this PR for now.
Additional Context
Documentation*
Check one:

[X] No documentation needed.
[ ] Documentation included in this PR.
[ ] [For Experimental Features] Documentation to be submitted in a separate PR.

PR Checklist*

[X] I have tested the changes locally.
[X] I have formatted the changes with Prettier and/or cargo fmt on default settings.

The original description is not true on its own. We can only deduplicate with a predicate when we know the instruction is not under an if statement.


Force refresh of viewmodels?

EDIT: See working example at https://github.com/FickleLife/stacked_vm_issue
I have a List which I am loading from a graphql endpoint using v4.0.0:alpha.11 (but this also happened on all previous versions) of flutter_graphql. It's a global search with filters. All functionality seems to work well with Stacked, except for caching and it seems to point to stacked viewmodels retaining state when it shouldn't (but hey I could be wrong) - which is why I thought I'd ask the brains trust here before I quiz the flutter_graphql folks :)
Excuse the colour scheme, still testing and need to see where everything is rendered.
When I search for "Apple" I get the correct results (makes a network call, no cache) Note the colour of the "pill" in the topmost item:

When I tick "Official Score" which removes items with a * after the number, it filters correctly (makes a network call, no cache)

When I untick "Official Score" it correctly loads the previous results from the cache and correctly updates the text of the listitem, but as you can see the colour of the "pill" is retained, and also when you click on the top item it takes you to the previous result (Aeroplane jelly lite pineapple) that occupied that spot

When I turn off the cache which forces a network call all the time, it all works correctly - so this is a bit of a puzzling one. The tree of each list item looks like:

There's a nested view/viewmodel CircularPercent2 to render the score "pill". The colour of the pill relies on a colour service which provides colouring data for the entirety of the app.
What's even more puzzling is:

text is correct and that is in ListTileItemProduct2
link is incorrect and that is in ListTileItemProduct2
Score is correct and that is in ListTileItemProduct2 -> CircularPercent2
Colour is incorrect and that is provided by ListTileItemProduct2 -> CircularPercent2 -> (colour service)

So it doesn't seem to present a pattern - if it was just ListTileItemProduct2 that was working and child viewmodels weren't I would have somethign to work with.
Ideally I'd like to keep local cache on and get the benefits of that. Any clues why loading from cache could cause viewmodels to not clear state/load fresh state vs an uncached call?
EDIT: I've just changed the reference of the title of the item from data.name (data used in the view that was passed from the constructor) to model.name (data passed from view constructor to viewmodel and then returned from the viewmodel back to the view) an the title now doesn't update - so this points towards the views getting the data, but not passing the data on to the viewmodel.... this also is the case for nested views - e.g CircularPercent2 view data correctly updates the score, but the colour is in the viewmodel. So there's something up with views not passing data to viewmodels when the data returned is cached.
Here's the code for completeness
ListTile(
                  title: Text(
                    model.name, //data.name,
                    style: Theme.of(context).textTheme.headline4,
                  ),
                  leading: Padding(
                    padding: const EdgeInsets.symmetric(vertical: 6),
                    child: CircularPercent2(
                      scoreData: data,
                    ),
                  ),
                  trailing: Icon(Ionicons.ios_arrow_forward),
                  onTap: () => model.navigate(),
                )

Since this was clear as mud, I've made a repo here with an example and a write up of what I am seeing. https://github.com/FickleLife/stacked_vm_issue

@FickleLife wooohooooo! this was pretty interesting bug to solve. The bug in your Flutter code, not your logic. So what's happening is actually common in Flutter when it comes to lists.
The widget tree is remembering the list items place and providing the same viewmodel as it had originally. Not only that it also takes every item that goes into index 0 and provides it with the same data that was enclosed on the Construction of the object.
What I did was add print statements in:

HomeView: inside the itemBuilder
ListItem: inside the build function
Scorerview; inside the build function
ScorerViewModel: Inside the constructor
ScorerViewModel: inside the getColor function

Here is the logs for the first run from fresh start
I/flutter (11889): 1. title:No 5 score:100 index:0
I/flutter (11889): 2. title:No 5 score:100
I/flutter (11889): 3. title:No 5 score:100
I/flutter (11889): 4. title:No 5 score:100 - Construction
I/flutter (11889): 5. title:No 5 score:100
I/flutter (11889): 1. title:No 4 score:75 index:1
I/flutter (11889): 2. title:No 4 score:75
I/flutter (11889): 3. title:No 4 score:75
I/flutter (11889): 4. title:No 4 score:75 - Construction
I/flutter (11889): 5. title:No 4 score:75
I/flutter (11889): 1. title:No 3 score:50 index:2
I/flutter (11889): 2. title:No 3 score:50
I/flutter (11889): 3. title:No 3 score:50
I/flutter (11889): 4. title:No 3 score:50 - Construction
I/flutter (11889): 5. title:No 3 score:50
I/flutter (11889): 1. title:No 2 score:25 index:3
I/flutter (11889): 2. title:No 2 score:25
I/flutter (11889): 3. title:No 2 score:25
I/flutter (11889): 4. title:No 2 score:25 - Construction
I/flutter (11889): 5. title:No 2 score:25
I/flutter (11889): 1. title:No 1 score:0 index:4
I/flutter (11889): 2. title:No 1 score:0
I/flutter (11889): 3. title:No 1 score:0
I/flutter (11889): 4. title:No 1 score:0 - Construction
I/flutter (11889): 5. title:No 1 score:0

it all looks great. Numbers are in order and the construction of the ScorerModel happens on time with the correct data. Now look what happens when I add 1 value.
 The list view (and Flutter awesomely optimised render tree) doesn't recognize that the widget has been changed so it didn't "reconstruct" it fully and provided it with the enclosed data that it was initially contructed with. This means that every new widget will be constructed with the value at list.length - 1 (the last list item).
To fix this you have to use a Key :) You HAVE to use a key for your List items especially if you're dynamically manipulating them like you are. Whether that's changing a color, showing an unread state etc. So a good habbit to form would be to pass in the key to your widget item and then set it to a unique value. The item title, or id or something. this fixes the example that you shared with me.
The updated list item. Take not of key being passed to super
class ListItem extends StatelessWidget {
  final Thing data;
  ListItem({
    Key key,
    this.data,
  }) : super(key: key);

  @override
  Widget build(BuildContext context) {
    print('2. title:${data.title} score:${data.score}');
    // final do we get the latest data here?
    return ViewModelBuilder<ListItemModel>.reactive(
      builder: (context, model, child) => ListTile(
        title: Text(data.title),
        leading: Scorer(data: data),
      ),
      viewModelBuilder: () => ListItemModel(),
    );
  }
}

Item builder: Take note of using unique key.
ListView.builder(
          itemCount: model.listOfStuff.length,
          itemBuilder: (context, i) {
            var thingo = model.listOfStuff[i];
            print('1. title:${thingo.title} score:${thingo.score} index:$i ');
            return ListItem(
              key: Key(thingo.title),
              data: thingo,
            );
          },
    )

And that's it. all your cache induced stress released haha. Thanks again for the detailed issue. I had so much fun in my little break solving this.
poi

@FickleLife I hope that wasn't too late. To also add to the additional assumptions. Stacked will only cache ViewModels for the widget in the same way that stateless does. This is the "caching" code, which is to avoid rebuilding the ViewModel widget everytime it's removed and re-inserted into the tree in the case of a list scroll or something like that.
  void initState() {
    super.initState();
    // We want to ensure that we only build the model if it hasn't been built yet.
    if (_model == null) {
      _createViewModel();
    }
    // Or if the user wants to create a new model whenever initState is fired
    else if (widget.createNewModelOnInsert) {
      _createViewModel();
    }
  }

Amazing @FilledStacks, thank you for the complete and detailed reply. I'll try it out in a few hours and close this issue.

Wonderful, it works as expected - Thanks for everything @FilledStacks!


WIP - Change download URL

Proposed changes

https://docs.docker.com/ee/docker-ee/ubuntu/
Changed URL for .deb file download
Update Note format

Related issues (optional)
This is a continuation of the work started in https://github.com/docker/docker.github.io/pull/9286.

Deploy preview for docsdocker ready!
Built with commit 640bc2abde6b4382dbfc63d5f81af8ae8bcd01c6
https://deploy-preview-10116--docsdocker.netlify.com

@Dawn-Wood @KoryKessel-Docker PTAL

Comments within.
One small thing I could not comment on is the use of 'OK' in the text as a word (a pet peeve I have). The sentence I am referring to reads, "It’s OK if apt-get reports that none of these packages are installed." I think that this should be a note instead that reads: "The apt-get command may report that none of the packages are installed."

Thanks @KoryKessel-Docker. I made your suggested changes. PTAL.


[$250] Room - Endless Loading of Header When Navigating to Thread of Mentioned Room

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

Version Number: v1.4.65-0
Reproducible in staging?: y
Reproducible in production?: y
Issue reported by: Applause - Internal Testing
Action Performed:

Navigate to any room.
Type "#" and select the suggested room, then send the message.
Proceed to its thread.

Expected Result:
Upon entering the thread, the header enters an infinite loading state.
Actual Result:
The mentioned room should be displayed in the header as expected, without any endless loading.
Workaround:
n/a
Platforms:

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

[x] Android: Native
[x] Android: mWeb Chrome
[ ] iOS: Native
[ ] iOS: mWeb Safari
[x] MacOS: Chrome / Safari
[x] MacOS: Desktop

Screenshots/Videos
Add any screenshot/video evidence
https://github.com/Expensify/App/assets/93399543/57d1d16e-9aef-4760-a53b-b2144846da17
View all open jobs on GitHub
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~0137b18b289d467863
Upwork Job ID:<PHONE_NUMBER>804722688
Last Price Increase: 2024-05-10

We think that this bug might be related to #vip-vsb

@isabelastisser FYI I haven't added the External label as I wasn't 100% sure about this issue. Please take a look and add the label if you agree it's a bug and can be handled by external contributors.

Proposal
Please re-state the problem that we are trying to solve in this issue.
Room - Endless Loading of Header When Navigating to Thread of Mentioned Room
What is the root cause of that problem?
Here we set isLoading to true if the report has not reportId or title
What changes do you think we should make in order to solve the problem?
Update this check like below
!report.reportID || !title && !report. chatReportID;

What alternative solutions did you explore? (Optional)

@shahinyan11 I think the expected result should show the message in the header, but with your solution, it will show Chat Report which is the report name from the report.

We get title using ReportUtils.getReportName here in which we return empty string here if the report is policyRoom and do not have participants

Your root cause might not be correct, the issue is only reproduced if the message just contains the mention tag.
https://github.com/Expensify/App/assets/25520267/f64f7912-6784-4697-8705-1753008851f6
So I think the root cause is on parentReportActionMessage we get rid of the report mention from the message and end up with an empty string if there's no text after the mention.

If you try to edit the message with a message that only contains the report mentioned, it will display in the header. So to be consistent we should display the report mentioned in the header.

@mollfpr, any updates? Are we still waiting for proposals?

@isabelastisser Still waiting for @shahinyan11 and other proposals.

Proposal
Please re-state the problem that we are trying to solve in this issue.
Header of thread report displayed as skeleton view if the parent report action message is report mention.
What is the root cause of that problem?
In HeaderView the skeleton view will be displayed if isLoading:
https://github.com/Expensify/App/blob/035adb890e559f287368b75f8cbe138c20e3f73a/src/pages/home/HeaderView.tsx#L220
is true. It's value will be true in this issue because title variabletitle = ReportUtils.getReportName(reportHeaderData); is empty string.
This function will go to here and then in here and return empty string. This is because reportAction.message[0].text is empty string. The parent reportAction.message[0].text is empty but reportAction.message[0].html is something like <mention-report reportID=\"50451872397987297398\"/>
What changes do you think we should make in order to solve the problem?
In this line:
https://github.com/Expensify/App/blob/035adb890e559f287368b75f8cbe138c20e3f73a/src/libs/ReportUtils.ts#L2949
We could use reportAction?.message?.[0]?.html and detect all occurrence of pattern <mention-report reportID=\"xxxxx\"/> by using regex and replace it by it's report name, and add the report names in reportAction?.message?.[0]?.text in that line.

@mollfpr can you please review the proposal above? Thanks!

@tsa321 I'm incline with your approach, could you share the result of your proposal?

Issue not reproducible during KI retests. (First week)

@mollfpr
The code could be:
 Code:

function embedMentionedReportName(reportAction){
    const {html, text} = reportAction?.message?.[0];
    if (!html) {
        return text;
    }

    const mentionReportRegex = /(\<mention-report reportID\=\"(\d+)\"\/>)/gm;
    if (!mentionReportRegex.test(html)) {
        return text;
    }

    const splittedText = text.split(" ");

    // Remove tags except for mention-report
    const filteredHtml = html.replace(/(\<(?!mention-report).*?\>)/gm, "");

    // Embed report name into html enclosed by tag, for exampple: <#announce>
    const htmlWithReportName = filteredHtml.replace(/(\<mention-report reportID\=\"(\d+?)\"\/\>)/gm,
        (match, p1, p2) => `<${getReportName(getReport(p2))}>`
    );
    const splittedHtmlWithReportName = htmlWithReportName.split(" ");

    const taggedReportNameRegex = /\<(.+)\>/gm;
    splittedHtmlWithReportName.forEach((str, index) => {
        const match = taggedReportNameRegex.exec(str ?? "");
        if (match) {
            const cSpliitedText = splittedText[index] ?? "";
            splittedText[index] = match.index > 0 ? cSpliitedText + match[1] : match[1] + cSpliitedText;
        }
        taggedReportNameRegex.lastIndex = 0;
    })

    return splittedText.join(" ");
}

Then in here:
https://github.com/Expensify/App/blob/035adb890e559f287368b75f8cbe138c20e3f73a/src/libs/ReportUtils.ts#L2949
call it with:
    const embeddedMentionedReportName = embedMentionedReportName(reportAction);
    return Str.removeSMSDomain( embeddedMentionedReportName ?? '');

 Result:
https://github.com/Expensify/App/assets/114975543/37cff8e9-7c21-4407-b834-08eb1ac8a584

not overdue.

No new proposals, Melvin!

Almost looks good! Just one issue if we send the message a report mentions and a text, it removes the space between them.
https://github.com/Expensify/App/assets/25520267/7ecff2fe-2596-4d07-b52e-9bd837a01571

@mollfpr I cannot reproduce this bug in staging, maybe already fixed from BE ?

I still able reproduce the issue in dev and staging. The key is we should wait until the API is send.
https://github.com/Expensify/App/assets/25520267/6ee4bcf9-b05c-4437-ad99-fa80368b5bc2

@mollfpr you are right

Here is revised version of the function:
code:
```javascript
function embedMentionedReportName(reportAction){
const {html, text} = reportAction?.message?.[0];
if (!html) {
    return text;
}

const mentionReportRegex = /(\<mention-report reportID\=\"(\d+)\"\/>)/gm;
if (!mentionReportRegex.test(html)) {
    return text;
}

let splittedText = text.split(" ");

// Remove tags except for mention-report
const filteredHtml = html.replace(/(\<(?!mention-report).*?\>)/gm, "");

// Embed report name into html enclosed by tag, for exampple: <#announce>
const htmlWithReportName = filteredHtml.replace(/(\<mention-report reportID\=\"(\d+?)\"\/\>)/gm,
    (match, p1, p2) => `<${getReportName(getReport(p2))}>`
);
const splittedHtmlWithReportName = htmlWithReportName.split(" ");

const numberOfMentionedRoomInFront = splittedHtmlWithReportName.findIndex((item) => item[0] !== '<' && item[1] !=='>');
if (numberOfMentionedRoomInFront > 0) {
    splittedText = Array(numberOfMentionedRoomInFront).fill("").concat(splittedText);
}

const taggedReportNameRegex = /\<(.+)\>/gm;
splittedHtmlWithReportName.forEach((str, index) => {
    const match = taggedReportNameRegex.exec(str ?? "");
    if (match) {
        const cSpliitedText = splittedText[index] ?? "";
        splittedText[index] = match.index > 0 ? cSpliitedText + match[1] : match[1] + cSpliitedText;
    }
    taggedReportNameRegex.lastIndex = 0;
})

return splittedText.join(" ");

}

</summary></details>

Thanks for the update @tsa321! I'll try the update when the BE issue is resolved.

Hi @mollfpr, what are the next steps here?

Sorry for the delay 🙏
The proposal from @tsa321 looks good to me! We probably can improve the logic on the PR but overall we are all good here.
🎀 👀 🎀 C+ reviewed!

Issue not reproducible during KI retests. (Second week)

Thank you, maybe I will submit a PR in one or two days.

It looks like the PR was submitted here: https://github.com/Expensify/App/pull/42504

https://github.com/Expensify/App/issues/40928#issuecomment-2123851678 I could still reproduce the issue just now.

@mollfpr, please complete the BZ list. Thanks!

Bump @mollfpr to complete the check list.

Payment summary:
@mollfpr requires payment through NewDot Manual Requests Role C+ $250 PENDING
@tsa321 requires payment automatic offer (Contributor) PAID!

Bump @mollfpr

Sorry for the delay.

[@mollfpr] The PR that introduced the bug has been identified. Link to the PR:
[@mollfpr] The offending PR has been commented on, pointing out the bug it caused and why, so the author and reviewers can learn from the mistake. Link to comment:

No offending PR. The issue seems a case that we missing to handle and how we should process the mentioned action message from BE.

[@mollfpr] A discussion in #expensify-bugs has been started about whether any other steps should be taken (e.g. updating the PR review checklist) in order to catch this type of bug sooner. Link to discussion:

The regression step should be enough.

[@mollfpr] Determine if we should create a regression test for this bug.
[@mollfpr] If we decide to create a regression test for the bug, please propose the regression test steps to ensure the same bug will not reach production again.

Open admins or announce room
Send a message containing only the mentioned room name (for example #admins or #announce)
Select Reply in thread of that message
Wait for at least 5 seconds
Verify the thread report header looks like the common thread header and is not changed into endless loading
👍 or 👎

$250 approved for @mollfpr

All set!


CD terraform

This PR attempts to terraform apply the govuk base infrastructure and conditionally update each service deployments if their respective task definition has changed compared to what is currently running in the ECS cluster.
Ref:

trello card

This looks pretty good to me - only thing I'd suggest is removing the trigger: true bits - I don't think we actually need to trigger the app deployments when terraform succeeds, they just need the passed: [ run-terraform] bit.

cool, let me test that...

I needed without the trigger, doesn't work

Have I got the right place for testing? https://cd.gds-reliability.engineering/teams/govuk-tools/pipelines/deploy-apps-test Is it deployed there at the moment?

Have I got the right place for testing? https://cd.gds-reliability.engineering/teams/govuk-tools/pipelines/deploy-apps-test Is it deployed there at the moment?

Yes, but now it is not working because the govuk-infrastructure branch is set to main again in the concourse pipeline config, if you set it to cd-terraform, this will work.

Cool. Am I right in thinking this will trigger a redeploy of all apps on any Terraform change?
Which scenarios did you test with this?
Would be good to document what runs when (feel free to do that in another PR if you want). Probably in docs/applying-terraform.md?

I updated the docs here in this commit:
https://github.com/alphagov/govuk-infrastructure/pull/96/commits/73e201191c7c194ee4766b5ac4b45406edc66fc0
The scenario under which this was tested was just modifying the govuk-infrastructure and letting Concourse detect the change.
It will first run:

run-terraform job
after that, it will run the other deploy-${application} in parallel.
as Bill mentions, it is a no-op if the task definition is not updated even though it is a bit confusing the output of the update-ecs-service task. That's why we added a conditional at the beginning of that task so that service update section is not run if the task definition is not changed.

all done in terms of review fixes.


Build: use kin-openapi with order fix

Summary
Testing steps

note the test will fail until https://github.com/content-services/content-sources-backend/pull/797 is merged, but this doesn't affect those tests


Appstudio update test-component-pac-tsji

Pipelines as Code configuration proposal
To start the PipelineRun, add a new comment with content /ok-to-test
For more detailed information about running a PipelineRun, please refer to Pipelines as Code documentation Running the PipelineRun
To customize the proposed PipelineRuns after merge, please refer to Build Pipeline customization

Pipelines as Code CI/test-component-pac-tsji-on-pull-request has successfully validated your commit.

StatusDurationName

✅ Succeeded
7 seconds
init

✅ Succeeded
20 seconds
clone-repository

✅ Succeeded
39 seconds
build-container

✅ Succeeded
14 seconds
deprecated-base-image-check

✅ Succeeded
15 seconds
inspect-image

✅ Succeeded
17 seconds
clair-scan

✅ Succeeded
1 minute
clamav-scan

✅ Succeeded
13 seconds
sbom-json-check

✅ Succeeded
16 seconds
label-check

✅ Succeeded
10 seconds
show-summary

✅ Succeeded
9 seconds
show-sbom

Pipelines as Code CI/test-component-pac-tsji-on-pull-request has successfully validated your commit.

StatusDurationName

✅ Succeeded
7 seconds
init

✅ Succeeded
20 seconds
clone-repository

✅ Succeeded
39 seconds
build-container

✅ Succeeded
14 seconds
deprecated-base-image-check

✅ Succeeded
15 seconds
inspect-image

✅ Succeeded
17 seconds
clair-scan

✅ Succeeded
1 minute
clamav-scan

✅ Succeeded
13 seconds
sbom-json-check

✅ Succeeded
16 seconds
label-check

✅ Succeeded
9 seconds
show-sbom

✅ Succeeded
10 seconds
show-summary


Create style consistency between pages

As a developer, I will carry a style theme across the pages with the circle decorations and remove any unneeded items, so that the site has consistency.

I will add theme properties to a style.css file for main theme styling

I accidentally pushed changes and made a PR for updates to the UI that were not intended to be included. I'll need to revert to previous version of this branch.


swagger dotnet automation failed for new SDK becuase it's not in the trigger path of resourcemanager CI

The error from https://github.com/Azure/azure-rest-api-specs/pull/19045:

The core resourcemanager pipeline ['/mnt/vss/_work/1/s/azure-sdk-for-net//sdk/resourcemanager/ci.mgmt.yml'] does not contain a trigger path for your library please run 'eng/scripts/Update-Mgmt-CI.ps1' to add the correct trigger paths.

Therefore, we may need to run eng/scripts/Update-Mgmt-CI.ps1 if the SDK is newly onboarded in order to pass the build step in swagger SDK automation pipeline.

Label prediction was below confidence level 0.6 for Model:ServiceLabels: 'ARM:0.3096869,Data Factory:0.20927702,Cognitive - Form Recognizer:0.037322324'


Can I somehow see phantomjs console output?

I have a bug in my code that is only shown in PhantomJS (test failing). Is there a way to see phanomjs' console output?
I tried VELOCITY_DEBUG=1 but I cannot see console.log() or throw "Error" in the meteor ourput or the cucumber.log file.
To clarify, I want output that normally would be output to the browsers console, i.e. if i use chrome instead of phantomjs i can see the error in the browser (with preserve log enabled).
Thanks

Try setting WD_LOG=debug

Thanks Sam
I can now see exceptions, but not any console.log(), console.error() or alert() output, though.
For anyone interested, this is the command I ran:
CHIMP_OPTIONS='--browser=phantomjs' WD_LOG=debug VELOCITY_DEBUG=1 meteor --test

Exceptions are shown as:
[chimp][phantom.stdout] [ERROR - 2015-07-29T03:51:18.632Z] Session [10f955c0-35a5-11e5-bf79-93ab163cb51e] - page.onError - msg: <message>

Could this stackoverflow question be related?: http://stackoverflow.com/questions/18115888/phantomjs-not-returning-results/18131369#18131369

I think this might also help you:
http://webdriver.io/api/protocol/log.html

Aaah of cause. It makes so much sense now that it works ;)
The testing framework is capturing the console output, so that you can test if the application outputs the correct logs (if you have such behavior). Therefore I need to make a test that asserts on (or just logs) any console.log() in the application.
In my application code:
if (Meteor.isClient) {
    console.log("message");
}

In my test:
this.client.log("browser").then(function(log) {
    console.log(JSON.stringify(log));
});

log here is an object, which has a value attribute. Looks like this:
{
    "sessionId":"3d04ad50-35a9-11e5-b1dc-c5b303a8ebf6",
    "status":0,
    "value":[{
        "level":"INFO",
        "message":"message (undefined:undefined)",
        "timestamp":1438143671317
    }]
}

A bit of work to do debugging, but it works.

awesome, definitely something I'll look into auto-delegating sometime


Support xml ^4.1.0

Hi, can you add compatibility with xml ^4.1.0?
I have this error with flutter_svg package
flutter_svg >=0.18.0 is incompatible with dart_rss ^1.1.0. Because flutter_svg >=0.18.0 depends on xml ^4.1.0 and dart_rss 1.1.0 depends on xml ^3.0.0, flutter_svg >=0.18.0 is incompatible with dart_rss 1.1.0.
Thank you very much!

#10


Christopherngutierrez/test context parse results

Proposed changes
Changes:

kerngen/high_parser/parser.py: added _get_context_from_commands_list static method to verify that ParseResults._commands contains exactly one Context.
kerngen/tests/test_kerngen.py: contains two additional test to verify that a "LookupError" is raised if multiple Context or no Context is found in ParseResult._commands.
pytest.ini: points to the source code directory. Fixes issue with imports on tests.

What types of changes does your code introduce to the HE Toolkit project?
Put an x in the boxes that apply

[x] Bugfix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[x] Documentation update (if none of the other choices apply)

Checklist
Put an x in the boxes that apply. You can also fill these out after creating
the PR. If you are unsure about any of them, do not hesitate to ask. We are
here to help! This is simply a reminder of what we are going to look for before
merging your code.

[x] I have read the CONTRIBUTING agreement
[x] Current formatting and unit tests / base functionality passes locally with my changes
[x] I have added tests that prove my fix is effective or that my feature works (if appropriate)
[x] I have added necessary documentation (if appropriate)
[ ] Any dependent changes have been merged and published in downstream modules

Further comments
If this is a relatively large or complex change, kick off the discussion by
explaining why you chose the solution you did, what alternatives you
considered, etc.

Removed README.MD from pull request, per @faberga suggestion.


Correct the order of grouped content results

The order of the results for the groupd_content_and_links
endpoint was incorrect.
This meant that any client code would have a hard time paging
because the last_seen_content_id which determines which page
comes next would be wrongly reported.
@matmoore and @benhyland

This seems relevant:
https://gov-uk.atlassian.net/wiki/display/FS/RFC+36%3A+Stop+preserving+order+for+links

@tuzz Thanks for the heads up.
The ordering fix here is on the content_id level, not on the links level, but it is good to remember that we shouldn't guarantee link ordering in this endpoint, as per the RFC.


Convert readthedocs links for their .org -> .io migration for hosted projects

As per their blog post of the 27th April ‘Securing subdomains’:

Starting today, Read the Docs will start hosting projects from subdomains on the domain readthedocs.io, instead of on readthedocs.org. This change addresses some security concerns around site cookies while hosting user generated data on the same domain as our dashboard.

Test Plan: Manually visited all the links I’ve modified.

Thanks for the heads-up. Not using rtfd right now, so closing.


Add automated test

Resolves #25. To be squash merged.

Add ./test that aims to use all features of haskell-flake
Add ./test/test.sh that verifies that the devshell of ./test is as one would expect
Add ./runtest.sh at project root to run the full test
Run the same ^ in Github Actions

I'm not entirely happy with this approach; in particular, test.sh seems pretty hacky. But it works. Not sure if it will scale.
I just would like to have some sort of automated tests before doing substantial changes to haskell-flake.

I'm not entirely happy with this approach

Me neither, but it seems to get the job done.
Improvements are kind of blocked Flakes improvements like

https://github.com/NixOS/nix/issues/6124
https://github.com/NixOS/nix/issues/7028
https://github.com/NixOS/nix/issues/7730
possibly https://github.com/NixOS/nix/pull/6530 for .. input urls?

Yea, let's go with it for now and make it perfect when the time is right.


Multi-cluster Apps - cannot get revisions

What kind of request is this (question/bug/enhancement/feature request):
Bug
Steps to reproduce (least amount of steps as possible):

as a standard user, deploy the multi-cluster app mySQL with an old version v0.3.7
wait for the app to be available
upgrade the app to the latest version, v0.3.8
wait for the app to be available
click Rollback

Result:

there are no revisions in the list

Other details that may be helpful:

the creatorID of the multi-cluster app is the same as the userID, but the creatorID of the revisions is NOT

Environment information

Rancher version (rancher/rancher/rancher/server image tag or shown bottom left in the UI):
Rancher: master on 6/13
Installation option (single install/HA):
HA

@kinarashah does the issue exist for MCA only, or regular apps as well?

https://github.com/rancher/rancher/issues/20204

The bug fix is validated on Rancher: master be3ae399
The same steps as the original issue's:

as a standard user, deploy the multi-cluster app mySQL with an old version v0.3.7
wait for the app to be available
upgrade the app to the latest version, v0.3.8
wait for the app to be available
click Rollback

Result:

see the revisions, and can choose one to rollback successfully


switched CI to github actions, added linter, refactoring.

Codecov Report

:exclamation: No coverage uploaded for pull request base (master@603a29b). Click here to learn what that means.
The diff coverage is n/a.

@@            Coverage Diff             @@
##             master       #10   +/-   ##
==========================================
  Coverage          ?   100.00%
==========================================
  Files             ?         4
  Lines             ?       267
  Branches          ?         0
==========================================
  Hits              ?       267
  Misses            ?         0
  Partials          ?         0

Flag
Coverage Δ

#unittests
100.00% <ø> (?)

Impacted Files
Coverage Δ

rest_framework_datatables_editor/filters.py
100.00% <0.00%> (ø)

rest_framework_datatables_editor/renderers.py
100.00% <0.00%> (ø)

rest_framework_datatables_editor/viewsets.py
100.00% <0.00%> (ø)

rest_framework_datatables_editor/pagination.py
100.00% <0.00%> (ø)

Continue to review full report at Codecov.

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


BUG REPORT : basic install issue in minikube

Is this a BUG REPORT or FEATURE REQUEST?
Choose one: BUG REPORT or FEATURE REQUEST
BUG REPORT

What happened:
not running pods
What you expected to happen:
running pods
How to reproduce it (as minimally and precisely as possible):
jm7_joo@instance-1:~/openebs/k8s$ sudo minikube start --vm-driver=none
Starting local Kubernetes v1.8.0 cluster...
Starting VM...
Getting VM IP address...
Moving files into cluster...
Setting up certs...
Connecting to cluster...
Setting up kubeconfig...
Starting cluster components...
Kubectl is now configured to use the cluster.`
===================
WARNING: IT IS RECOMMENDED NOT TO RUN THE NONE DRIVER ON PERSONAL WORKSTATIONS
        The 'none' driver will run an insecure kubernetes apiserver as root that may leave the host vulnerable to C
SRF attacks
When using the none driver, the kubectl config and credentials generated will be root owned and will appear in the
root home directory.
You will need to move the files to the appropriate location and then set the correct permissions.  An example of th
is is below:
        sudo mv /root/.kube $HOME/.kube # this will write over any previous configuration
        sudo chown -R $USER $HOME/.kube
        sudo chgrp -R $USER $HOME/.kube
        sudo mv /root/.minikube $HOME/.minikube # this will write over any previous configuration
        sudo chown -R $USER $HOME/.minikube
        sudo chgrp -R $USER $HOME/.minikube
This can also be done automatically by setting the env var CHANGE_MINIKUBE_NONE_USER=true

jm7_joo@instance-1:~/openebs/k8s$ kubectl apply -f openebs-operator.yaml
serviceaccount "openebs-maya-operator" created
clusterrole "openebs-maya-operator" created
clusterrolebinding "openebs-maya-operator" created
deployment "maya-apiserver" created
service "maya-apiserver-service" created
deployment "openebs-provisioner" created
customresourcedefinition "storagepoolclaims.openebs.io" created
customresourcedefinition "storagepools.openebs.io" created
storageclass "openebs-standard" created

jm7_joo@instance-1:~/openebs/k8s$ kubectl apply -f openebs-storageclasses.yaml
storageclass "openebs-standalone" created
storageclass "openebs-percona" created
storageclass "openebs-jupyter" created
storageclass "openebs-mongodb" created
storageclass "openebs-cassandra" created
storageclass "openebs-redis" created
storageclass "openebs-kafka" created
storageclass "openebs-zk" created
storageclass "openebs-es-data-sc" created

jm7_joo@instance-1:~/openebs/k8s$ kubectl get pods
NAME                                   READY     STATUS    RESTARTS   AGE
maya-apiserver-6fd77fd7cb-xtjbm        1/1       Running   0          8m
openebs-provisioner-6fd7569c6f-m879j   1/1       Running   0          8m

jm7_joo@instance-1:~/openebs/k8s$ kubectl apply -f demo/jupyter/demo-jupyter-openebs.yaml
deployment "jupyter-server" created
persistentvolumeclaim "jupyter-data-vol-claim" created
service "jupyter-service" created

jm7_joo@instance-1:~/openebs/k8s$ kubectl get pods
NAME                                                             READY     STATUS              RESTARTS   AGE
jupyter-server-6c7bddcbcb-j6f7j                                  0/1       ContainerCreating   0          3m
maya-apiserver-6fd77fd7cb-xtjbm                                  1/1       Running             0          13m
openebs-provisioner-6fd7569c6f-m879j                             1/1       Running             0          13m
pvc-0b257c69-d93b-11e7-9e24-42010a8a0002-ctrl-5c8875b459-hjpfb   2/2       Running             0          3m
pvc-0b257c69-d93b-11e7-9e24-42010a8a0002-rep-54dfdd7cc8-bdbfj    1/1       Running             0          3m
pvc-0b257c69-d93b-11e7-9e24-42010a8a0002-rep-54dfdd7cc8-mrds5    0/1       Pending             0          3m

jm7_joo@instance-1:~/openebs/k8s$ kubectl describe pod jupyter-server-6c7bddcbcb-j6f7j
Name:           jupyter-server-6c7bddcbcb-j6f7j
Namespace:      default
Node:           instance-1/<IP_ADDRESS>
Start Time:     Mon, 04 Dec 2017 21:35:27 +0000
Labels:         name=jupyter-server
                pod-template-hash=2736887676
Annotations:    kubernetes.io/created-by={"kind":"SerializedReference","apiVersion":"v1","reference":{"kind":"Repli
caSet","namespace":"default","name":"jupyter-server-6c7bddcbcb","uid":"0b246ebb-d93b-11e7-9e24-42010a...
Status:         Pending
IP:
Created By:     ReplicaSet/jupyter-server-6c7bddcbcb
Controlled By:  ReplicaSet/jupyter-server-6c7bddcbcb
Containers:
  jupyter-server:
    Container ID:
    Image:          satyamz/docker-jupyter:v0.4
    Image ID:
    Port:           8888/TCP
    State:          Waiting
      Reason:       ContainerCreating
    Ready:          False
    Restart Count:  0
    Environment:
      GIT_REPO:  https://github.com/vharsh/plot-demo.git
    Mounts:
      /mnt/data from data-vol (rw)
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-qwttd (ro)
Conditions:
  Type           Status
  Initialized    True
  Ready          False
  Type     Reason                 Age   From                 Message
  PodScheduled   True
Volumes:
  data-vol:
    Type:       PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
    ClaimName:  jupyter-data-vol-claim
    ReadOnly:   false
  default-token-qwttd:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  default-token-qwttd
    Optional:    false
QoS Class:       BestEffort
Node-Selectors:  <none>
Tolerations:     <none>
Events:
  Type     Reason                 Age   From                 Message
  ----     ------                 ----  ----                 -------
  Normal   Scheduled              3m    default-scheduler    Successfully assigned jupyter-server-6c7bddcbcb-j6f7j to instance-1
  Normal   SuccessfulMountVolume  3m    kubelet, instance-1  MountVolume.SetUp succeeded for volume "default-token-qwttd"
  _Warning  FailedMount            1m    kubelet, instance-1  Unable to mount volumes for pod "jupyter-server-6c7bddcbcb-j6f7j_default(0b255863-d93b-11e7-9e24-42010a8a0002)": timeout expired waiting for volumes to attach/mount for pod "default"/"jupyter-server-6c7bddcbcb-j6f7j". list of unattached/unmounted volumes=[data-vol]
  Warning  FailedSync             1m    kubelet, instance-1  Error syncing pod
  Normal   SuccessfulMountVolume  1m    kubelet, instance-1  MountVolume.SetUp succeeded for volume "pvc-0b257c69-d93b-11e7-9e24-42010a8a0002"
  Normal   Pulling                56s   kubelet, instance-1  pulling image "satyamz/docker-jupyter:v0.4"_

jm7_joo@instance-1:~/openebs/k8s$ kubectl get nodes
NAME         STATUS    ROLES     AGE       VERSION
instance-1   Ready     <none>    2d        v1.8.0

jm7_joo@instance-1:~/openebs/k8s$ uname -a
Linux instance-1 4.10.0-40-generic #44~16.04.1-Ubuntu SMP Thu Nov 9 15:37:44 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

Anything else we need to know?:

@jm7joo , There are a couple of things that I can tell from the output that you have provided.

The unable to mount volume that your noticing is not an issue here. The pvc got created and tried to connect to the jupyter pod, which was still getting created. The error is because of that.
In the output of kubectl describe pod I can see that the jupyter image is still being pulled.

Can you wait for the image to be completely pulled and let the container try to start. Sometimes it might take a while for the application containers to start.
Capture the details of  kubectl describe pod maybe after the image is pulled and you are seeing that your jupyter pod is in a state other than Running.

@jm7joo Also I see that one of your pvc's is still in pending state, that maybe because your storage class for jupyter pod has been defined to have 2 replicas and in a minikube setup you can run only one replica.

@yudaykiran thanks for your response.
I figure out 2 replicas problem for jupyter in minikube. so I modify some value and I check it's running.
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
   name: openebs-jupyter
provisioner: openebs.io/provisioner-iscsi
parameters:
  openebs.io/storage-pool: "default"
  openebs.io/jiva-replica-count: "1"
  openebs.io/volume-monitor: "true"
  openebs.io/capacity: 5G

jaeminjoo@instance-1:/home/jm7_joo/openebs/k8s$ kubectl get pods
NAME                                                             READY     STATUS    RESTARTS   AGE
jupyter-server-6c7bddcbcb-7m7dj                                  1/1       Running   0          18h
maya-apiserver-6fd77fd7cb-5vsdq                                  1/1       Running   0          18h
nginx-wqmk5                                                      1/1       Running   0          17h
openebs-provisioner-6fd7569c6f-jjh58                             1/1       Running   0          18h
pvc-7f37e9dc-d956-11e7-88f3-42010a8a0002-ctrl-85c4c877cf-bvp59   2/2       Running   0          17h
pvc-7f37e9dc-d956-11e7-88f3-42010a8a0002-rep-56477cb68f-75r6w    1/1       Running   0          17h
pvc-84e1236f-d94d-11e7-88f3-42010a8a0002-ctrl-55fb8bfbbc-27dbv   2/2       Running   0          18h
pvc-84e1236f-d94d-11e7-88f3-42010a8a0002-rep-84869bd669-296tw    1/1       Running   0          18h


[DOCS] Fix broken links networking overview

Which issue(s) this PR addresses:

Closes #178
This PR fixes all of the broken links on the Networking Overview page.

@mangelajo @oglok can you take a look when you get a chance?

That's really helpful, thank you @cmwylie19 !
/lgtm


Left justify most of the content

I think it would make things look better if the content below the hero image were to be left-justified instead of centered. Anyone else feel this? It should all be within a container div, so left-justifying should still look nice.
Have a try, see what you can do! Let us know if you want to tackle this so you can be assigned.

I am interested in this issue. please assign it to me

All yours, good luck!


Mocking new application on tests does not clear yii\base\Event::$_events

What steps will reproduce the problem?
Mock application on tests that registers some event listeners
Tear this application down
Mock a new application that registers some event listeners that does not register event listeners(or registers new ones)
Observe yii\base\Event::$_events
What is the expected result?
When old test tears down old application, it should somehow clear event listeners
What do you get instead?
When old test tears down old application, it doesnt clear event listeners
My thoughts
Maybe event listeners should be added to Application?
Additional info

Q
A

Yii version
2.0.9

PHP version
7.0.10

Operating system
Ubuntu 16.04

How do you mock it?

it should somehow clear event listeners

No it should not.

When old test tears down old application, it doesnt clear event listeners

This is expected behavior for any class static fields.
However, since Event::$_events isprivate there should be a static method allowing to clear it.

@klimov-paul Right now I know it shouldn't do that, there is no code that does it
Yes it is expected behavior for any static classes but it limits writing unit tests, because when one test application that registers event listeners, tests that they are ok, and tears this application down with all of its components and another test application that registers different event listeners with other components test that those other events work, but because first tests event listeners are on Event class still, they fail.
I wouldn't want to register dummy components just for those tests to pass
@samdark with yii\codeception\TestCase

Resolved by commit 48b0b962b877a05420e0d88b963a322c309bd05d


Why RedissonRedLock only unlock the acquired locks in the release stage?

Expected behavior
I expect that RedissonRedLock will release all the locks when it fail to acquire the lock
I learn about redlock from this page: Distributed locks with Redis, and it tell me that we should try to release the lock in all instances even if the lock was not acquired successfully, since may be we have executed the command successfully but the redis instance failed to send the response to the client.
Actual behavior
RedissonRedLock  only release the acquired locks, accroding to Class RedissonMultiLock, Line 249
                if (failedLocksLimit == 0) {
                    **unlockInner(acquiredLocks);**
                    if (waitTime == -1 && leaseTime == -1) {
                        return false;
                    }
                    failedLocksLimit = failedLocksLimit();
                    acquiredLocks.clear();
                    // reset iterator
                    while (iterator.hasPrevious()) {
                        iterator.previous();
                    }
                } else {
                    failedLocksLimit--;
                }

Steps to reproduce or test case
uninvolved
Redis version
uninvolved
Redisson version
3.7.5
Redisson configuration
uninvolved

By default failedLocksLimit = 0 this means that unlockInner(acquiredLocks); method is always invoked.

Sorry, this is not the answer I expected.  When failedLocksLimit = 0, unlockInner(acquiredLocks);will be invoked, that is right.
But when unlockInner(acquiredLocks); is invoked, it only release the lock that client acquired, but not release the lock that it did not acquired, that may have trobule, according to this page:  Distributed locks with Redis

it only release the lock that client acquired, but not release the lock that it did not acquired

I'm sorry, but only acquired lock could be released.

Done


Give mysql tarball a version

Since we are separating mysql tarball with Druid release tarball, in order for users to get mysql extension, they should be able to download from druid.io
To upload mysql tarball to static.druid.io, we'll have to differentiate different releases of mysql tarball by including the version in the filename.
Partially fix https://github.com/druid-io/druid/issues/2539

:+1:

I assume you ran a test for this guy to make sure the build and install still works right, is that correct?
If so then I'm :+1:

@drcrallen Yes. The only change is that now mysql tarball's name has a version number.


Hotkeys (rotation, flipping, etc?)

Hello!
In the original Sprytile, there were hotkeys for rotating and flipping tiles. Are they available in 2.8? If so,  would it be possible to implement a feature to add them when the Sprytile tools are active?
My current solution is to just use Quick Favourites.

Hi!
Unfortunately, the hotkeys are not implemented in 2.8 yet. (As you pointed out the current workaround is to use quick favourites)

Hotkeys for rotating and flipping tiles are now available in beta10 (4,5,6,7 keys)


Feature/sort ifs shortcuts

Changes
This PR will add the ability to sort the IFS shortcuts in the IFS browser:

The shortcuts have a new item type shortcut - previously they were directory like regular directories.
There are new icons for the shortcuts to move the shortcut up or down in the list, to the top or bottom and to sort the list.
There is a new icon in the view to sort the shortcuts alphabetically - case-insensitive.
There is a new setting in the configuration to automatically sort the shortcuts when a shortcut is added or removed.

It was my ambition to have a drag-and-drop function implemented so one could just reorder by dragging the shortcut into he desired place - but this is currently way above my skills in VS Code extension programming! 😆
I use the IFS browser almost all the time - with my sources in IFS - so that's why I have focused my contributions to this area of your excellent VS Code extension. My many IFS shortcuts had been added in a long time-frame and were in a chaotic order, and I added this functionality for my own convenience, but it could be useful to others as well. I know I could have manually ordered the shortcut list in the configuration, but this may not be obvious to all...
Checklist

[x] have tested my change
[ ] updated relevant documentation
[x] Remove any/all console.logs I added
[x] eslint is not complaining
[ ] have added myself to the contributors' list in CONTRIBUTING.md
[x] for feature PRs: PR only includes one feature enhancement.

Wow, this is some excellent work. Expect a review over the weekend!

It was my ambition to have a drag-and-drop function implemented so one could just reorder by dragging the shortcut into he desired place - but this is currently way above my skills in VS Code extension programming!

I would love this also. This is actually not possible with the VS Code API at the moment... so it's not possible no matter how bad we want that!

Thanks for the feedback - and fair comments.
I'll have a look at it asap - hopefully this weekend...

I agree the right-click options for moving a shortcut up and down and sorting the shortcuts may be redundant to the UI, and I have removed them now. I added them because the icons for moving a shortcut up and down stays on the display if the shortcut is clicked, and I don't know if I like that... 😄

About the drag-and-drop - are you sure it is not possible with the current VS Code API?
It is my understanding, that it is possible (see this example) but it requires the use of createTreeView and coding of a dragAndDropController instead of the simple registerTreeDataProvider - and that is a change way too big for me to code...!

@chrjorgensen Interesting. As far as I'm aware it wasn't and I think it would require implementing our own provider. I will ask some of the other extension authors I know and see what they think.

@chrjorgensen Your changes look excellent! Thanks. If you are happy with everything, let me know and we can get this merged.

I'm happy - go ahead... 👍


Website with given name StartStopVM already exists

Hi,
Deployment failed with 1 error (conflict) for StartStopVM of type Microsoft.Web/sites:
"Website with given name StartStopVM already exists."

Hi schottky81,
That error typically occurs due to another subscription having that same name. This subscription is not one owned by you but by the start/stop community in general. Please try to use another name that is unique.

Hi schottky81 -

We have provided the help text on this property (as below). The name should be unique globally hence you're getting this error due to the name already taken.

Please make sure you delete this RG and freshly deploy it or if you want to redeploy this, please make sure you choose the parent template name (starts with "Microsoft_***") to redeploy.
Please don't redeploy the template "StartStop_Automation" as this is child or nested template which will only deploy the V2 solution partially.

Please dont hesitate to reach us if you need further help on this.

Hi parojasmsft and balas77,
Thank you very much for your replies. I have deleted the RG and redeployed with a unique name for "Azure Function App Name" and the deployment went well this time.
I was able to schedule stop and start on VMs for WVD.
Thank you again.

Glad to hear the issue was resolved.


AudioCVT not usable

There doesn't appear to be a way to allocate the buffer space for the AudioCVT struct.
In C, you would do this:
// Change 1024 stereo sample frames at 48000Hz from float32 to int16.
SDL_AudioCVT cvt;
SDL_BuildAudioCVT(&cvt, AUDIO_F32, 2, 48000, AUDIO_S16, 2, 48000);
SDL_assert(cvt.needed); // obviously, this one is always needed.
cvt.len = 1024 * 2 * 4;  // 1024 stereo float32 sample frames.
cvt.buf = (Uint8 *) SDL_malloc(cvt.len * cvt.len_mult);
// read your float32 data into cvt.buf here.
SDL_ConvertAudio(&cvt);
// cvt.buf has cvt.len_cvt bytes of converted data now.

(Source: https://wiki.libsdl.org/SDL_AudioCVT)
On the Go side, there doesn't appear to be a way to actually store a reference to the buffer in the AudioCVT.  The .Buf() function returns a slice with its length and capacity set, but the data pointer is still nil, so any accesses to that slice result in a segmentation fault.
So, unless I'm missing something, there are a few options:

Expose a way to set buf so that we can fill the slice returned by .Buf() (I consider this a more dangerous option because calling append() with the returned slice can cause our original data pointer to become invalid).
Make ConvertAudio() take a slice of appropriate length/capacity and place its data pointer into the AudioCVT for the duration of the cgo call.
Do struct translation for cgo calls that take an AudioCVT.

Thoughts?

Hiya, sorry for the late reply (merry christmas and happy new year!).
I'm thinking of giving user a couple interfaces for allocating and freeing the buffer AllocBuf() and FreeBuf(). I think it's more streamlined than making buf public and doesn't disturb the SDL interface of ConvertAudio(). But if it's a problem, then I think I like option 1 the best because it's the most straightforward solution and gives user a lot of control.
...actually yeah, let's try option 1! I've push a commit that make buf public as Buf and renamed the Buf() method to BufAsSlice(). Let me know if it works for you!

Hiya, sorry for the late reply (merry christmas and happy new year!).
I'm thinking of giving user a couple interfaces for allocating and freeing the buffer AllocBuf() and FreeBuf(). I think it's more streamlined than making buf public and doesn't disturb the SDL interface of ConvertAudio(). But if it's a problem, then I think I like option 1 the best because it's the most straightforward solution and gives user a lot of control.
...actually yeah, let's try option 1! I've push a commit that make buf public as Buf and renamed the Buf() method to BufAsSlice(). Let me know if it works for you!

No worries on the delay, its a busy season for everyone.
ConvertAudio takes a pointer to go memory, so any pointers in that memory must not be pointers to go memory. So we need buf to point to C memory. Unfortunately, unless we include "C" in the calling code for C.malloc or expose sdl.Malloc and sdl.Free, there's no good way to provide a C buffer. I'm somewhat against exposing the SDL_Malloc and SDL_Free functions, because they sometimes use a custom malloc implementation. I'd probably recommend adding those buffer functions you were describing.

No worries on the delay, its a busy season for everyone.
ConvertAudio takes a pointer to go memory, so any pointers in that memory must not be pointers to go memory. So we need buf to point to C memory. Unfortunately, unless we include "C" in the calling code for C.malloc or expose sdl.Malloc and sdl.Free, there's no good way to provide a C buffer. I'm somewhat against exposing the SDL_Malloc and SDL_Free functions, because they sometimes use a custom malloc implementation. I'd probably recommend adding those buffer functions you were describing.

Done! I suppose I'll let the user decide whether to do something with Buf directly using import "C" or use the functions provided. I also made Buf into unsafe.Pointer to make it clearer that it should point to memory from C.

This works! There's an odd point where you need to set LenCVT = Len in order for the slice from BufAsSlice() to be useful for filling with source data (len_cvt is really an out-value from ConvertAudio telling you how much of the buffer is the output), but I don't see a better option, because LenCVT is definitely the right value to use as the length of the slice, and I'm not going to assert that LenCVT == 0 is not a valid output from ConvertAudio.  Maybe there should be some kind of comment to this effect, though, since it's surprising.
Either way, I think this closes the issue.  Thanks!


using --writeback reading and writing speeds are slower

using --writeback reading and writing speeds are slower instead of faster writing speed:
./juicefs mount sqlite3://myjfs.db ./test1 -d --writeback

./juicefs mount sqlite3://myjfs.db ./test1

Environment:

JuiceFS master branch:
minio as base cloud:
OS (e.g VERSION="18.04.6 LTS (Bionic Beaver)"):
Kernel (e.g. Linux DESKTOP-DCI4BQR <IP_ADDRESS>-microsoft-standard-WSL2 #1 SMP Fri Mar 29 23:14:13 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux):
Object storage (minio):
Metadata engine info (version, cloud provider managed or self maintained):
Network connectivity (JuiceFS to metadata engine, JuiceFS to object storage):
Others:

Writeback will writing data to the disk and then uploading it to object storage in the background.
Is your disk a cloud disk? The bandwidth should not be limited to just tens of MiB. Perhaps you can check the disk performance and the performance of the object storage. If the write bandwidth of the object storage is larger than that of the cloud disk, you may consider turning off writeback, depending on your scenario.


Make consortium name configurable

Currently consortium name is "SampleConsortium" - I do not see a way to configure consortium name. This should be configurable by the spec file.

Yes. It is not at present. You are very welcome to submit a PR to fix this should be straight forward.

@litong01 in design thinking, should we suggest the non-system channel fashion as recommended way? If so, we can skip it feature request and move forward.

@litong01 in design thinking, should we suggest the non-system channel fashion as recommended way? If so, we can skip it feature request and move forward.

I would say this makes sense, since the system channel actually is only a "baggage" and is not needed anymore.


Hello

Running your script and the bot is online and evrything seems to be working but we are unable to get any of the commands to work.


Code diff for rolling back a workload improvements

This pr addresses issue #4636 by adding 1) yamleditor diff types 'Unified/Split' and 2) filtering out unnecessary yaml diff fields
To test this PR:

Create a Deployment under Workloads using a specific nginix Image of your choosing. (eg nginix:1.21.3)
Edit Config the newly created deployment and change the nginix Image to another version (eg nginix:latest)
Now that you have an multiple revisions you can select the Rollback menu option for the deployment
When the modal displays, select your previous revision and click the Show Diff button to display the yaml code diff
Unnecessary yaml keys such as apiVersion, kind, metadata, etc are no longer shown in the code diff

Small nit on a function name but the code is easy enough to follow that it's not a deal-breaker for me. Works as advertised; LGTM!


Fixing issue #17 by upgrading the node version for netstats client...

Apparently one of the libraries used by the netstats client has been upgraded recently and can't deal with the old 0.12 release of node as noted by issue #17; using the latest node, version 7, fixes that issue

Thanks!


[FEATURE REQUEST] - Support for new LCM sampler

Description
I just released AP Workflow 6.0 with the SD Parameter Generator. Everything works fine, except when I try to test the new LCM sampler with the LCM models:

This configuration generates the following error:

Error occurred when executing SDParameterGenerator:
'model.diffusion_model.input_blocks.0.0.weight'
File "xyz/ComfyUI/execution.py", line 153, in recursive_execute
output_data, output_ui = get_output_data(obj, input_data_all)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "xyz/ComfyUI/execution.py", line 83, in get_output_data
return_values = map_node_over_list(obj, input_data_all, obj.FUNCTION, allow_interrupt=True)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "xyz/ComfyUI/execution.py", line 76, in map_node_over_list
results.append(getattr(obj, func)(**slice_dict(input_data_all, i)))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "xyz/ComfyUI/custom_nodes/comfyui-prompt-reader-node/nodes.py", line 603, in generate_parameter
checkpoint = comfy.sd.load_checkpoint_guess_config(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "xyz/ComfyUI/comfy/sd.py", line 431, in load_checkpoint_guess_config
model_config = model_detection.model_config_from_unet(sd, "model.diffusion_model.", unet_dtype)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "xyz/ComfyUI/comfy/model_detection.py", line 141, in model_config_from_unet
unet_config = detect_unet_config(state_dict, unet_key_prefix, dtype)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "xyz/ComfyUI/comfy/model_detection.py", line 49, in detect_unet_config
model_channels = state_dict['{}input_blocks.0.0.weight'.format(key_prefix)].shape[0]

From what I read, LCM is fully compatible with Apple MPS, I wonder if it's an issue with the node itself.
Reproduction steps
No response
Image file
No response
Version
1.0.0

Nevermind. This is not related to SD Parameter Generator:
https://github.com/comfyanonymous/ComfyUI/issues/1933

I'd like to add some additional details to this issue, just for transparency:
After reading the link I posted above, and some testing, I saw that the LCM sampler generates the error simply because the LCM and LCM-LoRA models come with the diffusers format.
To load them, you need one or two nodes, as I quickly implemented here:

So, perhaps, the SD Parameter Generator could do this.
On the other hand, I'm concerned that it might stretch the scope of this node too much and force you to implement too many things. Also, personally, the quality of the images I get with LCM is very low (maybe I'm doing something wrong), so I'm not 100% sure it's worth the effort.
To me, it's a nice-to-have, not a must-have, and definitely much lower priority than the other things I submitted so far.

I’ve recently been busy with other things, so could you tell me which of these 6 feature requests you’ve mentioned are more urgent, so I can add them asap, while the rest may need to wait for a while. About the LCM sampler, I may need to do some search before I can make decisions, since it is new knowledge to me.

In order of priority, I'd say:

#8
#6
#15
#16
#20 (if you decide that it's worth doing it)
#17

But it's entirely up to you. I'd go for the easiest to implement, to have a series of quick wins :)
Thank you, as usual.

I have decided not to include LCM-related features for now.
In terms of development difficulty, this would be a simple copy-paste job as official support for LCM is already in place, thus the problem doesn't lie here.
Based on my understanding, LCM is not currently mainstream, and the number of LCM models is very limited. I believe users who currently use LCM have the capability to figure out how to load LCM models through other nodes. Since LCM models are UNET models, users would still need to load regular checkpoints to provide CLIP models, and they would also need additional specific parameters, which would significantly increase the complexity of the Generator.
I have completed all the features except for LCM support in the dev branch. My current plan is to try writing batch support as mentioned in #13. If this takes some time, I will merge the completed parts into the main branch first.

I think it's a good decision. Given that LCM-LoRA can be applied transparently to existing workflows, it's possible that very few people will look for the actual LCM models. For them, I'll simply show how to patch AP Workflow.


1:1 connection between 2 devices

Using WiFi-Direct connect 2 devices and share some data between them

Basic tutorial used: https://stuff.mit.edu/afs/sipb/project/android/docs/guide/topics/connectivity/wifip2p.html
Good docs: https://stuff.mit.edu/afs/sipb/project/android/docs/reference/android/net/wifi/p2p/WifiP2pManager.html

1 to 1 connection working now and merged in to main branch.


Unable to uninstall v1 apps from Explorer over Apps & Marketplace menu

Cont. of https://github.com/rancher/dashboard/issues/2959
After installing v1 app from Explorer which is now supported in rancher/rancher:master-head 5715b8a user sees the v1 apps (monitoring and logging so far) in App & Marketplace menu. Problem is when user is trying to remove/uninstall the v1 app from the menu when it says Error: uninstall: Release not loaded: cluster-monitoring: release: not found

And similary for Cluster Tools -  when user clicks on trash bin icon for installed v1 app.

V1 apps can be uninstalled only either in Ember or from Explorer by clicking Cluster Tools button and then uninstall Legacy -> Projects -> Apps
Ideal would be if the v1 legacy apps are not showing in Apps and Marketplace but it probably must show because of upgrades to v2.

This is a backend issue - reported here: https://github.com/rancher/rancher/issues/33454

https://github.com/rancher/rancher/issues/33454#issuecomment-876748266

Darren looking into what's happening with Helm v2 apps displaying here and fixing that. https://github.com/rancher/rancher/issues/33454 is that work.

This is a backend issue and there's nothing changing in the UI to fix it.


For SettingFields enum, should this follow "extensible enum" pattern?

The decision is no, we should not follow the extensible enum pattern for the SettingFields enum.  This is because, if the service were to add a field to the ConfigurationSetting (key-value) object and the user requested it using an extensible enum, we would not be able to populate the value on ConfigurationSetting without a new release of the library that updated the ConfigurationSetting class.  In a new release, we would have the opportunity to update the enum as well.  Therefore, extensibility of the enum is not needed.  If the user were to critically need the new field before a new library version was available, they could obtain it using the SettingFields.All enum value.


Resume Training

Based on the code, it seems the main method in the captcha_train.py deletes recursively the training data. For neural networks that take longer to train, it is useful to be able to fine tune the network along the way. Unless I am interpreting the code wrong?

When running the captcha_train it ends or you just running for as long as you want? I'm new to this and wondering if it actually stops after a while. Thanks

You run it for as long as you want. I encourage you to run the training in the background using nohup and disown. That way you can evaluate the network to see how accurate it is, before you cancel the training. This bug was about canceling training, and then restarting where left off. I manually fixed it for my use case.
Sent from my iPhone X

On Feb 8, 2018, at 10:18 AM, Jose Vera<EMAIL_ADDRESS>wrote:
When running the captcha_train it ends or you just running for as long as you want? I'm new to this and wondering if it actually stops after a while. Thanks
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or mute the thread.

I see now, I'll try with 2 million captchas and see if the accuracy is good enough. With 50k it wast about 10%. Thanks for the info

How long did you train for? I trained with 50k for about 16hrs and got high 90% accuracy. I also am training on CPU only with an i7-6700K. However my captchas were only 4 numbers.
Sent from my iPhone X

On Feb 8, 2018, at 12:44 PM, Jose Vera<EMAIL_ADDRESS>wrote:
I see now, I'll try with 2 million captchas and see if the accuracy is good enough. With 50k it wast about 10%. Thanks for the info
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or mute the thread.

For about 2 hours and I just started generating the 2 million captchas to train on DigitalOcean. Will leave it working for a week or so, hopefully I get a good accuracy.

@KyleBoyer hey! i am facing the same issue, after restarting captcha_train.py, it restarts from step 0 deleting all previous data, I'd be great if you could tell how you fixed it for your case!
Thanks!

My captche program runs on raspberry PI 3B+, It has been running for three days.....

....

Where to control training step?

Hi,
I have this issue too.
After restarting captcha_train.py, it restarts from step 0 and deleting all previous data, How fix this problem?!


Cleanup branch

The code was already super clean. I wasn't able to find any unnecessary styling. I did find a variable and library that were not being used.
I left a data variable that is currently never called due to eslint being disabled for it.
Referencing Issue #54

Nice. I just wanted a second pair of eyes on it.


Return webhook info on creation

Hello 👋 thank y'all for your wonderful service!
I was building something using webhooks but ran into an issue where after creating a new webhook, I was not returned any info about the created resource and was unable to reference it in the future.
This PR makes it so when you POST to create a new webhook, the newly created webhook is returned back to you, allowing you to know it's ID so to reference it later.
I didn't see any tests to update but please let me know if I missed anything!

Seems fine, but TBH webhooks are not well supported and I wouldn't run anything mission-critical on them. Fine for hobby projects, though

Seems fine, but TBH webhooks are not well supported and I wouldn't run anything mission-critical on them. Fine for hobby projects, though

Thanks! Do you know when I could expect these changes to go live?

if it's merged it should be live within 24 hours


feat(18842): Implement connectivity controls between the different types of node

See https://hivemq.kanbanize.com/ctrl_board/57/cards/18842/details/
This PR complements the work done on the new visual language for policies by adding and visualising constraints between elements on the canvas.
The PR also fixes a few styling issues with the nodes.
Design

The two types of handles on nodes have been made more visible to highlight target (circle) and source (square)
Connecting two nodes can only be done between a source and a target. Drag-and-drop can be used from any direction but the created link will be directional.
A source node can only be connected to a valid target. Each node defined its own validity (e.g. Topic Filter connected to Data Policy only)
Some nodes (e.g. Data Policy or Operation) also have cardinality constraints and only allow one link to another destination. Each handle (e.g. onSuccess or onError) has its constraints.
When dragging a link from one node to another, the validity of the targetted handle will be shown; if invalid, the connection cannot be established

Before
Any node could be connected to any other node

After
Only valid connections can be established

Visual feedback for the validity of an attempted connection is now provided

Added couple of comments and suggestions mostly on code style. Looks great overall on the first view. Very well done!


MapWriter Large Map Displaying

translate doesn't let mapwriter's large gui (keybind M) display; removing it fixes the problem though.
https://github.com/killjoy1221/TabbyChat-2/blob/master/src/main/java/mnm/mods/tabbychat/core/GuiNewChatTC.java#L53

918f0454c8f37e1e896c818aa56c68eb7fe7dee1
Try it now. https://drone.io/github.com/killjoy1221/TabbyChat-2/files

perfecto


remove python setup.py test

references:
https://github.com/sqlalchemy/sqlalchemy/issues/4789
pypa/setuptools#1684
pytest-dev/pytest#5546

Mike Bayer has proposed a fix for this issue in the master branch:
remove python setup.py test https://gerrit.sqlalchemy.org/1385


TypeError: Cannot read property 'unwatchers' of undefined

Sometimes when my Angular app is starting, the error "TypeError: Cannot read property 'unwatchers' of undefined" occurs at the following method:
target.unregisterFormField = function (fieldName) { 	var bindableFieldName = nestedObjectHelper.flattenAttribute(fieldName); 	angular.forEach($scope.fields[bindableFieldName].unwatchers, function (unwatch) { 		unwatch(); 	}); 	delete $scope.fields[bindableFieldName]; };
I am using version 4.1.8 of angular-form-for.

Hi @baconcutter,
Sorry to hear about this issue you're experiencing. I'm not actively maintaining this library anymore though as the main README states. I have not been using Angular for some time and it's difficult and time consuming to switch contexts back and try to support newer releases of the library.
If you'd like to put together a PR for this issue I'd be happy to merge it and build a release though!

Version 4.1.11 has been released with your fix. Thank you for contributing!

Hi Brian,
Thank you for merging and releasing so quickly!
2016-03-08 3:11 GMT+01:00 Brian Vaughn<EMAIL_ADDRESS>
Closed #186 https://github.com/bvaughn/angular-form-for/issues/186.
—
Reply to this email directly or view it on GitHub
https://github.com/bvaughn/angular-form-for/issues/186#event-581112342.

I try to keep things flowing smoothly :) especially when someone goes to
the effort of contributing.
On Monday, March 7, 2016, Auke<EMAIL_ADDRESS>wrote:

Hi Brian,
Thank you for merging and releasing so quickly!
2016-03-08 3:11 GMT+01:00 Brian Vaughn<EMAIL_ADDRESS><javascript:_e(%7B%7D,'cvml','notifications@github.com');>>:

Closed #186 https://github.com/bvaughn/angular-form-for/issues/186.
—
Reply to this email directly or view it on GitHub
<https://github.com/bvaughn/angular-form-for/issues/186#event-581112342
.

—
Reply to this email directly or view it on GitHub
https://github.com/bvaughn/angular-form-for/issues/186#issuecomment-193627752
.


Anon Farm DEX connector

Why
The rationale behind this user story.
Anon Farm is a DEX that has approached Hummingbot to develop an exchange connector. https://anon.farm/
What
Define or outline the task(s) that needs to be done.
Definition of Done
Condition(s) or requirement(s) to be satisfied to mark this story as completed.

Closed since connector is not available


⚠ Mobitopup has degraded performance

In fee3363, Mobitopup (https://napcard.voz.tech) experienced degraded performance:

HTTP code: 200
Response time: 6247 ms

Resolved: Mobitopup performance has improved in a18f012 after 7 minutes.


⚠ DesiTorrents has degraded performance

In bc5b03e, DesiTorrents ($DST) experienced degraded performance:

HTTP code: 200
Response time: 1504 ms

Resolved: DesiTorrents performance has improved in 300eb54.


Add loading support to Image

Description
This adds two new builders to the Image class:

frameBuilder, which allows callers to control the widget
created by an [Image].
loadingBuilder, which allows callers fine-grained control
over how to display loading progress of an image to the user.

FadeInImage can be simplified by migrating to the new API.
This is done in follow-on commit.
Related Issues
https://github.com/flutter/flutter/issues/32374
Tests
I added full test coverage of the two new properties (verified in merged lcov.info).  Specifically:

Image invokes frameBuilder with correct frameNumber argument
Image invokes frameBuilder with correct wasSynchronouslyLoaded=false
Image invokes frameBuilder with correct wasSynchronouslyLoaded=true
Image state handles frameBuilder update
Image invokes loadingBuilder on chunk event notification
Image doesn't rebuild on chunk events if loadingBuilder is null
Image chains the results of frameBuilder and loadingBuilder
Image state handles loadingBuilder update from null to non-null
Image state handles loadingBuilder update from non-null to null

Checklist

[x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs.
[x] I signed the [CLA].
[x] I read and followed the [Flutter Style Guide], including [Features we expect every widget to implement].
[x] I updated/added relevant documentation (doc comments with ///).
[x] All existing and new tests are passing.
[x] The analyzer (flutter analyze --flutter-repo) does not report any problems on my PR.
[x] I am willing to follow-up on review comments in a timely manner.

Breaking Change
Does your PR require Flutter developers to manually update their apps to accommodate your change?

[ ] Yes, this is a breaking change (Please read [Handling breaking changes]). Replace this with a link to the e-mail where you asked for input on this proposed change.
[x] No, this is not a breaking change.

PTAL

PTAL

FYI @renefloor in case you find this relevant for cached_network_image