fix: SMTP datasource should work without username and password

Description
Bug Description
Issue: When configuring an SMTP datasource without a username and password, the system throws an error: “Invalid authentication credentials. Please check datasource configuration.”
Expected Behavior: The system should allow SMTP datasource configuration without requiring authentication credentials, as it is possible to connect to some SMTP servers without a username or password.
Steps To Reproduce
Use any email service for configuring SMTP datasource without setting up username and password
Create SMTP datasource with host port, keeping username and password blank
Test the configuration
Root Cause
Manual validation in the codebase was enforcing that both username and password fields are mandatory for SMTP configuration. This validation prevented the successful configuration of SMTP services that do not require authentication.
Solution Details
To fix this, the following changes were implemented:
Updated Validation Method (validateDatasource)
Before: Enforced mandatory username and password validation.
After: Removed the strict validation check for authentication fields, allowing for configurations without credentials.
if (authentication == null || !StringUtils.hasText(authentication.getUsername()) || !StringUtils.hasText(authentication.getPassword())) {
    invalids.add(new AppsmithPluginException(AppsmithPluginError.PLUGIN_AUTHENTICATION_ERROR).getMessage());
}

Modified the SMTP Session Creation (datasourceCreate)
Before: Always initialized the SMTP session with authentication, assuming credentials were required.
After: Updated the session creation to support both authenticated and unauthenticated configurations.
Properties prop = new Properties();
prop.put("mail.smtp.auth", "false"); // Default to no authentication

if (authentication != null && StringUtils.hasText(authentication.getUsername()) && StringUtils.hasText(authentication.getPassword())) {
    prop.put("mail.smtp.auth", "true");
    session = Session.getInstance(prop, new Authenticator() {
        @Override
        protected PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication(username, password);
        }
    });
} else {
    session = Session.getInstance(prop);
}

Enhanced Testing for Authentication Scenarios (testDatasource)
Before: Errors were logged if authentication failed, even for servers where authentication wasn’t required.
After: Introduced a flag to detect if authentication was required based on the session configuration, and adjusted error handling accordingly.
boolean isAuthRequired = "true".equals(connection.getProperty("mail.smtp.auth"));
if (isAuthRequired && transport != null) {
    try {
        transport.connect();
    } catch (AuthenticationFailedException e) {
        invalids.add(SMTPErrorMessages.DS_AUTHENTICATION_FAILED_ERROR_MSG);
    }
}

Testing and Verification
Unit Tests
Without Authentication:
Updated testNullAuthentication test case to ensure no errors are returned when authentication is absent.
@Test
public void testNullAuthentication() {
    DatasourceConfiguration invalidDatasourceConfiguration = createDatasourceConfiguration();
    invalidDatasourceConfiguration.setAuthentication(null);
    assertEquals(0, pluginExecutor.validateDatasource(invalidDatasourceConfiguration).size());
}

Fixes #37271
Automation
/ok-to-test tags=""
updated testNullAuthentication() from SmtpPluginTest class

Summary by CodeRabbit

New Features

Enhanced SMTP plugin now supports conditional authentication during session creation.
Improved error handling for authentication failures, providing clearer validation results.
Added support for testing SMTP connections without authentication.

Bug Fixes

Streamlined validation logic for datasource configurations, particularly for authentication scenarios.

Documentation

Updated test methods to clarify expected error messages for invalid configurations.

@sneha122 Please review the changes

Thank you @shanid544 PR looks good to me, ill create shadow PR and run test cases on it

/build-deploy-preview skip-tests=true

@sneha122 Could you please approve this.

@sneha122 2 check are pending, those should automatically trigger ryt?

Created shadow Pr here for monitoring tests: https://github.com/appsmithorg/appsmith/pull/37393

@shanid544 Can you please run this command on server mvn spotless:apply? There are some formatting issues which will be fixed by this command

@sneha122 Ran, should I commit that changes as well?

@shanid544 Can you please run this command on server mvn spotless:apply? There are some formatting issues which will be fixed by this command

@sneha122 Ran, should I commit that changes as well?

yes please

@sneha122  Formatted

Thanks @shanid544 Once all tests are completed, will merge the PR


Prob return types for chi distributions

Hi @JacquesCarette
Referring to the convo here about making sure chiSq returns a prob, you said:
"Yes, please make sure all of these return prob. There should be no need to cast, as it should be obvious that they are all positive."
I'm unsure how to get any of the chi distributions to return prob values without a cast since these distributions are built up from the normal distribution (which returns real values) and their implementations use mathematical operators which results in a real when applied to reals/probs.
Is there some other way to ensure these distributions returns a prob type?

I need the exact details.  The PDF for chi-squared is 'obviously' positive.  And the relation to normal that I know is only asymptotic, not exact.

Yes.  The squaring does ensure the results are positive, so this is safe.

Just to clarify, even though its output is strictly positive, it won't let me explicitly type it as prob without a real2prob. Shall I give them real return types, then?

No, use real2prob.


Script: Certificate Data WMI Population for MECM Inventorying

Description
Create a script that will provide inventoriable information on Certificates within WMI that MECM can consume and create reportable objects in the database for analysis.
Purpose
This will provide administrators and analysts insight into the Certificates within the environment and the ability to create BI reports with detailed information captured from the inventory.
Solution Design
A script for all devices to execute on a schedule to inventory and write the data to WMI in the defined Namespace and Class. It would be good to have the following information for reporting:

Property Name
Example
Data Type

Enhanced Key Usage
Smart Card Login (<IP_ADDRESS>.4.1.3<IP_ADDRESS>)
[Type]

DnsNameList
?
[Type]

Extensions
System.Security.Cryptography.Oid, System.Security.Cryptography.Oid
[Type]

FriendlyName

[Type]

IssuerName
System.Security.Cryptography.X5509Certificates.X500DistinguishedName
[Type]

NotAfter
2052-08-13 12:09:40
[Type]

NotBefore
2022-08-13 11:59::40
[Type]

HasPrivateKey
True
[Type]

PrivateKey
?
[Type]

PublicKey
System.Security.Cryptography.X509Certificates.PublicKey
[Type]

SerialNumber
12F169C3FA80B2BA4CA74C89E17DEC66
[Type]

SubjectName
System.Security.Cryptography.X509Certificates.X500DistinguishedName
[Type]

SignatureAlgorithm
System.Security.Cryptography.Oid
[Type]

Thumbprint
D21731F6D29AB3ADFDCDA55AB5511993C4BE4340
[Type]

Version
3
[Type]

Issuer
<EMAIL_ADDRESS>[Type]

Subject
<EMAIL_ADDRESS>[Type]

We need to add in the following properties for easier identification
| Property Name | Example | Data Type |
|-|-|
| Location | LocalMachine or CurrentUser | String |
| Store | My | String |
| Owner | [Computername] or [Username] | String |


close #127: allow newer version of a listen gem

@Mic92 Maybe easier for you is accept my simple pull request.

Done thanks.


Question : How can i get Component data from Navigation Scene

Version
Tell us which versions you are using:

react-native-router-flux ^3.35.0
react-native v0.15

How can i get Screen data from navigation bar right view.
situation is: I want share button on right of navigationBar.
My Navigation router :

class NavigationRouter extends Component {
press(){
    console.log('I want to share my post title here')
  }
createNavRight(){
  return <TouchableOpacity onPress={this.press.bind(this)}>
    <Image source={Images.common.icon_setting} />
  </TouchableOpacity>
  }
render(){
  ...
    <Scene key='post_detail' component={PostDetailScreen} title='PostDetail' renderRightButton={this.asdf.bind(this)} />
  }
}

PostDetailScreen :
class PostDetailScreen extends React.Component {
constructor (props:PostDetailScreenProps) {
    super(props)
// want to access one of these
    this.post = {title: 'want to share this line'}
    this.props.post = {title: 'want to share this line'}
    this.state = {
      post: {title: 'want to share this line'},
    }
  }
}

Temporary Solution :
https://github.com/aksonov/react-native-router-flux/issues/747#issuecomment-239873867


Support deserialization of partial trees

Until now we were expecting to receive entire trees. In other words to receive some node with a null parent and other nodes directly or indirectly connected to such roots. In this way we were able to unserialize the tree properly, setting the parents for all nodes.
However, with support for proper partitions being introduced, we may want to ask for specific root nodes (or smaller trees) and not always to get the whole partition. So we may need to be able to unserialize trees that refer to parents we did not receive. We therefore ask support for this. In that case the parents not transmitted in the chunk will be set to null.
In the future we may want to specify some form of NodeResolver.

I think we can make a clear distinction: The lowlevel stuff (SerializedClassifierInstance etc.) should work just fine with unknown node ids. As soon as we cross over to the higher-level API, they must be resolved -- otherwise we cannot hold any of the semantic guarantees.
I only had a glimpse on this PR, so I don't know how it compares to this idea.

I think we can make a clear distinction: The lowlevel stuff (SerializedClassifierInstance etc.) should work just fine with unknown node ids.

Yes, I agree and this is how the code works

As soon as we cross over to the higher-level API, they must be resolved -- otherwise we cannot hold any of the semantic guarantees.

Well, yes, but that means that if I am interested in retrieve any node, I must get all the nodes connected and referred on the Client side, otherwise I cannot unserialize the tree.
So if I have a large partition, containing many trees directly under it, when I get any node within that partition I also need to get (or already have somehow on the client) all the parents, up to the partition, and then all the children and descendant of the partition. So I need to get a lot of stuff.
I suggest having the possibility to ask for subtrees and get the subtree that is of interest "cutting away" the parent and their ancestors, but doing that only explicitly (i.e., passing a flag indicating this is the behavior expected). When not setting the flag asking for anything but an entire partition just fails, as we do not have the nodes that we need to refer from one subtree

Perhaps we can use some form of proxy or placeholder, but I think it would be important to have a way to retrieve and unserialize something smaller than an entire partition. And if we decide to forbid that, then we should redefine the bulk APIs to specify that only partitions can be retrieve, and not anything smaller.

Bulk API explicitly supports partial trees, so your approach makes sense.
Regarding the implementation, it looks good.
The only think I'm not so sure about is the API with the boolean flag. We already see that you had to change lots of places. Any future change (e.g. providing a NodeResolver) would involve at least as many changes. Maybe we should introduce a builder or config to encapsulate that?

The only think I'm not so sure about is the API with the boolean flag. We already see that you had to change lots of places. Any future change (e.g. providing a NodeResolver) would involve at least as many changes. Maybe we should introduce a builder or config to encapsulate that?

We could make this a setting of JsonSerialization. It would probably make sense. I will refactor the code accordingly.

By the way, we can have results from bulk API that don't contain children -- if we set the maxDepth parameter. We might want to deal with that too (maybe in a different PR).

By the way, we can have results from bulk API that don't contain children -- if we set the maxDepth parameter. We might want to deal with that too (maybe in a different PR).

Good point. I will create an issue for that

I have created a follow-up issue for dealing with missing children, have renamed the enum to UnknownParentPolicy, and rebased on master

Thank you @enikao !


Parser generator

Fig specs are essentially a grammar definition as JSON. The parser isn't optimal for every CLI because it has to be general enough to run them all, but a parser generator can create the optimal parser for each CLI.
I want this to be seamless. It should feel like no effort at all to set it up for your project. Not sure exactly how this will look right now

This is the current idea that I have... I don't love it. Too complicated.
.
|- deno.json      // defines the build task
|- cli
|  |- spec.ts     // the spec definition file, purely declarative
|  |- _parser.js  // generated parser
|  |- main.ts     // defines actions for subcommands, imports spec.gen.js

The main problem I have with this right now is that it separates the business logic from the CLI itself. This is probably okay but the possible DX is just worse imo.
The generated CLI either needs to be imported from the main file then have you hook into it so you can tell it what to run for each command, or have some kind of way to invoke an external function itself which feels too magical.
// cli_def.ts
import compile from "...";

compile("./cli_gen.ts", {
  name: "test",
  action: true,
  subcommands: [
    { name: "another", action: true },
  ],
});

// main.ts
import CLI from "./cli_gen.ts";

CLI.run({
  test: () => {},
  another: () => {},
});

I don't love this
What if instead main can also lazily define the CLI, so when called with a special command it'll compile instead of running
Keeps the definition and everything in one file, but introduces a bootstrapping problem
// main.ts
import CLI from "./cli_gen.ts";

CLI.spec("./cli_gen.ts", () => ({
  name: "something",
  subcommands: [
    { name: "wow" },
    { name: "non_idiomatic_name", run: "nonIdiomaticName" },
  ],
}));

CLI.run({
  something: () => {},
  wow: () => {},
  nonIdiomaticName: () => {},
});

This is maybe cleaner but it could get really bad for larger specs


Blackscreen after update with HDR display

Describe the bug
I downloaded the bazzite-nvidia-stable image a few hours ago to give it a try and installed it on my System on a seperate drive to my Windows install. So far so good.
But I noticed that the Nvidia driver was still 550... even though the new update is supposed to ship with 555. I guessed that maybe the image wasnt updated yet and went ahead and used the builtin Updater to update. I waited for it to finish and rebooted.
After booting into the new image, I get the login prompt as normal but as soon as I finish, I just get a black screen and nothing happens after that. No hotkeys do anything (not even CTRL+ALT+Fx)
What did you expect to happen?
I expected it to not break with the first update
Output of rpm-ostree status
No response
Hardware
AMD Ryzen 7 7800X3D
Nvidia RTX 4090
1x HDR Monitor, 1x. Non-HDR Monitor (according to some in the Discord this may be the issue)
Extra information or context
No response

Yep. I wrote up my experience with this over here:
https://universal-blue.discourse.group/t/blank-screen-after-logging-in-on-bazzite/1020/14?u=californiaroll

Okay so I reinstalled and updated without enabling HDR and it worked without a problem. So it seems to have something to do with HDR.

Hi, I'm having the same problem. Desktop Nvidia GPU (2080 Ti) latest version, Bazzite has been working great last week. I tried 4K HDR and worked great.
After rebooting the system, the same as OP happens, grub shows, then splash screen. Then the login sound, black screen system is unresponsive. No Ctrl+ALT+F2, nothing.
If I reboot and Ctrl+ALT+F2 during splash screen, it shows on screen the login TTY, but it's unresponsive also.
I don't want to reinstall all again... Is there a way to fix it?


python310Packages.pysnooper: 1.0.0 -> 1.1.0

Automatic update generated by nixpkgs-update tools. This update was made based on information from passthru.updateScript.
meta.description for python310Packages.pysnooper is: "A poor man's debugger for Python"
meta.homepage for python310Packages.pysnooper is: "https://github.com/cool-RR/PySnooper"
meta.changelog for python310Packages.pysnooper is: ""
Updates performed

Ran passthru.UpdateScript

To inspect upstream changes
Impact

Checks done (click to expand)

built on NixOS

The tests defined in passthru.tests, if any, passed

0 of 0 passed binary check by having a zero exit code.

0 of 0 passed binary check by having the new version present in output.

found 1.1.0 with grep in /nix/store/7h4q3jb7nhxx03dwzf7ij8p7qr02lfhf-python3.10-pysnooper-1.1.0

found 1.1.0 in filename of file in /nix/store/7h4q3jb7nhxx03dwzf7ij8p7qr02lfhf-python3.10-pysnooper-1.1.0

Rebuild report (if merged into master) (click to expand)

4 total rebuild path(s)

2 package rebuild(s)

2 x86_64-linux rebuild(s)
2 x86_64-darwin rebuild(s)

First fifty rebuilds by attrpath
python310Packages.pysnooper
python39Packages.pysnooper

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/7h4q3jb7nhxx03dwzf7ij8p7qr02lfhf-python3.10-pysnooper-1.1.0 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A python310Packages.pysnooper https://github.com/r-ryantm/nixpkgs/archive/3ccea96f1ea783fb8ff1bd7c8eeddd6a62857b0c.tar.gz

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/7h4q3jb7nhxx03dwzf7ij8p7qr02lfhf-python3.10-pysnooper-1.1.0
ls -la /nix/store/7h4q3jb7nhxx03dwzf7ij8p7qr02lfhf-python3.10-pysnooper-1.1.0/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

2 packages built:

python310Packages.pysnooper
python39Packages.pysnooper

Maintainer pings
cc @seqizz for testing.

@ofborg eval


no documentation for sample response

it will be very helpful if you can provide sample response object from the functions in README.md & npm.
Thanks You

Hi there,
I've updated the README with improved sample response documentation. If you have more questions, feel free to ask.


GUAC-1138: Add filter pattern tokenizer.

Rather than match the entire pattern string against each object property, this change matches individual whitespace-separated tokens against each object property. For an object to match the pattern, every token must match at least one property.
Searching for "guacadmin vnc", "guacadmin    vnc", and "vnc guacadmin" are all equivalent.

Added the IPv4 and IPv6 matching changes.


Modifying and saving rows directly

Hi!
I have a use-case where I have to modify multiple properties of a row in different parts of the code, so I had to make a lot of UPDATE statements, which is a lot of boilerplate and I'm not sure if it's the right approach.
Instead, I was thinking if it would be possible to make the properties of the generated interface mutable, and then update the table with the row as an input. Something similar like this feature #757 but instead of an insert, it could be an update with the row as an input and with a dynamic where.
Does it make any sense as a feature request or is there a better way to update multiple properties already?

We're unlikely to do anything that exposes mutable types. It's a pretty bad pattern and won't work on native.
If this really is a lot of boilerplate you can use INSERT OR REPLACE with the object syntax and insert using the data classes copy method

@AlecStrong
I see, cool! I haven't thought about the copy method.
Thanks for the help.

@AlecStrong Can you give an example of what you mean? I assume you'd have to cast the interface to the Impl data class in order to access the copy method (unless I'm missing something). But then how do you pass that to an INSERT OR REPLACE statement?

Actually, I figured it out by looking at #505. For anyone else wondering, here's an example:
-- User.sq

CREATE TABLE user(
  id TEXT NOT NULL
  name TEXT NOT NULL,
  created INTEGER NOT NULL
);

insertOrReplace:
INSERT OR REPLACE INTO user VALUES ?;

insertOrReplaceJustName:
INSERT OR REPLACE INTO user(name) VALUES ?;

get:
SELECT * FROM user WHERE id = ?;

fun updateUserName(userId: String, name: String) {
    val user = db.userQueries.get(userId).executeAsOne() as User.Impl
    val updatedUser = user.copy(name = name)
    db.userQueries.insertOrReplace(updatedUser)
}

@AlecStrong Is this what you meant? Please let me know if there's anything I'm misunderstanding or could do better.

nope you got it :+1:


add torch version specification in installation instruction

related issue
Run sample.py failed: OSError: libc10_cuda.so: cannot open shared object file: No such file or directory #22


Right to left

hello please update mattermost and add Right to left for persian and arabic

Would you describe more in detail? It seems that the UI is not Mattermost.

What is your problem?
Does the problem happen also on web browsers? (We need to tell whether the issue is for webapp or desktop)

its example for Right to left
and this problem for all version

Well, eventually what should we do? We're not sure what you are seeing because there are no screenshots about Mattermost. And probably I would not be able to understand anything only from screenshots.

What is your problem? Please describe with screenshots and annotation.
Does the problem happen also on web browsers such as Chrome? It would be very helpful as a first step in order to investigate the problem.

Closing this via an existing feature request ticket: https://mattermost.uservoice.com/forums/306457-general/suggestions/15008277-implement-automatic-right-to-left-rtl.


Using a Local Storage Space with Availability Groups

The guidance on this page is excellent, however it doesn't address a very common configuration that often gets people into trouble. What we really need is some guidance on configuring a local Storage Space that will work when the SQL Server Instances are part of an Availability Group.
Joey D' Antoni blogged about it here https://joeydantoni.com/2018/05/03/a-problem-with-storage-spaces-failover-clustering-and-always-on-availability-groups-in-azure/
I'm wondering if running this code before you create the cluster would fix the issue Joey describes?
Get-StorageSubSystem | Where AutomaticClusteringEnabled -eq $true | Set-StorageSubSystem -AutomaticClusteringEnabled $false

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 139dc620-240c-779f-1eed-c12accfe2ef6
Version Independent ID: a6deda7b-8361-2e2c-808a-48c047bae7a1
Content: Performance guidelines for SQL Server in Azure
Content Source: articles/virtual-machines/windows/sql/virtual-machines-windows-sql-performance.md
Service: virtual-machines-sql
GitHub Login: @MashaMSFT
Microsoft Alias: mathoma

Thanks for the feedback! We are currently investigating and will update you shortly.

@daveberm thanks for this. I am not sure if this is something that is already in the backlog or suggested to do.
I will assign to the content authors to review and see if any doc enhancements can be made to cover such a scenario.
CC @MikeRayMSFT

Hi @davebern, thanks for bringing this to our attention! I'm investigating this. Thanks!

Hi @davebern, thanks again for contacting Microsoft! Unfortunately, we were unable to reproduce the issue discussed in the blog. Perhaps it's a different OS? The blog post doesn't specify but we used Windows 2016 in our testing. We tried the PowerShell command but since we did not encounter the issue, we did not see that the command had any impact.
However, I added a note about unchecking the "add all eligible storage to the cluster". Would you mind checking to see if that resolves your issue?

If we don't hear back from you in a few business days, we'll assume that your issue has been addressed and proceed with closing out this Git Issue. If you need some time to check this on your end - no problem, you can always comment on the closed issue and request that it be opened.
Hope that helps and please let us know if we can be of further assistance!
#please-close

@daveberm We will now proceed to close this thread. If there are further questions regarding this matter, please tag me in your reply. We will gladly continue the discussion and we will reopen the issue.

Can you remind me again as to the page I submitted this question on?
On Wed, May 29, 2019 at 11:31 PM Masha at MSFT<EMAIL_ADDRESS>wrote:

Hi @davebern, thanks again for contacting Microsoft! Unfortunately, we
were unable to reproduce the issue discussed in the blog. Perhaps it's a
different OS? The blog post doesn't specify but we used Windows 2016 in our
testing. We tried the PowerShell command but since we did not encounter the
issue, we did not see that the command had any impact.
However, I added a note about unchecking the "add all eligible storage to
the cluster". Would you mind checking to see if that resolves your issue?
[image: image]
https://user-images.githubusercontent.com/32783170/58606233-81031180-824f-11e9-9f47-e895a0c6b858.png
If we don't hear back from you in a few business days, we'll assume that
your issue has been addressed and proceed with closing out this Git Issue.
If you need some time to check this on your end - no problem, you can
always comment on the closed issue and request that it be opened.
Hope that helps and please let us know if we can be of further assistance!
#please-close
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/MicrosoftDocs/azure-docs/issues/29526?email_source=notifications&email_token=AC6XXS23L7RM2F42OM3TQUTPX5C7VA5CNFSM4HGNVFY2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODWRIAMY#issuecomment-497188915,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AC6XXSYJD3S2VKSXK5ZU2KLPX5C7VANCNFSM4HGNVFYQ
.

--
David Bermingham
Senior Technical Evangelist
Microsoft Cloud and Datacenter MVP (2010 - present)
Phone :<PHONE_NUMBER> | Mobile:<PHONE_NUMBER>
Email<EMAIL_ADDRESS>

Hi @daveberm ,
The article associated with the Git Issue is: Content: https://docs.microsoft.com/en-us/azure/virtual-machines/windows/sql/virtual-machines-windows-sql-performance
By the way, I'm not sure it was intentional, but your contact information is visible on Github from a comment.
Hope that helps and please let me know if we can be of further assistance :)
Thanks!


Have you resolved the error of "Bacon2D for sailfishOS" ?

<EMAIL_ADDRESS>I got the same error and donot know how to resolve it.
Thank you.

hi @0312birdzhang. We were not aware about this problem, but have you tried the static linking approach (https://www.mail-archive.com/devel@lists.sailfishos.org/msg05875.html)?
Thanks for reporting,
Rodrigo


how to use graphql-tag for mocking ?

I See the Document http://dev.apollodata.com/tools/graphql-tools/mocking.html
This is the case
const query = `
   query tasksForUser {
      user(id: 6) { id, name }
   }
`;

But I want to use graphql-tag for mocking
const query = gql`
   query tasksForUser {
      user(id: 6) { id, name }
   }
`;

Is there any good way?

I write a Mock Function to deal with the problem


move queues to configmap

This is the one for our infra, we can leave the default for self hosted if that's what this is doing
    INGESTION_QUEUE: str = "default"
    ADHOC_QUEUE: str = "adhoc"
    RUN_RULES_QUEUE: str = "rules"

I know i need this because we use the self-hosted chart and we can't duplicate environment variables


Question about monitoring

Hello,
First of all, thank you for this great framework. I was using your entrypoints.openai.api_server implementation and I needed to use monitoring so I added
instrumentator = Instrumentator().instrument(app)

@app.on_event("startup")
async def _startup():
    instrumentator.expose(app)

Would it be useful to add it to your codebase, it requires prometheus-fastapi-instrumentator so I was not sure. If it will be useful I can open a PR for this

hey @simon-mo ! Asking this question here since it is related, let me know if you prefer me to open a new issue!
The prom metrics defined in https://github.com/trallnag/prometheus-fastapi-instrumentator are very useful and very specific for LLM usages, but they do not provide certain high level metrics to monitor the overall health of the API. As suggested in this issue, https://github.com/trallnag/prometheus-fastapi-instrumentator provides a very easy way to get some of this server specific metrics, like http_requests_total, http_request_size_bytes , http_request_duration_seconds . Would it be possible also provide these?

I believe there's a PR for this... cc @hmellor

Hi @martinbomio, the new metrics are being added in #2764


Minimal change for unbounded ranges

Closes #15
This is what I believe to be the minimal diff to support right-unbounded ranges with TextSize/TextRange. TextSize(u32::MAX) is reserved to mean ∞/unbounded, and the only functions that outright need to be adjusted to respect those semantics are checked_add (just replaced with saturating_add for now), len (return TextSize::INF for unbounded ranges), and the actual indexing.
This added semantics to TextSize does make the following impls questionable, and deserving of a new fresh look:

From<u32> for TextSize: u32::MAX is lossy
From<TextSize> for u32: TextSize::INF is lossy
TryFrom<usize> for TextSize: u32::MAX is lossy
From<TextSize> for u32: TextSize::INF is lossy

As for constructors taking advantage of this, I think a not-horrible option might be fn TextRangeTo(_: TextSize) -> TextRange and fn TextRangeFrom(_: TextSize) -> TextRange. Definitely... not traditional, but work to get the point across.

Not a fan of it, for roughly the same reason I was not a fan of reversed ranges: this does make one corner case significantly better, but it also expands the (conceptual) set of values a TextRange can have, making the invariants less strict. And that makes the common case slightly more awkward. But, because the common case is so much more common, I feel like overall this adds to awkwardness.
I think usize::from(ts).. and ..usize::from(ts) should be fine. We can also add more targeted hacks like s[ts.suffix()] and s[ts.prefix()] (the hacks returning std::ops::Range{To,From}<usize>).


I would like to ask how to reconstruct the approximate coefficient A?

I would like to ask how to reconstruct the approximate coefficient A?

Maybe I can use signal-D instead of A.
Thank you for your sharing！


Change all the print statements in the project to debugPrint

I want to work.

can I work on this?

sure @ayyysh04 , Not only change, but also do remove the unnecessary print statements which aren't relevant for the project now.

Fixed by #252


Statestore vault double-decoding encryption key!?

Describe the bug
I tried to run an ActorHost using the dice game example, but the application fails with an error:
[...]
2023-01-20 07:40:40.475 [dice@<IP_ADDRESS>]:[pid=<0.2241.0> ]:[notice]:Application proxy exited: exited in: Proxy.Application.start(:normal, [])
    ** (EXIT) an exception was raised:
        ** (RuntimeError) Failed to start proxy. {:error, {:shutdown, {:failed_to_start_child, Proxy.Supervisor, {:shutdown, {:failed_to_start_child, Sidecar.Supervisor, {:shutdown, {:failed_to_start_child, Sidecar.ProcessSupervisor, {:shutdown, {:failed_to_start_child, Statestores.Supervisor, {:shutdown, {:failed_to_start_child, Statestores.Vault, {:EXIT, {{:badmatch, {:error, {%ArgumentError{message: "non-alphabet character found: \".\" (byte 46)"}, [{Base, :bad_character!, 1, [file: 'lib/base.ex', line: 137]}, {Base, :"-decode64base!/2-lbc$^0/2-0-", 2, [file: 'lib/base.ex', line: 648]}, {Base, :decode64base!, 2, [file: 'lib/base.ex', line: 640]}, {Statestores.Vault, :init, 1, [file: 'lib/statestores/vault/vault.ex', line: 9]}, {:gen_server, :init_it, 2, [file: 'gen_server.erl', line: 851]}, {:gen_server, :init_it, 6, [file: 'gen_server.erl', line: 814]}, {:proc_lib, :init_p_do_apply, 3, [file: 'proc_lib.erl', line: 240]}]}}}, [{Statestores.Vault, :start_link, 1, [file: 'lib/cloak/vault.ex', line: 184]}, {:supervisor, :do_start_child_i, 3, [file: 'supervisor.erl', line: 414]}, {:supervisor, :do_start_child, 2, [file: 'supervisor.erl', line: 400]}, {:supervisor, :"-start_children/2-fun-0-", 3, [file: 'supervisor.erl', line: 384]}, {:supervisor, :children_map, 4, [file: 'supervisor.erl', line: 1250]}, {:supervisor, :init_children, 2, [file: 'supervisor.erl', line: 350]}, {:gen_server, :init_it, 2, [file: 'gen_server.erl', line: 851]}, {:gen_server, :init_it, 6, [file: 'gen_server.erl', line: 814]}]}}}}}}}}}}}}}
            (proxy 0.5.0-rc.12) lib/proxy/application.ex:28: Proxy.Application.start/2
            (kernel 8.5) application_master.erl:293: :application_master.start_it_old/4
[os_mon] memory supervisor port (memsup): Erlang has closed
2023-01-20 07:40:40.489 [dice@<IP_ADDRESS>]:[pid=<0.2298.0> ]:[notice]:    :alarm_handler: {:clear, :system_memory_high_watermark}
[os_mon] cpu supervisor port (cpu_sup): Erlang has closed
{"Kernel pid terminated",application_controller,"{application_start_failure,proxy,{bad_return,{{'Elixir.Proxy.Application',start,[normal,[]]},{'EXIT',{#{'__exception__' => true,'__struct__' => 'Elixir.RuntimeError',message => <<\"Failed to start proxy. {:error, {:shutdown, {:failed_to_start_child, Proxy.Supervisor, {:shutdown, {:failed_to_start_child, Sidecar.Supervisor, {:shutdown, {:failed_to_start_child, Sidecar.ProcessSupervisor, {:shutdown, {:failed_to_start_child, Statestores.Supervisor, {:shutdown, {:failed_to_start_child, Statestores.Vault, {:EXIT, {{:badmatch, {:error, {%ArgumentError{message: \\"non-alphabet character found: \\\\".\\\\" (byte 46)\\"}, [{Base, :bad_character!, 1, [file: 'lib/base.ex', line: 137]}, {Base, :\\"-decode64base!/2-lbc$^0/2-0-\\", 2, [file: 'lib/base.ex', line: 648]}, {Base, :decode64base!, 2, [file: 'lib/base.ex', line: 640]}, {Statestores.Vault, :init, 1, [file: 'lib/statestores/vault/vault.ex', line: 9]}, {:gen_server, :init_it, 2, [file: 'gen_server.erl', line: 851]}, {:gen_server, :init_it, 6, [file: 'gen_server.erl', line: 814]}, {:proc_lib, :init_p_do_apply, 3, [file: 'proc_lib.erl', line: 240]}]}}}, [{Statestores.Vault, :start_link, 1, [file: 'lib/cloak/vault.ex', line: 184]}, {:supervisor, :do_start_child_i, 3, [file: 'supervisor.erl', line: 414]}, {:supervisor, :do_start_child, 2, [file: 'supervisor.erl', line: 400]}, {:supervisor, :\\"-start_children/2-fun-0-\\", 3, [file: 'supervisor.erl', line: 384]}, {:supervisor, :children_map, 4, [file: 'supervisor.erl', line: 1250]}, {:supervisor, :init_children, 2, [file: 'supervisor.erl', line: 350]}, {:gen_server, :init_it, 2, [file: 'gen_server.erl', line: 851]}, {:gen_server, :init_it, 6, [file: 'gen_server.erl', line: 814]}]}}}}}}}}}}}}}\">>},[{'Elixir.Proxy.Application',start,2,[{file,\"lib/proxy/application.ex\"},{line,28}]},{application_master,start_it_old,4,[{file,\"application_master.erl\"},{line,293}]}]}}}}}"}
Kernel pid terminated (application_controller) ({application_start_failure,proxy,{bad_return,{{'Elixir.Proxy.Application',start,[normal,[]]},{'EXIT',{#{'__exception__' => true,'__struct__' => 'Elixir.RuntimeError',message => <<"Failed to start proxy. {:error, {:shutdown, {:failed_to_start_child, Proxy.Supervisor, {:shutdown, {:failed_to_start_child, Sidecar.Supervisor, {:shutdown, {:failed_to_start_child, Sidecar.ProcessSupervisor, {:shutdown, {:failed_to_start_child, Statestores.Supervisor, {:shutdown, {:failed_to_start_child, Statestores.Vault, {:EXIT, {{:badmatch, {:error, {%ArgumentError{message: \"non-alphabet character found: \\\".\\\" (byte 46)\"}, [{Base, :bad_character!, 1, [file: 'lib/base.ex', line: 137]}, {Base, :\"-decode64base!/2-lbc$^0/2-0-\", 2, [file: 'lib/base.ex', line: 648]}, {Base, :decode64base!, 2, [file: 'lib/base.ex', line: 640]}, {Statestores.Vault, :init, 1, [file: 'lib/statestores/vault/vault.ex', line: 9]}, {:gen_server, :init_it, 2, [file: 'gen_server.erl', line: 851]}, {:gen_se

Crash dump is being written to: erl_crash.dump...Segmentation fault (core dumped)

The interesting part seems to be this:
non-alphabet character found: "." (byte 46)

When looking at my statestore secret, it contains a . (dot).
Here is the current implementation that is failing:
https://github.com/eigr/spawn/blob/ec7236cc784c2095a8c8478afe185dbbe387c432/spawn_statestores/statestores/lib/statestores/vault/vault.ex#L4-L21
I would guess the application already gets the decoded value and there is no need to decode it again.
To Reproduce
apiVersion: spawn-eigr.io/v1
kind: ActorHost
metadata:
  name: dice
  labels:
    spawn-eigr.io.actor-system: yggdrasil
spec:
  host:
    image: eigr/dice-game-example:0.1.1
    ports:
      - name: http
        containerPort: 8080
        protocol: TCP

Expected behavior
No error :sweat_smile:
Kubernetes:

Version v1.25.2
Provider: Bare metal

Spawn Operator:

Version 0.5.0-rc.12

I am unsure about my initial though that the encryption key might already be decoded :thinking:
When passing my encryption key as plaintext to Base.decode64!/1, it complains about another character:
iex(1)> "*************" |> Base.decode64!()
** (ArgumentError) non-alphabet character found: ":" (byte 58)
    (elixir 1.14.2) lib/base.ex:137: Base.bad_character!/1
    (elixir 1.14.2) lib/base.ex:646: Base."-decode64base!/2-lbc$^0/2-0-"/2
    (elixir 1.14.2) lib/base.ex:640: Base.decode64base!/2
    iex:1: (file)

I am also wondering where the ENV-variable SPAWN_STATESTORE_KEY comes from :thinking: I can't find it in any resource on my cluster. Neither in the eigr-functions namespace, nor in my applications namespace yggdrasil.

@janpieper Variables are created by the operator and are added to a secret in the same namespace as your application. Then the variables are loaded in the deployment via envFrom.
First of all, we have to update the application to the latest SDK version as many things have evolved in the last couple of days.
@eliasdarruda can you help us by updating the dice game example?
Also send me how you generated the secret.

Variables are created by the operator and are added to a secret in the same namespace as your application. Then the variables are loaded in the deployment via envFrom.

Weird. I thought that I checked all resources for the ENV-variable, but couldn't find it :thinking: Now it is there :sweat_smile: A secret named yggdrasil-secret which contains the SPAWN_STATESTORE_KEY ENV-variable.

Also send me how you generated the secret.

I used a random string generator which generated me a string of 64 characters including characters like ${}[]()!:.;,#+*_, etc.

Variables are created by the operator and are added to a secret in the same namespace as your application. Then the variables are loaded in the deployment via envFrom.

Weird. I thought that I checked all resources for the ENV-variable, but couldn't find it thinking Now it is there sweat_smile A secret named yggdrasil-secret which contains the SPAWN_STATESTORE_KEY ENV-variable.

Also send me how you generated the secret.

I used a random string generator which generated me a string of 64 characters including characters like ${}[]()!:.;,#+*_, etc.

Please would you do a test for me?
Could you delete your ActorSystem, ActorHost and secret from the database initially created in the eigr-functions namespace and recreate it using openssl for encryptionkey creation?
I am uploading examples of how to do this below:
openssl rand -base64 32

Generate secret with random encryptionKey
kubectl create secret generic your-secret \
  --from-literal=database=eigr-functions-db \
  --from-literal=host='mysql' \
  --from-literal=port='3306' \
  --from-literal=username='admin' \
  --from-literal=password='admin' \
  --from-literal=encryptionKey=$(openssl rand -base64 32)

Don't forget to set the correct name for the secret.
To make sure we have a clean environment, could you also delete the tables created by Spawn in the database? This is just a precaution.

Could you delete your ActorSystem, ActorHost and secret from the database initially created in the eigr-functions namespace and recreate it using openssl for encryptionkey creation?

Using openssl rand -base64 32 works, because it echos a base64 string. So, the vault forces you to use an base64 encoded encryption key :thinking:

After recreating the secret you can apply the resources again.

Recreated everything :muscle: The dice pods are crashing. Seems like they cannot ping the system-yggdrasil service :thinking:
$ kubectl logs -n yggdrasil dice-5dd9bbc7d-m5xb6 | grep '^2023'
2023-01-20 13:17:15.940 [dice@<IP_ADDRESS>]:[pid=<0.2298.0> ]:[notice]:    :alarm_handler: {:set, {:system_memory_high_watermark, []}}
2023-01-20 13:17:16.011 [dice@<IP_ADDRESS>]:[pid=<0.2472.0> ]:[info]:OTLP exporter successfully initialized
2023-01-20 13:17:16.053 [dice@<IP_ADDRESS>]:[pid=<0.2496.0> ]:[info]:Loading 140 CA(s) from :otp store
2023-01-20 13:17:16.058 [dice@<IP_ADDRESS>]:[pid=<0.2567.0> ]:[info]:Loading configs
2023-01-20 13:17:16.058 [dice@<IP_ADDRESS>]:[pid=<0.2567.0> ]:[info]:Loading config: [app_name]:[dice]
2023-01-20 13:17:16.058 [dice@<IP_ADDRESS>]:[pid=<0.2567.0> ]:[info]:Loading config: [deployment_mode]:[sidecar]
2023-01-20 13:17:16.058 [dice@<IP_ADDRESS>]:[pid=<0.2567.0> ]:[info]:Loading config: [http_port]:[9001]
2023-01-20 13:17:16.058 [dice@<IP_ADDRESS>]:[pid=<0.2567.0> ]:[info]:Loading config: [node_host_interface]:[<IP_ADDRESS>]
2023-01-20 13:17:16.058 [dice@<IP_ADDRESS>]:[pid=<0.2567.0> ]:[info]:Loading config: [proxy_cluster_poling_interval]:[3000]
2023-01-20 13:17:16.058 [dice@<IP_ADDRESS>]:[pid=<0.2567.0> ]:[info]:Loading config: [proxy_cluster_strategy]:[kubernetes-dns]
2023-01-20 13:17:16.058 [dice@<IP_ADDRESS>]:[pid=<0.2567.0> ]:[info]:Loading config: [proxy_headless_service]:[system-yggdrasil]
2023-01-20 13:17:16.058 [dice@<IP_ADDRESS>]:[pid=<0.2567.0> ]:[info]:Loading config: [proxy_host_interface]:[<IP_ADDRESS>]
2023-01-20 13:17:16.058 [dice@<IP_ADDRESS>]:[pid=<0.2567.0> ]:[info]:Loading config: [proxy_sock_addr]:[/var/run/spawn.sock]
2023-01-20 13:17:16.058 [dice@<IP_ADDRESS>]:[pid=<0.2567.0> ]:[info]:Loading config: [proxy_uds_enable]:[false]
2023-01-20 13:17:16.058 [dice@<IP_ADDRESS>]:[pid=<0.2567.0> ]:[info]:Loading config: [pubsub_adapter]:[native]
2023-01-20 13:17:16.058 [dice@<IP_ADDRESS>]:[pid=<0.2567.0> ]:[info]:Loading config: [pubsub_adapter_nats_auth]:[false]
2023-01-20 13:17:16.058 [dice@<IP_ADDRESS>]:[pid=<0.2567.0> ]:[info]:Loading config: [pubsub_adapter_nats_auth_jwt]:[]
2023-01-20 13:17:16.058 [dice@<IP_ADDRESS>]:[pid=<0.2567.0> ]:[info]:Loading config: [pubsub_adapter_nats_auth_pass]:[admin]
2023-01-20 13:17:16.058 [dice@<IP_ADDRESS>]:[pid=<0.2567.0> ]:[info]:Loading config: [pubsub_adapter_nats_auth_type]:[simple]
2023-01-20 13:17:16.058 [dice@<IP_ADDRESS>]:[pid=<0.2567.0> ]:[info]:Loading config: [pubsub_adapter_nats_auth_user]:[admin]
2023-01-20 13:17:16.058 [dice@<IP_ADDRESS>]:[pid=<0.2567.0> ]:[info]:Loading config: [pubsub_adapter_nats_hosts]:[nats://<IP_ADDRESS>:4222]
2023-01-20 13:17:16.058 [dice@<IP_ADDRESS>]:[pid=<0.2567.0> ]:[info]:Loading config: [pubsub_adapter_nats_tls]:[false]
2023-01-20 13:17:16.058 [dice@<IP_ADDRESS>]:[pid=<0.2567.0> ]:[info]:Loading config: [user_function_host]:[<IP_ADDRESS>]
2023-01-20 13:17:16.058 [dice@<IP_ADDRESS>]:[pid=<0.2567.0> ]:[info]:Loading config: [user_function_port]:[9001]
2023-01-20 13:17:16.059 [dice@<IP_ADDRESS>]:[pid=<0.2572.0> ]:[info]:[Statestores.Config] Loading configs
2023-01-20 13:17:16.059 [dice@<IP_ADDRESS>]:[pid=<0.2572.0> ]:[info]:[Statestores.Config] Loading config: [proxy_db_host]:[postgresql-hl.yggdrasil.svc.k.in.p4r.link]
2023-01-20 13:17:16.059 [dice@<IP_ADDRESS>]:[pid=<0.2572.0> ]:[info]:[Statestores.Config] Loading config: [proxy_db_name]:[yggdrasil]
2023-01-20 13:17:16.059 [dice@<IP_ADDRESS>]:[pid=<0.2572.0> ]:[info]:[Statestores.Config] Loading config: [proxy_db_port]:[5432]
2023-01-20 13:17:16.059 [dice@<IP_ADDRESS>]:[pid=<0.2572.0> ]:[info]:[Statestores.Config] Loading config: [proxy_db_secret]:[****]
2023-01-20 13:17:16.059 [dice@<IP_ADDRESS>]:[pid=<0.2572.0> ]:[info]:[Statestores.Config] Loading config: [proxy_db_type]:[postgres]
2023-01-20 13:17:16.059 [dice@<IP_ADDRESS>]:[pid=<0.2572.0> ]:[info]:[Statestores.Config] Loading config: [proxy_db_username]:[yggdrasil]
2023-01-20 13:17:16.297 [dice@<IP_ADDRESS>]:[pid=<0.2572.0> ]:[info]:Migrations already up
2023-01-20 13:17:16.305 [dice@<IP_ADDRESS>]:[pid=<0.2607.0> ]:[info]:The function passed as a handler with ID {Telemetry.Metrics.ConsoleReporter, [:spawn, :actor], #PID<0.2607.0>} is a local function.
2023-01-20 13:17:16.305 [dice@<IP_ADDRESS>]:[pid=<0.2607.0> ]:[info]:The function passed as a handler with ID {Telemetry.Metrics.ConsoleReporter, [:spawn, :actor, :inflight_messages], #PID<0.2607.0>} is a local function.
2023-01-20 13:17:16.305 [dice@<IP_ADDRESS>]:[pid=<0.2606.0> ]:[warning]:Metric type summary is unsupported. Dropping measure. metric_name:=[:spawn, :invoke, :stop, :duration]
2023-01-20 13:17:16.305 [dice@<IP_ADDRESS>]:[pid=<0.2607.0> ]:[info]:The function passed as a handler with ID {Telemetry.Metrics.ConsoleReporter, [:spawn, :invoke, :stop], #PID<0.2607.0>} is a local function.
2023-01-20 13:17:16.309 [dice@<IP_ADDRESS>]:[pid=<0.2607.0> ]:[info]:The function passed as a handler with ID {Telemetry.Metrics.ConsoleReporter, [:vm, :memory], #PID<0.2607.0>} is a local function.
2023-01-20 13:17:16.314 [dice@<IP_ADDRESS>]:[pid=<0.2607.0> ]:[info]:The function passed as a handler with ID {Telemetry.Metrics.ConsoleReporter, [:vm, :system_info], #PID<0.2607.0>} is a local function.
2023-01-20 13:17:16.314 [dice@<IP_ADDRESS>]:[pid=<0.2607.0> ]:[info]:The function passed as a handler with ID {Telemetry.Metrics.ConsoleReporter, [:vm, :total_run_queue_lengths], #PID<0.2607.0>} is a local function.
2023-01-20 13:17:16.412 [dice@<IP_ADDRESS>]:[pid=<0.2608.0> ]:[debug]:Cluster topology [proxy: [strategy: Cluster.Strategy.Kubernetes.DNS, config: [service: "system-yggdrasil", application_name: "dice", polling_interval: 3000]]]
2023-01-20 13:17:16.561 [dice@<IP_ADDRESS>]:[pid=<0.2613.0> ]:[error]:[libcluster:proxy] lookup against system-yggdrasil failed: :nxdomain
2023-01-20 13:17:16.563 [dice@<IP_ADDRESS>]:[pid=<0.2613.0> ]:[error]:[libcluster:proxy] lookup against system-yggdrasil failed: :nxdomain
2023-01-20 13:17:16.577 [dice@<IP_ADDRESS>]:[pid=<0.2616.0> ]:[info]:Starting Horde.RegistryImpl with name Spawn.Cluster.Node.Registry
2023-01-20 13:17:16.582 [dice@<IP_ADDRESS>]:[pid=<0.2619.0> ]:[info]:Loading configs
2023-01-20 13:17:16.582 [dice@<IP_ADDRESS>]:[pid=<0.2619.0> ]:[info]:Loading config: [app_name]:[dice]
2023-01-20 13:17:16.582 [dice@<IP_ADDRESS>]:[pid=<0.2619.0> ]:[info]:Loading config: [deployment_mode]:[sidecar]
2023-01-20 13:17:16.582 [dice@<IP_ADDRESS>]:[pid=<0.2619.0> ]:[info]:Loading config: [http_port]:[9001]
2023-01-20 13:17:16.582 [dice@<IP_ADDRESS>]:[pid=<0.2619.0> ]:[info]:Loading config: [node_host_interface]:[<IP_ADDRESS>]
2023-01-20 13:17:16.582 [dice@<IP_ADDRESS>]:[pid=<0.2619.0> ]:[info]:Loading config: [proxy_cluster_poling_interval]:[3000]
2023-01-20 13:17:16.582 [dice@<IP_ADDRESS>]:[pid=<0.2619.0> ]:[info]:Loading config: [proxy_cluster_strategy]:[kubernetes-dns]
2023-01-20 13:17:16.582 [dice@<IP_ADDRESS>]:[pid=<0.2619.0> ]:[info]:Loading config: [proxy_headless_service]:[system-yggdrasil]
2023-01-20 13:17:16.583 [dice@<IP_ADDRESS>]:[pid=<0.2619.0> ]:[info]:Loading config: [proxy_host_interface]:[<IP_ADDRESS>]
2023-01-20 13:17:16.583 [dice@<IP_ADDRESS>]:[pid=<0.2619.0> ]:[info]:Loading config: [proxy_sock_addr]:[/var/run/spawn.sock]
2023-01-20 13:17:16.583 [dice@<IP_ADDRESS>]:[pid=<0.2619.0> ]:[info]:Loading config: [proxy_uds_enable]:[false]
2023-01-20 13:17:16.583 [dice@<IP_ADDRESS>]:[pid=<0.2619.0> ]:[info]:Loading config: [pubsub_adapter]:[native]
2023-01-20 13:17:16.583 [dice@<IP_ADDRESS>]:[pid=<0.2619.0> ]:[info]:Loading config: [pubsub_adapter_nats_auth]:[false]
2023-01-20 13:17:16.583 [dice@<IP_ADDRESS>]:[pid=<0.2619.0> ]:[info]:Loading config: [pubsub_adapter_nats_auth_jwt]:[]
2023-01-20 13:17:16.583 [dice@<IP_ADDRESS>]:[pid=<0.2619.0> ]:[info]:Loading config: [pubsub_adapter_nats_auth_pass]:[admin]
2023-01-20 13:17:16.583 [dice@<IP_ADDRESS>]:[pid=<0.2619.0> ]:[info]:Loading config: [pubsub_adapter_nats_auth_type]:[simple]
2023-01-20 13:17:16.583 [dice@<IP_ADDRESS>]:[pid=<0.2619.0> ]:[info]:Loading config: [pubsub_adapter_nats_auth_user]:[admin]
2023-01-20 13:17:16.583 [dice@<IP_ADDRESS>]:[pid=<0.2619.0> ]:[info]:Loading config: [pubsub_adapter_nats_hosts]:[nats://<IP_ADDRESS>:4222]
2023-01-20 13:17:16.583 [dice@<IP_ADDRESS>]:[pid=<0.2619.0> ]:[info]:Loading config: [pubsub_adapter_nats_tls]:[false]
2023-01-20 13:17:16.583 [dice@<IP_ADDRESS>]:[pid=<0.2619.0> ]:[info]:Loading config: [user_function_host]:[<IP_ADDRESS>]
2023-01-20 13:17:16.583 [dice@<IP_ADDRESS>]:[pid=<0.2619.0> ]:[info]:Loading config: [user_function_port]:[9001]
2023-01-20 13:17:16.591 [dice@<IP_ADDRESS>]:[pid=<0.2627.0> ]:[debug]:Starting Highlander with Actors.Actor.InvocationScheduler as uniqueness key
2023-01-20 13:17:16.593 [dice@<IP_ADDRESS>]:[pid=<0.2569.0> ]:[info]:Running plug: Proxy.Router, sock: nil with Bandit 0.5.6 at <IP_ADDRESS>:9001 (http)
2023-01-20 13:17:16.593 [dice@<IP_ADDRESS>]:[pid=<0.2566.0> ]:[info]:Proxy started successfully in 535.499 milliseconds
2023-01-20 13:17:19.009 [dice@<IP_ADDRESS>]:[pid=<0.2411.0> ]:[debug]:Tzdata polling for update.
2023-01-20 13:17:19.568 [dice@<IP_ADDRESS>]:[pid=<0.2613.0> ]:[error]:[libcluster:proxy] lookup against system-yggdrasil failed: :nxdomain
2023-01-20 13:17:19.574 [dice@<IP_ADDRESS>]:[pid=<0.2613.0> ]:[error]:[libcluster:proxy] lookup against system-yggdrasil failed: :nxdomain
2023-01-20 13:17:19.940 [dice@<IP_ADDRESS>]:[pid=<0.2411.0> ]:[info]:tzdata release in place is from a file last modified Fri, 22 Oct 2021 02:20:47 GMT. Release file on server was last modified Tue, 29 Nov 2022 17:25:53 GMT.
2023-01-20 13:17:19.941 [dice@<IP_ADDRESS>]:[pid=<0.2411.0> ]:[debug]:Tzdata downloading new data from https://data.iana.org/time-zones/tzdata-latest.tar.gz
2023-01-20 13:17:20.547 [dice@<IP_ADDRESS>]:[pid=<0.2411.0> ]:[debug]:Tzdata data downloaded. Release version 2022g.
2023-01-20 13:17:21.240 [dice@<IP_ADDRESS>]:[pid=<0.2406.0> ]:[info]:Tzdata has updated the release from 2021e to 2022g
2023-01-20 13:17:21.240 [dice@<IP_ADDRESS>]:[pid=<0.2406.0> ]:[debug]:Tzdata deleting ETS table for version 2021e
2023-01-20 13:17:21.242 [dice@<IP_ADDRESS>]:[pid=<0.2406.0> ]:[debug]:Tzdata deleting ETS table file for version 2021e
2023-01-20 13:17:32.456 [dice@<IP_ADDRESS>]:[pid=<0.2610.0> ]:[debug]:Received :nodeup event from<EMAIL_ADDRESS>2023-01-20 13:17:32.661 [dice@<IP_ADDRESS>]:[pid=<0.2701.0> ]:[info]:global: Name conflict terminating {Actors.Actor.InvocationScheduler, #PID<50324.2653.0>}
2023-01-20 13:17:49.585 [dice@<IP_ADDRESS>]:[pid=<0.2613.0> ]:[error]:[libcluster:proxy] lookup against system-yggdrasil failed: :nxdomain
2023-01-20 13:17:49.591 [dice@<IP_ADDRESS>]:[pid=<0.2613.0> ]:[error]:[libcluster:proxy] lookup against system-yggdrasil failed: :nxdomain
2023-01-20 13:17:50.470 [dice@<IP_ADDRESS>]:[pid=<0.2610.0> ]:[debug]:Received :nodedown event from<EMAIL_ADDRESS>2023-01-20 13:17:52.589 [dice@<IP_ADDRESS>]:[pid=<0.2613.0> ]:[error]:[libcluster:proxy] lookup against system-yggdrasil failed: :nxdomain
2023-01-20 13:17:52.594 [dice@<IP_ADDRESS>]:[pid=<0.2613.0> ]:[error]:[libcluster:proxy] lookup against system-yggdrasil failed: :nxdomain
2023-01-20 13:17:55.599 [dice@<IP_ADDRESS>]:[pid=<0.2613.0> ]:[error]:[libcluster:proxy] lookup against system-yggdrasil failed: :nxdomain
2023-01-20 13:17:55.605 [dice@<IP_ADDRESS>]:[pid=<0.2613.0> ]:[error]:[libcluster:proxy] lookup against system-yggdrasil failed: :nxdomain
2023-01-20 13:17:58.602 [dice@<IP_ADDRESS>]:[pid=<0.2613.0> ]:[error]:[libcluster:proxy] lookup against system-yggdrasil failed: :nxdomain
2023-01-20 13:17:58.607 [dice@<IP_ADDRESS>]:[pid=<0.2613.0> ]:[error]:[libcluster:proxy] lookup against system-yggdrasil failed: :nxdomain
2023-01-20 13:18:01.604 [dice@<IP_ADDRESS>]:[pid=<0.2613.0> ]:[error]:[libcluster:proxy] lookup against system-yggdrasil failed: :nxdomain
2023-01-20 13:18:01.608 [dice@<IP_ADDRESS>]:[pid=<0.2613.0> ]:[error]:[libcluster:proxy] lookup against system-yggdrasil failed: :nxdomain
2023-01-20 13:18:04.615 [dice@<IP_ADDRESS>]:[pid=<0.2613.0> ]:[error]:[libcluster:proxy] lookup against system-yggdrasil failed: :nxdomain
2023-01-20 13:18:04.623 [dice@<IP_ADDRESS>]:[pid=<0.2613.0> ]:[error]:[libcluster:proxy] lookup against system-yggdrasil failed: :nxdomain
2023-01-20 13:18:07.621 [dice@<IP_ADDRESS>]:[pid=<0.2613.0> ]:[error]:[libcluster:proxy] lookup against system-yggdrasil failed: :nxdomain
2023-01-20 13:18:07.625 [dice@<IP_ADDRESS>]:[pid=<0.2613.0> ]:[error]:[libcluster:proxy] lookup against system-yggdrasil failed: :nxdomain
2023-01-20 13:18:10.627 [dice@<IP_ADDRESS>]:[pid=<0.2613.0> ]:[error]:[libcluster:proxy] lookup against system-yggdrasil failed: :nxdomain
2023-01-20 13:18:10.633 [dice@<IP_ADDRESS>]:[pid=<0.2613.0> ]:[error]:[libcluster:proxy] lookup against system-yggdrasil failed: :nxdomain
2023-01-20 13:18:13.634 [dice@<IP_ADDRESS>]:[pid=<0.2613.0> ]:[error]:[libcluster:proxy] lookup against system-yggdrasil failed: :nxdomain
2023-01-20 13:18:13.638 [dice@<IP_ADDRESS>]:[pid=<0.2613.0> ]:[error]:[libcluster:proxy] lookup against system-yggdrasil failed: :nxdomain
2023-01-20 13:18:16.642 [dice@<IP_ADDRESS>]:[pid=<0.2613.0> ]:[error]:[libcluster:proxy] lookup against system-yggdrasil failed: :nxdomain
2023-01-20 13:18:16.648 [dice@<IP_ADDRESS>]:[pid=<0.2613.0> ]:[error]:[libcluster:proxy] lookup against system-yggdrasil failed: :nxdomain
2023-01-20 13:18:19.648 [dice@<IP_ADDRESS>]:[pid=<0.2613.0> ]:[error]:[libcluster:proxy] lookup against system-yggdrasil failed: :nxdomain
2023-01-20 13:18:19.655 [dice@<IP_ADDRESS>]:[pid=<0.2613.0> ]:[error]:[libcluster:proxy] lookup against system-yggdrasil failed: :nxdomain
2023-01-20 13:18:22.657 [dice@<IP_ADDRESS>]:[pid=<0.2613.0> ]:[error]:[libcluster:proxy] lookup against system-yggdrasil failed: :nxdomain
2023-01-20 13:18:22.661 [dice@<IP_ADDRESS>]:[pid=<0.2613.0> ]:[error]:[libcluster:proxy] lookup against system-yggdrasil failed: :nxdomain
2023-01-20 13:18:25.663 [dice@<IP_ADDRESS>]:[pid=<0.2613.0> ]:[error]:[libcluster:proxy] lookup against system-yggdrasil failed: :nxdomain
2023-01-20 13:18:25.669 [dice@<IP_ADDRESS>]:[pid=<0.2613.0> ]:[error]:[libcluster:proxy] lookup against system-yggdrasil failed: :nxdomain
2023-01-20 13:18:28.668 [dice@<IP_ADDRESS>]:[pid=<0.2613.0> ]:[error]:[libcluster:proxy] lookup against system-yggdrasil failed: :nxdomain
2023-01-20 13:18:28.678 [dice@<IP_ADDRESS>]:[pid=<0.2613.0> ]:[error]:[libcluster:proxy] lookup against system-yggdrasil failed: :nxdomain
2023-01-20 13:18:31.675 [dice@<IP_ADDRESS>]:[pid=<0.2613.0> ]:[error]:[libcluster:proxy] lookup against system-yggdrasil failed: :nxdomain
2023-01-20 13:18:31.685 [dice@<IP_ADDRESS>]:[pid=<0.2613.0> ]:[error]:[libcluster:proxy] lookup against system-yggdrasil failed: :nxdomain
2023-01-20 13:18:34.679 [dice@<IP_ADDRESS>]:[pid=<0.2613.0> ]:[error]:[libcluster:proxy] lookup against system-yggdrasil failed: :nxdomain
2023-01-20 13:18:34.689 [dice@<IP_ADDRESS>]:[pid=<0.2613.0> ]:[error]:[libcluster:proxy] lookup against system-yggdrasil failed: :nxdomain
2023-01-20 13:18:37.682 [dice@<IP_ADDRESS>]:[pid=<0.2613.0> ]:[error]:[libcluster:proxy] lookup against system-yggdrasil failed: :nxdomain
2023-01-20 13:18:37.691 [dice@<IP_ADDRESS>]:[pid=<0.2613.0> ]:[error]:[libcluster:proxy] lookup against system-yggdrasil failed: :nxdomain
2023-01-20 13:18:40.698 [dice@<IP_ADDRESS>]:[pid=<0.2613.0> ]:[error]:[libcluster:proxy] lookup against system-yggdrasil failed: :nxdomain
2023-01-20 13:18:40.701 [dice@<IP_ADDRESS>]:[pid=<0.2613.0> ]:[error]:[libcluster:proxy] lookup against system-yggdrasil failed: :nxdomain
2023-01-20 13:18:43.706 [dice@<IP_ADDRESS>]:[pid=<0.2613.0> ]:[error]:[libcluster:proxy] lookup against system-yggdrasil failed: :nxdomain
2023-01-20 13:18:43.713 [dice@<IP_ADDRESS>]:[pid=<0.2613.0> ]:[error]:[libcluster:proxy] lookup against system-yggdrasil failed: :nxdomain
2023-01-20 13:18:46.716 [dice@<IP_ADDRESS>]:[pid=<0.2613.0> ]:[error]:[libcluster:proxy] lookup against system-yggdrasil failed: :nxdomain
2023-01-20 13:18:46.723 [dice@<IP_ADDRESS>]:[pid=<0.2613.0> ]:[error]:[libcluster:proxy] lookup against system-yggdrasil failed: :nxdomain
2023-01-20 13:18:49.720 [dice@<IP_ADDRESS>]:[pid=<0.2613.0> ]:[error]:[libcluster:proxy] lookup against system-yggdrasil failed: :nxdomain
2023-01-20 13:18:49.725 [dice@<IP_ADDRESS>]:[pid=<0.2613.0> ]:[error]:[libcluster:proxy] lookup against system-yggdrasil failed: :nxdomain
2023-01-20 13:18:52.725 [dice@<IP_ADDRESS>]:[pid=<0.2613.0> ]:[error]:[libcluster:proxy] lookup against system-yggdrasil failed: :nxdomain

Using openssl rand -base64 32 works, because it echos a base64 string. So, the vault forces you to use an base64 encoded encryption key thinking
After recreating the secret you can apply the resources again.
Recreated everything muscle The dice pods are crashing. Seems like they cannot ping the system-yggdrasil service thinking

Na verdade strong_random_bytes do erlang tbm funcionaria. Mas você teria que transformar em base64 pois é assim que a biblioteca manto necessita.
https://hexdocs.pm/cloak/cheatsheet.html

Recreated everything muscle The dice pods are crashing. Seems like they cannot ping the system-yggdrasil service thinking

Here, the generated docker image of the application is probably not correctly configuring the name for the distributed erlang. As soon as I have some time I will redo this example and it will work accordingly.

Just in case, send me again how the services were in kubernetes. Including the description of the Headless Service service please.

Na verdade strong_random_bytes do erlang tbm funcionaria. Mas você teria que transformar em base64 pois é assim que a biblioteca manto necessita.

:brazil: :us_outlying_islands: deepl.com helped :sweat_smile: thanks

Just in case, send me again how the services were in kubernetes. Including the description of the Headless Service service please.

$ kubectl get services -n yggdrasil
NAME                 TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                      AGE
dice                 ClusterIP   <IP_ADDRESS>    <none>        8080/TCP,9000/TCP,9001/TCP   153m
postgresql           ClusterIP   <IP_ADDRESS>   <none>        5432/TCP                     156m
postgresql-hl        ClusterIP   None             <none>        5432/TCP                     156m
postgresql-metrics   ClusterIP   <IP_ADDRESS>    <none>        9187/TCP                     156m
system-yggdrasil     ClusterIP   None             <none>        4369/TCP                     155m

$ kubectl get services system-yggdrasil -o yaml -n yggdrasil
apiVersion: v1
kind: Service
metadata:
  creationTimestamp: "2023-01-20T13:14:06Z"
  labels:
    spawn-eigr.io/controller.version: 0.0.0-local.dev
    svc-cluster-name: system-yggdrasil
  name: system-yggdrasil
  namespace: yggdrasil
  ownerReferences:
  - apiVersion: spawn-eigr.io/v1
    blockOwnerDeletion: false
    controller: true
    kind: ActorSystem
    name: yggdrasil
    uid: f5b2e0fa-3d62-408a-91d5-37bf0298440f
  resourceVersion: "107865161"
  uid: 8fd410bd-5c4d-4315-8b14-78655d8d5d80
spec:
  clusterIP: None
  clusterIPs:
  - None
  internalTrafficPolicy: Cluster
  ipFamilies:
  - IPv4
  ipFamilyPolicy: SingleStack
  ports:
  - name: epmd
    port: 4369
    protocol: TCP
    targetPort: epmd
  selector:
    actor-system: yggdrasil
  sessionAffinity: None
  type: ClusterIP
status:
  loadBalancer: {}

Sorry @janpieper.
I'm analyzing your case together with @eliasdarruda, we'll give you a position shortly. Thank you for sending the commands.

Hello @janpieper !
@eliasdarruda and I made some adjustments to the example you try again applying the following CRD
---
apiVersion: spawn-eigr.io/v1
kind: ActorHost
metadata:
   labels:
     spawn-eigr.io.actor-system: game-system
   name: spawn-dice-game
   namespace: default
spec:
   autoscaler:
     max: 1
   host:
     embedded: true
     image: eigr/dice-game-example:0.5.3
     ports:
       - name: "http"
         containerPort: 8800

NOTE: Remember to change the system to match your system.

To access the application you can port-forward the application service.
kubectl port-forward svc/spawn-dice-game 8800:8800

NOTE:  To be able to play on the same machine you need to open two sessions in the browser, so one of them must be opened using a private tab

Sorry for the delay, but I haven't had time to look into this at the weekend...
I applied to changed ActorHost, but the pod is crashing with the following error:
[notice] Application dice exited: Dice.Application.start(:normal, []) returned an error: shutdown: failed to start child: SpawnSdk.System.Supervisor
    ** (EXIT) shutdown: failed to start child: Sidecar.Supervisor
        ** (EXIT) shutdown: failed to start child: Sidecar.ProcessSupervisor
            ** (EXIT) shutdown: failed to start child: Statestores.Supervisor
                ** (EXIT) an exception was raised:
                    ** (UndefinedFunctionError) function Statestores.Adapters.Postgres.default_port/0 is undefined (module Statestores.Adapters.Postgres is not available)
                        Statestores.Adapters.Postgres.default_port()
                        (spawn_statestores 0.5.0-rc.12) lib/statestores/config.ex:17: Statestores.Config.load/0
                        (spawn_statestores 0.5.0-rc.12) lib/statestores/supervisor.ex:21: Statestores.Supervisor.init/1
                        (stdlib <IP_ADDRESS>) supervisor.erl:330: :supervisor.init/1
                        (stdlib <IP_ADDRESS>) gen_server.erl:423: :gen_server.init_it/2
                        (stdlib <IP_ADDRESS>) gen_server.erl:390: :gen_server.init_it/6
                        (stdlib <IP_ADDRESS>) proc_lib.erl:226: :proc_lib.init_p_do_apply/3
{"Kernel pid terminated",application_controller,"{application_start_failure,dice,{{shutdown,{failed_to_start_child,'Elixir.SpawnSdk.System.Supervisor',{shutdown,{failed_to_start_child,'Elixir.Sidecar.Supervisor',{shutdown,{failed_to_start_child,'Elixir.Sidecar.ProcessSupervisor',{shutdown,{failed_to_start_child,'Elixir.Statestores.Supervisor',{undef,[{'Elixir.Statestores.Adapters.Postgres',default_port,[],[]},{'Elixir.Statestores.Config',load,0,[{file,\"lib/statestores/config.ex\"},{line,17}]},{'Elixir.Statestores.Supervisor',init,1,[{file,\"lib/statestores/supervisor.ex\"},{line,21}]},{supervisor,init,1,[{file,\"supervisor.erl\"},{line,330}]},{gen_server,init_it,2,[{file,\"gen_server.erl\"},{line,423}]},{gen_server,init_it,6,[{file,\"gen_server.erl\"},{line,390}]},{proc_lib,init_p_do_apply,3,[{file,\"proc_lib.erl\"},{line,226}]}]}}}}}}}}},{'Elixir.Dice.Application',start,[normal,[]]}}}"}
Kernel pid terminated (application_controller) ({application_start_failure,dice,{{shutdown,{failed_to_start_child,'Elixir.SpawnSdk.System.Supervisor',{shutdown,{failed_to_start_child,'Elixir.Sidecar.Supervisor',{shutdown,{failed_to_start_child,'Elixir.Sidecar.ProcessSupervisor',{shutdown,{failed_to_start_child,'Elixir.Statestores.Supervisor',{undef,[{'Elixir.Statestores.Adapters.Postgres',default_port,[],[]},{'Elixir.Statestores.Config',load,0,[{file,"lib/statestores/config.ex"},{line,17}]},{'Elixir.Statestores.Supervisor',init,1,[{file,"lib/statestores/supervisor.ex"},{line,21}]},{supervisor,init,1,[{file,"supervisor.erl"},{line,330}]},{gen_server,init_it,2,[{file,"gen_server.erl"},{line,423}]},{gen_server,init_it,6,[{file,"gen_server.erl"},{line,390}]},{proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,226}]}]}}}}}}}}},{'Elixir.Dice.Application',start,[normal,[]]}}})

Good Morning @janpieper!

Sorry for the delay, but I haven't had time to look into this at the weekend...

At your pace!

I applied to changed ActorHost, but the pod is crashing with the following error:
[notice] Application dice exited: Dice.Application.start(:normal, []) returned an error: shutdown: failed to start child: SpawnSdk.System.Supervisor
    ** (EXIT) shutdown: failed to start child: Sidecar.Supervisor
        ** (EXIT) shutdown: failed to start child: Sidecar.ProcessSupervisor
            ** (EXIT) shutdown: failed to start child: Statestores.Supervisor
                ** (EXIT) an exception was raised:
                    ** (UndefinedFunctionError) function Statestores.Adapters.Postgres.default_port/0 is undefined (module Statestores.Adapters.Postgres is not available)
                        Statestores.Adapters.Postgres.default_port()
                        (spawn_statestores 0.5.0-rc.12) lib/statestores/config.ex:17: Statestores.Config.load/0

Edit: Most likely because I am using a PostgreSQL database, but the dice game wants a MySQL as statestore?

Yes, in that case you need to add the statestore dependency for postgres in your mix.exs file. I don't know if you've already done this, but as the original example is in MySql maybe that's the problem.
I would also recommend you to update the application and Operator to and from the latest version v0.5.0-rc.13. This version has break changes with previous versions, but in the example of the game the .yaml files were updated so it should be fine for you to follow the steps.
@eliasdarruda and I ran this version several times over the weekend so it should be fine with it.

@janpieper Hello, just out of curiosity, was I able to upload the application?

Who is "I"? :wink: :thinking:
I don't know whether you were able to start the application :wink:
I wasn't, because I am using a PostgreSQL database, but the dice game expects a MySQL :thinking:
I would need to modify the dice game, build a new docker image etc. to use a PostgreSQL and this feels like too much work :thinking: I think I'll temporarily set up a MySQL to get the dice game working to see how it works etc.

Hello @janpieper, how are you? Hope so.
Sorry I got the correct pronoun wrong, I'm sorry about that. For the little dedicated time I have, I can make mistakes by typing too fast. I hope this is understandable.
I've generated an new image for you eigr/dice-game-example-postgres:0.5.3 let me know if that helps.
Thanks

Works :wink: When I change the container port in ActorHost from 8080 to 8800.

Very good!
Weird because this should already be the correct port https://github.com/eigr-labs/spawn_game_example/blob/fead411195bd6b692200273903f6529a7b915779/.k8s/host.yaml#L15
Anyway glad it worked!

Awesome @janpieper. If you have any questions or suggestions feel free to contact us here or on our Discord


syntax highlighting code output in REPL

Hey just wanted to submit a additional readme item that users might appreciate.
I managed to pipe the REPL into the "bat" command
https://github.com/sharkdp/bat
and can still use the REPL iteratively but have syntax highlighting of the outputted code from sgpt.

sgpt --code --repl temp | bat -l scala --paging=never

ref this part of the "bat" readme:
https://github.com/sharkdp/bat#tail--f
Cheers!

https://github.com/TheR1D/shell_gpt/discussions/200


Rebuilding dependencies take forever

When my build run it installs everything and runs fine but when it comes to building, it starts to rebuild native dependencies and does that forever untill github stops the action because of running for more than 6 hours.
It is rebuilding glasstron and node-pty and to add it runs perfectly fine on my windows 10 computer.

Can verify. This action is pretty much unusable with this issue.

same here, in my case it also fails on my computer with Windows 11 WSL so I think it's an issue related to the electron-builder package

same here, in my case it also fails on my computer with Windows 11 WSL so I think it's an issue related to the electron-builder package

i have wsl but never tried it , but running the command on a remote linux instance like gitpod, electron builder works. it maybe the environment is not setup right for node gyp https://github.com/nodejs/node-gyp#on-unix

I also just started randomly experiencing this issue after adding a node module that had a native dependency (found by running find node_modules -type f -name "*.node" 2>/dev/null | grep -v "obj\.target" in my project directory).
I'm building for arm64, x64 on Mac and a universal NSIS for windows.
mac:
  target:
  - target: zip
    arch: arm64
  - target: zip
    arch: x64
  - target: dmg
    arch: x64
  - target: dmg
    arch: arm64
win:
  target:
  - target: nsis
    arch:
    - x64
    - ia32

In my case, I am using electron-builder v22.14.13 and a module that has an optional native dependency. I ended up forking this repo/action and added --no-optional to npm install. I also forked the offending module with the native optional dependency and removed said optional native dependency.
My builds are now succeeding, as is notarization and publishing after doing the above. Obviously this isn't an amazing solution for the actual problem, but it did allow me to get the app to production.
Side question: when utilizing this Action should we be explicitly noting the version to use? The README example has uses: samuelmeuli/action-electron-builder@v1 but I see the latest release is v1.6.0.

@d3v0ps

same here, in my case it also fails on my computer with Windows 11 WSL so I think it's an issue related to the electron-builder package

I'm sure you've already tried it, but have you made sure to delete your node_modules directory and re-run npm install directly from a WSL terminal? I've run into issues in the past when native modules for the wrong arch or OS are hanging around because I accidentally ran the install command in the wrong environment.

I don't think a resolution was ever provided, here's mine. I also found that action-electron-builder hangs when trying to build native dependencies (e.g., node-pty). With all props to action-electron-builder, which has been useful to many, I think the best answer now is that you don't need it - just write what you need into your Action YAML.
Below are essential details of the two files needed to create a GitHub Action that:

executes when package.json (and thus the app version) changes
uses npm to build electron on whatever OS you choose to include
compiles native dependencies correctly
uses the appropriate signing certificates you saved as secrets for each platform

I have tested everything EXCEPT the signing certificates, but that's how you set those environment variables into the two conditional "run" steps.
package.json
{
  "version": "v0.0.0",
  "scripts": {
    "release": "electron-builder --publish always"
  },
  "devDependencies": {
    "electron": "^19.0.10",
    "electron-builder": "^23.1.0"
  },
  "build": {
    "win": {
      "publish": "github"
    },
    "mac": {
      "publish": "github"
    }
  }
}

.github/workflows/electron-builder.yml
name: "Electron Builder"
on:
  push:
    paths:
      - 'package.json' # only release when version changes
  workflow_dispatch: # allow manual triggering of action
env:
  GH_TOKEN: ${{ secrets.github_token }} # allow electron-builder to publish a draft release
jobs:
  ci:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [macos-latest, windows-latest] # add ubuntu-latest if needed
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-node@v3
        with:
          node-version: 16
          cache: 'npm'
      - run: npm clean-install
      # - run: npm run build # if you need it
      - name: Run npm run release (Windows) # only executes on windows-latest
        if: runner.os == 'Windows'
        env:
          CSC_LINK: ${{ secrets.win_certs }}
          CSC_KEY_PASSWORD: ${{ secrets.win_certs_password }}
        run: npm run release
      - name: Run npm run release (macOS) # only executes on macos-latest
        if: runner.os == 'macOS'
        env:
          CSC_LINK: ${{ secrets.mac_certs }}
          CSC_KEY_PASSWORD: ${{ secrets.mac_certs_password }}
        run: npm run release

This screenshot shows how you get one job per OS where only the relevant 'release' step executes.

Thanks to action-electron-builder - some of these details were gleaned by reading its index.js file.

I just remember I recently wrote my own github action based on electron builder as if I was running it on my native machine.
you can run electron-builder --publish always and provide your github secret like this:
env:
  GH_TOKEN: ${{ secrets.GH_TOKEN }}

I haven't tried it with the original project the issue was with, but it should work.
This makes a draft release with all the files put in the release, so just add the description to the release and publish.
here is the custom action  I wrote.

so, for anyone with this issue read @wilsonte-umich comment on this issue


floats as inputs of QT.QColor

Hi Sam, we found the following bug in a mac computer:

Looks like casting to int the inputs fix the problem, but I'm not sure if that is the proper solution.
I can ask for details if you need them.
Cheers
Fer

Hi Fernando,
Thanks for  report
Could you try at line 58 QT.QColor(int(r*255), int(g*255), int(b*255)) ?
And if it fix make a PR ?


Update for boxed rep

Do not merge

@bgamari: Now that the final version of the BoxedRep proposal has been merged, do we still need this PR (or a rebased form of it)?

On the ghc-head branch, I see commit bd206f09715420aaa62341c9a96411a684eee6e9, so I think this PR is no longer needed. Closing.


Fix security issue related to blank target

It is not an issue but as said from the logs, there is a security issue with target=_blank so I fixed it temporarely until something is decided what to do

thankyou sir


chore: update healthcheck

health api was changed in #22927
- *health#report_error* *vim.health.report_error()*	Use |vim.health.error()| instead.
- *health#report_info* *vim.health.report_info()*	Use |vim.health.info()| instead.
- *health#report_ok* *vim.health.report_ok()*		Use |vim.health.ok()| instead.
- *health#report_start* *vim.health.report_start()*	Use |vim.health.start()| instead.
- *health#report_warn* *vim.health.report_warn()*	Use |vim.health.warn()| instead.

This will break noice for older Neovim versions.

🫡Fair point. I had thought of that, but since using the nightly build is highly recommended, I thought this would be pretty safe.

thanks!


ObjectID error message should use string, not buffer

const expect = require('chai').expect;
const ObjectID = require('mongodb').ObjectID;

test('ObjectId comparison', () => {
  expect(ObjectID()).to.deep.equal(ObjectID());
});

actual
       1 | {
       2 |   "_bsontype": "ObjectID"
       3 |   "id": [Buffer: [
       4 |     94
       5 |     191
       6 |     47
       7 |     62
       8 |     96
       9 |     28
      10 |     42
      11 |     17
      12 |     32
      13 |     235
      14 |     123
      15 |     242243
      16 |   ]]
      17 | }

expected (8/7 are red/green)
       1 | 5ebf2fcf6f2d42116bef09f87

Please file this request in the chai repository

Chai mantainers(?) say its the reporter responsibility.
https://github.com/chaijs/chai/issues/469
If I try catch the chai expect, I get a pretty string like I wanted.
I could create a custom reporter, but I think t should be default behavior.


Bisphenols

Wanted to flag some important changes here...

most importantly, there was an edge case (or maybe not edge case...) where the way columns were selected for checking spikes, relevance filtering, and the quantile rule was not getting the correct samples, leading to way higher numbers of genes being filtered.
to help troubleshoot things I've been migrating some stuff to plotly - the PCAs (makes it easier to identify outlier samples by name) and gene plots.
gene plots now also have a somewhat convoluted (but as far as I can see, one of the only ways in a static HTML format) method for selecting from the top ~1000 genes by fold change to plot in boxplot format, similar to the static gene plots. Mainly useful for dose-response modeling studies, but pretty helpful when people want to see their 'favorite gene' from the study and it isn't in the top 20. Room for improvement but I think it's a good start!

I've attempted to organize the commits in a logical way so you can look at them in the relevant chunks. I'm learning!

I think this is done and ready to merge


seems very unhappy with ip starting with 10.0.0.x

just throws a huge error

im running a homebridge server on a raspberry pi on my local network

can you open the same url in browser and login?

@sergey-tihon yes, http://<IP_ADDRESS>:8581/ opens up my homebridge UI for me and i can log in

Please try without trailing /, just http://<IP_ADDRESS>:8581

the slash was my issue sorry for the confusion

Anyway, thank you for reporting this issue. It will be auto-removed in the next version


Istio 1.1 Galley not working from helm install

Describe the bug
Galley pods are crashing with following logs :

2019-03-20T14:39:10.105364Z     info    Galley validation started with
DomainSuffix:
Port: 443
CertFile: /etc/certs/cert-chain.pem
KeyFile: /etc/certs/key.pem
WebhookConfigFile: /etc/config/validatingwebhookconfiguration.yaml
CACertFile: /etc/certs/root-cert.pem
DeploymentAndServiceNamespace: istio-system
WebhookName: istio-galley
DeploymentName: istio-galley
ServiceName: istio-galley
EnableValidation: true
2019-03-20T14:39:10.145306Z     info    validation      Checking if istio-system/istio-galley is ready before registering webhook configuration
2019-03-20T14:39:10.146617Z     info    validation      https handler for validation webhook is not ready: HTTP request to https://<IP_ADDRESS>:443/ready failed: Get https://<IP_ADDRESS>:443/ready: dial tcp <IP_ADDRESS>:443: connect: connection refused
2019-03-20T14:39:10.246505Z     warn    validation      istio-system/istio-galley endpoint not ready: no ready addresses
2019-03-20T14:39:11.160783Z     info    validation      https handler for validation webhook is ready
2019-03-20T14:39:11.213421Z     warn    kube    authorizationpolicies.rbac.istio.io/v1alpha1 resource type not found

Expected behavior
Galley pods should be running without issue
Steps to reproduce the bug
cf install steps
Version
Client Version: version.Info{Major:"1", Minor:"13", GitVersion:"v1.13.4", GitCommit:"c27b913fddd1a6c480c229191a087698aa92f0b1", GitTreeState:"clean", BuildDate:"2019-02-28T13:37:52Z", GoVersion:"go1.11.5", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"11+", GitVersion:"v1.11.7-gke.4", GitCommit:"618716cbb236fb7ca9cabd822b5947e298ad09f7", GitTreeState:"clean", BuildDate:"2019-02-05T19:22:29Z", GoVersion:"go1.10.7b4", Compiler:"gc", Platform:"linux/amd64"}
Installation
Install istio.io/istio-init & istio.io/istio charts through Helm
Environment
Google cloud : 1.11.7-gke.4
From what I can see, istio/install/kubernetes/helm/istio-init/files/crd-12.yaml is missing when installed through Helm.
Applying crd-12.yaml manually fixes the issue.

Dup of https://github.com/istio/istio/issues/12535


client_id and client_secret are likely out of date

Yesterday, using Swift to make a mac application with the API, everything was fine and i could login normally, but today, i keep getting this response from the server, even though my username and password are correct.
Status = "401 Unauthorized";     "Www-Authenticate" = "Bearer realm=\"Doorkeeper\", error=\"\", error_description=\"translation missing: en.doorkeeper.errors.messages\"";
I've checked for errors in the code, but it's fine as far as i can tell..
<NSHTTPURLResponse: 0x618000026a80> { URL<EMAIL_ADDRESS>}
I also cannot access the access_token with the Apiary page, so my thoughts are that the client id and secret have been updated.
Thanks!

Works here
Sent from my iPhone
On 10 Jan 2017, at 01:57, HudsonGraeme <notifications<EMAIL_ADDRESS>wrote:
Yesterday, using Swift to make a mac application with the API, everything was fine and i could login normally, but today, i keep getting this response from the server, even though my username and password are correct.
Status = "401 Unauthorized"; "Www-Authenticate" = "Bearer realm="Doorkeeper", error="", error_description="translation missing: en.doorkeeper.errors.messages"";
I've checked for errors in the code, but it's fine as far as i can tell..
<NSHTTPURLResponse: 0x618000026a80> { URL<EMAIL_ADDRESS>}
I also cannot access the access_token with the Apiary page, so my thoughts are that the client id and secret have been updated.
Thanks!

You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHubhttps://github.com/timdorr/model-s-api/issues/45, or mute the threadhttps://github.com/notifications/unsubscribe-auth/ABrmXgzRX97edajMIJgUm4O9c2YaDlw0ks5rQslKgaJpZM4Le4FL.

Works here too

Make sure you're POSTing to the endpoint. It looks like you've got a GET request there, which won't work. Also, obviously make sure you've got the right password (it's happened to me!)

Thanks! Glad it's just on my end.
Will look over code once again.
I do run into
["response": undefined_method_strip'_for_nil:nilclass]`
while debugging, but generally think nothing of it, as it returned the error a couple of days ago while it was working.


Is there a definition of VM YAML file?

I see there are several examples of VM YAML files in ./cluster, but I can't find any definition of such YAML file, if there is any?
I'm looking for smth like a definition of a module.md file, with detailed explanation of every parameter, and I'd like this file to be placed next to VM YAML examples, for example as vm_spec.yaml. And in docs it can be like this example, see every number is explained after the example. Or a page like for https://docs.docker.com/docker-cloud/apps/stack-yaml-reference/#image-required

@scollier fyi the second last comment


request to add type for 'image'

Since gSheets allows inline images, could you please consider adding a type for those or adding an option to show the URL +adding a column for the image itself?
=IMPORTJSONAPI("https://autocomplete.clearbit.com/v1/companies/suggest?query=microsoft","$[0]","domain, logo")

Option convert type to 'logo': A2 would then show the imamge instead of the URL
Option keep image URL + add column next to it containing the image =IMAGE(A2) (if possible even with parammeters? =IMAGE(A2,4,100,100)

BTW: Thank you for sharing this code at all. It's a massive time saver!

I looked into this and I don't think this is possible. The function can only return plain data types such as strings, numbers and dates. There is no functionality to return an image type or to set formulas (as far as I'm aware). See https://developers.google.com/apps-script/guides/sheets/functions#return_values
The best option is use another custom function such as described in the link below and run it from a custom menu so that it is able to directly manipulate cell data.
https://webapps.stackexchange.com/questions/74508/how-to-display-image-from-url-in-google-sheets-and-apply-it-to-multiple-rows


Update lemmy webapp

Motivation for this change
Changing the update script to be more idiomatic oil shell (namely using const instead of var)
Also there has been a new update of lemmy, both server and ui. Using the update script it's been updated to 0.14.0
Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
21.11 Release Notes (or backporting 21.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module
[ ] (Release notes changes) Ran nixos/doc/manual/md-to-db.sh to update generated release notes

[ ] Fits CONTRIBUTING.md.

Beautiful! Thanks a lot for the PR!


Unable to profile ruby code, potentially ruby version related

Hi there.
I'm attempting to profile a ruby application using gprofiler but am unable to get ruby-level profiling information. Gprofiler appears to be profiling it as a c application instead. The profiles all look like this:

Some of the frames in the profile e.g rb_class_s_new correspond to the actual c implementation of ruby itself https://apidock.com/ruby/Class/new
The application is a Rails app run by the passenger webserver. On investigating the logs I see lines indicating that rbspy is working:
[15:14:10] Profiling process 667611 with rbspy (cmdline=Passenger AppPreloader: /apps/intercom/current (forking...)                                           )
...
[15:14:11] Finished profiling process 667611 with rbspy

But also quite a lot of this:
[15:17:06] RbSpyProfiler: failed to profile process 3256 (flying-passenge)
Traceback (most recent call last):
  File "/app/gprofiler/profilers/profiler_base.py", line 119, in _wait_for_profiles
    result = future.result()
  File "/usr/lib/python3.8/concurrent/futures/_base.py", line 437, in result
    return self.__get_result()
  File "/usr/lib/python3.8/concurrent/futures/_base.py", line 389, in __get_result
    raise self._exception
  File "/usr/lib/python3.8/concurrent/futures/thread.py", line 57, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/app/gprofiler/profilers/ruby.py", line 115, in _profile_process
    run_process(
  File "/app/gprofiler/utils/__init__.py", line 265, in run_process
    raise CalledProcessError(retcode, process.args, output=stdout, stderr=stderr)
gprofiler.exceptions.CalledProcessError: Command '['/app/gprofiler/resources/ruby/rbspy', 'record', '--silent', '-r', '11', '-d', '60', '--nonblocking', '--on-cpu', '--format=collapsed', '--file', '/tmp/gprofiler_tmp/tmpx889co01/rbspy.EXYENVfrgNpMUiPy.3256.col', '--raw-file', '/dev/null', '-p', '3256']' returned non-zero exit status 1.
stdout: b''
stderr: b'Press Ctrl+C to stop\nWarning: no profile samples were collected\nWrote raw data to /dev/null\nWriting formatted output to /tmp/gprofiler_tmp/tmpx889co01/rbspy.EXYENVfrgNpMUiPy.3256.col\nSomething went wrong while rbspy was sampling the process. Here\'s what we know:\n- get ruby VM state\n- Couldn\'t get ruby process state. Please open a GitHub issue for this and include the following information:\nversion: "2.4.4"\ncurrent thread address: Err(\n    "Current thread address not found in process 3256",\n)\nVM address: Err(\n    "Could not find address for symbol ruby_current_vm",\n)\nglobal symbols address: Err(\n    "Could not find address for symbol global_symbols",\n)\n\n'

Ruby 2.4.4 is the system ruby installed on these hosts. The application is running on it's own ruby version of 2.7.5 (packaged in a tarball, running directly on the host). It seems like we might need to point gprofiler and rbspy at the correct ruby version/path but I've dug around in the options and can't see a way to do that.
I have tried running gprofiler in the docker container you supply, as well as directly on the host using your "command line" install but I see the exact same behaviour in both cases.
Output of uname -a
Linux <HOSTNAME REDACTED> 5.10.130-118.517.amzn2.aarch64 #1 SMP Wed Jul 13 16:51:59 UTC 2022 aarch64 aarch64 aarch64 GNU/Linux

I've switched to using rbspy directly using the latest version from their github (currently 0.12.1) which is working perfectly with no configuration.

Hi @looneym !
The relevant error is Something went wrong while rbspy was sampling the process. Here\'s what we know:\n- get ruby VM state\n- Couldn\'t get ruby process state. Please open a GitHub issue for this and include the following information:\nversion: "2.4.4"\ncurrent thread address: Err(\n    "Current thread address not found in process 3256",\n)\nVM address: Err(\n    "Could not find address for symbol ruby_current_vm",\n)\nglobal symbols address: Err(\n    "Could not find address for symbol global_symbols",\n)\n\n indeed, and it teaches that rbspy was unable to handle the Ruby version.
rbspy doesn't care about different Ruby installations - per Ruby process it will find the ruby executable that powers it, and will get the symbols & offsets from that file. I'd think in your case (and your second comment proves it) that the problem is we're using a too old version of rbspy, and thus it fails on your "too new" 2.7.5 (indeed if I check rbspy 0.8.1 which is what we're using, it doesn't include support for Ruby 2.7.5).
So that's totally on us and the current blocker on our side for upgrading is to get https://github.com/rbspy/rbspy/pull/327 merged because gProfiler's usage of rbspy depends on this logic (we currently have it merged in our fork but we prefer to mainline). Once we finish with that, we'll be able to upgrade our rbspy and you'll have the profiler working fine :)
I'll be sure to update here when that happens, @looneym .

@Jongy any updates? I see that there is no updates on https://github.com/rbspy/rbspy/pull/327 for more than 2 months.

@nenaddzambasevic indeed, there was a breaking change as noted here. We haven't finished that merge yet.
Meanwhile we are based on rbspy 0.12.1 and I'll try to get it merged for the next release (see #396 ). Will that help in your use case? It will work for 2.7.5 as reported in this issue, but not for versions that rbspy added support for since 0.12.1.

Hey @nenaddzambasevic and @looneym , gProfiler 1.15.0 was released yesterday and it uses rbspy 0.12.1 which can profile Ruby 2.7.5.

Hi @Jongy, we are using ruby 3.0.4 now but it looks it's supported since rbspy 0.12.0 so we will give it a go again to test out gProfiler.


'Duplicated' expiration fields result undefined token

Description

When using exp field inside paylod + expiresIn field inside options, after sign, result'll be an undefined field;

Reproduction

paylod{...exp:''} && option{..expiresIn:''} => jwt.sign(paylod, pKey, option);

Environment

Please provide the following:

Version of this library used:8.5.1

Expected result

throw Ex.., override value.. but something different from undefined.

Found that, but don't know why passed by


No Data available in "Event Data" Page after upgrading to 2.4.0

Describe the Bug
Hey there!
After upgrading to 2.4.0 the event data is not displayed anymore within the event data page (<host>/websites/<id>/event-data), despite there are entries in the event_table and website_event tables.
How could that be solved?
BR, Sebi
Database
PostgreSQL
Relevant log output
`event_table`

[
  {
    "event_data_id": "4a0b8dce-61ef-46b6-b5c2-7e33ecab0736",
    "website_id": "891897eb-78b1-40a7-9c96-ea60387d8379",
    "website_event_id": "46dd106e-3ac9-4c96-a9b2-7d5ba44fe353",
    "event_key": "mapInteraction",
    "string_value": "true",
    "number_value": null,
    "date_value": null,
    "data_type": 3,
    "created_at": "2023-08-01 10:09:58.662000 +00:00"
  },
  {
    "event_data_id": "c3140916-ca43-4a5d-98ea-346836fa3bd1",
    "website_id": "891897eb-78b1-40a7-9c96-ea60387d8379",
    "website_event_id": "9da66082-40fa-4ca3-9c88-cd2a4969e790",
    "event_key": "mapInteraction",
    "string_value": "true",
    "number_value": null,
    "date_value": null,
    "data_type": 3,
    "created_at": "2023-08-01 10:09:58.981000 +00:00"
  }
]

`website_event`:

```json
[
  {
    "event_id": "46dd106e-3ac9-4c96-a9b2-7d5ba44fe353",
    "website_id": "891897eb-78b1-40a7-9c96-ea60387d8379",
    "session_id": "2290fc15-3725-5eb8-a891-bebe087be111",
    "created_at": "2023-08-01 10:09:58.686000 +00:00",
    "url_path": "/",
    "url_query": null,
    "referrer_path": null,
    "referrer_query": null,
    "referrer_domain": null,
    "page_title": null,
    "event_type": 2,
    "event_name": "mapInteraction"
  },
  {
    "event_id": "9da66082-40fa-4ca3-9c88-cd2a4969e790",
    "website_id": "891897eb-78b1-40a7-9c96-ea60387d8379",
    "session_id": "2290fc15-3725-5eb8-a891-bebe087be111",
    "created_at": "2023-08-01 10:09:58.986000 +00:00",
    "url_path": "/",
    "url_query": null,
    "referrer_path": null,
    "referrer_query": null,
    "referrer_domain": null,
    "page_title": null,
    "event_type": 2,
    "event_name": "mapInteraction"
  }
]

### Which browser are you using? (if relevant)

Chrome

### How are you deploying your application? (if relevant)

Docker/Kubernetes

Hey @franciscao633 just trying out Unami at the moment (cloud version) and can see events coming through in real time data but not in "Event Data" assuming this is related? Just wanted to double check in case I had something miss configured, thanks.

Are you sending dynamic data along with your events? If not, you will not see anything in this section from a normal install. It's only for those who want to see their custom event data.

Some events are sending custom data others are just simple for example umami.track(“Login Complete”)
I’m not self hosting, I’m using the cloud version.

@garmeeh Can you send an email to<EMAIL_ADDRESS>with your account ID and we can look into it.

Hey @mikecao emailed support there earlier in the week. Would be great to know if I'm doing something wrong or not.

I am not entirely sure if this should be closed? Is it working? I can't see any data at Umami Cloud. Of course there is data available just not shown in that view.

@raabmar can you email<EMAIL_ADDRESS>so we can verify your custom data is actually being recorded?

I'm also still experiencing this issue.

@raabmar can you email<EMAIL_ADDRESS>so we can verify your custom data is actually being recorded?

I can send you an email about it, but similar to the next commenter the data is recorded just not showing on that page

As we are on it .. when uBlock Origin is enabled in Chrome it's not showing anything at all. Completely white page. Which is odd, because why would uBlock have something blocked here, that does not make sense at all. I added this also to the support email. But also with uBlock disabled, it's not showing the data as previously mentioned

@raabmar  uBlock is overly aggressive in it's blocking. It looks for words like "analytics" and "event" and if it finds it then it blocks it. Or it blocks entire domains so nothing loads. There is nothing we can do about that.
As for event data, it doesn't look like you sent any event data. Be aware that events and event data are different things.

@garmeeh Sorry I missed your message. I see that you do have event data so it should be showing up now. Let me know if it doesn't.

Hmm. I went to go try the page without uBlock but it was working before I even disabled it! Not sure what the issue was or what resolved it...

@mikecao alright then it was my mistake and I misunderstood how it works.
I see when I add additional event data (besides the event name) it'll show up in here

That actually might have been my issue as well. Didn't know the event needed additional properties to show up!

@uncenter glad that it was not only me - could be made a bit more clear for sure in the documentation. For new users there is no chance to grasp that just by checking the documentation or doing research. However, obviously it means the feature itself works

@franciscao633 I think we've found the issue now. I think we could either display all event data (regardless of if there are additional properties) in the Event Data tab or we could try to solve this with a clearer notice on the documentation. I'm a fan of the first since it is kind of expected behavior for users.

I think those screens are built around custom event properties. If you displayed the events without properties you would end up with the same table already in the website dashboard (screenshot). We probably need to improve our documentation, or maybe find some terminology that's obvious to all users that the screen is only useful for dynamic data being passed along with the event. We're open to ideas.

Just to add an opinion, I am with Umami now for a few weeks, and I can't say it is clear for users. Even showing it redundant (same information as from the dashboard) is better than not showing anything at all. Also a hint somewhere that ad blockers should be disabled would be good, with Ublock it shows a blank page.
Why not showing two sections on the Event data (or just "Events" tab)?

Events overview (if available)
Events details (with the additional event data if available)

You could even go one small step further, i.e. not showing the entire tab if there are no events set. Users who see screenshots of the Events tab in the documentation will ask (or complain) why they don't see the Event tab. But now those very same users ask why the Event tab is empty.
Alternatively, you could disable and grey out the Events tab and show a quick info on however that shows where events can be added.
Hope that helps!

I also have Ublock Origin and I'm not getting anything blocked. Are you on Umami Cloud?

I also have Ublock Origin and I'm not getting anything blocked. Are you on Umami Cloud?

Yes Umami Cloud, I am not aware that I ever changed something in the Ublock filters. Only right now I whitelisted Umami EU
https://analytics.eu.umami.is/

Fixed in v2.9.0.