Why is yt-dlp so slow?

Checklist

[X] I'm reporting a bug unrelated to a specific site
[X] I've verified that I'm running yt-dlp version 2021.12.01. (update instructions)
[X] I've checked that all provided URLs are alive and playable in a browser
[X] I've checked that all URLs and arguments with special characters are properly quoted or escaped
[X] I've searched the bugtracker for similar issues including closed ones. DO NOT post duplicates
[X] I've read the guidelines for opening an issue

Description
I usually wait 10-20s between requests.
https://user-images.githubusercontent.com/54671367/145724249-e0cdff2a-4f2c-4ddb-b2cb-b0d7d0b7e881.mp4
Verbose log
$ yt-dlp -v https://youtu.be/0e3GPea1Tyg
[debug] Command-line config: ['-v', 'https://youtu.be/0e3GPea1Tyg']
[debug] User config file: /home/pogaca/.config/yt-dlp/config
[debug] User config: ['-f', 'mkv', '-f', 'bestvideo[height<=1080]+bestaudio/best/standard', '-o', '~/Downloads/%(title).200s - %(id)s.%(ext)s']
[debug] Encodings: locale UTF-8, fs utf-8, out utf-8, err utf-8, pref UTF-8
[debug] yt-dlp version 2021.12.01 [91f071af6]
[debug] Lazy loading extractors is disabled
[debug] Python version 3.9.9 (CPython 64bit) - Linux-5.15.7-arch1-1-x86_64-with-glibc2.33
[debug] exe versions: ffmpeg 4.4.1 (setts), ffprobe 4.4.1, rtmpdump 2.4
[debug] Optional libraries: Cryptodome, mutagen, sqlite, websockets
[debug] Proxy map: {}
[debug] [youtube] Extracting URL: https://youtu.be/0e3GPea1Tyg
[youtube] 0e3GPea1Tyg: Downloading webpage
[youtube] 0e3GPea1Tyg: Downloading android player API JSON
[debug] Sort order given by extractor: quality, res, fps, hdr:12, source, codec:vp9.2, lang, proto
[debug] Formats sorted by: hasvid, ie_pref, quality, res, fps, hdr:12(7), source, vcodec:vp9.2(10), acodec, lang, proto, filesize, fs_approx, tbr, vbr, abr, asr, vext, aext, hasaud, id
[info] 0e3GPea1Tyg: Downloading 1 format(s): 248+251
[download] /home/pogaca/Downloads/$456,000 Squid Game In Real Life! - 0e3GPea1Tyg.webm has already been downloaded

No idea. Is it just for youtube? Possibly network issue. But even so, the socket should timeout if a request takes more than 20secs. See if --print-traffic gives any clue
https://user-images.githubusercontent.com/6623388/145724835-12384af3-c6c0-468c-ba63-50f1fad746f9.mp4

It was a network. Seems like disabling IPV6 fixed a problem (idk why).


fix(docs): various fixes

Fixed a number of issues while reviewing the documentation.

Thanks for fixing this @hawkeye64 I'm slowly coming out of paternity leave and will now check these PRs more often. Thanks!


Fix site_name typo in mkdocs

@mafrosis you should have make pr in my repo, not fork.

Lol I did this on mobile. Github defaulted to a PR on my fork and not upstream!


Video streching

why vertical videos are streaching? how to solve this problem?
how to open videos in full screen as per aspect ratio?
chewie aspect ratio always returning null
how to make background black?
how to set material controls active?
Please help

why vertical videos are streaching? how to solve this problem?
how to open videos in full screen as per aspect ratio?
chewie aspect ratio always returning null
how to make background black?
how to set material controls active?
Please help

I see you're using a very old version. Could you update to latest MaterialUI in latest chewie?

I need to add the player in an existing project that is not supported null safety
could you please suggest me which version of chewie I should use or anything that resolves my issues
environment:   sdk: ">=2.7.0 <3.0.0"
Flutter 1.22.4 • channel stable • https://github.com/flutter/flutter.git
Tools • Dart 2.10.4

There's no problem in using mixed versions:
Please read: https://dart.dev/null-safety/unsound-null-safety#testing-or-running-mixed-version-programs
Otherwise here's the chagelog, you can look after:

I'll close this issue due to inactivtiy.
Please update chewie and let us know if you need any further support accourding to chewie.
Thanks for using chewie :)


build: Return values from TaskKeys

What changes are proposed in this pull request?
To make TaskKeys return values (probably mostly Files) instead of Unit.
Returning values from tasks is the standard approach in SBT (see e.g. examples here) and makes it much clearer why one task actually depends on the other by making the passed artifacts explicit.
I made an exemplary change in this PR to show the difference.
If there's agreement to proceed here I would refactor more of the build.
How is this patch tested?
By running sbt publishDotNetBase after the change.
Does this PR change any dependencies?

[x] No. You can skip this section.

Does this PR add a new feature? If so, have you added samples on website?

[x] No. You can skip this section.

Thank you!

/azp run

Codecov Report

Merging #1775 (d61596b) into master (6143514) will decrease coverage by 76.97%.
The diff coverage is n/a.

 Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

CognitiveProjectSetup -> /home/vsts/work/1/s/cognitive/target/scala-2.12/generated/src/dotnet/synapse/ml/bin/Debug/netstandard2.1/SynapseML.Cognitive.dll
Successfully created package '/home/vsts/work/1/s/cognitive/target/scala-2.12/generated/package/dotnet/SynapseML.Cognitive.0.10.2-rc339784271b.nupkg'.
[System.IO.FileNotFoundException] Unable to find source settings. File not found '/home/vsts/work/1/s/target/scala-2.12/generated'.
Error: result code: 1
[error] java.lang.Exception: Execution resulted in non-zero exit code: 1
[error] 	at BuildUtils$.runCmd(build.scala:56)
[error] 	at BuildUtils$.publishDotnetAssemblyCmd(build.scala:86)
[error] 	at CodegenPlugin$.$anonfun$projectSettings$29(CodegenPlugin.scala:344)
[error] 	at CodegenPlugin$.$anonfun$projectSettings$29$adapted(CodegenPlugin.scala:339)
[error] 	at scala.Function1.$anonfun$compose$1(Function1.scala:49)
[error] 	at sbt.internal.util.$tilde$greater.$anonfun$$u2219$1(TypeFunctions.scala:62)
[error] 	at sbt.std.Transform$$anon$4.work(Transform.scala:68)
[error] 	at sbt.Execute.$anonfun$submit$2(Execute.scala:282)
[error] 	at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:23)
[error] 	at sbt.Execute.work(Execute.scala:291)
[error] 	at sbt.Execute.$anonfun$submit$1(Execute.scala:282)
[error] 	at sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:265)
[error] 	at sbt.CompletionService$$anon$2.call(CompletionService.scala:64)
[error] 	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
[error] 	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
[error] 	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
[error] 	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
[error] 	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
[error] 	at java.base/java.lang.Thread.run(Thread.java:829)
[error] (publishDotnet) java.lang.Exception: Execution resulted in non-zero exit code: 1
[error] Total time: 103 s (01:43), completed Dec 21, 2022, 12:43:29 AM
##[error]Script failed with error: Error: The process '/usr/bin/bash' failed with exit code 1

@mhamilton723 thanks for the feedback. Unfortunately I didn't manage to get the dotnet stuff to run locally on my MacBook. I'll try to find out what's going on here 👍

@mhamilton723 I had missed a call to publishDotnetAssemblyCmd in project/CodegenPlugin.scala.
Should be fixed now.
Is the kind of change in general fine?
If so, I would try to apply this at more places.

/azp run


api-docs: Use proper indentation and render api_url in templates.

@timabbott: :)

Nice, merged, thanks @eeshangarg!  @brockwhittaker I think the next step here before we can replace /api with /api-new is for you to fix the sidebar to not have the slideout model.


Enable generating random ports with host port mapping

This is a problem that I found when testing https://github.com/projectcalico/k8s-policy/issues/109 . The problem is that when I use hostport mapping feature in calico, I was always need to specify pods hostPort as following in ports section.
root@k8s001:~/calico2.4# cat pod.yaml
apiVersion: v1
kind: Pod
metadata:
  name: nginx-host
spec:
  containers:
  - image: nginx
    imagePullPolicy: IfNotPresent
    name: nginx-host
    ports:
    - containerPort: 80
      hostPort: 80
  restartPolicy: Always
root@k8s001:~/calico2.4# kubectl create -f ./pod.yaml
pod "nginx-host" created
root@k8s001:~/calico2.4# kubectl get pods -owide
NAME                      READY     STATUS    RESTARTS   AGE       IP                NODE
nginx-host                1/1       Running   0          9s        <IP_ADDRESS>   k8s004

The problem is that if one node start two such pods, only one pod can be started and another pod will be pending always as it cannot get the same port again.
Expected Behavior

Enable host port mapping can generate the host port randomly so that end user will not need to specify the host port.
Current Behavior

Possible Solution

Steps to Reproduce (for bugs)

Context

Your Environment

Kubernetes version (kubectl version):
Manifest file used to deploy k8s policy:
Operating System and version:
Link to your project (optional):

/cc @caseydavenport @gunjan5

I don't think this should be a Calico issue.  Calico is not doing the port mapping, it is the portmap plugin that sets that up.  So this issue should probably be against the portmap plugin.
@gunjan5 or @caseydavenport If you agree then I think this issue should be closed.

@tmjd if that is the case, instead of closing this one, shall we move this issue to cni-plugin directly?

If you are talking about projectcalico/cni-plugin I still do not think that is the correct repo.  It is the repo where you got the portmap plugin. I think https://github.com/containernetworking/plugins is where an issue like that should be, or it may even need to go against kubernetes also because I don't know if there are allowances for a random port.

Thanks @tmjd , yes, this seems to be an issue for https://github.com/containernetworking/plugins , will try to move this issue there.


Fix Engine get_target_fps() returning float instead of int.

_target_fps is an int, and it's only ever used as an int; so get_target_fps() should return an int.

Thanks!

Cherry-picked for 3.2.2.


Allow assignment of uninitialized readonly base class properties in subclass constructor chain

This is an issue I run into often and forces me to choose between unnatural and convoluted initialization, redundant or weakened property declarations, or superfluous errors/warning noise I have to remember to ignore.
abstract class Base {
    readonly locomation: string // derived in subclass-specific way
}

class Bird extends Base {
    constructor() {
        super()
        this.locomation = 'fly' // cannot assign to constant or read-only property
    }
}

class Fish extends Base {
    constructor() {
        super()
        this.locomation = 'swim' // cannot assign to constant or read-only property
    }
}

It seems to make sense to me to relax the constraint to allow one-time initialization of a readonly property somewhere in the constructor chain.  Subclass constructors are the most immediately statically analyzable locations, but the more general case might be private methods that are known only to be invoked during construction:
class ComplexInitialization {
  readonly derived: string
  constructor() {
    ...
    this.initialize()
    ...
  }
  private initialize() {
    this.derived = ...
  }
}

or even other initialization methods if they are known only to be invoked during construction:
// ComplexInitialization: broaden initialize visibility to `protected`
class DelegatedInitialization extends ComplexInitialization {
  protected initialize() {
    // still only called once during construction
    this.derived = ...
  }
}

Understood that the latter cases are harder to safely identify, but the simple case would go a long way.  Absence of this ability essentially forces all values destined for readonly properties (and dependent context necessary to calculate them) to be hoisted up through the constructor call chain, or for readonly to be abandoned entirely.
I don't see this particular issue being reported (discussion on #8496 seems tangentially related, although in this issue I'm not suggesting the ability to ever re-assign a readonly property, and AFIAU I'm not asking to break existing readonly guarantees - I actually can't find readonly in the spec).
As far as I understand I think this suggestion meets these guidelines:

[x] This wouldn't be a breaking change in existing TypeScript / JavaScript code
[x] This wouldn't change the runtime behavior of existing JavaScript code
[x] This could be implemented without emitting different JS based on the types of the expressions
[x] This isn't a runtime feature (e.g. new expression-level syntax)

This can easily be written as:
abstract class Base {
    constructor(readonly locomation: string) { }
}

class Bird extends Base {
    constructor() {
        super('fly');
    }
}

class Fish extends Base {
    constructor() {
        super('swim');
    }
}

Yes, true.  Imagine 10 constructor arguments of complex objects, with data dependencies between them, and now a class hierarchy in which derives some of that data in other complicated ways.  It becomes much more convoluted than simply passing a couple primitive args.

readonly means constructor-only-write/read-everywhere-else. if you want to change the definition of an existing language concept, you need to provide some compelling use cases, and explain why the existing support is not sufficient.

It means constructor in class-of-definition-only, not a subclass constructor?  I couldn't find any mention of readonly in any specs I could find, so I didn't know that this was explicitly the case.  If this feature isn't compelling, so be it.

It means constructor in class-of-definition-only, not a subclass constructor

Correct.

We had a recent PR for the React type definitions that made state to be readonly (where any component deriving from the base React component should not be modifying state directly), but it caused some issues with existing code bases that used to initialize state in the constructor.
https://github.com/DefinitelyTyped/DefinitelyTyped/pull/26813#issuecomment-400795486
For cases like these, what do you suggest is the best way to work around the issue? We have so far been recommending that they move the state initialization outside of the constructor and into a class field, but then unless they explicitly decorate it with readonly it once again becomes mutable.

For cases like these, what do you suggest is the best way to work around the issue?

I would say the change to the react declaration file on definitelyTyped was wrong. if it is allowed by the runtime to change state, then the type definitions should prohibit it. the intent of a declaration file is to model the runtime behavior of a JS library, and not to enforce a coding style or best practices. these should be done in a linter.

I stumbled into a "fix" for this behavior, but I'm not sure if it's abusing the language or making some kind of pitfall I'll wind up tripping over later.  Basically, it's this:
class A {
  public readonly foo: boolean = true;
}

class B extends A {
  public readonly foo: boolean;
  constructor(x: number) {
    super();
    this.foo = x >= 0;
  }
}

If you redeclare the readonly field from the superclass in the subclass, both classes can write to it in their constructor (or class definition).  This seems to work... is there a downside?

@thw0rted, you can also just put // @ts-ignore before the this.foo = instead of re-declaring (which may have issues when foo changes to boolean | somethingElse in class A later on without you realising).
@mhegazy, I disagree that it's a coding style and that linters should be handling this case.
It's not "allowed by the runtime to change state"; the constructors (including those of derived classes) are initialising the state, you still want to deny changes in a constructed object.
If you wanted to explicitly deny this behaviour in your code, you would make it readonly private and then have a getter for the variable for the subclasses.
I feel typescript doesn't account for that and we're making workarounds for how we reasonably expect TS to behave.

Yes, true. Imagine 10 constructor arguments of complex objects, with data dependencies between them, and now a class hierarchy which derives parts of that data in other different complicated ways. It becomes much more convoluted than simply passing a couple primitive args. (i can produce less trivial examples, but for the sake of brevity those were the distilled cases)

I came across this issue as I was having the same paradigm shift (I am pretty sure either C++ &/or C# let child classes assign in the constructor)
Thinking about working with what we have, the constructor must have a protected argument which declares an interface for the many readonly properties, and the subclass can then inject named arguments to be assigned to the readonly properties/fields. This is much better than the hacks listed above (// @ts-ignore or overwriting the property)

My variant for this type of problem:
abstract class NamingService {
  readonly name: string;
}

class Eth extends NamingService {
  readonly name =  'ENS';
}

console.log(new Eth().name);

It is weird though that I can not set the property in a constructor of a subclass.


Client problem

Problem Statement
When we were using openvpn client, there was a situation that the agent agent did not start with the client, so we could not connect to openvpn and had to start it manually, and the official solution was not provided. I would like to ask whether the oauth plug-in can be adapted to other vpn clients，we use other client tools to call the oauth plug-in to authenticate.
openvpn-auth-oauth2 logs
*

Environment

openvpn-auth-oauth2 Version:
OpenVPN Server Version:
Server OS:
OpenVPN Client (flavor, OS):

openvpn-auth-oauth2 is an server exclusive addon. You can use any client that based on OpenVPN 2.6 on higher.

Is Tunnelblick OK? It is also based on openvpn

Thank you, but when I used Tunnelblick4.0.1 to import the ovpn file of openvpn directly, an error occurred, indicating that key or auth/pass must be used, but I can normally invoke the oauth plug-in using the openvpn client. Is there any additional configuration for this?

See also https://github.com/jkroepke/openvpn-auth-oauth2/wiki/FAQ#q-options-error-no-client-side-authentication-method-is-specified

Tunnelblick fully depends on OpenVPN2 and OpenVPN2 has the mention issue on all clients


Make pynxtools-raman (Repository and Reader)

[x] Get Example Data from Tamas (~0d)
[x] Make pynxtools-raman repository (0.5d)
[x] Make pynxtools-raman reader (1d)
[x] Create NeXus File without warnings from Example Data (0.75d)

Can this be closed @RonHildebrandt as pynxtools-raman exists?

Yea. The Raman plugin in is here:
https://github.com/FAIRmat-NFDI/pynxtools-raman/pull/1, should pass the CI/CD as soon as the the the submodules are updated in pynxtools


I can't start dev addon

Issue related to
Sunsynk / Home Assistant (dev) Add-On
When I try to start the addon it returns the following error
Device '/dev/ttyUSB0' does not exist in Sunsynk Inverter Add-on (dev) (4bb530c7_hass-addon-sunsynk-dev).
I try to delete device entry on yaml, but it always appears again.
If I try to save the yaml with device variable
Failed to save add-on configuration, Device '/dev/ttyUSB0' does not exist in Sunsynk Inverter Add-on (dev) (4bb530c7_hass-addon-sunsynk-dev). Got {'PORT': 'tcp://<IP_ADDRESS>:502', 'DEVICE': '/dev/ttyUSB0', 'DRIVER': 'umodbus', 'SUNSYNK_ID': '201210xxx', 'SENSOR_PREFIX': '', 'SENSORS': ['pv1_power', 'grid_power', 'load_power', 'dc_transformer_temperature', 'radiator_temperature', 'battery_power', 'total_active_power', 'total_pv_power', 'total_battery_charge', 'total_battery_discharge', 'total_grid_export', 'total_grid_import', 'battery_soc', 'device_type', 'pv1_current', 'pv1_voltage', 'grid_connected_status'], 'READ_SENSORS_BATCH_SI...
I don't have any ttyUSB connected to the server where HA is.

Try selecting a device that exists from the UI, like /dev/ttyAMA0 (which is wrong obviously, but it wont use it).
I'll continue working on this tonight. Unfortunately it's not easy to "release" addons, and HASS OS always pulls the latest from GitHub.
That is why there is a -dev and a normal version. Golden rule, don't just update the -dev version. Especially if I commit after 10pm in the evening ;-)

I've made the default blank, so you could try:

First UNINSTALL the addon.
Refresh the store and
REINSTALL.

Remember to save your yaml config before you uninstall.

Glad it works. You can probably go into yaml mode in the GUI as well and then delete the offending DEVICE: /tty/x entry, or just set it to an empty string


Added Elasticsearch service example

Example of the configuration we use internally for using Elasticsearch with ddev
In our case, we don't need to restore data after a stop/start.

Sorry for the delay on reviewing this, it's very much appreciated.

Thanks for updating!

I took the liberty of rebasing to upstream.


Issue with power shulkerbullet

Power shulkerbullet does not follow RPGitem's damage value/mode, it has its own damage of 2 half-hearts.

this bug was fixed in 3.5.310

Confirmed, thanks.


Support manage the dependencies in single file project

One use case is to run single file tests.
See: https://github.com/Microsoft/vscode-java-test/issues/348

Supported on the latest version by default.

Hey, I am trying to view the tests in the "Test" , but I see no tests, though I have few jUnit and the sample project from discussion.
I have VSCode July V 1.37, "Java Test Runner" extension installed. Do you have any reference, using which I can configure my workspace?

@jdneo

@maddy302 Moved to https://github.com/microsoft/vscode-java-test/issues/776


Performance benchmarks and alternatives to map lookups

This is my follow up from r/golang Reddit I did some benchmarking.
Each unmarshal benchmark iteration parses all 5 values (4x 4-6 characters long and one <empty>) and one bad value (4 characters long) ie. abcd, bcdef, cdefg, defg, <empty> and zabc.
Similar for each marshal benchmark iteration parses all 5 values.
Map lookup is significantly slower than loop for 5 items. Converting bytes to string and comparing is faster than comparing bytes using bytes.Equal because bytes.Equal converts both arguments to string anyway.
Array index is 30x faster than map lookup. Map lookup in MarshalText() and String() functions are even 40+% slower than UnmarshalText.
func BenchmarkMarshalText(b *testing.B) {
	for i := 0; i < b.N; i++ {
		_, _ = Abcd.MarshalText()
		_, _ = Bcdef.MarshalText()
		_, _ = Cdefg.MarshalText()
		_, _ = Defg.MarshalText()
		_, _ = UnknownType.MarshalText()
	}
}

func BenchmarkUnmarshalText(b *testing.B) {
	x := MarketType{}
	for i := 0; i < b.N; i++ {
		x.UnmarshalText([]byte("abcd"))
		x.UnmarshalText([]byte("bcdef"))
		x.UnmarshalText([]byte("cdefg"))
		x.UnmarshalText([]byte("defg"))
		x.UnmarshalText([]byte(""))
		x.UnmarshalText([]byte("zabc"))
	}
}

cpu: AMD Ryzen 9 7950X3D 16-Core Processor
BenchmarkMarshalText-32                 19269684            62.31 ns/op        0 B/op          0 allocs/op
BenchmarkMarshalTextLookup-32           502871172            2.200 ns/op           0 B/op          0 allocs/op
BenchmarkMarshalTextLookupString-32     541060243            2.202 ns/op           0 B/op          0 allocs/op
BenchmarkString-32                      20310391            57.20 ns/op        0 B/op          0 allocs/op
BenchmarkStringLookupString-32          439474542            2.646 ns/op           0 B/op          0 allocs/op
BenchmarkStringLookupBytes-32           100000000           10.97 ns/op        0 B/op          0 allocs/op
BenchmarkStringSwitch-32                372506850            3.955 ns/op           0 B/op          0 allocs/op
BenchmarkStringSwitchValue-32           262102232            3.888 ns/op           0 B/op          0 allocs/op

BenchmarkUnmarshalText-32                          	33958742	        35.89 ns/op	       0 B/op	       0 allocs/op
BenchmarkUnmarshalTextLookup-32                    	38068413	        31.15 ns/op	       0 B/op	       0 allocs/op
BenchmarkUnmarshalTextLookupString-32              	52166524	        23.68 ns/op	       0 B/op	       0 allocs/op
BenchmarkUnmarshalTextLookupStringAndConvert-32    	31179402	        38.46 ns/op	       0 B/op	       0 allocs/op

hey, thanks!
I was able to repro 5x improvement in encoding.
however, I still don't get it how you speed up decoding with arrays. Can you share code/PR/Gist/repo how you do it?
so, far I don't see good way to switch to arrays based encoding/decoding without: 1) requiring users to specify values contigiously and starting from 0; and 2) adding reading numeric value from var/const declaration AST statement. So looks like this is no go.
Feel free to commander or add your PR like this, or leave comments in PR.
https://github.com/nikolaydubina/go-enum-encoding/pull/20

I was thinking about how I use enums. And all the time I use them to optimize two things: memory footprint and speed up comparisons
In my code I ever needed only uint8 and fast encoding/decoding to database/json and text. So I am thinking about extending stringer into an enumer that adds that functionality.
Source code for stringer is interesting author decided arbitrary cutoff for more than 10 contiguous intervals it uses map else it is comparing integer and using appropriate slice of string per interval.
One string per interval optimization is used to cut down number of compiled strings (according to git history)

however, I still don't get it how you speed up decoding with arrays. Can you share code/PR/Gist/repo how you do it?

# pseudo code
var A, B, C = enum{}, enum{1}, enum{2}
var enumStrings = []string{"a", "b", "c"}
var enumAll = []enum{A, B, C}
// stringer uses single string and indexer the performance might be slightly slower due to double lookup
var enumStringerString = "ABC"
var enumStringerIndexes = []int{0, 1, 2, 3}

func (e *enum) UnmarshalText(value []byte) error {
  // TODO optimize len(value) == 0 => set Unset if enabled
  for (i := 0; i < len(allValues); i++) {
    // NOTE string(some []byte value) is faster than using string variable and comparing against it
    // if enumStringerString[enumStringerIndexes[i], enumStringerIndexes[i+1]] == string(value) {
    if allValues[i] == string(value) {
      *e = enumAll[i]
      return nil
    }
  }
  return ErrBadValue
}

I have not tested how contiguous integers would perform against the map but there will be cutoff where hashing the key and getting it will be faster than N interval checks and one for loop for that interval.

I could not reproduce this. in my benchmarks this solution (loop over array) leads to slightly faster encoding, but slower decoding.
name                    old time/op    new time/op    delta
MarshalText_Color-16      10.3ns ± 0%     7.5ns ± 0%   ~     (p=1.000 n=1+1)
UnmarshalText_Color-16    11.5ns ± 0%    13.8ns ± 0%   ~     (p=1.000 n=1+1)

name                    old alloc/op   new alloc/op   delta
MarshalText_Color-16       0.00B          0.00B        ~     (all equal)
UnmarshalText_Color-16     0.00B          0.00B        ~     (all equal)

name                    old allocs/op  new allocs/op  delta
MarshalText_Color-16        0.00           0.00        ~     (all equal)
UnmarshalText_Color-16      0.00           0.00        ~     (all equal)

from my previous experience dealing with encoding/decoding enums, for large enum sets (256 values) map is significantly better than loop. it literally becomes O(1) vs O(N).

https://github.com/ferdypruis/iso4217/issues/4
https://github.com/nikolaydubina/fpmoney?tab=readme-ov-file#appendix-a-jsonunmarshal-optimizations

let's keep it map for now. but of course feel free to open PR that beats benchmarks. ideally keep in mind that code should be minimal.

I could not reproduce this. in my benchmarks this solution (loop over array) leads to slightly faster encoding, but slower decoding.

The fastest by a margin for 5 valid values without other optimizations is BenchmarkUnmarshalTextLookupString-32 []string not [][]byte and comparing value as strings.


⚠ Bofrost.de has degraded performance

In f38276f, Bofrost.de (https://www.bofrost.de) experienced degraded performance:

HTTP code: 200
Response time: 1162 ms

Resolved: Bofrost.de performance has improved in 4c5c685 after 6 minutes.


fix: set result name and namespace to trivy vulnreport and configaudi…

Closes https://github.com/k8sgpt-ai/k8sgpt-operator/issues/240 and replaces #678
📑 Description
this is the better approach to fix https://github.com/k8sgpt-ai/k8sgpt-operator/issues/240 by using the resource name and namespace of the trivy ConfigAuditReport and VulnerabilityReport
✅ Checks

[ ] My pull request adheres to the code style of this project
[ ] My code requires changes to the documentation
[ ] I have updated the documentation as required
[ ] All the tests have passed

ℹ Additional Information

Thanks for your approval @AlexsJones . Could you please merge it, too? Thank you!

Mind taking a look at the linter issue locally @jkleinlercher ?

Mind taking a look at the linter issue locally @jkleinlercher ?

I needed to increase the timeout in https://github.com/k8sgpt-ai/k8sgpt/pull/869/commits/5840b8ed8dc9bfea818317fa861e679907c734a6 . Don't know why this is needed, but I saw you also already increased the timeout.

@AlexsJones would merge this? Would be great to have this in the next release :)


Error to initiate

After the update in Pathfinder today, the MOD ToyBox stop working.

not working at the moment after game update 2.0.4j

please update the version in nexusmods when it's ready for 2.0.4j


feat: Add auto height computation functions

Description

[ ] Add function to generate the auto height layout tree for computations
[ ] Add function to update box positions based on delta

Fixes #17961 17961
Type of change

New feature (non-breaking change which adds functionality)

How Has This Been Tested?

Jest PENDING

Checklist:

[x] My code follows the style guidelines of this project
[x] I have performed a self-review of my own code
[x] I have commented my code, particularly in hard-to-understand areas
- [NA] I have made corresponding changes to the documentation
[x] My changes generate no new warnings
[ ] I have added tests that prove my fix is effective or that my feature works
[x] New and existing unit tests pass locally with my changes

/ok-to-test sha=8316704

/ok-to-test sha=612f820

/ok-to-test sha=6436742

/ok-to-test sha=fa8125e


fromJS TypeError: Class constructor KeyedSequence cannot be invoked without 'new'

What happened
I installed immutable-js at "immutable-js": "^0.3.1-6".
let state = {data: {0: {'eat': {yada: 'yada'}}}, ui: {submitting: false, submissionErrors: { 0: {'eat': {some: 'error'}} }  }};
let Immutable = require('immutable-js');
let iState = Immutable.fromJS(state)
TypeError: Class constructor KeyedSequence cannot be invoked without 'new'
    at fromJSDefault (~/Code/arbol/app-slim/node_modules/immutable-js/dist/immutable.js:1176:18)
    at Object.fromJS (~/Code/arbol/app-slim/node_modules/immutable-js/dist/immutable.js:1156:11)
    at repl:1:16
    at ContextifyScript.Script.runInThisContext (vm.js:44:33)
    at REPLServer.defaultEval (repl.js:239:29)
    at bound (domain.js:301:14)
    at REPLServer.runBound [as eval] (domain.js:314:12)
    at REPLServer.onLine (repl.js:433:10)
    at emitOne (events.js:120:20)
    at REPLServer.emit (events.js:210:7)

I have used fromJS in the past without passing in a reviver, and according to the docs it is still an optional parameter.
Is this now an anti-pattern that Immutable intends to throw an error on?
How to reproduce
The code above should be reproducible. Note this also happens when state = {}.

Sorry, I haven't been able to reproduce your test.
However you seem to be using https://www.npmjs.com/package/immutable-js which is not the same as this library, https://www.npmjs.com/package/immutable


fix: send alias during wallet creation

Checklist

[x] JIRA - LW-10181
[ ] Proper tests implemented
[ ] Screenshots added.

Proposed solution
Send Alias event
Testing
Describe here, how the new implementation can be tested.
Provide link or briefly describe User Acceptance Criteria/Tests that need to be met
Screenshots
Attach screenshots here if implementation involves some UI changes

coverage: 50.56%. remained the same
when pulling c5c542e673a991889848d9106f5268043ca80171 on fix/lw-10181
into 7071759c4b8259237b65ca82d4cb93937e89b527 on main.


Error accurs after upgrading to newest version, [VERBOSE-2:profiler_metrics_ios.mm(203)] Error retrieving thread information: (os/kern) object terminated

Steps to Reproduce

I have updated to the newest version of flutter, then I tried to run a small app.

Right after running the app, it shows this error, but it can run anyway, so I ignored it.:
[VERBOSE-2:profiler_metrics_ios.mm(203)] Error retrieving thread information: (os/kern) object terminated

When I try to use software keyboard in the simulator (iOS), it shows this error and can't pop keyboard on the simulator. The whole app is stuck and can't be hot restart again.
Can you please help?

[VERBOSE-2:ui_dart_state.cc(209)] Unhandled Exception: 'package:flutter/src/services/hardware_keyboard.dart': Failed assertion: line 790 pos 16: '(data.physical == 0 && data.logical == 0) ||
               (data.physical != 0 && data.logical != 0)': is not true.
#0      _AssertionError._doThrowNew (dart:core-patch/errors_patch.dart:46:39)
#1      _AssertionError._throwNew (dart:core-patch/errors_patch.dart:36:5)
#2      KeyEventManager.handleKeyData (package:flutter/src/services/hardware_keyboard.dart:790:16)
#3      PlatformDispatcher._dispatchKeyData.<anonymous closure> (dart:ui/platform_dispatcher.dart:375:61)
#4      _invoke2.<anonymous closure> (dart:ui/hooks.dart:205:15)
#5      _rootRun (dart:async/zone.dart:1428:13)
#6      _CustomZone.run (dart:async/zone.dart:1328:19)
#7      _CustomZone.runGuarded (dart:async/zone.dart:1236:7)
#8      _invoke2 (dart:ui/hooks.dart:204:10)
#9      PlatformDispatcher._dispatchKeyData (dart:ui/platform_dispatcher.dart:373:5)
#10     _dispatchKeyData (dart:ui/h<…>
[VERBOSE-2:ui_dart_state.cc(209)] Unhandled Exception: 'package:flutter/src/services/hardware_keyboard.dart': Failed assertion: line 790 pos 16: '(data.physical == 0 && data.logical == 0) ||
               (data.physical != 0 && data.logical != 0)': is not true.
#0      _AssertionError._doThrowNew (dart:core-patch/errors_patch.dart:46:39)
#1      _AssertionError._throwNew (dart:core-patch/errors_patch.dart:36:5)
#2      KeyEventManager.handleKeyData (package:flutter/src/services/hardware_keyboard.dart:790:16)
#3      PlatformDispatcher._dispatchKeyData.<anonymous closure> (dart:ui/platform_dispatcher.dart:375:61)
#4      _invoke2.<anonymous closure> (dart:ui/hooks.dart:205:15)
#5      _rootRun (dart:async/zone.dart:1428:13)
#6      _CustomZone.run (dart:async/zone.dart:1328:19)
#7      _CustomZone.runGuarded (dart:async/zone.dart:1236:7)
#8      _invoke2 (dart:ui/hooks.dart:204:10)
#9      PlatformDispatcher._dispatchKeyData (dart:ui/platform_dispatcher.dart:373:5)
#10     _dispatchKeyData (dart:ui/h<…>

Running flutter doctor:
[✓] Flutter (Channel beta, 2.5.0-5.2.pre, on macOS 11.5.1 20G80 darwin-x64,
    locale en-US)
    • Flutter version 2.5.0-5.2.pre at /Users/liuwenyi/development/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 19c61fed0d (7 days ago), 2021-08-18 17:10:31 -0700
    • Engine revision 7a4c4505f6
    • Dart version 2.14.0 (build 2.14.0-377.7.beta)

[✓] Android toolchain - develop for Android devices (Android SDK version 31.0.0)
    • Android SDK at /Users/liuwenyi/Library/Android/sdk
    • Platform android-31, build-tools 31.0.0
    • Java binary at: /Applications/Android
      Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.8+10-b944.6916264)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 12.5.1, Build version 12E507
    • CocoaPods version 1.11.0.beta.2

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 4.2)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.8+10-b944.6916264)

[✓] IntelliJ IDEA Community Edition (version 2020.2.4)
    • IntelliJ at /Applications/IntelliJ IDEA CE.app
    • Flutter plugin version 59.0.1
    • Dart plugin version 202.8531

[✓] VS Code (version 1.59.0)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.25.0

[✓] Connected device (2 available)
    • iPhone 12 Pro Max (mobile) • 6D275343-8525-4DCA-BBB8-222E22B789E8 • ios
      • com.apple.CoreSimulator.SimRuntime.iOS-14-5 (simulator)
    • Chrome (web)               • chrome                               •
      web-javascript • Google Chrome 92.0.4515.159

• No issues found!

@cravenbrave
Cloned the repo and added couple of transactions using latest stable, beta and master on iPhone simulator, but didn't get the issue you mentioned.

 stable, master and beta flutter doctor -v
[✓] Flutter (Channel stable, 2.2.3, on Mac OS X 10.15.4 19E2269 darwin-x64,
    locale en-GB)
    • Flutter version 2.2.3 at /Users/dhs/documents/fluttersdk/flutter
    • Framework revision f4abaa0735 (4 days ago), 2021-07-01 12:46:11 -0700
    • Engine revision 241c87ad80
    • Dart version 2.13.4

[✓] Android toolchain - develop for Android devices (Android SDK version 30)
    • Android SDK at /Users/dhs/Library/Android/sdk
    • Platform android-30, build-tools 30.0.3
    • ANDROID_HOME = /Users/dhs/Library/Android/sdk
    • Java binary at: /Users/dhs/Library/Application Support/JetBrains/Toolbox/apps/AndroidStudio/ch-0/202.7486908/Android
      Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6915495)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 12.3, Build version 12C33
    • CocoaPods version 1.10.1

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 4.1)
    • Android Studio at /Users/dhs/Library/Application Support/JetBrains/Toolbox/apps/AndroidStudio/ch-0/202.7486908/Android
      Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build
      1.8.0_242-release-1644-b3-6915495)

[✓] VS Code (version 1.57.1)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.21.0

[✓] Connected device (4 available)
    • Darshan's iphone (mobile)  • 21150b119064aecc249dfcfe05e259197461ce23 •
      ios            • iOS 14.4.1
    • iPhone 12 Pro Max (mobile) • A5473606-0213-4FD8-BA16-553433949729     •
      ios            • com.apple.CoreSimulator.SimRuntime.iOS-14-3 (simulator)
    • macOS (desktop)            • macos                                    •
      darwin-x64     • Mac OS X 10.15.4 19E2269 darwin-x64
    • Chrome (web)               • chrome                                   •
      web-javascript • Google Chrome 92.0.4515.159

• No issues found!

[✓] Flutter (Channel master, 2.6.0-1.0.pre.111, on Mac OS X 10.15.4 19E2269
    darwin-x64, locale en-GB)
    • Flutter version 2.6.0-1.0.pre.111 at
      /Users/dhs/documents/fluttersdk/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 965bd1ff40 (3 hours ago), 2021-08-29 23:41:02 -0400
    • Engine revision f4a380f3e5
    • Dart version 2.15.0 (build 2.15.0-65.0.dev)

[✓] Android toolchain - develop for Android devices (Android SDK version 30)
    • Android SDK at /Users/dhs/Library/Android/sdk
    • Platform android-30, build-tools 30.0.3
    • ANDROID_HOME = /Users/dhs/Library/Android/sdk
    • Java binary at: /Users/dhs/Library/Application Support/JetBrains/Toolbox/apps/AndroidStudio/ch-0/202.7486908/Android
      Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6915495)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 12.5.1, Build version 12E507
    • CocoaPods version 1.10.1

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 4.1)
    • Android Studio at /Users/dhs/Library/Application Support/JetBrains/Toolbox/apps/AndroidStudio/ch-0/202.7486908/Android
      Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build
      1.8.0_242-release-1644-b3-6915495)

[✓] VS Code (version 1.57.1)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.21.0

[✓] Connected device (4 available)
    • Darshan's iphone (mobile)  • 21150b119064aecc249dfcfe05e259197461ce23 •
      ios            • iOS 14.4.1
    • iPhone 12 Pro Max (mobile) • A5473606-0213-4FD8-BA16-553433949729     •
      ios            • com.apple.CoreSimulator.SimRuntime.iOS-14-3 (simulator)
    • macOS (desktop)            • macos                                    •
      darwin-x64     • Mac OS X 10.15.4 19E2269 darwin-x64
    • Chrome (web)               • chrome                                   •
      web-javascript • Google Chrome 92.0.4515.159

[✓] Flutter (Channel beta, 2.5.0-5.2.pre, on Mac OS X 10.15.4 19E2269
    darwin-x64, locale en-GB)
    • Flutter version 2.5.0-5.2.pre at /Users/dhs/documents/fluttersdk/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 19c61fed0d (11 days ago), 2021-08-18 17:10:31 -0700
    • Engine revision 7a4c4505f6
    • Dart version 2.14.0 (build 2.14.0-377.7.beta)

[✓] Xcode - develop for iOS and macOS
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 12.3, Build version 12C33
    • CocoaPods version 1.10.1

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] VS Code (version 1.58.2)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.21.0

[✓] Connected device (3 available)
    • iPhone 12 Pro Max (mobile) • A5473606-0213-4FD8-BA16-553433949729 • ios
      • com.apple.CoreSimulator.SimRuntime.iOS-14-3 (simulator)
    • macOS (desktop)            • macos                                •
      darwin-x64     • Mac OS X 10.15.4 19E2269 darwin-x64
    • Chrome (web)               • chrome                               •
      web-javascript • Google Chrome 92.0.4515.159

• No issues found!

Hi @darshankawar
I updated flutter again around two days ago and this error somehow disappeared. Thanks for your time!


Setting up rocketchat with Gotify

Hi Immanuel,
I try to setup gotify to work with rocketchat. Cam you help me? I am a beginner in this area.
I have installed rockectchat and used my gotify gateway for push notifications like this: https://push.mydomain.com/my_app_token
I have created users to use gotify with username and passsword.
I have installed Gotify.apk on two android phones and successfully logged in to my gotify server(https://push.mydomain.com
I was expecting to see a notification on Gotify when I use rocketchat and the other user is logged in but with the app closed. However, I do not see anything.
Can you please explain me where I'm wrong and how should I solve this problem step by step?
Thank you.
Luke

Hi Immanuel,
I'm still debugging the configuration. I got the erros below while testing. Are these errors normal? Especially the Python error? If not what do you suggest?
rc-push-gw    | [2021-05-12 03:50:58 +0000] [1] [INFO] Starting gunicorn 20.1.0
rc-push-gw    | [2021-05-12 03:50:58 +0000] [1] [INFO] Listening at: http://<IP_ADDRESS>:5000 (1)
rc-push-gw    | [2021-05-12 03:50:58 +0000] [1] [INFO] Using worker: sync
rc-push-gw    | [2021-05-12 03:50:58 +0000] [8] [INFO] Booting worker with pid: 8
rc-push-gw    | [2021-05-12 03:50:58 +0000] [9] [INFO] Booting worker with pid: 9
rc-push-gw    | [2021-05-13 13:53:13 +0000] [8] [INFO] New notification received
rc-push-gw    | [2021-05-13 13:53:13 +0000] [8] [ERROR] Unexpected error during notification processing
rc-push-gw    | [2021-05-13 13:53:13 +0000] [8] [ERROR] Traceback (most recent call last):
rc-push-gw    |   File "/usr/src/app/push.py", line 33, in push_send
rc-push-gw    |     token = request.json['token']
rc-push-gw    | TypeError: 'NoneType' object is not subscriptable
rc-push-gw    |
rc-push-gw    | [2021-05-13 13:53:13 +0000] [8] [ERROR] Could not forward the notification
rc-push-gw    | [2021-05-13 13:53:13 +0000] [8] [INFO] None
rc-push-gw    | <IP_ADDRESS> - - [13/May/2021:13:53:13 +0000] "POST /push/error/send HTTP/1.1" 200 5 "-" "curl/7.68.0"
rc-push-gw    | [2021-05-13 13:53:36 +0000] [9] [INFO] New notification received
rc-push-gw    | [2021-05-13 13:53:36 +0000] [9] [INFO] Forwarded the received notification, tag=push-gw-admin
rc-push-gw    | <IP_ADDRESS> - - [13/May/2021:13:53:36 +0000] "POST /push/success/send HTTP/1.1" 200 7 "-" "curl/7.68.0"
Thank you.

Hi Immanuel
Can you please confirm of not the following for me?

In Rocketchat I went to the admin/Push page and added http://my-public-ip-address:10088 (This is the push gateway) ?
In apprise-config.yml

gotifys://my-gotify-server/my-rocketchat-token ( I use gotifys because my gotify server is secured)
tag: push-gw-admin
gotifys://my-gotify-server/my-rocketchat-token-for-user1

tag: my-very-long-token-for-user1-from-rocketchat-mongodb

gotifys://my-gotify-server/my-rocketchat-token-for-user1

tag: my-very-long-token-for-user1-from-rocketchat-mongodb
The source  https://github.com/caronc/apprise/wiki/Notify_gotify mention that hostname is "The Rocket.Chat server you're sending your notification to." This confuses me as it is different than what you said in your apprise-config.yml Which one is the correct setting?

Thank you.

Hi Immanuel,
I am a step closer to make it work.
I was successful in sending notifications from the push gateway to the Gotify server.
However, I still have to work on Rocketchat that does not send push notifications to the push gateway.
In the Rocketchat push settings I added:
http://localhost:10088
Do I need anything else to set up?
Thank you.

Sorry that I could not reply earlier, I didn't have time at the weekend and I have a fulltime job to do otherwise 😃
Were you able to send a "fake" push through the gateway and Gotify server to the mobile clients with curl? So that part works all right? This could mean that only the RC server and the gateway connection are having problems.
Do you still get the following error in the logs?
rc-push-gw | File "/usr/src/app/push.py", line 33, in push_send
rc-push-gw | token = request.json['token']
rc-push-gw | TypeError: 'NoneType' object is not subscriptable

The source https://github.com/caronc/apprise/wiki/Notify_gotify mention that hostname is "The Rocket.Chat server you're sending your notification to." This confuses me as it is different than what you said in your apprise-config.yml Which one is the correct setting?

This is a clear mistake in the Gotify wiki, probably a copy paste error. They ment a Gotify server, not RC.

gotifys://my-gotify-server/my-rocketchat-token-for-user1
tag: my-very-long-token-for-user1-from-rocketchat-mongodb
gotifys://my-gotify-server/my-rocketchat-token-for-user1
tag: my-very-long-token-for-user1-from-rocketchat-mongodb

Here is also a copypaste error? The two user1 configs should likely be one user1 and user2

This is great progress!
Do you send a test push from the RC admin? My best guess is that it doesn't include any payload as there is a completely empty POST shown on the log screenshot.
Have you tried it in a context where one of the users should get a real notification? Maybe try it in a chat room where the related users are added but the others don't have the web client open, just you, so RC should send a real push notification for them.

No, I do not send a test push from the RC admin.

I have created two users: denis and babe in RC.
I have created the same users in Gotify, each user with the RC application.
I installed RC on android on two phones. On one phone I have the denis account and on another phone I have the babe account.
The two accounts(denis and babe) communicate well using RC. However, they do not get push notifications in Gotify. Maybe I'm wrong, but I was expected that when denis send a message in RC to babe, Gotify on babe's phone should show a push notification.

Thanks

The two accounts(denis and babe) communicate well using RC. However, they do not get push notifications in Gotify. Maybe I'm wrong, but I was expected that when denis send a message in RC to babe, Gotify on babe's phone should show a push notification.

This is true but one of them should not be logged in on the web interface, just via phone. RC doesn't send the push if it can deliver the message via web. Maybe to save an FCM cloud push request.

It's also interesting that the log screenshot only contains the 'curl' user agent, and the error is at the /push/error/send route with form data. RC sends JSON data, not form data. There is one example for an error in the readme, as it uses form data (-F flag):
# should produce an error later in the logs
curl -X POST \
  http://localhost:10088/push/error/send \
  -F foo=bar

So this is intended not to work, but the JSON example with the valid payload is working:
# should be forwarded successfully
curl -X POST \
  http://localhost:10088/push/success/send \
  -H 'Content-Type: application/json' \
  -d '{
    "token": "push-gw-admin",
    "options": {
        "title": "Test message",
        "text": "Hello World!"
    }
}'

Hence, the above log screenshot are not from RC, I think, they wouldn't modify their user agent to curl (would they?) and would only send JSON payload that also works wit curl, so it should with RC, too.

You are right. The logs I posted are not from the RC. They are from using the test curl syntax from your post.
My main issue is that it seems that RC does not communicate with the push gateway. In my push settings I have http://localhost:10088
I need a way to make sure that my RC somehow reaches this gateway address. Do you have any idea on how to do this?
Thank you.

I think they shouldn't even use the phone at the same time. RC is clever, it saves the push if it thinks the user can see it right away in the app or on the web 😃

Do you run RC in docker on the same host, too? What is the compose file you are using with RC, if yes?

The two accounts(denis and babe) communicate well using RC. However, they do not get push notifications in Gotify. Maybe I'm wrong, but I was expected that when denis send a message in RC to babe, Gotify on babe's phone should show a push notification.

This is true but one of them should not be logged in on the web interface, just via phone. RC doesn't send the push if it can deliver the message via web. Maybe to save an FCM cloud push request.

None of them are logged in the web interface. Both accounts are only on Android RC.

Do you run RC in docker on the same host, too? What is the compose file you are using with RC, if yes?

I run RC on the same host not in Docker.

Hmm, what I feel is that somehow the http://localhost:10088/ URL is not being resolved to the Docker container. Could you please try using the IP address of the VM/machine that hosts the bridge? E.g., http://<IP_ADDRESS>:10088

I tried and the result is the same
Look at the logs below. It seems that for some reason Rocketchat does not communicate with the gateway.

This is evidence that RC sends out the push, but do you have the logs from Docker for the exact same push, or can you generate one? Send a push in RC and screenshot both the RC and the related gateway logs. Are there any logs in the bridge related to it, or the bridge doesn't receive any communication from RC? I'm trying to rule out either a network error (not the bridge's fault) or a changed payload scheme (the bridge needs to be updated), this is why I'm asking this to narrow down where the error is.

Here you are:
The message I sent is from user babe to user denis. The text sent is "Hello there" sent at 17:45
I do not think is something related to the network because I can do telnet to rocketchat server and push-gateway and it works well.
push-gateway logs blow. As you can see there is nothing there.

Rockectchat logs
I20210522-17:45:14.251(0) API ➔ debug GET: /api/info I20210522-17:45:14.254(0) API ➔ debug Success { statusCode: 200, body: { version: '3.14.0', success: true } }
I20210522-17:45:14.475(0) Meteor ➔ publish null -> userId: null, arguments: []
I20210522-17:45:14.894(0) API ➔ debug POST: /api/v1/login I20210522-17:45:15.741(0) Meteor ➔ publish null -> userId: Fuv9nzrYzGCkMJXMk, arguments: []
I20210522-17:45:16.228(0) API ➔ debug GET: /api/v1/roles.list? I20210522-17:45:16.242(0) API ➔ debug Success {   statusCode: 200,   body: {     roles: [       [Object], [Object],       [Object], [Object],       [Object], [Object],       [Object], [Object],       [Object], [Object],       [Object]     ],     success: true   } }
I20210522-17:45:16.407(0) API ➔ debug GET: /api/v1/users.presence?ids=abzTtbRcebN5Wgxer%2CL9PrQDZEEfrRshpDk%2CFuv9nzrYzGCkMJXMk
I20210522-17:45:16.412(0) API ➔ debug GET: /api/v1/commands.list?
 I20210522-17:45:16.719(0) API ➔ debug GET: /api/v1/subscriptions.get?updatedSince=2021-05-22T00%3A41%3A43.983Z I20210522-17:45:16.722(0) Meteor ➔ method subscriptions/get -> userId: Fuv9nzrYzGCkMJXMk, arguments: [{}] I20210522-17:45:16.725(0) API ➔ debug GET: /api/v1/rooms.get?updatedSince=2021-05-22T00%3A41%3A43.983Z
I20210522-17:45:16.728(0) Meteor ➔ method rooms/get -> userId: Fuv9nzrYzGCkMJXMk, arguments: [{}] I20210522-17:45:16.736(0) API ➔ debug Success {   statusCode: 200,   body: { emojis: { update: [], remove: [] }, success: true } } I20210522-17:45:16.739(0) API ➔ debug Success {   statusCode: 200,   body: { update: [ [Object] ], remove: [], success: true } } I20210522-17:45:16.747(0) API ➔ debug Success {   statusCode: 200,   body: { update: [ [Object] ], remove: [], success: true } }
I20210522-17:45:16.891(0) API ➔ debug GET: /api/v1/chat.syncMessages?roomId=Fuv9nzrYzGCkMJXMkabzTtbRcebN5Wgxer&lastUpdate=2021-05-22T00%3A34%3A22.068Z I20210522-17:45:16.905(0) Meteor ➔ method messages/get -> userId: Fuv9nzrYzGCkMJXMk, arguments: ["Fuv9nzrYzGCkMJXMkabzTtbRcebN5Wgxer",{"lastUpdate":"2021-05-22T00:34:22.068Z"}] I20210522-17:45:16.909(0) Meteor ➔ method canAccessRoom -> userId: Fuv9nzrYzGCkMJXMk, arguments: ["Fuv9nzrYzGCkMJXMkabzTtbRcebN5Wgxer","Fuv9nzrYzGCkMJXMk"] I20210522-17:45:16.930(0) API ➔ debug Success {   statusCode: 200,   body: { result: { updated: [Array], deleted: [] }, success: true } }
I20210522-17:45:17.316(0) API ➔ debug GET: /api/v1/users.info?userId=abzTtbRcebN5Wgxer I20210522-17:45:17.329(0) API ➔ debug Success {   statusCode: 200,   body: {     user: {       _id: 'abzTtbRcebN5Wgxer',       type: 'user',       status: 'offline',       active: true,       name: 'Denis',       username: 'denis',       statusText: '',       utcOffset: -5     },     success: true   } }
I20210522-17:45:17.467(0) API ➔ debug POST: /api/v1/subscriptions.read I20210522-17:45:17.470(0) Meteor ➔ method readMessages -> userId: Fuv9nzrYzGCkMJXMk, arguments: ["Fuv9nzrYzGCkMJXMkabzTtbRcebN5Wgxer"] I20210522-17:45:17.479(0) API ➔ debug Success { statusCode: 200, body: { success: true } } I20210522-17:45:26.898(0) API ➔ debug POST: /api/v1/chat.sendMessage I20210522-17:45:26.935(0) API ➔ debug Success {   statusCode: 200,   body: {     message: {       _id: 'hsTDaIHNfWVgYDOAi',       rid: 'Fuv9nzrYzGCkMJXMkabzTtbRcebN5Wgxer',       msg: 'Hello there',       ts: 2021-05-22T17:45:26.903Z,       u: [Object],       urls: [],       mentions: [],       channels: [],       _updatedAt: 2021-05-22T17:45:26.929Z     },     success: true   } } I20210522-17:45:26.950(0) Integrations ➔ Outgoing WebHook.debug Execute Trigger: sendMessage I20210522-17:45:26.954(0) Integrations ➔ Outgoing WebHook.debug Got the event arguments for the event: sendMessage {   event: 'sendMessage',   message: {     _id: 'hsTDaIHNfWVgYDOAi',     rid: 'Fuv9nzrYzGCkMJXMkabzTtbRcebN5Wgxer',     msg: 'Hello there',     ts: 2021-05-22T17:45:26.903Z,     u: { _id: 'Fuv9nzrYzGCkMJXMk', username: 'babe', name: undefined },     urls: [],     mentions: [],     channels: [],     _updatedAt: 2021-05-22T17:45:26.929Z   },   room: {     _id: 'Fuv9nzrYzGCkMJXMkabzTtbRcebN5Wgxer',     t: 'd',     usernames: [ 'babe', 'denis' ],     usersCount: 2,     msgs: 46,     ts: 2021-05-12T03:53:47.868Z,     uids: [ 'Fuv9nzrYzGCkMJXMk', 'abzTtbRcebN5Wgxer' ],     _updatedAt: 2021-05-22T02:14:11.202Z,     lastMessage: {       _id: 'EzihPPuQZ7xrgKQM1',       rid: 'Fuv9nzrYzGCkMJXMkabzTtbRcebN5Wgxer',       msg: 'Another test',       ts: 2021-05-22T02:14:11.170Z,       u: [Object],       urls: [],       mentions: [],       channels: [],       _updatedAt: 2021-05-22T02:14:11.187Z     },     lm: 2021-05-22T02:14:11.170Z,     jitsiTimeout: 2021-05-14T22:06:23.580Z   } }
I20210522-17:45:26.957(0) Integrations ➔ Outgoing WebHook.debug Starting search for triggers for the room: Fuv9nzrYzGCkMJXMkabzTtbRcebN5Wgxer I20210522-17:45:26.963(0) Integrations ➔ Outgoing WebHook.debug Found 0 to iterate over and see if the match the event. I20210522-17:45:27.780(0) Push ➔ debug Sending notification {   createdAt: 2021-05-22T17:45:27.775Z,   createdBy: '',   sent: false,   sending: 0,   from: 'push',   title: 'babe',   text: 'Hello there',   userId: 'abzTtbRcebN5Wgxer',   payload: {     host: 'https://chat.mystockphotos.eu/',     messageId: 'hsTDaIHNfWVgYDOAi',     notificationType: 'message',     rid: 'Fuv9nzrYzGCkMJXMkabzTtbRcebN5Wgxer',     sender: { _id: 'Fuv9nzrYzGCkMJXMk', username: 'babe' },     senderName: 'babe',     type: 'd'   },   badge: 1,   sound: 'default',   notId: 62867164,   apn: { category: 'MESSAGE' },   gcm: {     image: 'https://chat.mystockphotos.eu/images/logo/android-chrome-192x192.png',     style: 'inbox'   } }
I20210522-17:45:27.781(0) Push ➔ debug send message "babe" to userId abzTtbRcebN5Wgxer I20210522-17:45:27.833(0) Push ➔ debug send to token {   gcm: 'cAmmTtMCQ9-Fv-q5ye6uDQ:APA91bGpCgX1t6pzMTHIVvgwj4AEPab8SrulfXE8DZbqdsGr5w6nh6UJv3I7IbSSibKuE1gLDc7xpnaom2ek8sR4EpmyZXCLpAVUD2cWcKEZtR5SficMcs8l0Q8b62kON6qxswbnG64Y' } I20210522-17:45:27.841(0) Push ➔ debug send to token {   gcm: 'cAmmTtMCQ9-Fv-q5ye6uDQ:APA91bGpCgX1t6pzMTHIVvgwj4AEPab8SrulfXE8DZbqdsGr5w6nh6UJv3I7IbSSibKuE1gLDc7xpnaom2ek8sR4EpmyZXCLpAVUD2cWcKEZtR5SficMcs8l0Q8b62kON6qxswbnG64Y' } I20210522-17:45:27.842(0) Push ➔ debug Sent message "babe" to 0 ios apps 1 android apps
I20210522-17:45:27.849(0) Push ➔ debug GUIDE: The "appTokensCollection" - No APN clients have registered on the server yet...
I20210522-17:45:28.942(0) API ➔ debug POST: /api/v1/subscriptions.read I20210522-17:45:28.946(0) Meteor ➔ method readMessages -> userId: Fuv9nzrYzGCkMJXMk, arguments: ["Fuv9nzrYzGCkMJXMkabzTtbRcebN5Wgxer"] I20210522-17:45:28.953(0) API ➔ debug Success { statusCode: 200, body: { success: true } }
I20210522-17:46:00.779(0) SyncedCron ➔ info Starting "Generate download files for user data".
I20210522-17:46:00.788(0) SyncedCron ➔ info Finished "Generate download files for user data".
System logs:
May 22 17:39:01 friend CRON[3119]: (root) CMD (  [ -x /usr/lib/php/sessionclean ] && if [ ! -d /run/systemd/system ]; then /usr/lib/php/sessionclean; fi)
May 22 17:39:02 friend systemd[1]: Starting Clean php session files...
May 22 17:39:02 friend systemd[1]: phpsessionclean.service: Succeeded.
May 22 17:39:02 friend systemd[1]: Finished Clean php session files.
May 22 17:43:20 friend rocketchat[1402]: Exception while invoking method saveSettings Error: TOTP Required [totp-required]
May 22 17:43:20 friend rocketchat[1402]:     at checkCodeForUser (app/2fa/server/code/index.ts:186:9)
May 22 17:43:20 friend rocketchat[1402]:     at MethodInvocation. (app/2fa/server/twoFactorRequired.ts:31:4)
May 22 17:43:20 friend rocketchat[1402]:     at MethodInvocation.methodsMap. (app/lib/server/lib/debug.js:76:34)
May 22 17:43:20 friend rocketchat[1402]:     at maybeAuditArgumentChecks (packages/ddp-server/livedata_server.js:1771:12)
May 22 17:43:20 friend rocketchat[1402]:     at packages/ddp-server/livedata_server.js:1689:15
May 22 17:43:20 friend rocketchat[1402]:     at Meteor.EnvironmentVariable.EVp.withValue (packages/meteor.js:1234:12)
May 22 17:43:20 friend rocketchat[1402]:     at packages/ddp-server/livedata_server.js:1687:36
May 22 17:43:20 friend rocketchat[1402]:     at new Promise ()
May 22 17:43:20 friend rocketchat[1402]:     at Server.applyAsync (packages/ddp-server/livedata_server.js:1686:12)
May 22 17:43:20 friend rocketchat[1402]:     at Server.apply (packages/ddp-server/livedata_server.js:1625:26)
May 22 17:43:20 friend rocketchat[1402]:     at Server.call (packages/ddp-server/livedata_server.js:1607:17)
May 22 17:43:20 friend rocketchat[1402]:     at Object.post (app/api/server/v1/misc.js:263:26)
May 22 17:43:20 friend rocketchat[1402]:     at app/api/server/api.js:394:82
May 22 17:43:20 friend rocketchat[1402]:     at Meteor.EnvironmentVariable.EVp.withValue (packages/meteor.js:1234:12)
May 22 17:43:20 friend rocketchat[1402]:     at Object._internalRouteActionHandler [as action] (app/api/server/api.js:394:39)
May 22 17:43:20 friend rocketchat[1402]:     at Route.share.Route.Route._callEndpoint (packages/nimble_restivus/lib/route.coffee:150:32)
May 22 17:43:20 friend rocketchat[1402]:     at packages/nimble_restivus/lib/route.coffee:59:33
May 22 17:43:20 friend rocketchat[1402]:     at packages/simple_json-routes.js:98:9
May 22 17:43:20 friend rocketchat[1402]:  => awaited here:
May 22 17:43:20 friend rocketchat[1402]:     at Promise.await (/opt/Rocket.Chat/programs/server/npm/node_modules/meteor/promise/node_modules/meteor-promise/promise_server.js:60:12)
May 22 17:43:20 friend rocketchat[1402]:     at Server.apply (packages/ddp-server/livedata_server.js:1638:22)
May 22 17:43:20 friend rocketchat[1402]:     at Server.call (packages/ddp-server/livedata_server.js:1607:17)
May 22 17:43:20 friend rocketchat[1402]:     at Object.post (app/api/server/v1/misc.js:263:26)
May 22 17:43:20 friend rocketchat[1402]:     at app/api/server/api.js:394:82
May 22 17:43:20 friend rocketchat[1402]:     at Meteor.EnvironmentVariable.EVp.withValue (packages/meteor.js:1234:12)
May 22 17:43:20 friend rocketchat[1402]:     at Object._internalRouteActionHandler [as action] (app/api/server/api.js:394:39)
May 22 17:43:20 friend rocketchat[1402]:     at Route.share.Route.Route._callEndpoint (packages/nimble_restivus/lib/route.coffee:150:32)
May 22 17:43:20 friend rocketchat[1402]:     at packages/nimble_restivus/lib/route.coffee:59:33
May 22 17:43:20 friend rocketchat[1402]:     at packages/simple_json-routes.js:98:9
May 22 17:43:26 friend rocketchat[1402]: API âž” debug POST: /api/v1/method.call/private-settings%3Aget
May 22 17:43:26 friend rocketchat[1402]: Meteor âž” method private-settings/get -> userId: L9PrQDZEEfrRshpDk, arguments: [{}]
May 22 17:43:26 friend rocketchat[1402]: API âž” debug Success {
May 22 17:43:26 friend rocketchat[1402]:   statusCode: 200,
May 22 17:43:26 friend rocketchat[1402]:   body: {
May 22 17:43:26 friend rocketchat[1402]:     message: '{"msg":"result","id":"28","result":{"update":[{"_id":"Log_Level","_updatedAt":{"$date":1621705406297},"autocomplete":true,"blocked":false,"createdAt":{"$date":1620154728577},"enterprise":false,"group":"Logs","hidden":false,"i18nDescription":"Log_Level_Description","i18nLabel":"Log_Level","packageValue":"0","public":true,"requiredOnWizard":false,"secret":false,"sorter":0,"ts":{"$date":1620154728579},"type":"select","value":"2","valueSource":"packageValue","values":[{"key":"0","i18nLabel":"0_Errors_Only"},{"key":"1","i18nLabel":"1_Errors_and_Information"},{"key":"2","i18nLabel":"2_Erros_Information_and_Debug"}]}],"remove":[]}}',
May 22 17:43:26 friend rocketchat[1402]:     success: true
May 22 17:43:26 friend rocketchat[1402]:   }
May 22 17:43:26 friend rocketchat[1402]: }
May 22 17:43:31 friend rocketchat[1402]: API âž” debug GET: /api/v1/stdout.queue
May 22 17:43:31 friend rocketchat[1402]: API âž” debug Success {
May 22 17:43:31 friend rocketchat[1402]:   statusCode: 200,
May 22 17:43:31 friend rocketchat[1402]:   body: {
May 22 17:43:31 friend rocketchat[1402]:     queue: [
May 22 17:43:31 friend rocketchat[1402]:       [Object], [Object], [Object],
May 22 17:43:31 friend rocketchat[1402]: message repeated 8 times: [       [Object], [Object], [Object],]
May 22 17:43:31 friend rocketchat[1402]:       [Object], [Object], [Object]
May 22 17:43:31 friend rocketchat[1402]:     ],
May 22 17:43:31 friend rocketchat[1402]:     success: true
May 22 17:43:31 friend rocketchat[1402]:   }
May 22 17:43:31 friend rocketchat[1402]: }
May 22 17:44:00 friend rocketchat[1402]: SyncedCron âž” info Starting "Generate download files for user data".
May 22 17:44:00 friend rocketchat[1402]: SyncedCron âž” info Finished "Generate download files for user data".
May 22 17:45:14 friend rocketchat[1402]: API âž” debug GET: /api/v1/settings.public?query={%22_id%22:{%22$in%22:[%22Accounts_AllowEmailChange%22,%22Accounts_AllowPasswordChange%22,%22Accounts_AllowRealNameChange%22,%22Accounts_AllowUserAvatarChange%22,%22Accounts_AllowUserProfileChange%22,%22Accounts_AllowUserStatusMessageChange%22,%22Accounts_AllowUsernameChange%22,%22Accounts_AvatarBlockUnauthenticatedAccess%22,%22Accounts_CustomFields%22,%22Accounts_NamePlaceholder%22,%22API_Use_REST_For_DDP_Calls%22,%22CROWD_Enable%22,%22DirectMesssage_maxUsers%22,%22E2E_Enable%22,%22Accounts_Directory_DefaultView%22,%22FEDERATION_Enabled%22,%22Hide_System_Messages%22,%22LDAP_Enable%22,%22Livechat_request_comment_when_closing_conversation%22,%22Jitsi_Enabled%22,%22Jitsi_SSL%22,%22Jitsi_Domain%22,%22Jitsi_Enabled_TokenAuth%22,%22Jitsi_URL_Room_Hash%22,%22Jitsi_URL_Room_Prefix%22,%22Message_AllowDeleting%22,%22Message_AllowDeleting_BlockDeleteInMinutes%22,%22Message_AllowEditing%22,%22Message_AllowEditing_BlockEditInMinutes%22,%22Message_AllowPinning%22,%22Message_AllowStarring%22,%22Message_AudioRecorderEnabled%22,%22Message_GroupingPeriod%22,%22Message_TimeFormat%22,%22Message_TimeAndDateFormat%22,%22Site_Name%22,%22Store_Last_Message%22,%22uniqueID%22,%22UI_Allow_room_names_with_special_chars%22,%22UI_Use_Real_Name%22,%22Assets_favicon_512%22,%22Message_Read_Receipt_Enabled%22,%22Message_Read_Receipt_Store_Users%22,%22Threads_enabled%22,%22FileUpload_MediaTypeWhiteList%22,%22FileUpload_MaxFileSize%22,%22AutoTranslate_Enabled%22,%22Force_Screen_Lock%22,%22Force_Screen_Lock_After%22,%22Allow_Save_Media_to_Gallery%22]}}
May 22 17:45:14 friend rocketchat[1402]: API âž” debug Success {
May 22 17:45:14 friend rocketchat[1402]:   statusCode: 200,
May 22 17:45:14 friend rocketchat[1402]:   body: {
May 22 17:45:14 friend rocketchat[1402]:     settings: [
May 22 17:45:14 friend rocketchat[1402]:       [Object], [Object], [Object], [Object],
May 22 17:45:14 friend rocketchat[1402]: message repeated 11 times: [       [Object], [Object], [Object], [Object],]
May 22 17:45:14 friend rocketchat[1402]:       [Object]
May 22 17:45:14 friend rocketchat[1402]:     ],
May 22 17:45:14 friend rocketchat[1402]:     count: 49,
May 22 17:45:14 friend rocketchat[1402]:     offset: 0,
May 22 17:45:14 friend rocketchat[1402]:     total: 49,
May 22 17:45:14 friend rocketchat[1402]:     success: true
May 22 17:45:14 friend rocketchat[1402]:   }
May 22 17:45:14 friend rocketchat[1402]: }
May 22 17:45:14 friend rocketchat[1402]: API âž” debug GET: /api/info
May 22 17:45:14 friend rocketchat[1402]: API âž” debug Success { statusCode: 200, body: { version: '3.14.0', success: true } }
May 22 17:45:14 friend rocketchat[1402]: Meteor âž” publish null -> userId: null, arguments: []
May 22 17:45:14 friend rocketchat[1402]: API âž” debug POST: /api/v1/login
May 22 17:45:15 friend rocketchat[1402]: Meteor âž” publish null -> userId: Fuv9nzrYzGCkMJXMk, arguments: []
May 22 17:45:16 friend rocketchat[1402]: API âž” debug GET: /api/v1/roles.list?
May 22 17:45:16 friend rocketchat[1402]: API âž” debug Success {
May 22 17:45:16 friend rocketchat[1402]:   statusCode: 200,
May 22 17:45:16 friend rocketchat[1402]:   body: {
May 22 17:45:16 friend rocketchat[1402]:     roles: [
May 22 17:45:16 friend rocketchat[1402]:       [Object], [Object],
May 22 17:45:16 friend rocketchat[1402]: message repeated 4 times: [       [Object], [Object],]
May 22 17:45:16 friend rocketchat[1402]:       [Object]
May 22 17:45:16 friend rocketchat[1402]:     ],
May 22 17:45:16 friend rocketchat[1402]:     success: true
May 22 17:45:16 friend rocketchat[1402]:   }
May 22 17:45:16 friend rocketchat[1402]: }
May 22 17:45:16 friend rocketchat[1402]: API âž” debug GET: /api/v1/users.presence?ids=abzTtbRcebN5Wgxer%2CL9PrQDZEEfrRshpDk%2CFuv9nzrYzGCkMJXMk
May 22 17:45:16 friend rocketchat[1402]: API âž” debug GET: /api/v1/commands.list?
May 22 17:45:16 friend rocketchat[1402]: API âž” debug Success {
May 22 17:45:16 friend rocketchat[1402]:   statusCode: 200,
May 22 17:45:16 friend rocketchat[1402]:   body: {
May 22 17:45:16 friend rocketchat[1402]:     commands: [
May 22 17:45:16 friend rocketchat[1402]:       [Object], [Object], [Object],
May 22 17:45:16 friend rocketchat[1402]: message repeated 7 times: [       [Object], [Object], [Object],]
May 22 17:45:16 friend rocketchat[1402]:       [Object]
May 22 17:45:16 friend rocketchat[1402]:     ],
May 22 17:45:16 friend rocketchat[1402]:     offset: 0,
May 22 17:45:16 friend rocketchat[1402]:     count: 25,
May 22 17:45:16 friend rocketchat[1402]:     total: 25,
May 22 17:45:16 friend rocketchat[1402]:     success: true
May 22 17:45:16 friend rocketchat[1402]:   }
May 22 17:45:16 friend rocketchat[1402]: }
May 22 17:45:16 friend rocketchat[1402]: API âž” debug POST: /api/v1/push.token
May 22 17:45:16 friend rocketchat[1402]: Push âž” debug Got push token from app: {
May 22 17:45:16 friend rocketchat[1402]:   id: 'YcNsxZ85GCZBjqmzj',
May 22 17:45:16 friend rocketchat[1402]:   token: {
May 22 17:45:16 friend rocketchat[1402]:     gcm: 'fWvLySQ0RJaoM1g1KEKwxz:APA91bFoq8jop_HfDk-RFbkIs-BDIvWcBggLU0ScNlk1iZpXes3LjwSwZ9_0Dkq3RwNdAxtsV0CHJ9VzsfRlRh-CgUFNaml0oasYk-J6hKScbwBvkttCjOxoqOzBydg5JBOM_IUSt-Ye'
May 22 17:45:16 friend rocketchat[1402]:   },
May 22 17:45:16 friend rocketchat[1402]:   appName: 'chat.rocket.android',
May 22 17:45:16 friend rocketchat[1402]:   userId: 'Fuv9nzrYzGCkMJXMk'
May 22 17:45:16 friend rocketchat[1402]: }
May 22 17:45:16 friend rocketchat[1402]: API âž” debug POST: /api/v1/method.call/license:getModules
May 22 17:45:16 friend rocketchat[1402]: API âž” debug Success {
May 22 17:45:16 friend rocketchat[1402]:   statusCode: 200,
May 22 17:45:16 friend rocketchat[1402]:   body: { message: '{"msg":"result","result":[]}', success: true }
May 22 17:45:16 friend rocketchat[1402]: }
May 22 17:45:16 friend rocketchat[1402]: API âž” debug Success {
May 22 17:45:16 friend rocketchat[1402]:   statusCode: 200,
May 22 17:45:16 friend rocketchat[1402]:   body: { users: [ [Object], [Object] ], full: false, success: true }
May 22 17:45:16 friend rocketchat[1402]: }
May 22 17:45:16 friend rocketchat[1402]: Push âž” debug updated {
May 22 17:45:16 friend rocketchat[1402]:   _id: '6MG9HcsbzW4DDtWJK',
May 22 17:45:16 friend rocketchat[1402]:   token: {
May 22 17:45:16 friend rocketchat[1402]:     gcm: 'fWvLySQ0RJaoM1g1KEKwxz:APA91bFoq8jop_HfDk-RFbkIs-BDIvWcBggLU0ScNlk1iZpXes3LjwSwZ9_0Dkq3RwNdAxtsV0CHJ9VzsfRlRh-CgUFNaml0oasYk-J6hKScbwBvkttCjOxoqOzBydg5JBOM_IUSt-Ye'
May 22 17:45:16 friend rocketchat[1402]:   },
May 22 17:45:16 friend rocketchat[1402]:   appName: 'chat.rocket.android',
May 22 17:45:16 friend rocketchat[1402]:   userId: 'Fuv9nzrYzGCkMJXMk',
May 22 17:45:16 friend rocketchat[1402]:   enabled: true,
May 22 17:45:16 friend rocketchat[1402]:   createdAt: 2021-05-12T03:31:19.705Z,
May 22 17:45:16 friend rocketchat[1402]:   updatedAt: 2021-05-21T22:51:03.991Z
May 22 17:45:16 friend rocketchat[1402]: }
May 22 17:45:16 friend rocketchat[1402]: API âž” debug Success {
May 22 17:45:16 friend rocketchat[1402]:   statusCode: 200,
May 22 17:45:16 friend rocketchat[1402]:   body: {
May 22 17:45:16 friend rocketchat[1402]:     result: {
May 22 17:45:16 friend rocketchat[1402]:       _id: '6MG9HcsbzW4DDtWJK',
May 22 17:45:16 friend rocketchat[1402]:       token: [Object],
May 22 17:45:16 friend rocketchat[1402]:       appName: 'chat.rocket.android',
May 22 17:45:16 friend rocketchat[1402]:       userId: 'Fuv9nzrYzGCkMJXMk',
May 22 17:45:16 friend rocketchat[1402]:       enabled: true,
May 22 17:45:16 friend rocketchat[1402]:       createdAt: 2021-05-12T03:31:19.705Z,
May 22 17:45:16 friend rocketchat[1402]:       updatedAt: 2021-05-21T22:51:03.991Z
May 22 17:45:16 friend rocketchat[1402]:     },
May 22 17:45:16 friend rocketchat[1402]:     success: true
May 22 17:45:16 friend rocketchat[1402]:   }
May 22 17:45:16 friend rocketchat[1402]: }
May 22 17:45:16 friend rocketchat[1402]: API âž” debug GET: /api/v1/permissions.listAll?updatedSince=2021-05-04T18%3A59%3A22.133Z
May 22 17:45:16 friend rocketchat[1402]: API âž” debug Success { statusCode: 200, body: { update: [], remove: [], success: true } }
May 22 17:45:16 friend rocketchat[1402]: API âž” debug GET: /api/v1/emoji-custom.list?
May 22 17:45:16 friend rocketchat[1402]: API âž” debug GET: /api/v1/subscriptions.get?updatedSince=2021-05-22T00%3A41%3A43.983Z
May 22 17:45:16 friend rocketchat[1402]: Meteor âž” method subscriptions/get -> userId: Fuv9nzrYzGCkMJXMk, arguments: [{}]
May 22 17:45:16 friend rocketchat[1402]: API âž” debug GET: /api/v1/rooms.get?updatedSince=2021-05-22T00%3A41%3A43.983Z
May 22 17:45:16 friend rocketchat[1402]: Meteor âž” method rooms/get -> userId: Fuv9nzrYzGCkMJXMk, arguments: [{}]
May 22 17:45:16 friend rocketchat[1402]: API âž” debug Success {
May 22 17:45:16 friend rocketchat[1402]:   statusCode: 200,
May 22 17:45:16 friend rocketchat[1402]:   body: { emojis: { update: [], remove: [] }, success: true }
May 22 17:45:16 friend rocketchat[1402]: }
May 22 17:45:16 friend rocketchat[1402]: API âž” debug Success {
May 22 17:45:16 friend rocketchat[1402]:   statusCode: 200,
May 22 17:45:16 friend rocketchat[1402]:   body: { update: [ [Object] ], remove: [], success: true }
May 22 17:45:16 friend rocketchat[1402]: }
May 22 17:45:16 friend rocketchat[1402]: API âž” debug Success {
May 22 17:45:16 friend rocketchat[1402]:   statusCode: 200,
May 22 17:45:16 friend rocketchat[1402]:   body: { update: [ [Object] ], remove: [], success: true }
May 22 17:45:16 friend rocketchat[1402]: }
May 22 17:45:16 friend rocketchat[1402]: API âž” debug GET: /api/v1/chat.syncMessages?roomId=Fuv9nzrYzGCkMJXMkabzTtbRcebN5Wgxer&lastUpdate=2021-05-22T00%3A34%3A22.068Z
May 22 17:45:16 friend rocketchat[1402]: Meteor âž” method messages/get -> userId: Fuv9nzrYzGCkMJXMk, arguments: ["Fuv9nzrYzGCkMJXMkabzTtbRcebN5Wgxer",{"lastUpdate":"2021-05-22T00:34:22.068Z"}]
May 22 17:45:16 friend rocketchat[1402]: Meteor âž” method canAccessRoom -> userId: Fuv9nzrYzGCkMJXMk, arguments: ["Fuv9nzrYzGCkMJXMkabzTtbRcebN5Wgxer","Fuv9nzrYzGCkMJXMk"]
May 22 17:45:16 friend rocketchat[1402]: API âž” debug Success {
May 22 17:45:16 friend rocketchat[1402]:   statusCode: 200,
May 22 17:45:16 friend rocketchat[1402]:   body: { result: { updated: [Array], deleted: [] }, success: true }
May 22 17:45:16 friend rocketchat[1402]: }
May 22 17:45:17 friend rocketchat[1402]: API âž” debug GET: /api/v1/users.info?userId=abzTtbRcebN5Wgxer
May 22 17:45:17 friend rocketchat[1402]: API âž” debug Success {
May 22 17:45:17 friend rocketchat[1402]:   statusCode: 200,
May 22 17:45:17 friend rocketchat[1402]:   body: {
May 22 17:45:17 friend rocketchat[1402]:     user: {
May 22 17:45:17 friend rocketchat[1402]:       _id: 'abzTtbRcebN5Wgxer',
May 22 17:45:17 friend rocketchat[1402]:       type: 'user',
May 22 17:45:17 friend rocketchat[1402]:       status: 'offline',
May 22 17:45:17 friend rocketchat[1402]:       active: true,
May 22 17:45:17 friend rocketchat[1402]:       name: 'Denis',
May 22 17:45:17 friend rocketchat[1402]:       username: 'denis',
May 22 17:45:17 friend rocketchat[1402]:       statusText: '',
May 22 17:45:17 friend rocketchat[1402]:       utcOffset: -5
May 22 17:45:17 friend rocketchat[1402]:     },
May 22 17:45:17 friend rocketchat[1402]:     success: true
May 22 17:45:17 friend rocketchat[1402]:   }
May 22 17:45:17 friend rocketchat[1402]: }
May 22 17:45:17 friend rocketchat[1402]: API âž” debug POST: /api/v1/subscriptions.read
May 22 17:45:17 friend rocketchat[1402]: Meteor âž” method readMessages -> userId: Fuv9nzrYzGCkMJXMk, arguments: ["Fuv9nzrYzGCkMJXMkabzTtbRcebN5Wgxer"]
May 22 17:45:17 friend rocketchat[1402]: API âž” debug Success { statusCode: 200, body: { success: true } }
May 22 17:45:26 friend rocketchat[1402]: API âž” debug POST: /api/v1/chat.sendMessage
May 22 17:45:26 friend rocketchat[1402]: API âž” debug Success {
May 22 17:45:26 friend rocketchat[1402]:   statusCode: 200,
May 22 17:45:26 friend rocketchat[1402]:   body: {
May 22 17:45:26 friend rocketchat[1402]:     message: {
May 22 17:45:26 friend rocketchat[1402]:       _id: 'hsTDaIHNfWVgYDOAi',
May 22 17:45:26 friend rocketchat[1402]:       rid: 'Fuv9nzrYzGCkMJXMkabzTtbRcebN5Wgxer',
May 22 17:45:26 friend rocketchat[1402]:       msg: 'Hello there',
May 22 17:45:26 friend rocketchat[1402]:       ts: 2021-05-22T17:45:26.903Z,
May 22 17:45:26 friend rocketchat[1402]:       u: [Object],
May 22 17:45:26 friend rocketchat[1402]:       urls: [],
May 22 17:45:26 friend rocketchat[1402]:       mentions: [],
May 22 17:45:26 friend rocketchat[1402]:       channels: [],
May 22 17:45:26 friend rocketchat[1402]:       _updatedAt: 2021-05-22T17:45:26.929Z
May 22 17:45:26 friend rocketchat[1402]:     },
May 22 17:45:26 friend rocketchat[1402]:     success: true
May 22 17:45:26 friend rocketchat[1402]:   }
May 22 17:45:26 friend rocketchat[1402]: }
May 22 17:45:26 friend rocketchat[1402]: Integrations âž” Outgoing WebHook.debug Execute Trigger: sendMessage
May 22 17:45:26 friend rocketchat[1402]: Integrations âž” Outgoing WebHook.debug Got the event arguments for the event: sendMessage {
May 22 17:45:26 friend rocketchat[1402]:   event: 'sendMessage',
May 22 17:45:26 friend rocketchat[1402]:   message: {
May 22 17:45:26 friend rocketchat[1402]:     _id: 'hsTDaIHNfWVgYDOAi',
May 22 17:45:26 friend rocketchat[1402]:     rid: 'Fuv9nzrYzGCkMJXMkabzTtbRcebN5Wgxer',
May 22 17:45:26 friend rocketchat[1402]:     msg: 'Hello there',
May 22 17:45:26 friend rocketchat[1402]:     ts: 2021-05-22T17:45:26.903Z,
May 22 17:45:26 friend rocketchat[1402]:     u: { _id: 'Fuv9nzrYzGCkMJXMk', username: 'babe', name: undefined },
May 22 17:45:26 friend rocketchat[1402]:     urls: [],
May 22 17:45:26 friend rocketchat[1402]:     mentions: [],
May 22 17:45:26 friend rocketchat[1402]:     channels: [],
May 22 17:45:26 friend rocketchat[1402]:     _updatedAt: 2021-05-22T17:45:26.929Z
May 22 17:45:26 friend rocketchat[1402]:   },
May 22 17:45:26 friend rocketchat[1402]:   room: {
May 22 17:45:26 friend rocketchat[1402]:     _id: 'Fuv9nzrYzGCkMJXMkabzTtbRcebN5Wgxer',
May 22 17:45:26 friend rocketchat[1402]:     t: 'd',
May 22 17:45:26 friend rocketchat[1402]:     usernames: [ 'babe', 'denis' ],
May 22 17:45:26 friend rocketchat[1402]:     usersCount: 2,
May 22 17:45:26 friend rocketchat[1402]:     msgs: 46,
May 22 17:45:26 friend rocketchat[1402]:     ts: 2021-05-12T03:53:47.868Z,
May 22 17:45:26 friend rocketchat[1402]:     uids: [ 'Fuv9nzrYzGCkMJXMk', 'abzTtbRcebN5Wgxer' ],
May 22 17:45:26 friend rocketchat[1402]:     _updatedAt: 2021-05-22T02:14:11.202Z,
May 22 17:45:26 friend rocketchat[1402]:     lastMessage: {
May 22 17:45:26 friend rocketchat[1402]:       _id: 'EzihPPuQZ7xrgKQM1',
May 22 17:45:26 friend rocketchat[1402]:       rid: 'Fuv9nzrYzGCkMJXMkabzTtbRcebN5Wgxer',
May 22 17:45:26 friend rocketchat[1402]:       msg: 'Another test',
May 22 17:45:26 friend rocketchat[1402]:       ts: 2021-05-22T02:14:11.170Z,
May 22 17:45:26 friend rocketchat[1402]:       u: [Object],
May 22 17:45:26 friend rocketchat[1402]:       urls: [],
May 22 17:45:26 friend rocketchat[1402]:       mentions: [],
May 22 17:45:26 friend rocketchat[1402]:       channels: [],
May 22 17:45:26 friend rocketchat[1402]:       _updatedAt: 2021-05-22T02:14:11.187Z
May 22 17:45:26 friend rocketchat[1402]:     },
May 22 17:45:26 friend rocketchat[1402]:     lm: 2021-05-22T02:14:11.170Z,
May 22 17:45:26 friend rocketchat[1402]:     jitsiTimeout: 2021-05-14T22:06:23.580Z
May 22 17:45:26 friend rocketchat[1402]:   }
May 22 17:45:26 friend rocketchat[1402]: }
May 22 17:45:26 friend rocketchat[1402]: Integrations âž” Outgoing WebHook.debug Starting search for triggers for the room: Fuv9nzrYzGCkMJXMkabzTtbRcebN5Wgxer
May 22 17:45:26 friend rocketchat[1402]: Integrations âž” Outgoing WebHook.debug Found 0 to iterate over and see if the match the event.
May 22 17:45:27 friend rocketchat[1402]: Push âž” debug Sending notification {
May 22 17:45:27 friend rocketchat[1402]:   createdAt: 2021-05-22T17:45:27.775Z,
May 22 17:45:27 friend rocketchat[1402]:   createdBy: '',
May 22 17:45:27 friend rocketchat[1402]:   sent: false,
May 22 17:45:27 friend rocketchat[1402]:   sending: 0,
May 22 17:45:27 friend rocketchat[1402]:   from: 'push',
May 22 17:45:27 friend rocketchat[1402]:   title: 'babe',
May 22 17:45:27 friend rocketchat[1402]:   text: 'Hello there',
May 22 17:45:27 friend rocketchat[1402]:   userId: 'abzTtbRcebN5Wgxer',
May 22 17:45:27 friend rocketchat[1402]:   payload: {
May 22 17:45:27 friend rocketchat[1402]:     host: 'https://chat.mystockphotos.eu/',
May 22 17:45:27 friend rocketchat[1402]:     messageId: 'hsTDaIHNfWVgYDOAi',
May 22 17:45:27 friend rocketchat[1402]:     notificationType: 'message',
May 22 17:45:27 friend rocketchat[1402]:     rid: 'Fuv9nzrYzGCkMJXMkabzTtbRcebN5Wgxer',
May 22 17:45:27 friend rocketchat[1402]:     sender: { _id: 'Fuv9nzrYzGCkMJXMk', username: 'babe' },
May 22 17:45:27 friend rocketchat[1402]:     senderName: 'babe',
May 22 17:45:27 friend rocketchat[1402]:     type: 'd'
May 22 17:45:27 friend rocketchat[1402]:   },
May 22 17:45:27 friend rocketchat[1402]:   badge: 1,
May 22 17:45:27 friend rocketchat[1402]:   sound: 'default',
May 22 17:45:27 friend rocketchat[1402]:   notId: 62867164,
May 22 17:45:27 friend rocketchat[1402]:   apn: { category: 'MESSAGE' },
May 22 17:45:27 friend rocketchat[1402]:   gcm: {
May 22 17:45:27 friend rocketchat[1402]:     image: 'https://chat.mystockphotos.eu/images/logo/android-chrome-192x192.png',
May 22 17:45:27 friend rocketchat[1402]:     style: 'inbox'
May 22 17:45:27 friend rocketchat[1402]:   }
May 22 17:45:27 friend rocketchat[1402]: }
May 22 17:45:27 friend rocketchat[1402]: Push âž” debug send message "babe" to userId abzTtbRcebN5Wgxer
May 22 17:45:27 friend rocketchat[1402]: Push âž” debug send to token {
May 22 17:45:27 friend rocketchat[1402]:   gcm: 'cAmmTtMCQ9-Fv-q5ye6uDQ:APA91bGpCgX1t6pzMTHIVvgwj4AEPab8SrulfXE8DZbqdsGr5w6nh6UJv3I7IbSSibKuE1gLDc7xpnaom2ek8sR4EpmyZXCLpAVUD2cWcKEZtR5SficMcs8l0Q8b62kON6qxswbnG64Y'
May 22 17:45:27 friend rocketchat[1402]: }
May 22 17:45:27 friend rocketchat[1402]: Push âž” debug send to token {
May 22 17:45:27 friend rocketchat[1402]:   gcm: 'cAmmTtMCQ9-Fv-q5ye6uDQ:APA91bGpCgX1t6pzMTHIVvgwj4AEPab8SrulfXE8DZbqdsGr5w6nh6UJv3I7IbSSibKuE1gLDc7xpnaom2ek8sR4EpmyZXCLpAVUD2cWcKEZtR5SficMcs8l0Q8b62kON6qxswbnG64Y'
May 22 17:45:27 friend rocketchat[1402]: }
May 22 17:45:27 friend rocketchat[1402]: Push âž” debug Sent message "babe" to 0 ios apps 1 android apps
May 22 17:45:27 friend rocketchat[1402]: Push âž” debug GUIDE: The "appTokensCollection" - No APN clients have registered on the server yet...
May 22 17:45:28 friend rocketchat[1402]: API âž” debug POST: /api/v1/subscriptions.read
May 22 17:45:28 friend rocketchat[1402]: Meteor âž” method readMessages -> userId: Fuv9nzrYzGCkMJXMk, arguments: ["Fuv9nzrYzGCkMJXMkabzTtbRcebN5Wgxer"]
May 22 17:45:28 friend rocketchat[1402]: API âž” debug Success { statusCode: 200, body: { success: true } }
May 22 17:46:00 friend rocketchat[1402]: SyncedCron âž” info Starting "Generate download files for user data".
May 22 17:46:00 friend rocketchat[1402]: SyncedCron âž” info Finished "Generate download files for user data".
May 22 17:48:00 friend rocketchat[1402]: SyncedCron âž” info Starting "Generate download files for user data".
May 22 17:48:00 friend rocketchat[1402]: SyncedCron âž” info Finished "Generate download files for user data".
May 22 17:50:00 friend rocketchat[1402]: SyncedCron âž” info Starting "Generate download files for user data".
May 22 17:50:00 friend rocketchat[1402]: SyncedCron âž” info Finished "Generate download files for user data".
May 22 17:51:05 friend rocketchat[1402]: Meteor âž” method UserPresence:away -> userId: Fuv9nzrYzGCkMJXMk, arguments: [""]
May 22 17:51:07 friend rocketchat[1402]: Meteor âž” method UserPresence:away -> userId: L9PrQDZEEfrRshpDk, arguments: [{}]
May 22 17:52:00 friend rocketchat[1402]: SyncedCron âž” info Starting "Generate download files for user data".
May 22 17:52:00 friend rocketchat[1402]: SyncedCron âž” info Finished "Generate download files for user data".
May 22 17:54:00 friend rocketchat[1402]: SyncedCron âž” info Starting "Generate download files for user data".
May 22 17:54:00 friend rocketchat[1402]: SyncedCron âž” info Finished "Generate download files for user data".
May 22 17:55:06 friend rocketchat[1402]: Meteor âž” method UserPresence:online -> userId: L9PrQDZEEfrRshpDk, arguments: [{}]
May 22 17:55:26 friend systemd[1]: Started Session 149 of user root.

Are you sure your screenshot corresponds to the same events that are in the RC and system logs? The user agents are from curl, the service name is success which is my example route, and even the timestamps are off by approx 17 hours:

RC would use the actual service name gcm or apn, and when unsuccessful, it would retry a couple of times, and there are no "Error sending push to gateway" lines in the log as well, so RC must hit the gateway later but we are looking at an earlier manual test log.
See the related push logic here: https://github.com/RocketChat/Rocket.Chat/blob/develop/app/push/server/push.js#L118

Are you sure your screenshot corresponds to the same events that are in the RC and system logs? The user agents are from curl, the service name is success which is my example route, and even the timestamps are off by approx 17 hours:

RC would use the actual service name gcm or apn, and when unsuccessful, it would retry a couple of times, and there are no "Error sending push to gateway" lines in the log as well, so RC must hit the gateway later but we are looking at an earlier manual test log.
See the related push logic here: https://github.com/RocketChat/Rocket.Chat/blob/develop/app/push/server/push.js#L118

Hi Immanuel. Yes. I'm sure.
I shown you the entire logs to see that in fact the gateway does not get anything..
However, like I said, I can do telnet to the push gateway.

That's strange because RC somehow gets a 200 OK response to the push. If not from the gateway, from what/who? 😃 It's clearly using the push gateway sender from the log messages, not the built in GCM/APN senders. Don't you have multiple docker instances running, or experimenting with an old RC admin config? Just guessing.

That's strange because RC somehow gets a 200 OK response to the push. If not from the gateway, from what/who? 😃 It's clearly using the push gateway sender from the log messages, not the built in GCM/APN senders. Don't you have multiple docker instances running, or experimenting with an old RC admin config? Just guessing.

NO.
I have installed Rocketchat using their website. I used the manual installation, so no docker.
The only docker image running is the push gateway.

I can give you a few ideas I'd check when debugging the communication:

Is there an active firewall like ufw that can get disturbed by Docker (Docker is famous of its messy iptables r les) and try to deactivate it
You could try to run the Python program on the host directly. Of course, I'd need to install all dependencies, pip packages, etc but the Dockerfile can help with that
If you have a separate machine, run the bridge with docker-compose there to avoid using the same VM IP or localhost in the RC admin gateway address
Try to run the bridge on a separate port and also update the RC admin gateway URL
Try to run RC in docker, too, to be able to use Docker service names when referencing the projects (eg: http://gateway:8000)
Check the reverse proxy settings if there is a misconfiguration and it somehow returns a 200 OK for RC
The ultimate debug with tcpdump on the docker bridge to see the raw payloads RC sends and if these are the same as in the logs

Closing as stale


💫 Add ads to earn lives

Is your feature request related to a problem? Please describe.
You can only buy lives with money, which could be hard to earn (and no monetization)
Describe the solution you'd like
You can watch an add to earn money or lives (TO BE DISCUSSED)
Additional context
It will also be the chance to learn how to add ads to a game (we will need it later on for more complex BM anyways)
This task is tracking progress over multiple sub tasks.

[ ] Add the possibility to earn back a life by watching an ad
[ ] Add the possibility to display Reward Ads
[x] Register the app to Google Ads Network

See #3

No ads, no life, that's coming to an end, new vision incoming


Add Event defaulting to wrong calander

Hi,
The Google Calendar Chrome extension is great, but I am having one major issue with it that I cannot seem to resolve myself. The Google Chrome Extension is not defaulting to my default Google Calendar in the extension's "add event - choose calendar" drop down menu. Here is a screen capture of what I mean.

The extension is defaulting to one of my additional calendars which I use less often and I cannot find a way of changing it to always default to showing my default Google Calender in the add event drop down calendar menu. I have tried uninstalling the Google Calendar extension and reinstalling it but it just defaults back to same wrong calendar. I have also tried turning off all calendars except my default Google Calendar using the Chrome Extension options screen but the Extension still defaults to the wrong calendar in the Add Event calendar drop down menu.
This is a nuisance because I need to add most of my events to my default Google Calendar and not the one the Chrome Extension has locked onto. That means I have to select my default Google Calendar from the Extension's add event calendar drop down menu every time I want to add an event, which is inefficient. Is there a way of changing the extension's options to always initially display the default, or any other calendar, in the "Add Event" drop down menu please? Or is this a bug?
Kind Regards
Neil
System Information:

Version: 2.1
Language: en-US
Timezone Offset: +01:00
User Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.90 Safari/537.36

What steps will reproduce the problem?
1.
2.
3.
What is the expected result?
What happens instead?
Screenshot URL:
Logs:
[2015-04-23T07:27:42.092Z] browseraction.initialize()
[2015-04-23T07:27:42.107Z] browseraction.loadCalendarsIntoQuickAdd_()
[2015-04-23T07:27:42.142Z] browseraction.showEventsFromFeed_()
[2015-04-23T07:27:56.689Z] options.loadCalendarList()
[2015-04-23T07:28:01.051Z] Creating bug report.
[2015-04-23T07:28:09.889Z] Creating bug report.
[2015-04-23T07:28:10.745Z] Creating bug report.

Just rolled out a version that has a fix for this issue! #275

Hi Manas,
Thanks for the update. I have just uninstaled the old version and installed a fresh copy from the Chrome Store. The new version has still not been fixed this issue for me sadly however.

What version did you get when you installed it fresh? If it's 2.1, then you’re still on the old version, which is what I suspect, because the rollout usually takes a few hours.

Thanks Manas. I'll reinstall again tomorrow. I looked for a version number
but could not find one. It did go to a what's new web page which gave the
latest version as 2.1 but I didn't trust a web page had been updated.
King Regards
Neil
On Wed, 13 May 2015 18:24 Manas Tungare<EMAIL_ADDRESS>wrote:

What version did you get when you installed it fresh? If it's 2.1, then
you’re still on the old version, which is what I suspect, because the
rollout usually takes a few hours.
—
Reply to this email directly or view it on GitHub
https://github.com/manastungare/google-calendar-crx/issues/269#issuecomment-101751929
.

I again Manas,
Ok. I have found it the version number in the list of extensions. It is
version 2.2 that is installed. It is still defaulting to the wrong calendar
in the drop down list however.
Kind Regards
Neil
On Wed, 13 May 2015 18:29 Neil Stradwick<EMAIL_ADDRESS>wrote:

Thanks Manas. I'll reinstall again tomorrow. I looked for a version number
but could not find one. It did go to a what's new web page which gave the
latest version as 2.1 but I didn't trust a web page had been updated.
King Regards
Neil
On Wed, 13 May 2015 18:24 Manas Tungare<EMAIL_ADDRESS>wrote:

What version did you get when you installed it fresh? If it's 2.1, then
you’re still on the old version, which is what I suspect, because the
rollout usually takes a few hours.
—
Reply to this email directly or view it on GitHub
https://github.com/manastungare/google-calendar-crx/issues/269#issuecomment-101751929
.


Source and server timestamp

I'm submitting a ...  (check one with "x")
Problem

( x ) bug report => please search GitHub for a similar issue or PR before submitting

Information
Current behaviour

Source and servertimestamp not correct
When setting a value:

UAExpert:

Time of Node-Red-Container:

Expected behaviour

Server and sourcetimestamp correct
Minimal reproduction of the problem with instructions

Same flow as in #76
Inject

Your Environment
Please tell us about your environment:

(x) I have installed https://hub.docker.com/r/nodered/node-red-docker/

Device :

(x) Linux Alpine

Description of the connecting OPC UA system:

Name   : UA-.NETStandard
Link   :  https://github.com/OPCFoundation/UA-.NETStandard

node-red-contrib-iiot-opcua version: ``

Node: (min. 8.x)
node --version = v8.12.0

Please, report that issue to node-opcua.


Implement "Type 1" Approvals

These are approvals for models that have an "approval status" field present.  Examples:

Leave and Overtime requests
Purchase requisitions

For these models, the base model (i.e. the model that needs approval management) will have at least these fields:

approval_status
approval_reason

** their names may be different for different models
Meanwhile, we will create an "Approvals" model in this package, which will have the above fields kept in sync between it and the base model.
Additionally, it will have other fields:

approval_date
approver(s) (one or more User objects who can approve the approval record)
generic foreign key to the base model

Workflow:

Base model record is created
Somehow (???) approval model record is created
The approver(s) is notified that they need to do the approving
Once approval is done, it is synced from approval model to base model
Everyone is happy :)

Replace review_reason and review_status with comments e.g. https://github.com/django/django-contrib-comments

[ ] Add a way to deal with reviewers of different levels
- situation where all are same level.  What happens if one approves and the other rejects?
- situation where there are different levels.  The approval is not final until highest level approves
[ ] Add a way for approvable obj to set str() of ModelReview


Follow the existing uppercase pattern when setting event's source.

Settting source value in uppercase based on the comments here.

@miq-bot assign @gmcculloug
@miq-bot add_label euwe/no, providers/ansible_tower, enhancement


Fix uop.st for CLANG+AMX

# CLANG=1 AMX=1 python fun.py will fail with:
# File "/Users/user/src/tinygrad/tinygrad/ops.py", line 291, in st
#   case Ops.REDUCE_AXIS | Ops.WMMA: shape = src_sts[0].reduce(self.axis_arg)
#                                            ~~~~~~~^^^
# IndexError: list index out of range
from tinygrad import *

x = Tensor.rand(1, 32, 64, 128)
w = Tensor.rand(16,32,1,1)
o = x.conv2d(w).elu()
o.realize()

This bug was introduced in https://github.com/tinygrad/tinygrad/pull/8428
In process of rewriting Ops.EXP2 transcendental calls bitcast which calls can_view which accesses .st which fails because it assumes that all Ops.REDUCE_AXIS | Ops.WMMA have at least one src with shapetracker

hmm, that doesn't look like the right fix though.

- case Ops.REDUCE_AXIS | Ops.WMMA
+ case Ops.REDUCE_AXIS: # ...unchanged
+ case Ops.WMMA: # ....early return if it's shapeless otherwise do the reduce.


notify server for data source and schema changes

Notify the sync server when data sources or schema change.

@cfoskin this is hard to verify on its own. Best to test in combination with the server.


Fabric management

This will add client and server functions to help with the management of matter fabrics and the mapping of CSA vendor ids with vendor names.

For the time being the fetching of vendor info from the CSA is done on the server side and stored in memory as it's not that much information. So we could either change it so it's stored persistently and updated at startup or move it to the client side.


Explore "loop fusion" optimization on the low_level code

Although MetaOCaml theory does not allow code inspection, it does expose the AST, and we can reimplement Runnative and/or rely on offshoring.

This is the same as loop sharing AFAIR.