[Bug] [Module Name] seatunnel-cluster.sh -d is run, can't seatunnel.sh -m local ?

Search before asking

[X] I had searched in the issues and found no similar issues.

What happened
when i run cluster mode , i can't run local mode together?
SeaTunnel Version
2.3.3
SeaTunnel Config
v2.batch.config.template

Running Command
seatunnel.sh -m local -c v2.batch.config.template

Error Exception
com.hazelcast.client.AuthenticationException: Authentication failed. The configured cluster name on the client (see ClientConfig.setClusterName()) does not match the one configured in the cluster or the credentials set in the Client security config could not be authenticated
	at com.hazelcast.client.impl.connection.tcp.TcpClientConnectionManager.checkAuthenticationResponse(TcpClientConnectionManager.java:995) ~[seatunnel-starter.jar:2.3.3]
	at com.hazelcast.client.impl.connection.tcp.TcpClientConnectionManager.onAuthenticated(TcpClientConnectionManager.java:898) ~[seatunnel-starter.jar:2.3.3]
	at com.hazelcast.client.impl.connection.tcp.TcpClientConnectionManager.getOrConnectToAddress(TcpClientConnectionManager.java:615) ~[seatunnel-starter.jar:2.3.3]
	at com.hazelcast.client.impl.connection.tcp.TcpClientConnectionManager.lambda$doConnectToCandidateCluster$3(TcpClientConnectionManager.java:505) ~[seatunnel-starter.jar:2.3.3]
	at com.hazelcast.client.impl.connection.tcp.TcpClientConnectionManager.connect(TcpClientConnectionManager.java:459) [seatunnel-starter.jar:2.3.3]
	at com.hazelcast.client.impl.connection.tcp.TcpClientConnectionManager.doConnectToCandidateCluster(TcpClientConnectionManager.java:505) [seatunnel-starter.jar:2.3.3]
	at com.hazelcast.client.impl.connection.tcp.TcpClientConnectionManager.doConnectToCluster(TcpClientConnectionManager.java:411) [seatunnel-starter.jar:2.3.3]
	at com.hazelcast.client.impl.connection.tcp.TcpClientConnectionManager.connectToCluster(TcpClientConnectionManager.java:372) [seatunnel-starter.jar:2.3.3]
	at com.hazelcast.client.impl.clientside.HazelcastClientInstanceImpl.start(HazelcastClientInstanceImpl.java:381) [seatunnel-starter.jar:2.3.3]
	at com.hazelcast.client.HazelcastClient.constructHazelcastClient(HazelcastClient.java:460) [seatunnel-starter.jar:2.3.3]
	at com.hazelcast.client.HazelcastClient.newHazelcastClientInternal(HazelcastClient.java:416) [seatunnel-starter.jar:2.3.3]
	at com.hazelcast.client.HazelcastClient.newHazelcastClient(HazelcastClient.java:136) [seatunnel-starter.jar:2.3.3]
	at org.apache.seatunnel.engine.client.SeaTunnelHazelcastClient.<init>(SeaTunnelHazelcastClient.java:53) [seatunnel-starter.jar:2.3.3]
	at org.apache.seatunnel.engine.client.SeaTunnelClient.<init>(SeaTunnelClient.java:46) [seatunnel-starter.jar:2.3.3]
	at org.apache.seatunnel.core.starter.seatunnel.command.ClientExecuteCommand.execute(ClientExecuteCommand.java:96) [seatunnel-starter.jar:2.3.3]
	at org.apache.seatunnel.core.starter.SeaTunnel.run(SeaTunnel.java:40) [seatunnel-starter.jar:2.3.3]
	at org.apache.seatunnel.core.starter.seatunnel.SeaTunnelClient.main(SeaTunnelClient.java:34) [seatunnel-starter.jar:2.3.3]
2024-01-10 11:43:26,988 WARN  com.hazelcast.client.impl.connection.ClientConnectionManager - hz.client_1 [seatunnel-478597] [5.1] Exception during initial connection to [<IP_ADDRESS>]:5801: com.hazelcast.client.AuthenticationException: Authentication failed. The configured cluster name on the client (see ClientConfig.setClusterName()) does not match the one configured in the cluster or the credentials set in the Client security config could not be authenticated
2024-01-10 11:43:26,988 INFO  com.hazelcast.client.impl.connection.ClientConnectionManager - hz.client_1 [seatunnel-478597] [5.1] Trying to connect to [<IP_ADDRESS>]:5801
2024-01-10 11:43:26,988 WARN  com.hazelcast.client.impl.connection.ClientConnectionManager - hz.client_1 [seatunnel-478597] [5.1] Exception during initial connection to [<IP_ADDRESS>]:5801: com.hazelcast.core.HazelcastException: java.io.IOException: Connection refused to address /<IP_ADDRESS>:5801
2024-01-10 11:43:26,989 INFO  com.hazelcast.client.impl.connection.ClientConnectionManager - hz.client_1 [seatunnel-478597] [5.1] Trying to connect to [<IP_ADDRESS>]:5801
2024-01-10 11:43:26,990 WARN  com.hazelcast.client.impl.connection.tcp.TcpClientConnection - hz.client_1 [seatunnel-478597] [5.1] ClientConnection{alive=false, connectionId=12, channel=NioChannel{/<IP_ADDRESS>:52863->/<IP_ADDRESS>:5801}, remoteAddress=null, lastReadTime=2024-01-10 11:43:26.990, lastWriteTime=2024-01-10 11:43:26.989, closedTime=2024-01-10 11:43:26.990, connected server version=null} closed. Reason: Failed to authenticate connection
com.hazelcast.client.AuthenticationException: Authentication failed. The configured cluster name on the client (see ClientConfig.setClusterName()) does not match the one configured in the cluster or the credentials set in the Client security config could not be authenticated
	at com.hazelcast.client.impl.connection.tcp.TcpClientConnectionManager.checkAuthenticationResponse(TcpClientConnectionManager.java:995) ~[seatunnel-starter.jar:2.3.3]
	at com.hazelcast.client.impl.connection.tcp.TcpClientConnectionManager.onAuthenticated(TcpClientConnectionManager.java:898) ~[seatunnel-starter.jar:2.3.3]
	at com.hazelcast.client.impl.connection.tcp.TcpClientConnectionManager.getOrConnectToAddress(TcpClientConnectionManager.java:615) ~[seatunnel-starter.jar:2.3.3]
	at com.hazelcast.client.impl.connection.tcp.TcpClientConnectionManager.lambda$doConnectToCandidateCluster$3(TcpClientConnectionManager.java:505) ~[seatunnel-starter.jar:2.3.3]
	at com.hazelcast.client.impl.connection.tcp.TcpClientConnectionManager.connect(TcpClientConnectionManager.java:459) [seatunnel-starter.jar:2.3.3]
	at com.hazelcast.client.impl.connection.tcp.TcpClientConnectionManager.doConnectToCandidateCluster(TcpClientConnectionManager.java:505) [seatunnel-starter.jar:2.3.3]
	at com.hazelcast.client.impl.connection.tcp.TcpClientConnectionManager.doConnectToCluster(TcpClientConnectionManager.java:411) [seatunnel-starter.jar:2.3.3]
	at com.hazelcast.client.impl.connection.tcp.TcpClientConnectionManager.connectToCluster(TcpClientConnectionManager.java:372) [seatunnel-starter.jar:2.3.3]
	at com.hazelcast.client.impl.clientside.HazelcastClientInstanceImpl.start(HazelcastClientInstanceImpl.java:381) [seatunnel-starter.jar:2.3.3]
	at com.hazelcast.client.HazelcastClient.constructHazelcastClient(HazelcastClient.java:460) [seatunnel-starter.jar:2.3.3]
	at com.hazelcast.client.HazelcastClient.newHazelcastClientInternal(HazelcastClient.java:416) [seatunnel-starter.jar:2.3.3]
	at com.hazelcast.client.HazelcastClient.newHazelcastClient(HazelcastClient.java:136) [seatunnel-starter.jar:2.3.3]
	at org.apache.seatunnel.engine.client.SeaTunnelHazelcastClient.<init>(SeaTunnelHazelcastClient.java:53) [seatunnel-starter.jar:2.3.3]
	at org.apache.seatunnel.engine.client.SeaTunnelClient.<init>(SeaTunnelClient.java:46) [seatunnel-starter.jar:2.3.3]
	at org.apache.seatunnel.core.starter.seatunnel.command.ClientExecuteCommand.execute(ClientExecuteCommand.java:96) [seatunnel-starter.jar:2.3.3]
	at org.apache.seatunnel.core.starter.SeaTunnel.run(SeaTunnel.java:40) [seatunnel-starter.jar:2.3.3]
	at org.apache.seatunnel.core.starter.seatunnel.SeaTunnelClient.main(SeaTunnelClient.java:34) [seatunnel-starter.jar:2.3.3]
2024-01-10 11:43:26,991 WARN  com.hazelcast.client.impl.connection.ClientConnectionManager - hz.client_1 [seatunnel-478597] [5.1] Exception during initial connection to [<IP_ADDRESS>]:5801: com.hazelcast.client.AuthenticationException: Authentication failed. The configured cluster name on the client (see ClientConfig.setClusterName()) does not match the one configured in the cluster or the credentials set in the Client security config could not be authenticated
2024-01-10 11:43:26,991 WARN  com.hazelcast.client.impl.connection.ClientConnectionManager - hz.client_1 [seatunnel-478597] [5.1] Unable to get live cluster connection, cluster connect timeout (3000 ms) is reached. Attempt 4.
2024-01-10 11:43:26,991 INFO  com.hazelcast.client.impl.connection.ClientConnectionManager - hz.client_1 [seatunnel-478597] [5.1] Unable to connect to any address from the cluster with name: seatunnel-478597. The following addresses were tried: [[<IP_ADDRESS>]:5801, [<IP_ADDRESS>]:5801, [<IP_ADDRESS>]:5801, [<IP_ADDRESS>]:5801]
2024-01-10 11:43:26,992 INFO  com.hazelcast.core.LifecycleService - hz.client_1 [seatunnel-478597] [5.1] HazelcastClient 5.1 (20220228 - 21f20e7) is SHUTTING_DOWN
2024-01-10 11:43:26,994 INFO  com.hazelcast.core.LifecycleService - hz.client_1 [seatunnel-478597] [5.1] HazelcastClient 5.1 (20220228 - 21f20e7) is SHUTDOWN
2024-01-10 11:43:26,994 INFO  com.hazelcast.core.LifecycleService - [<IP_ADDRESS>]:5802 [seatunnel-478597] [5.1] [<IP_ADDRESS>]:5802 is SHUTTING_DOWN
2024-01-10 11:43:26,997 INFO  com.hazelcast.internal.partition.impl.MigrationManager - [<IP_ADDRESS>]:5802 [seatunnel-478597] [5.1] Shutdown request of Member [<IP_ADDRESS>]:5802 - 3d79a5e1-74c2-4210-9552-99d770ec0550 this is handled
2024-01-10 11:43:27,001 INFO  com.hazelcast.instance.impl.Node - [<IP_ADDRESS>]:5802 [seatunnel-478597] [5.1] Shutting down connection manager...
2024-01-10 11:43:27,002 INFO  com.hazelcast.instance.impl.Node - [<IP_ADDRESS>]:5802 [seatunnel-478597] [5.1] Shutting down node engine...
2024-01-10 11:43:30,015 INFO  com.hazelcast.instance.impl.NodeExtension - [<IP_ADDRESS>]:5802 [seatunnel-478597] [5.1] Destroying node NodeExtension.
2024-01-10 11:43:30,016 INFO  com.hazelcast.instance.impl.Node - [<IP_ADDRESS>]:5802 [seatunnel-478597] [5.1] Hazelcast Shutdown is completed in 3020 ms.
2024-01-10 11:43:30,016 INFO  com.hazelcast.core.LifecycleService - [<IP_ADDRESS>]:5802 [seatunnel-478597] [5.1] [<IP_ADDRESS>]:5802 is SHUTDOWN
2024-01-10 11:43:30,016 INFO  org.apache.seatunnel.core.starter.seatunnel.command.ClientExecuteCommand - Closed HazelcastInstance ......
2024-01-10 11:43:30,016 ERROR org.apache.seatunnel.core.starter.SeaTunnel -

===============================================================================

2024-01-10 11:43:30,016 ERROR org.apache.seatunnel.core.starter.SeaTunnel - Fatal Error,

2024-01-10 11:43:30,016 ERROR org.apache.seatunnel.core.starter.SeaTunnel - Please submit bug report in https://github.com/apache/seatunnel/issues

2024-01-10 11:43:30,018 ERROR org.apache.seatunnel.core.starter.SeaTunnel - Reason:SeaTunnel job executed failed

2024-01-10 11:43:30,019 ERROR org.apache.seatunnel.core.starter.SeaTunnel - Exception StackTrace:org.apache.seatunnel.core.starter.exception.CommandExecuteException: SeaTunnel job executed failed
	at org.apache.seatunnel.core.starter.seatunnel.command.ClientExecuteCommand.execute(ClientExecuteCommand.java:191)
	at org.apache.seatunnel.core.starter.SeaTunnel.run(SeaTunnel.java:40)
	at org.apache.seatunnel.core.starter.seatunnel.SeaTunnelClient.main(SeaTunnelClient.java:34)
Caused by: java.lang.IllegalStateException: Unable to connect to any cluster.
	at com.hazelcast.client.impl.connection.tcp.TcpClientConnectionManager.doConnectToCluster(TcpClientConnectionManager.java:433)
	at com.hazelcast.client.impl.connection.tcp.TcpClientConnectionManager.connectToCluster(TcpClientConnectionManager.java:372)
	at com.hazelcast.client.impl.clientside.HazelcastClientInstanceImpl.start(HazelcastClientInstanceImpl.java:381)
	at com.hazelcast.client.HazelcastClient.constructHazelcastClient(HazelcastClient.java:460)
	at com.hazelcast.client.HazelcastClient.newHazelcastClientInternal(HazelcastClient.java:416)
	at com.hazelcast.client.HazelcastClient.newHazelcastClient(HazelcastClient.java:136)
	at org.apache.seatunnel.engine.client.SeaTunnelHazelcastClient.<init>(SeaTunnelHazelcastClient.java:53)
	at org.apache.seatunnel.engine.client.SeaTunnelClient.<init>(SeaTunnelClient.java:46)
	at org.apache.seatunnel.core.starter.seatunnel.command.ClientExecuteCommand.execute(ClientExecuteCommand.java:96)
	... 2 more

2024-01-10 11:43:30,019 ERROR org.apache.seatunnel.core.starter.SeaTunnel -
===============================================================================

Exception in thread "main" org.apache.seatunnel.core.starter.exception.CommandExecuteException: SeaTunnel job executed failed
	at org.apache.seatunnel.core.starter.seatunnel.command.ClientExecuteCommand.execute(ClientExecuteCommand.java:191)
	at org.apache.seatunnel.core.starter.SeaTunnel.run(SeaTunnel.java:40)
	at org.apache.seatunnel.core.starter.seatunnel.SeaTunnelClient.main(SeaTunnelClient.java:34)
Caused by: java.lang.IllegalStateException: Unable to connect to any cluster.
	at com.hazelcast.client.impl.connection.tcp.TcpClientConnectionManager.doConnectToCluster(TcpClientConnectionManager.java:433)
	at com.hazelcast.client.impl.connection.tcp.TcpClientConnectionManager.connectToCluster(TcpClientConnectionManager.java:372)
	at com.hazelcast.client.impl.clientside.HazelcastClientInstanceImpl.start(HazelcastClientInstanceImpl.java:381)
	at com.hazelcast.client.HazelcastClient.constructHazelcastClient(HazelcastClient.java:460)
	at com.hazelcast.client.HazelcastClient.newHazelcastClientInternal(HazelcastClient.java:416)
	at com.hazelcast.client.HazelcastClient.newHazelcastClient(HazelcastClient.java:136)
	at org.apache.seatunnel.engine.client.SeaTunnelHazelcastClient.<init>(SeaTunnelHazelcastClient.java:53)
	at org.apache.seatunnel.engine.client.SeaTunnelClient.<init>(SeaTunnelClient.java:46)
	at org.apache.seatunnel.core.starter.seatunnel.command.ClientExecuteCommand.execute(ClientExecuteCommand.java:96)
	... 2 more

Zeta or Flink or Spark Version
No response
Java or Scala Version
No response
Screenshots
No response
Are you willing to submit PR?

[ ] Yes I am willing to submit a PR!

Code of Conduct

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

same issue in SeaTunnel 2.3.3

Perhaps it has to do with the contents of the configuration files in the config folder.
For example, port: 5801
hazelcast-client:
  cluster-name: seatunnel
  properties:
    hazelcast.logging.type: log4j2
  connection-strategy:
    connection-retry:
      cluster-connect-timeout-millis: 3000
  network:
    cluster-members:
      - localhost:5801

hazelcast:
  cluster-name: seatunnel
  network:
    rest-api:
      enabled: true
      endpoint-groups:
        CLUSTER_WRITE:
          enabled: true
        DATA:
          enabled: true
    join:
      tcp-ip:
        enabled: true
        member-list:
          - localhost
    port:
      auto-increment: false
      port: 5801
  properties:
    hazelcast.invocation.max.retry.count: 20
    hazelcast.tcp.join.port.try.count: 30
    hazelcast.logging.type: log4j2
    hazelcast.operation.generic.thread.count: 50

Perhaps it has to do with the contents of the configuration files in the config folder. For example, port: 5801
hazelcast-client:
  cluster-name: seatunnel
  properties:
    hazelcast.logging.type: log4j2
  connection-strategy:
    connection-retry:
      cluster-connect-timeout-millis: 3000
  network:
    cluster-members:
      - localhost:5801

hazelcast:
  cluster-name: seatunnel
  network:
    rest-api:
      enabled: true
      endpoint-groups:
        CLUSTER_WRITE:
          enabled: true
        DATA:
          enabled: true
    join:
      tcp-ip:
        enabled: true
        member-list:
          - localhost
    port:
      auto-increment: false
      port: 5801
  properties:
    hazelcast.invocation.max.retry.count: 20
    hazelcast.tcp.join.port.try.count: 30
    hazelcast.logging.type: log4j2
    hazelcast.operation.generic.thread.count: 50

not this problem, same as you, when seatunnel-cluster.sh -d is running,  seatunnel.sh -m local can not run.

Because local mode startup also requires port 5801

yes, when you run seatunnel-cluster.sh -d command it will start the server with 5801 port.
when you run -e local command again, it will start the server again. so you will got error

yes, when you run seatunnel-cluster.sh -d command it will start the server with 5801 port. when you run -e local command again, it will start the server again. so you will got error

thanks,  can i change the  hazelcast-client.yaml or hazelcast.yaml config to comply run local and sever both?

yes, when you run seatunnel-cluster.sh -d command it will start the server with 5801 port. when you run -e local command again, it will start the server again. so you will got error

thanks, can i change the hazelcast-client.yaml or hazelcast.yaml config to comply run local and sever both?

yes, hazelcast.yaml is used on server side. hezalcast-client.yaml is used on client side. you need both update the files. also please use same cluster-name. it will verify the ip, port and cluster-name, all match can be join together.
By the way, if you has run ./bin/seatunnl-cluster.sh -d, then the server cluster is startup, you can use ./bin/seatunnel.sh -c <config_file> command without -e local parameter to submit the job, it will be ok.
and if you run ./bin/seatunnel.sh -c <config file> -e local. it will start the server node in this process and the client join the server created in this process.

create an pr to fix this issue https://github.com/apache/seatunnel/pull/6521.
in your case, i think it's the server created in local mode port is bigger than 5815. so the client can't connect to the server.


ConfigurationManager should only throw if _currentConfiguration is null if the _configRetriever fails

The current code in ConfigurationManager throws too early.
We should not throw here:  https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/blob/dev/src/Microsoft.IdentityModel.Protocols/Configuration/ConfigurationManager.cs#L202
Instead only throw if after the catch _currentConfiguration is null, that is only throw if there is no configuration to return.

We should make sure that a message is logged.
We may want to make this configurable so users can decide they want to throw if new configuration can not be obtained.


Correct the subplot option in neuron viewer

The subplot option was not propagating to the soma and tree level correctly, when the neuron was plotted. This fixes the subplot problem.

Current coverage is 100.00%

Merging #129 into master will not affect coverage as of f598722

@@            master    #129   diff @@
======================================
  Files           30      30
  Stmts          986     988     +2
  Branches         0       0
  Methods
======================================
+ Hit            986     988     +2
  Partial          0       0
  Missed           0       0

Review entire Coverage Diff as of f598722

Powered by Codecov. Updated on successful CI builds.

We need to figure out a way of testing this and/or re-factoring it.

Yes, indeed! This needs complete tests in place...


Any plans to update the requests version

When installing via pip, I got the notification that this package requires requests==0.13.1, but you have requests 2.25.1 which is incompatible. Is there any plans to update the requests version in the code soon?

Actually it require requests>=2.4.0 in the latest version: https://github.com/vimeo/vimeo.py/blob/1.1.0/setup.py#L13
Which version are you using?


Labels are not computed for anymore for Figures.

Probably still some regression related to the introduction of numeric-addressing.

Fixed via #42


NTR 5-aminolevulinic acid transport

GO:New1:  5-aminolevulinic acid import across plasma membrane
The directed movement of 5-aminolevulinic acid from outside of a cell, across the plasma membrane and into the cytosol.
is_a amino acid import across plasma membrane (GO:0089718)
GO:New2: 5-aminolevulinic acid transmembrane transporter activity
Enables the transfer of 5-aminolevulinic acid from one side of a membrane to the other.
is_a amino acid transmembrane transporter activity (GO:0015171)
CHEBI:17549 if useful for xref
PMID:31989647
thanks!

I'm also waiting for this  term.
@ValWood

Hi
Shirin and I have briefly discussed this ticket. We are surprised that a term is being created for a specific chemical as we have assumed that there will not be a thousands of unique GO terms describing not just the specific chemical transport process (BP term) but also the specific chemical transporter activity (MF term). We had assumed this information would be captured using the general parent terms (even when this is multiple BP/MF terms) with the specific chemical included in the AE.
For example Shirin has created this annotations

P31641
SLC6A6
enables
GO:0015171
amino acid transmembrane transporter activity
ECO:0000314
IDA
PMID:24842606

9606
ARUK-UCL
has_target_start_location(GO:0009897),has_target_end_location(GO:0009898),has_input(CHEBI:17549),part_of(GO:0089718)

P31641
SLC6A6
involved_in
GO:0089718
amino acid import across plasma membrane
ECO:0000314
IDA
PMID:24842606

9606
ARUK-UCL
has_target_start_location(GO:0009897),has_target_end_location(GO:0009898),has_input(CHEBI:17549),causally_upstream_of(GO:0010940)

Q9NSD5
SLC6A13
enables
GO:0015171
amino acid transmembrane transporter activity
ECO:0000314
IDA
PMID:24842606

9606
ARUK-UCL
has_target_start_location(GO:0009897),has_target_end_location(GO:0009898),has_input(CHEBI:17549),part_of(GO:0089718)

Q9NSD5
SLC6A13
involved_in
GO:0089718
amino acid import across plasma membrane
ECO:0000314
IDA
PMID:24842606

9606
ARUK-UCL
has_target_start_location(GO:0009897),has_target_end_location(GO:0009898),has_input(CHEBI:17549),causally_upstream_of(GO:0010940)

The other side to this is that would it be possible to check for existing GO annotations that have the ChEBI ID in the AE field and alert curators about the new terms available, eg using the QuickGO URL:
https://www.ebi.ac.uk/QuickGO/annotations?extension=has_input(CHEBI:17549) modified with the appropriate ChEBI ID. Or ideally make these annotation automatically updated in some way.
In summary clearer guidelines are needed to enable curators to know when to use the general terms with AE has_input and when to request new GO terms.
Thanks
Ruth
@krchristie @ShirinSaverimuttu

I agree. I propose that we only annotate the 'widest' range of substrate that a transporter transports with a GO term, and any specific substrates in extensions. In this case the abstract states "The 18 kDa translocator protein (TSPO) has been proposed to be involved in the transport of porphyrins and heme analogs.", perhaps the definition for heme transmembrane transporter activity should be widened instead.

Thanks for you prompt reply, but what does that mean? Are you saying that you will remove the terms you have created?

I can if it's OK for @ValWood
It also means that there is A LOT of work to do to reannotate transporters, and I wanted to finish other stuff, which is why I wasn't too bothered. But better avoid proliferation and avoid more fixing later.

I would also like for @krchristie to respond , make sure we agree

I see your point Ruth.
I also think it will become hard to find GPs annotated to the transport of a specific substrate (only real superusers will end up to this page: https://www.ebi.ac.uk/QuickGO/annotations?extension=has_input(CHEBI:17549)  - is that a developer problem?....

but we have always had MF terms for specific biomolecules that are required?
5-aminolevulinic acid is the first compound in the porphyrin synthesis, and for heme.
I can see that we don't want terms for any  old chemical, but it is pretty important  that we are specific with nutrients.

I agree. I propose that we only annotate the 'widest' range of substrate that a transporter transports with a GO term, and any specific substrates in extensions. In this case the abstract states "The 18 kDa translocator protein (TSPO) has been proposed to be involved in the transport of porphyrins and heme analogs.", perhaps the definition for heme transmembrane transporter activity should be widened instead.

the pombe people who work on this process are pretty excited about this missing activity. This isn't a heme transporter, it's a heme precursor transporter.

In summary clearer guidelines are needed to enable curators to know when to use the general terms with AE has_input and when to request new GO terms.

Easy. Terms allowed for  biological molecules  that are part of  nutrient pathways.

great but we need this to be an agreed guideline ;)

@pgaudet - I agree in principle that it would be better to annotate transporters to terms that represent the breadth of their specificity rather than to annotate to lots of individual terms for each of the demonstrated specific substrates. In practice, it may be harder to know whether a given transporter has a broad or narrow specificity when annotating a single paper.
@Antonialock also brought up a really great point that we don't currently have a way for users to see or use annotation extensions in a good way. That's definitely something I think it would be good for us to think about how we could deal with this better.
In summary, I agree with the discussion above, but I think it will be a constant process to decide what is and isn't appropriate.

Hi
sorry to but in but it would be neat if you could xref 5-aminolevulinate / CHEBI:356416 as used in Rhea:
https://www.rhea-db.org/searchresults?q=CHEBI%3A356416
We don't currently have this paper nor transport reaction for this non-proteogenic amino acid in Rhea, so will ask Rhea curators to check whether we can create such a reaction which could also be xref-ed in the GO MF.
We plan a large scale retrofit of transport reactions in UniProt next year when we are done with lipid metabolism from SwissLipids and other reference pathways. For transporters our current plan is that we will annotate the specific substrates as we do now for enzymes (i.e. we take the same view as @ValWood). If you annotate to individual terms for each of the demonstrated specific substrates then you can use the ChEBI ontology / chemical structural data to figure out later what the breadth of specificity is and what chemical features define that specificity. People with some background in cheminformatics could take all structures xref-ed in GO terms and extract the common features for a given transporter. If you do high level annotation you lose the possibility to do that (and a lot of other things too, like mapping metabolomics data to proteins via Rhea/GO annotations). Just my 2 cents.
Pinging @amorgat @hdrabkin for info, hi both!
Have a good day,
All the best, Alan

@alanbridge
The 'problem' with this protein (TSPO2) is that there are a handful of papers that seem to follow at least 2 quite different themes as to what this protein does.
In PMID:31989647 (the one referenced for this NTR) they show that when you overexpress the protein, activity goes up, and when you downregulate it, the activity goes down. Adding to that the protein name is short for 'translocator protein' -seemed like a very straight forward protein to hang some annotation on to. (in this paper they use cancer cells but in the introduction the authors state that these cell lines are used as 'models' for different stages of erythrocyte differentiation)
In support of TSPO2 having some role in transport, it's also been shown to be in a 'supramolecular spectrin associated membrane complex' where it provides a 'secondary' pathway (in addition to a well known mechanism) to promote ATP efflux from erythrocytes. The evidence for a physical complex is not completely convincing, and most (?) of the evidence is a little bit indirect, but the authors (and reviewers....) are convinced so maybe I just don't know enough about the assays and systems. e.g. 27641616 & 30061676 (the second shows a model fig 8 for how they think this happens)
In addition to the transport role, there is also evidence in dog, human and mouse (19729679, 32358067) that it is involved in lipid distribution - it's been shown to bind cholesterol, and in vitro assays implicate it in lipid droplet metabolism, which is in line with what's been shown for plants/yeast (30003614).

I'll remove my ISS then! That said, the fission yeast "iron accumulation" expert is quite excited about the possibility and testing, so hopefully we will know more soon.
There is a strong connection between iron homeostasis and lipid storage though...

We plan a large scale retrofit of transport reactions in UniProt next year when we are done with lipid metabolism from SwissLipids and other reference pathways.

Looking forward to this!

Transport reaction for CHEBI:356416
RHEA:64816 5-aminolevulinate(in) = 5-aminolevulinate(out)
It will be publicly available in the Rhea release 115 (Oct 7 2020)

@Antonialock
Do you want those terms, or not ?
Since they are in Rhea, maybe it's OK to create them ? @cmungall what do you think ?

I think that in general we should allow 'nutrient' transporters, but  we would not want a specific transporter term for every xenobiotic. Does that sound sensible?
Eveything that is actively imported and has a metabolic role, but not  xenobiotic exporters which can be more general, we could use CHEBI ID in substrate.
Pending decision, at the moment for this one  we are waiting for better data to annotate, but will need it later, so you can close for now or add.

I'll add the terms, since that was already done in that branch.
We can decide later exactly which terms are allowed. I thought we should add it because there is a Rhea reaction, although I dont think we want (or can) to be aligned with Rhea 100%.
Thanks, Pascale

I dont think we want (or can) to be aligned with Rhea 100%.

@ukemi ? @hdrabkin For MF, aren't we already committed to complete alignment?

Well for one thing we dont do the reciprocal reactions, do we ?

Hi
just for info @lbreuza is gearing up to do a retrofit of transporters in UniProt at the moment. Given the huge number of drugs that could be transported we decided to focus on compounds that the transporter (likely) evolved to transport. So you would annotate "nutrients" as mentioned by Val, and also toxic compounds like heavy metals too (the transporters involved in their elimination), but not necessarily all synthetic drugs that recently came on the scene.
All the best, Alan

That's great. @lbreuza we should try to coordinate on this.

So, WRT TSPO (P30536 in human) - is 5-aminolevulinic acid specific, or should I obsolete those terms ??

I'll close, please reopen if this was not right.

Removed incorrect compound in LD c-GMP-AMP(2-)


feat: add form and textarea components, modify dialog component

Description

Browser checklist
This PR has been tested in the following browsers:

[ ] Chrome
[ ] Firefox
[ ] Safari

Testing checklist

[ ] End-to-end tests have been created if necessary

#67  👈
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @kleva-j and the rest of your teammates on  Graphite


Rewording (guest-experience.md)

Closes https://github.com/MicrosoftDocs/OfficeDocs-SkypeForBusiness/issues/7025.

@JohanFreelancer9 Copy editing is needed for this PR. Thanks

@MikePlumleyMSFT PR has been copyedited and is ready for final review, could you please check and merge? Thanks!


Removing AID delete endpoint

This PR removes the delete AID endpoint I created before. The implementation wasn't correct since it only removes the hab generation inconsistencies in the database if the AID also had registries. Rethinking the concept, I consider that deleting an AID in not what we need, but instead an implementation of the abandon function that basically rotates the identifier to null keys so it can no longer be used to sign nor add new events in into the KEL.
The abandon function can be created in the client side since its a double rotation to null keys.

@rodolfomiranda What about adding a check and return Bad Request if the AID to be deleted has a registry?

we can delete the registry as well, but I think it's better to keep KEL and TEL in DBs for an AID. The only benefit of deleting is to prune database. However the saving in size is minimal to be of a concern.
That's why I'd prefer to abandoned it, it's more keri friendly . Detecting an abandoned AID can be simple, we can even put a filter in the identifiers.list()

we can delete the registry as well, but I think it's better to keep KEL and TEL in DBs for an AID. The only benefit of deleting is to prune database. However the saving in size is minimal to be of a concern. That's why I'd prefer to abandoned it, it's more keri friendly . Detecting an abandoned AID can be simple, we can even put a filter in the identifiers.list()

I also think maybe they can serve different purposes. For certain environments, like demo or testing, it can sometimes be useful to be able to delete them altogether. However, I do not really have a strong opinion on it. The proposed abandon feature would certainly work for those use cases as well. 👍

I opened this PR because we allowed one user to delete the AID and it worked fine until he needed to reconnect with KERIA. At that point,  keria iterates through all registries for that user and crash when it hits the one with the deleted hab. We had to create a hot patch to recover from that situation. I'm worried that it will also happen with other tables/db since the dependencies between them are hard to track.
We main need a keria maintenance interface.


notify all throws invalid syntax exception duing encryption process

The notifyAll process causes invalid syntax exceptions while looking up for a public key in the encryption process.
Log Snippet from AtSecondaryServer:
plookup:publickey@["@murali"]: Instance of 'InvalidSyntaxException'

The issue is fixed and tested. Notify All does not throw invalid syntax exception


how to use the dataset

Thanks for your work, recently, I wanted to train the tracking model,  so I downloaded the dataset, I can't find the TRACK_OBJECT folder, maybe you could teach me where is the folder I could download. Thank you in advance.

Same problem as #6


Stop main branch from building base images and publish to use/testlagoon repos

This PR supersedes #2236
It removes the images that are being built in github.com/uselagoon/lagoon-images from building here, and configures the service images to use the uselagoon/*:latest images as upstream images.
In addition, it publishes all branch images to testlagoon dockerhub, and main pushes also get a :latest tag
All tagged pushes get pushed to uselagoon dockerhub along with a :latest tag

@tobybellwood
Has there been an announcement anywhere about moving to http://github.com/uselagoon/lagoon-images repo? I would like to know about such significant changes next time. Thanks

There will be very shortly - this is (up to now) a behind-the-scenes change, with a heap of moving parts.  All customer-facing images are still receiving backward-compatible releases to the amazeeio/* namespace on docker hub.


Replace illustration on overview

What does this PR do?
(Provide a description of what this PR does.)
Test Plan
(Write your test plan here. If you changed any code, please provide us with clear instructions on how you verified your changes work.)
Related PRs and Issues
(If this PR is related to any other PR or resolves any issue or related to any issue link all related PR and issues here.)
Have you read the Contributing Guidelines on issues?
(Write your answer here.)

@TorstenDittmann would you please review the code only? Then, I'll get design to review


Create Prototype Frontend

Flask, JavaScript & Python

I'm working on this in the dev-frontend branch

Hey I was thinking of getting rid of the History page and instead enable a dropdown menu in the Flixlist page to see the history. What do you think? @nanonite9

I think that's a fantastic idea!!

Should we maintain the similar structure for FlixList and RecsFlix? I wanted RecsFlix to look different but I think it may not be user friendly. Also, changing names (history, recommendations, and friends) might be more user friendly as well. What do you think? @Hunajpu

I think simple names are better, sometimes even for me is difficult to relate RecsFlix to recommendations haha
But feel free to design the recommendation page as you wanted :)

This is how the login looks like, do you like it? @truongnguyenlinh @nanonite9


False warning for failed file path repair on loading expmt from external HDD

Warning was printed even though the file paths were repaired correctly.
Warning: 	File path change detected, attempting to repair path meta data for raw data files 			Unsuccessful repair will result in non-functional raw data maps

Not an issue. Expected behavior.


🐛 Transform parents/children are not symmetric

Because the child transform in fact links to a different version of the parent.


create_file() causes segfault on paths with depth > 2

For example:
bonsai.create_file("root/file1") works no problem.
bonsai.create_file("root/file1/file2") is broken.
Crash takes place in the block
if (found_addr != ROOT_DIRECTORY_ADDRESS) {
...
}

Fixed. FSA ended up being 0xFFFFFFFF, which caused the segfault.


Setting TTL on ActiveMQ messages with IPublishEndpoint?

Hi there!
When publishing a message using IPublishEndpoint, is it possible to set a TTL on ActiveMQ messages? I don't see it documented anywhere currently.

Same as any transport:
bus.Publish(message, x => x.TimeToLive = TimeSpan.FromSeconds(30));

Also, issues are not meant to be used for questions. Please use Discord, or Stack Overflow.

Sorry, I forgot to show you the full scenario 🤦
            var provider = new ActiveMqScheduleMessageProvider(_sendEndpointProvider);
            var scheduler = new MessageScheduler(provider, _bus.Topology);

            var isPublishAddressFetched = _bus.Topology
                .Publish<TMessage>()
                .TryGetPublishAddress(_bus.Address, out var publishAddress);
            if (!isPublishAddressFetched)
                throw new InvalidOperationException("Publish address could not be fetched from " + _bus.Address);

            using var combinedCancellationTokenSource = GetCombinedCancellationTokenWithTimeout(cancellationToken);

            await scheduler.ScheduleSend(
                publishAddress,
                delay,
                message,
                combinedCancellationTokenSource.Token);

I want to configure it with scheduling, so that a scheduled message has a TTL of its delay, plus a day or two.

As for StackOverflow, I have tried a lot in the past, and it isn't giving a lot of feedback. If you are overburdened, I of course understand though.

As for StackOverflow, I have tried a lot in the past, and it isn't giving a lot of feedback. If you are overburdened, I of course understand though.

I reply typically within hours on SO, as long as the question is tagged with masstransit.

Okay - I'll ask there then. I must have used a bad tag :+1:
Thank you so much for tirelessly maintaining this project and replying to people so fast. I love MassTransit, and recommend it to all the major clients I work for that need messaging.

Less obvious, because the extension methods don't exist (I don't think), but:

Also, just use SchedulePublish, it does what you're doing manually.

await scheduler.SchedulePublish(DateTime.Now, new FirstMessage(),
    Pipe.Execute<SendContext<FirstMessage>>(context => context.TimeToLive  = TimeSpan.FromSeconds(30)));

Here's the question: https://stackoverflow.com/questions/65128412/scheduling-an-activemq-message-with-a-ttl-in-masstransit
As for SchedulePublish, what is the primary difference to what I am doing now?

Argh, I just realized that's another question :facepalm:

You can see that it is basically the same thing: https://github.com/MassTransit/MassTransit/blob/develop/src/MassTransit/Scheduling/MessageScheduler.cs#L170

Right. That makes sense. I'm just concerned changing it for now, because it doesn't have a TimeSpan overload like the other one, and I'm unsure whether or not I need to specify DateTime.UtcNow or DateTime.Now as the basis of the span.


mqtt connection error

When I start the semtech-bridge and loraserver both, I get following errors:
loraserver:
...

I only get these mqtt packets:
gateway/b827ebfffee35329/rx {"rxInfo":{"mac":"b827ebfffee35329","time":"2016-05-20T12:57:52.481279Z","timestamp":111316044,"frequency":868300000,"channel":8,"rfChain":1,"crcStatus":1,"codeRate":"4/5","rssi":-16,"loRaSNR":9.5,"size":29,"dataRate":{"modulation":"LORA","spreadFactor":7,"bandwidth":250}},"phyPayload":"QJt7o82ABQACoYFmhN89oWNyYUotAX8qvBoFAR8="}
But no application packets.

Could you post your MQTT broker version and MQTT logs?

1463751297: mosquitto version 0.15 (build date 2013-08-23 19:23:43+0000) starting
1463751297: Opening ipv4 listen socket on port 1883.
1463751297: Opening ipv6 listen socket on port 1883.
1463751300: New connection from <IP_ADDRESS>.
1463751300: Invalid protocol "MQTT" in CONNECT from <IP_ADDRESS>.
1463751300: Socket read error on client (null), disconnecting.
1463751300: New connection from <IP_ADDRESS>.
1463751300: New client connected from <IP_ADDRESS> as .
1463751301: New connection from <IP_ADDRESS>.
1463751301: Invalid protocol "MQTT" in CONNECT from <IP_ADDRESS>.
1463751301: Socket read error on client (null), disconnecting.
1463751301: New connection from <IP_ADDRESS>.
1463751301: Client  already connected, closing old connection.
1463751301: New client connected from <IP_ADDRESS> as .
1463751301: New connection from <IP_ADDRESS>.
1463751301: Client  already connected, closing old connection.
1463751301: New client connected from <IP_ADDRESS> as .
1463751301: New connection from <IP_ADDRESS>.
1463751301: Invalid protocol "MQTT" in CONNECT from <IP_ADDRESS>.
1463751301: Socket read error on client (null), disconnecting.
1463751301: New connection from <IP_ADDRESS>.
1463751301: Client  already connected, closing old connection.
1463751301: New client connected from <IP_ADDRESS> as .
1463751301: New connection from <IP_ADDRESS>.
1463751301: Client  already connected, closing old connection.
1463751301: New client connected from <IP_ADDRESS> as .
1463751301: New connection from <IP_ADDRESS>.
1463751301: New connection from <IP_ADDRESS>.
1463751301: Client  already connected, closing old connection.
1463751301: New client connected from <IP_ADDRESS> as .
1463751301: New connection from <IP_ADDRESS>.
1463751302: Client  already connected, closing old connection.
1463751302: New client connected from <IP_ADDRESS> as .
1463751302: New connection from <IP_ADDRESS>.
1463751302: Client  already connected, closing old connection.
1463751302: New client connected from <IP_ADDRESS> as .
1463751302: Client  already connected, closing old connection.
1463751302: New client connected from <IP_ADDRESS> as .
1463751302: New connection from <IP_ADDRESS>.
1463751302: Client  already connected, closing old connection.
1463751302: New client connected from <IP_ADDRESS> as .
1463751302: New connection from <IP_ADDRESS>.
1463751302: Client  already connected, closing old connection.
1463751302: New client connected from <IP_ADDRESS> as .
1463751302: New connection from <IP_ADDRESS>.
1463751302: Client  already connected, closing old connection.
1463751302: New client connected from <IP_ADDRESS> as .
1463751302: New connection from <IP_ADDRESS>.
1463751302: New connection from <IP_ADDRESS>.
1463751302: Client  already connected, closing old connection.
1463751302: New client connected from <IP_ADDRESS> as .
1463751302: Client  already connected, closing old connection.
1463751302: New client connected from <IP_ADDRESS> as .
1463751302: New connection from <IP_ADDRESS>.
1463751302: Client  already connected, closing old connection.
1463751302: New client connected from <IP_ADDRESS> as .
1463751302: New connection from <IP_ADDRESS>.
1463751302: New connection from <IP_ADDRESS>.
1463751302: Client  already connected, closing old connection.
1463751302: New client connected from <IP_ADDRESS> as .
1463751302: Client  already connected, closing old connection.
1463751302: New client connected from <IP_ADDRESS> as .
1463751302: New connection from <IP_ADDRESS>.
1463751302: New connection from <IP_ADDRESS>.
1463751302: Client  already connected, closing old connection.
1463751302: New client connected from <IP_ADDRESS> as .
1463751302: Client  already connected, closing old connection.
1463751302: New client connected from <IP_ADDRESS> as .
1463751302: New connection from <IP_ADDRESS>.
1463751302: Client  already connected, closing old connection.
1463751302: New client connected from <IP_ADDRESS> as .
1463751302: New connection from <IP_ADDRESS>.
1463751302: New connection from <IP_ADDRESS>.
1463751302: Client  already connected, closing old connection.
1463751302: New client connected from <IP_ADDRESS> as .
1463751302: Client  already connected, closing old connection.
1463751302: New client connected from <IP_ADDRESS> as .
1463751302: New connection from <IP_ADDRESS>.
1463751302: Client  already connected, closing old connection.
1463751302: New client connected from <IP_ADDRESS> as .
1463751302: New connection from <IP_ADDRESS>.
1463751302: Client  already connected, closing old connection.
1463751302: New client connected from <IP_ADDRESS> as .
1463751302: New connection from <IP_ADDRESS>.
1463751302: New connection from <IP_ADDRESS>.
1463751302: Client  already connected, closing old connection.
1463751302: New client connected from <IP_ADDRESS> as .
1463751302: Client  already connected, closing old connection.
1463751302: New client connected from <IP_ADDRESS> as .
1463751302: New connection from <IP_ADDRESS>.
1463751302: Client  already connected, closing old connection.
1463751302: New client connected from <IP_ADDRESS> as .
1463751302: New connection from <IP_ADDRESS>.
1463751302: Client  already connected, closing old connection.
1463751302: New client connected from <IP_ADDRESS> as .
1463751302: New connection from <IP_ADDRESS>.
1463751302: Client  already connected, closing old connection.
1463751302: New client connected from <IP_ADDRESS> as .
1463751302: New connection from <IP_ADDRESS>.
1463751302: Client  already connected, closing old connection.
1463751302: New client connected from <IP_ADDRESS> as .
1463751302: New connection from <IP_ADDRESS>.
1463751302: Client  already connected, closing old connection.
1463751302: New client connected from <IP_ADDRESS> as .
1463751302: New connection from <IP_ADDRESS>.
1463751302: Client  already connected, closing old connection.
1463751302: New client connected from <IP_ADDRESS> as .
1463751302: New connection from <IP_ADDRESS>.
1463751302: Client  already connected, closing old connection.
1463751302: New client connected from <IP_ADDRESS> as .
1463751302: New connection from <IP_ADDRESS>.
1463751302: Client  already connected, closing old connection.
1463751302: New client connected from <IP_ADDRESS> as .
1463751302: New connection from <IP_ADDRESS>.
1463751302: Client  already connected, closing old connection.
1463751302: New client connected from <IP_ADDRESS> as .
1463751302: New connection from <IP_ADDRESS>.
1463751302: Client  already connected, closing old connection.
1463751302: New client connected from <IP_ADDRESS> as .
1463751302: New connection from <IP_ADDRESS>.
1463751302: Client  already connected, closing old connection.
1463751302: New client connected from <IP_ADDRESS> as .
1463751302: New connection from <IP_ADDRESS>.
1463751302: Client  already connected, closing old connection.
1463751302: New client connected from <IP_ADDRESS> as .
1463751302: New connection from <IP_ADDRESS>.
1463751302: Client  already connected, closing old connection.
1463751302: New client connected from <IP_ADDRESS> as .
1463751302: New connection from <IP_ADDRESS>.
1463751302: Client  already connected, closing old connection.
1463751302: New client connected from <IP_ADDRESS> as .
1463751302: New connection from <IP_ADDRESS>.
1463751302: Client  already connected, closing old connection.
1463751302: New client connected from <IP_ADDRESS> as .
1463751302: New connection from <IP_ADDRESS>.
1463751302: New connection from <IP_ADDRESS>.
1463751302: Client  already connected, closing old connection.
1463751302: New client connected from <IP_ADDRESS> as .
1463751302: New connection from <IP_ADDRESS>.
1463751302: Client  already connected, closing old connection.
1463751302: New client connected from <IP_ADDRESS> as .
1463751302: Client  already connected, closing old connection.
1463751302: New client connected from <IP_ADDRESS> as .
1463751302: New connection from <IP_ADDRESS>.
1463751302: Client  already connected, closing old connection.
1463751302: New client connected from <IP_ADDRESS> as .
1463751302: New connection from <IP_ADDRESS>.
1463751302: Client  already connected, closing old connection.
1463751302: New client connected from <IP_ADDRESS> as .
1463751302: New connection from <IP_ADDRESS>.
1463751302: New connection from <IP_ADDRESS>.
1463751302: Client  already connected, closing old connection.
1463751302: New client connected from <IP_ADDRESS> as .
1463751302: Client  already connected, closing old connection.
1463751302: New client connected from <IP_ADDRESS> as .
1463751302: New connection from <IP_ADDRESS>.
1463751302: Client  already connected, closing old connection.
1463751302: New client connected from <IP_ADDRESS> as .
1463751302: New connection from <IP_ADDRESS>.
1463751302: New connection from <IP_ADDRESS>.
1463751302: Client  already connected, closing old connection.
1463751302: New client connected from <IP_ADDRESS> as .
1463751302: New connection from <IP_ADDRESS>.
1463751302: Client  already connected, closing old connection.
1463751302: New client connected from <IP_ADDRESS> as .
1463751302: Client  already connected, closing old connection.
1463751302: New client connected from <IP_ADDRESS> as .
1463751302: New connection from <IP_ADDRESS>.
1463751302: Client  already connected, closing old connection.
1463751302: New client connected from <IP_ADDRESS> as .
1463751302: New connection from <IP_ADDRESS>.
1463751302: Client  already connected, closing old connection.
1463751302: New client connected from <IP_ADDRESS> as .
1463751302: New connection from <IP_ADDRESS>.
1463751302: Client  already connected, closing old connection.
1463751302: New client connected from <IP_ADDRESS> as .
1463751302: New connection from <IP_ADDRESS>.
1463751302: New connection from <IP_ADDRESS>.
1463751302: Client  already connected, closing old connection.
1463751302: New client connected from <IP_ADDRESS> as .
1463751302: New connection from <IP_ADDRESS>.
1463751302: Client  already connected, closing old connection.
1463751302: New client connected from <IP_ADDRESS> as .
1463751302: New connection from <IP_ADDRESS>.
1463751302: Client  already connected, closing old connection.
1463751302: New client connected from <IP_ADDRESS> as .
1463751302: New connection from <IP_ADDRESS>.
1463751302: Client  already connected, closing old connection.
1463751302: New client connected from <IP_ADDRESS> as .
1463751302: New connection from <IP_ADDRESS>.
1463751302: Client  already connected, closing old connection.
1463751302: New client connected from <IP_ADDRESS> as .
1463751302: New connection from <IP_ADDRESS>.
1463751302: Client  already connected, closing old connection.
1463751302: New client connected from <IP_ADDRESS> as .
1463751302: New connection from <IP_ADDRESS>.
1463751302: Client  already connected, closing old connection.
1463751302: New client connected from <IP_ADDRESS> as .
1463751302: New connection from <IP_ADDRESS>.
1463751302: Client  already connected, closing old connection.

That's a very old version, I update manually and try again.

Ok, it works now :')


[qsv_vpp][mirror]garbage in chroma occurs if there are paddings between Y and UV

Apply patch in ffmpeg:

allocate continuous memory for qsv vpp:
https://patchwork.ffmpeg.org/patch/13405/
add support for transpose:
https://patchwork.ffmpeg.org/patch/13595/

Run cmdline:
ffmpeg -init_hw_device qsv=foo -filter_hw_device foo -v debug -f rawvideo -pix_fmt yuv420p -s:v 352x288 -i MOBILE_352x288_30_orig_01.yuv -vf 'hwupload=extra_hw_frames=64,format=qsv,vpp_qsv=transpose=vflip' -vframes 10 -f rawvideo -pix_fmt yuv420p -y ./transpose.yuv
if we modify in the patch and don't remove the plane_padding, there will be garbage in chroma field.
With plane_padding removed in this hard-coded way, the output image is good.
/* remove plane_padding introduced by av_frame_get_buffer */

   for (i = 1; i < 4; i++) {

       if (out_frame->frame->data[i])

           out_frame->frame->data[i] -= i * 128;

   }

Analysis:
For vpp/mirror, CmCopy is used.
For the garbage caused by paddings, the UVOffset in MSDK is calculated by UV-Y, and then it will be calculated  based on pitch
height_stride = (Data.UV – Data.Y) /Data.Pitch,
https://github.com/Intel-Media-SDK/MediaSDK/blob/8fc7b41eaa0a8a20d55ac06438def8dbe1a1df86/_studio/mfx_lib/vpp/src/mfx_vpp_hw.cpp#L3468
MSDK passed row based (pitch based) UVOffset to CM.
https://github.com/Intel-Media-SDK/MediaSDK/blob/8fc7b41eaa0a8a20d55ac06438def8dbe1a1df86/_studio/shared/src/cm_mem_copy.cpp#L1528
Summary:
So if padding is introduced, it won’t break the pipeline, but will assign the incorrect address to the pointer of Data.UV.
And that’s the reason for garbage in chroma filed in mirror.

any comments for this?@dmitryermilov

Hi @fulinjie ,
Thanks for analysis. Yes, AFAIR CM works only for cases when planes are allocated as one chunk of memory. I vaguely recall we had a check for it. Perhaps not for mirroring but for video->system CM based memory copy.. @AntonGrishin , can you please continue investigation?
BTW, @fulinjie I didn't get, why do you need this padding?

@dmitryermilov padding is a requirement in ffmpeg, and we would like to match the behavior of qsvenc and qsvvpp.
Currently, the padding bytes introduced in ffmpeg don't break qsvenc, but seem to cause troubles in qsv vpp.
Former discussion can be shared to provide more details.

@dmitryermilov, if I understand correctly the situation is that memory was allocated as a single chunk, but there is additional offset between Y and UV planes (these offset bytes are also managed by the allocation). If that's the case then this is actually valid situation. I saw other cases when applications behave in this was. The most recent example was in ChromeOS.

@dmitryermilov, if I understand correctly the situation is that memory was allocated as a single chunk, but there is additional offset between Y and UV planes (these offset bytes are also managed by the allocation). If that's the case then this is actually valid situation. I saw other cases when applications behave in this was. The most recent example was in ChromeOS.

Ok

Hi @fulinjie
I investigated your problem, and got following conclusion:

MediaSDK (CM) support padding between Y and UV, but need to align this padding with pitch (width variable in ffmpeg code).
I tested on 352x288 stream (pitch = 384). As you mentioned ffmpeg set padding in get_video_buffer().

for (i = 1; i < 4; i++) {
if (frame->data[i])
frame->data[i] += i * plane_padding;
}

I aligned this value on pitch and streams had no garbage (tried 384/3840 offset values).
2) MediaSDK must return not supported status in not aligned situation.

Hi @AntonGrishin,
Thanks for the effort.

Yes, I've verified that if padding are aligned the output is good.
pitch aligned padding would allow cm passing the height stride based on row.

However, it's not the key point. Application (like ffmpeg qsv) may introduce plane padding in some specific size which is designed for all functions in app. The alignment requirement is not reasonable.
If your input clips is 4K, the alignment for padding will be huge waste.

IMHO, a check in MSDK is needed but not enough.
Since app has allocated continuous memory, there can be some possible solutions to cope with the random padding since the UV offset is passed to msdk directly.

Maybe do cm copy for Y plane and UV plane separately to be more robust for padding introduced by app?

Application (like ffmpeg qsv) may introduce plane padding in some specific size which is designed for all functions in app.
Padding is okay. But it must be stride aligned.

The alignment requirement is not reasonable.
I assume almost any hardware processing has limitations related to alignment. The requirements might be e.g. width/height multiple to 16 or stride aligned to some value. Why do you think it's not reasonable?

If your input clips is 4K, the alignment for padding will be huge waste.
As far as I understand max "waste" will be (4096-1) bytes. No?

Maybe do cm copy for Y plane and UV plane separately to be more robust for padding introduced by app?

It will require significant efforts to re-write the CM kernel. I don't think it's reasonable to do it while there is a simple solution on app side - align pointer to UV to pitch.

Why do you think it's not reasonable

@dmitryermilov
My words may be a little confusing, and above opinion is based on we insist in using get_video_buffer().
I agreed that it's reasonable for hardware processing. However since get_video_buffer() is used for both software and hardware, the alignment is not good for software.

As far as I understand max "waste" will be (4096-1) bytes.

It's based on calling get_video_buffer( ) with the "align = 4096" to set the plane_padding to stride.
Previously 128 aligned requirement for width is enough, but now we have 4096 aligned requirement if we intend to use this function for memory allocation in ffmpeg.
And this is the main reason for the patch: I modified to use a separate patch without padding introduced:
https://patchwork.ffmpeg.org/patch/13594/

It will require significant efforts to re-write the CM kernel. I don't think it's reasonable to do it while there is a simple solution on app side - align pointer to UV to pitch.

It's true CM modification needs much effort and I didn't insist on this.
And UV pointer alignment is acceptable. IMHO, this seems more like a trade off between
" reuse the function but redundant memory"
and
"no extra padding introduced but a new function"
If we choose to rely on a separate function (like get_continuous_buffer in the patch) for memory allocation, this issue can be addressed.
Thanks.

Hi @fulinjie ,
Let's keep the current issue open. Anton only added a check which will return an error.
I understand the problem but to tell you truth don't think we'll be able to rewrite the CM kernel in a short time to support the case when UV planes are not aligned to pitch size. Actually this discussion brings another question: on ffmpeg side, is it possible to implement a flexible memory allocator which will allocate system memory based on some external requirements parameters? This will definitely be suitable not only for msdk ffmpeg integration but other cases as well (e.g. MDF/OCL).

Hi @fulinjie ,
Let's keep the current issue open. Anton only added a check which will return an error.
I understand the problem but to tell you truth don't think we'll be able to rewrite the CM kernel in a short time to support the case when UV planes are not aligned to pitch size. Actually this discussion brings another question: on ffmpeg side, is it possible to implement a flexible memory allocator which will allocate system memory based on some external requirements parameters? This will definitely be suitable not only for msdk ffmpeg integration but other cases as well (e.g. MDF/OCL).

Agree, thanks for the efforts and analysis. @dmitryermilov @AntonGrishin

Currently not planned to implement


Cryptic exception when there is an error in ionic.config.js (ionic2)

Hi Guys
Would it be possible to improve the error reported when there is a syntax error in your ionic.config.js ?
The current exception doesn't reference the file at all:
$ ionic run android --live-reload

SyntaxError: Unexpected identifier
    at exports.runInThisContext (vm.js:53:16)
    at Module._compile (module.js:414:25)
    at Object.Module._extensions..js (module.js:442:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:313:12)
    at Module.require (module.js:366:17)
    at require (module.js:385:17)
    at Object.run (/usr/lib/node_modules/ionic/lib/cli.js:131:20)
    at Object.<anonymous> (/usr/lib/node_modules/ionic/bin/ionic:13:10)
    at Module._compile (module.js:435:26)

Unexpected identifier (CLI v2.0.0-beta.17)

Your system information:

Cordova CLI: 5.4.1
Ionic Version: 2.0.0-alpha.54
Ionic CLI Version: 2.0.0-beta.17
Ionic App Lib Version: 2.0.0-beta.8
OS: Distributor ID:	Ubuntu Description:	Ubuntu 14.04.3 LTS
Node Version: v4.2.4

Yeah webpack config errors are similarly unhelpful I believe, thanks for the issue, we'll be looking into this.

Digging into this a bit more, I believe this is a problem on node's end: https://github.com/nodejs/node/issues/2762, https://github.com/nodejs/node/issues/3411, https://github.com/nodejs/node/issues/3784.
If you'd like verbose errors, it appears node v0.12 still contains the "arrow message" with helpful line number information.
Going to close this as not an Ionic issue, but feel free to comment on here if you're still having issues, thanks!

Thanks Tim
For anyone else that comes across this issue, it is fixed in Node 4.2.5 (I am on 4.2.4), and Node 5.2.0!
Cheers

Oh awesome, thanks!


pipelines: use the dirdiff module everywhere

[!WARNING]
This depends on #7872, please review that first

This removes all references to the old util function DiffDirectory, and uses the newer dirdiff module instead.
As promised to @jedevc

Thank you for your help guys!


[Optimization] Ocula Behaviour

Mod source
Factorio Mod Portal
Which mod are you having an issue with?

[X] pyalienlife
[ ] pyalternativeenergy
[ ] pycoalprocessing
[ ] pyfusionenergy
[ ] pyhightech
[ ] pyindustry
[ ] pypetroleumhandling
[ ] pypostprocessing
[ ] pyrawores

Operating system

=Windows 10

What kind of issue is this?

[ ] Compatibility
[ ] Locale (names, descriptions, unknown keys)
[ ] Graphical
[ ] Crash
[ ] Progression
[ ] Balance
[ ] Pypostprocessing failure
[X] Other

What is the problem?
While the Oculas are a great feature, I have noticed some issues with their behaviour over time.

Oculas can be easily picked up when they deliver stuff to you, especially when you're in Ulricman mode.

Now you've got an Ocula in your inventory. If you just place it back on the map, like you would a bot, it's just going to putter around where you put it down.
=> If it were possible to mark Oculas (with a delivery at least) as non-pick-upable, it might actually solve all the issues I've had so far.

Oculas are hard to get back into the Ocula network automatically

Expanding from the previous issue, if you just naively put the Oculas into your logistics network and try to insert them back into the Eyepods, any space that is freed up when an Ocula leaves for its task and returns later and finds its slot occupied is going to throw a console notification this time (An Ocula was stranded [gps]), but will still putter around (and wander off over time) all the same as if you'd just dumped it on the map.
Adding inserters between the Eyepods just exacerbates the issue as all Eyepods will be filled and it will become almost impossible for an Ocula to return to the Eyepod it left from.
=> I am going to assume this would involve some major alteration to the pathing logic, with Oculas having to look for free spaces and so on?
Steps to reproduce
No response
Additional context
No response
Log file
No response

ya this is going to need some major reworking to fit it


Additional review needed

Peirce's Skill Score requires an additional review of the formula

This has now been fixed in https://github.com/nci/scores/pull/439


.Data.Pages not accessible inside of _default/single.html???

I created a partial navbar.html that uses .Data.Pages to link to all main pages (about, contact..), but it doesn't print anything out inside of _deafault/single.html. I'm guessing this variable isn't accessible inside of singles only lists or homepage...  How do I access them if I can't use .Data.Pages?

Please use http://discuss.gohugo.io/ for questions.


Add a note on compatibility in README

I added this note so that new users know what to expect with respect to PaSh's compatibility. @mgree, @nvasilakis feel free to edit or approve this and then we can merge it.
Signed-off-by: Konstantinos Kallas<EMAIL_ADDRESS>

Might be good to give an indication of the kinds of things that don't work, e.g., variables in redirects, arrays, process substitutions, some fancy bash parameter forms.


Use constants when registering GenerateConfigTask.

There was one instance where the constants for defaultIncludes and defaultExcludes were not yet used.

Codecov Report

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

@@            Coverage Diff            @@
##             master    #1777   +/-   ##
=========================================
  Coverage     79.82%   79.82%
  Complexity     1937     1937
=========================================
  Files           324      324
  Lines          5472     5472
  Branches       1009     1009
=========================================
  Hits           4368     4368
  Misses          581      581
  Partials        523      523

Continue to review full report at Codecov.

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


A css selector for privacy when all are off

It'd be nice to be able to style when everything is off that way I can disable the section completely when nothing is recording.


[#noissue] Fix log message of interceptor-registry

Fix a log message that occurs when the maximum size of the Interceptor Registry is reached.
Interceptor registry size exceeded. Check the "profiler.interceptorregistry.size" setting. size=8192 id=8731

Codecov Report

Merging #6494 into master will decrease coverage by 0.02%.
The diff coverage is 100%.

@@            Coverage Diff             @@
##           master    #6494      +/-   ##
==========================================
- Coverage   39.51%   39.49%   -0.03%
==========================================
  Files        3085     3085
  Lines       92050    92054       +4
  Branches    11903    11907       +4
==========================================
- Hits        36376    36358      -18
- Misses      52663    52681      +18
- Partials     3011     3015       +4

Impacted Files
Coverage Δ

...or/registry/DefaultInterceptorRegistryAdaptor.java
90.9% <100%> (ø)
:arrow_up:

...p/pinpoint/rpc/client/WriteFailFutureListener.java
56.25% <0%> (-18.75%)
:arrow_down:

...vercorp/pinpoint/rpc/packet/ClientClosePacket.java
55.55% <0%> (-11.12%)
:arrow_down:

...rc/main/java/com/navercorp/pinpoint/test/Item.java
70% <0%> (-3.34%)
:arrow_down:

...navercorp/pinpoint/rpc/common/SocketStateCode.java
82.92% <0%> (-2.44%)
:arrow_down:

...om/navercorp/pinpoint/rpc/codec/PacketDecoder.java
57.44% <0%> (-2.13%)
:arrow_down:

...cluster/zookeeper/ZookeeperClusterDataManager.java
52.9% <0%> (-1.94%)
:arrow_down:

...java/com/navercorp/pinpoint/rpc/DefaultFuture.java
72.5% <0%> (-1.67%)
:arrow_down:

...orp/pinpoint/rpc/server/DefaultPinpointServer.java
79.22% <0%> (-1.06%)
:arrow_down:

...point/rpc/client/DefaultPinpointClientHandler.java
72.07% <0%> (-0.33%)
:arrow_down:

... and 2 more

Continue to review full report at Codecov.

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


L3_DISP_S1 PGE Development

Epic for development of the specific capabilities for the DISP-S1 (Displacement Product from Sentinel 1 A/B) PGE delivered with OPERA Release 3.

Closing, as the Epic-type ticket feature seems to have been removed from Github


Option to treat "null" as lack of value

Seems closely related to https://github.com/ajv-validator/ajv/issues/937
What version of Ajv you are you using?
v6.12.5
What problem do you want to solve?
In JavaScript, when processing configuration objects it's typical to treat lack of value, null and undefined as equal.
e.g. when one wants to override  { foo: "bar" }, with { foo: null }, it's clear that intention is to clear foo from object.
Currently schema validation will not accept null values for properties unless it's explicitly allowed in schema. Still allowing it for every configured property seems as very verbose and maintenance wise problematic practice.
In my opinion if property is optional, null naturally should be supported as a valid value, per schema
What do you think is the correct solution to problem?
Ideally, an option as normalizeNoValues that would treat lack of value, null and undefined as equal.

It is indeed related to #937 and other linked issues, so it should be addressed consistently for all keywords, possibly even somehow outside of keywords - in v7 it may be possible.
The option could be strictNullChecks (not to invent much) or strictNullValues (true by default) or something even more specific to account for the contexts where it applies to - ignoreNullProperties.
My personal opinion is that it is better to be explicit when null is allowed and to not equate it to the absence of value. JavaScript undefined is somewhat trickier - undefined is the value you get from absent properties, so there is a stronger argument for ignoring present undefined properties that for ignoring null properties.
So possibly there should be a separate option strictUndefinedValues or ignoreUndefinedProperties.
@medikoo let's talk if you or somebody else is interested and has time to work on that - I do not plan to address it within the next couple of months.

any updates?


Logo Proposal for Kiner

Hi, I'm a graphic designer and I like to collaborate with open source projects. Do you know that the graphic image of a project is very important? thinking about it I would like to design a logo for your Project Kiner.
I will be pleased to collaborate with you.

Hey there @area55git! Would love to give Kiner a logo. Feel free to share your ideas! :raised_hands:

I don't have any particular idea currently. I think for colors, I'd love to stick to the Buffer Style Guide if possible but feel free to do whatever you want!

Hi, I'm presenting you 3 logo options, which one do you like?

Remember that you can suggest the changes you want.

Wow @area55git! Thanks for sending three options, I like the third one!
One thought I had is that I'd love to see the same logo perhaps with #168eea and #fff9ea instead. I'm sure you know better than me which color suits better there though. :sweat_smile:

This is awesome @area55git! I like the new detail and colors. Love Option 2! Do you want to iterate more or should we start using this shiny logo? :sparkles:

Like this is perfect...!
Thank you very much for accepting my collaboration, later today i will make a pull request with the files. Dont forget to merged :)
I will send you the link to download the original logos.

Hi @davidgasquez, did you check the files?

Sorry @area55git! I did download the files. I'll send a PR adding the logo this morning.

Just made the changes to the README. I've also added a new contributors section with your Github handle on it!
Thanks again for sending the logo proposal @area55git!


NSwagExe_Core20 broken in 11.7.4

In 11.7.4 NSwagExe_Core20 is broken, because it gets overwritten with the value for NSwagExe_Core21. I suggest to release a hotfix as soon as possible.

Sorry for that. Will release in the next hours...


purs 0.15 updates

Regular build complies (with patched versions of blocking deps). Testing build has errors but I haven't forked those projects.
Blocking dependencies:

[ ] aff-promise (https://github.com/nwolverson/purescript-aff-promise/pull/26)
[ ] assert (https://github.com/purescript/purescript-assert/pull/21)

Blocking test dependencies:

[ ] profunctor-lenses
[ ] react-testing-library
[ ] spec

Seems like these libraries had a 0.15 release
https://github.com/nwolverson/purescript-aff-promise/releases/tag/v4.0.0
https://github.com/purescript/purescript-assert/releases/tag/v6.0.0
Also
https://github.com/purescript-contrib/purescript-profunctor-lenses/releases/tag/v8.0.0
https://github.com/i-am-the-slime/purescript-react-testing-library/commit/b887710dfe8050c8a26966edd3822959dce9da9d
https://github.com/purescript-spec/purescript-spec/releases/tag/v7.0.0


Build jar

Guys, need help!
How to build output jar file with com.bytedance.frameworks.core.encrypt.TTEncrypt main class?
I'm adding MANIFEST.MF to /unidbg-android/src/main/java/META-INF/MANIFEST.MF with:

Manifest-Version: 1.0.
Main-Class: com.bytedance.frameworks.core.encrypt.TTEncrypt

But when i try execute jar, i'v got:

java -jar unidbg-android.jar.
no main manifest attribute, in unidbg-android.jar

I'm using IntellyJ Ultimate

May be you need help .
You can contacts my email:
<EMAIL_ADDRESS>


Introduce a dedicated use_force_update hook

Description
Introduce a hook that can unconditionally trigger a rerender. Avoids an idiosyncratic use of use_reducer or use_state and introduces a few less allocations.
Targets, but doesn't complete #2576 (closes the last api gap)
Checklist

[x] I have run cargo make pr-flow
[x] I have reviewed my own code
[x] I have added tests

This hook is consistently faster on my Laptop than the alternative of using state.
#[function_component]
fn BenchSetState() -> Html {
    let state = use_state(|| ());

    use_effect_with_deps(
        move |_| {
            let start_time = instant::now();

            for _ in 0..1_000_000 {
                state.set(());
            }

            log!(format!(
                "BenchSetState: Scheduled 1 million renders in {}ms.",
                instant::now() - start_time
            ));

            || {}
        },
        (),
    );

    Html::default()
}

#[function_component]
fn BenchForceUpdate() -> Html {
    let state = use_state(|| ());

    use_effect_with_deps(
        move |_| {
            let start_time = instant::now();

            for _ in 0..1_000_000 {
                state.set(());
            }

            log!(format!(
                "BenchForceUpdate: Scheduled 1 million renders in {}ms.",
                instant::now() - start_time
            ));

            || {}
        },
        (),
    );

    Html::default()
}

Firefox:

BenchForceUpdate: Scheduled 1 million renders in 50ms.
BenchSetState: Scheduled 1 million renders in 344ms.

Chrome:

BenchForceUpdate: Scheduled 1 million renders in 20.900000005960464ms.
BenchSetState: Scheduled 1 million renders in<PHONE_NUMBER>0596046ms.

If a function component's rendered layout is purely determined by props + context + states, all of them will automatically subscribe for a re-render upon changes.

Which is true as long as you don't use internally mutable state or state that is not managed by Yew. In such a situation, rather than introducing fake state () that you "set", there's this dedicated hook that just does what you want to do.
I can't fathom how many useless clones of data is made under the immutable model that react pushes to protect developers from themselves ("never use mutable structure", "use spread syntax", etc). And to some degree the solution is libraries offering cheaply cloneable, immutable data in rust (I see the PR for that). But you won't be able to retrofit libraries to that model, and to really push performance, at some point mutable data just is faster. (I think the theoretical bound was some kind of log factor for functional vs algorithms but I can't recall the specifics).

If you have a state not managed by Yew (or interior mutability), there's no guarantee that your state will stay the same until the time a render actually happens (as render is delayed), which results in inconsistency in rendered result.

Consistency is even more of a problem if I start cloning the state all over instead of relying on a single-source of truth. Matter of fact, as long as the view function fetches consistent state, I don't see what could go wrong, even if the render is delayed. Any component should be written to expect a re-render at any point, after all. To say it another way: The consistency of the state-management should never depend on whether or not some component interested in part of it to render or not.
It's a fundamental part of the model that at some point a re-render is triggered. Just embrace it and offer a hook for it, with a few warning labels attached. The standard rust programmer is different from the standard javascript programmer and exposing some more low level primitives shouldn't hurt. Maybe I would add a warning that the re-render isn't guaranteed to always run immediately? In any case, I don't quite see how concurrent mode will mess with something as fundamental as triggering a re-render.

In addition, even with the performance improvement, I don't think it's good to have a hook to encourage rendering without changing any state.

I also don't want to encourage it, that's why the warnings are there and all the docs tell you to prefer something else. But I want it to be there if someone really needs it without sacrificing performance. Maybe keep it out of the website or move it somewhere under the "Advanced topics" section.

Btw, the "Facebook React" way of both explaining and 'solving' the problem. I'm sure that API is much easier to reason about. NOT.

Rust has a nature to make discouraged practice "difficult to use" with .unwrap(), unsafe { }, etc..., why should we do the contrary and make it easier?

I don't see how any of those are "difficult" to use, seems pretty straight forward.

Rust offers us mutability (interior mutability is part of it) and we should embrace it instead of trying to bend over to offer a JS-way to solve a problem

Agreed.

No, The answer is in the link you posted and the update version: https://github.com/reactwg/react-18/discussions/86

Ah sure, seems a bit easier to use. But my main concern with this PR is not to allow reading from mutable source, but just offer a bail-out mechanism. This is not concerned with Concurrent Rendering or Tearing (which is more-or-less a problem with not being able to identify rendering context without the additional API), which should be solved when it comes up. This only triggers an unconditional rerender, for any reason and I expect it to be safe, although maybe causing slightly too many re-renders once CR exists and we can think about more high-level API for that. But semantically, calling force_update only schedules another render, for an unspecified reason at some point in the future, and it trusts the user to know what they're doing with that (something that I miss in insert popular framework here).

But my main concern with this PR is not to allow reading from mutable source

The main reason you want to do this is you are trying to read from states not synchronised with yew's rendering cycle.
FWIW, yew-hooks already has a hook that does this.
https://docs.rs/yew-hooks/latest/yew_hooks/fn.use_update.html
If this is discouraged, and you need to schedule many many renders (very unoptimised) before a render happens to make any realistic difference, is there any good reason to make it available in yew?

is there any good reason to make it available in yew

Yes, the fact that if it's used, at least it's reasonably efficient. And people will (and apparently already have) hack their way around it if it doesn't exist.

The fact that Yew is a Rust library makes things different. Rust is about giving control. If we can give control, we should. However we should also have general API that are to be used in vast majority of cases

From yew-hooks aspect, it uses use_update a lot to do interior mutability, e.g. use_list / use_map / use_set / use_queue, then we can avoid clone large collections every time, and we're quite sure to use it correctly and states are synced in these scenarios. If use_force_update is much faster than use_update, I will happily to use it and deprecate my use_update. And the docs gives good caution info to discourage to use it, so I might vote for a merge.

From yew-hooks aspect, it uses use_update a lot to do interior mutability, e.g. use_list / use_map / use_set / use_queue, then we can avoid clone large collections every time, and we're quite sure to use it correctly and states are synced in these scenarios. If use_force_update is much faster than use_update, I will happily to use it and deprecate my use_update. And the docs gives good caution info to discourage to use it, so I might vote for a merge.

interior mutability

I originally planed to discuss this topic when I have time to implement use_transition. But I guess I should explain a little bit of what concurrent mode does and why it does not play along with interior mutability.
There is an important distinction between:

fast, but blocking.
slow, but keeping browser responsive.

Blocking means that an update must happen on the spot, regardless of whether the browser is busy or not.
And a non-blocking update is an update that can be run at a time that the browser is not busy.
Interior mutability means choosing the first route, which seems fast, but at the cost of not being able to respond to browser until everything is settled.

Concurrent mode, on the other hand, elects the second option, for updates that can be delayed, it updates in a copy of the state when the browser is idle. This means that multiple copies of a state will exist "concurrently".

However, this means that if in the meanwhile an urgent update happens, it will "rollback" instead of "commit".

Extensively using interior mutability means that your state always need to be committed in "urgent" mode so that later updates will be able to see previous updates, which blocks the browser.
I think it may be fine to merge this at the moment, but we might have to revisit the design of this hook in the future.

We don't have concurrent mode yet (to be honest, I don't even understand what it is and what problem it solves). If we plan on landing concurrent mode before 1.0, we can make a breaking change if needed. I'll merge this now as it (and any other APIs) can be updated before a stable release as needed.
@futursolo it would be nice if you could create a discussion/issue about concurrent mode, explaining what it is, why it's needed and what problem it solves. That would help those (myself included) who haven't used it in other ecosystems, such React.


WHERE IS MY PROJECT!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Describe the bug
NOT LOADING MY PROJECT!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
WHAT MORE NEEDS TO BE SAID. ERRORS AFTER ERRORS. NOW IT SAYS I DON'T HAVE ACCESS TO MY FILES!!!! BOLT WAS OK FOR THE BS TASKS OF EDITING MANY FILES NOW IT IS COMPLETE GARBAGE!!!
Link to the Bolt URL that caused the error
https://bolt.new/~/stackblitz-starters-2za7mfak
Validations

[X] Please make your project public or accessible by URL. This will allow anyone trying to help you to easily reproduce the issue and provide assistance.

Steps to reproduce
PHOTO SAYS IT ALL

Expected behavior
TO WORK AND NOT GIVE ERRORS ALL THE TIME!!!!
Screen Recording / Screenshot

Platform
Browser name = Chrome
Full version = <IP_ADDRESS>
Major version = 131
navigator.appName = Netscape
navigator.userAgent = Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/<IP_ADDRESS> Safari/537.36
performance.memory = {
  "totalJSHeapSize": 38799653,
  "usedJSHeapSize": 37801493,
  "jsHeapSizeLimit":<PHONE_NUMBER>
}
Username = mawiskored1974
Chat ID = 8c27064e3a59

Additional context
Error:
Project could not be imported because it does not exist, or you don't have access to it.

Apologies for the frustration! Could you try the following:
To reload your project into Bolt:

Log in to StackBlitz.com (same account as Bolt.new)
Open the Collections on the left-hand side of the page.
Open the Bolt Collection
Open the project you want to edit in Bolt
Press the "Open in Bolt" button and continue coding!

Alternatively, if the project is not in the correct state, try going to Bolt > Settings > Backups and selecting a backup from there.
Please let me know if either of these methods works.


chore: rename deployment service to deployment example-service

Issue
Description
Checklist

Code is easy to understand
No obvious errors or bugs
CI/CD Pipelines did run successfully
Tests were implemented
Documentation was created

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Comparison is base (62b9094) 58.21% compared to head (c6216e3) 58.21%.

Additional details and impacted files
@@            Coverage Diff            @@
##               main     #468   +/-   ##
=========================================
  Coverage     58.21%   58.21%
  Complexity       60       60
=========================================
  Files            38       38
  Lines           560      560
  Branches         50       50
=========================================
  Hits            326      326
  Misses          185      185
  Partials         49       49

Flag
Coverage Δ

unittests
58.21% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


Possible miscompilation error?

Hello, I've found a strange error and I'm not sure what the problem might be. I've been trying to use ESP32 + SCD41 with no luck. I tracked down the problem to this piece of code:
// source https://github.com/Sensirion/sensirion-i2c-rs/blob/master/src/crc8.rs#L11-L25
pub fn calculate(data: &[u8]) -> u8 {
    const CRC8_POLYNOMIAL: u8 = 0x31;
    let mut crc: u8 = 0xff;
    for byte in data {
        crc ^= byte;
        for _ in 0..8 {
            if (crc & 0x80) > 0 {
                crc = (crc << 1) ^ CRC8_POLYNOMIAL;
            } else {
                crc <<= 1;
            }
        }
    }
    crc
}

For the given example data [9, 94] the correct result should be 35 but I'm getting 55. It works correctly on the blank Rust project using cargo new but it fails when I deploy the code to my ESP32.
I've created an example here https://wokwi.com/projects/345876589283639891 with 2 identical calculate functions, the only difference is that one of them has println! macros inside. However, the result differs.
Does anyone know what's going on? What am I missing?

Duplicate of https://github.com/esp-rs/rust/issues/134


[WIP] Add splash screen code

Description

Fixes #(issue)

self explanatory
Type of change

:x: Bug fix (non-breaking change which fixes an issue)
:x: Icon addition (non-breaking change that adds/modifies Lawnicons's icons)
✅: General change (non-breaking change that doesn't fit the above categories like copyediting)

Tbh I keep trying to fix it but it doesn't like to work, so I'll make this a draft PR ig...


Syntax highlighting and file detection no longer works

Description of the problem
Micro no longer is detecting file types without specific commands to in the config file, and when a file type is set, it doesn't show syntax highlighting. I have tried downgrading, changing the color scheme, manually setting the file type, but nothing seems to be working.
Specifications
Commit hash: 225927b9
OS: Arch
Terminal: Alacritty

I suspect this is an Arch packaging issue but it would be nice to get another opinion on that. I have the same problem since 2.0.11, also on Arch. The reason I think it's a packaging issue is that syntax highlighting and file detection works when building 2.0.11 from source.
I recently opened an issue on Arch's bug tracker here: https://bugs.archlinux.org/task/75553
In the meantime you should be able to get syntax highlighting back either by building 2.0.11 yourself or by downgrading to 2.0.10. I've tested both methods.

I have the same problem since 2.0.11, also on Arch

2.0.11-1 works for me and higher versions ( 2.0.11-2 and 2.0.11-3) no longer have syntax highlighting.
Arch Linux

I suspect this is an Arch packaging issue but it would be nice to get another opinion on that. I have the same problem since 2.0.11, also on Arch. The reason I think it's a packaging issue is that syntax highlighting and file detection works when building 2.0.11 from source.

Second this, it does not work when install from pacman but works well when download from source.
I am on EndeavourOS (which is Arch in the end anyway)

Same here after update EndeavourOS yesterday.

The Arch Linux package now modifies the Makefile instead of running go build directly. The build flags are a bit stricter than in the original Makefile and there are a few small modifications to make the package build in a reproducible way. This did the trick. I pushed the new package to [community] just now.
Syntax highlighting is back.

The Arch Linux package now modifies the Makefile instead of running go build directly. The build flags are a bit stricter than in the original Makefile and there are a few small modifications to make the package build in a reproducible way. This did the trick. I pushed the new package to [community] just now.
Syntax highlighting is back.

Impressive timing, I just came to GitHub to check if there was an issue about this bug, and you just fixed it! Thank you.


Add vpp_routing_node parameter

This patch add vpp_routing_node parameter. It specifies the node that
should be used for routing in VPP deployments. The Opendaylight patch
introducing this parameter is at https://git.opendaylight.org/gerrit/#/c/51250
Signed-off-by: Feng Pan<EMAIL_ADDRESS>

This looks awesome, amazingly good for the first patch in a change. Passes all rspec/linting, also passes sanity (but just running other Beaker tests, none for this).
Would be nice to add Beaker coverage, but not a blocker imho, this is ready to merge.


Experiment blueprintjs table

Experiment to use blueprintjs table in query editor:

I'm going to close this PR out for now, as there's been quite a bit of divergence. I will create an issue to track using the blueprintjs table


BlueBuild

Since PlaytronOS is based on Fedora Atomic, wouldn't it be a good idea to rebase it on Blue Build instead (Like Universal Blue) ?

Thanks for the suggestion @Malix-Labs !
What are the advantages of using the Blue Build system? We're currently using OSTree files for building our base image and then a Containerfile for building the final image. This aligns with Red Hat's current recommendations for Atomic Desktop builds.

The main benefits is that most of the work has already been done, but it's still possible to make deep edits after that, see:

"Why build an abstraction on top of Containerfiles? (recipe.yml)"
https://blue-build.org/#:~:text=Why build an abstraction on top of Containerfiles%3F (recipe.yml)

We have already discussed this internally. The issue is that we plan to ship to consumer devices and ublue changes too frequently which can lead to instability.
For our case we need to be in control of the packages we deliver to our users and update at a rate that is sustainable by our own QA team. In other words, we are focused on stability, ublue is focused on the bleeding edge.

Then what about just VIB ?


I can't figure out how to set the window size at startup.

I'm basically asking for help debugging this...  EventWindowMove event)
    (doto
        (swap! last-win-pos merge {:win/left (.-_windowLeft event)
                                   :win/top (.-_windowTop event)})
        #(>!! stdout (format "window moved to %s" (str %))))
    (instance? EventWindowResize event)
    (doto
        (swap! last-win-pos merge {:win/width (.-_windowWidth event)
                                   :win/height (.-_windowHeight event)})
        #(>!! stdout (format "window resized to %s" (str %))))))

(defn make-window []
  (>!! stdout (format "last window position in make-window %s" (pr-str (deref last-win-pos))))
  (doto
      (window/make
       {:on-close #(reset! *window nil)
        :on-paint #'on-paint
        :on-event #'on-event})
      (window/set-title "Hello from Humble UI")
      (window/set-visible true)
      (window/set-z-order :normal)
      ;; (set-window-position! #:win{:width 974, :height 1047, :left 972, :top 2160})
      (set-window-position! (deref last-win-pos))
      (window/request-frame)))

(defn -main [& args]
  (future (apply nrepl/-main args))
  (hui/init)
  (reset! *window (make-window))
  (add-watch app-state :save-app-state-to-disk (fn [k r old new] (>!! app-state-save-queue new)))
  (add-watch last-win-pos :last-window-position (fn [k r old new] (>!! stdout (format "updated last window position to %s" new))))
  (async/go-loop []
    (let [app-state (<! app-state-save-queue)]
      (>! stdout (format "read app-state %s from app-state-save-queue" (take 20 (pr-str app-state))))
      (persist-to-disk app-state app-state-save-location)
      (>! stdout (format "saved app state to %s" app-state-save-location)))
    (recur))
  (async/go-loop []
    (println (<! stdout))
    (recur))
  (hui/start))

$clj -A:windows:dev
nREPL server started on port 60370 on host kubernetes.docker.internal - nrepl://kubernetes.docker.internal:60370
last window position in make-window nil
setting window position to #:win{:width 2880, :height 1554, :left 468, :top 468}
updated last window position to #:win{:width 2880, :height 1554, :left -10, :top 0}
updated last window position to #:win{:width 1940, :height 2110, :left -10, :top 0}
read app-state clojure.lang.LazySeq@4638271 from app-state-save-queue
saved app state to app-state.edn
read app-state clojure.lang.LazySeq@4638271 from app-state-save-queue
saved app state to app-state.edn
$ clj -A:windows:dev
nREPL server started on port 60371 on host kubernetes.docker.internal - nrepl://kubernetes.docker.internal:60371
last window position in make-window #:win{:width 1940, :height 2110, :left -10, :top 0}
setting window position to #:win{:width 2880, :height 1554, :left 494, :top 494}

in summary
I ran the app and since I try to slurp a file that doesn't exist, it's nil at first. The app comes up in some default place 2880 1554 468 468, I snap it to the left half of the screen 1940 2110 -10 0, I close it, re launch it from the terminal, it prints that it read 1940 2110 -10 0 from the config (which is the correct value) and then logs some default position/size instead of the saved/correct value.
code tldr
-main
calls
make-window
which calls
(set-window-position! (deref last-win-pos))
where
last-win-pos is (def last-win-pos (rum/cursor-in app-state [:last-win-pos]))
where
app-state is (def app-state (atom (or (unpersist-from-disk app-state-save-location) {})))
where
app-state-save-location is "app-state.edn"
and
unpersist-from-disk is
(defn unpersist-from-disk
  [file-name]
  (try (read-string (slurp file-name))
       (catch FileNotFoundException e)))

I'm looking at two back to back print statements with the same parameter and different vales coming out. That's what's confusing me. At the start of make-window I print it and then again as the first thing in set-window-position.
I could deref it once and bind that in a let.
(defn make-window []
  (let [w (deref last-win-pos)]
    (>!! stdout (format "last window position in make-window %s" (pr-str w)))
    (doto
        (window/make
         {:on-close #(reset! *window nil)
          :on-paint #'on-paint
          :on-event #'on-event})
        (window/set-title "Hello from Humble UI")
        (window/set-visible true)
        (window/set-z-order :normal)
        (set-window-position! w)
        (window/request-frame))))

It works now...
I do not know what I am doing.

I forgot to say thank you. I'd appreciate any help/tips you have.
Thanks!

I moved all my global defs into let bound local in main and I don't have an issue.


mergeCols breaks meltAssay

Hi,
after using mergeCols, the meltAssay function fails:
data(GlobalPatterns)
GlobalPatterns
merged <- mergeCols(GlobalPatterns,colData(GlobalPatterns)$SampleType)
merged

meltAssay(GlobalPatterns)
# works
meltAssay(merged)
# Error in as.vector(x) : no method for coercing this S4 class to a vector

Thanks!

Seems the assay counts contains another STE object instead of an assay object
assay(merged)
# class: SummarizedExperiment
# ...
assay(merged) <- assay(assay(merged))
assay(merged)
meltAssay(merged)
# now it works


(WIP)(maint) Convert gulp script to psake file

Loving that diff!!
PR is still marked as WIP

Removed wip


Fixes #489 : Added Google Map

A feature of viewing the address on Google Map, and the location being pointed is added.
Before:

After:

Also, considering the complexity and the time and effort required, it'd be very kind if you assign this issue as Level 2. :)
Thank you!

A feature of viewing the address on Google Map, and the location being pointed is added.
Before:

After:

is there any issue regarding this?

Also, considering the complexity and the time and effort required, it'd be very kind if you assign this issue as Level 2. :)
Thank you!

this design doesn't look good please try some other design arrangements!

Sure Sir, on it!

@huamanraj Sir, I've got something to discuss regarding this, can I ping you on Discord?

Sir, I've done some enhancements to the design. Kindly check!

Responsiveness:

@huamanraj Kindly check the enhancements I've made :)

Submit & your message box is repeated two times. Fix it & raise PR again. We will merge!


New method of hiding items interfaces poorly with other plugins

In update 1.1, the way that items were hidden by this plugin changed. As a result, overlays by plugins such as "Clue Steps", "Weapon Charges", "Inventory Tags", and "Rune Pouch" show even when the item is hidden.

This is more distracting than the old behavior where the items would be hidden altogether.

Fix was just merged in, closing this.


Layout and formatting overhaul

Is this good to go once the casual/Day Pass change is approved?

Wiki part of the day pass change is live.