Onboarding dismiss fixes

Context
Context in the design ticket
Fixes

[ ] Dismiss walkthrough layers by clicking anywhere on the layer
[ ] Dismiss permanently a walkthrough layer when it has been dismissed twice without marking the checkbox.
[ ] Dismiss a walkthrough while clicking on an active object (which gets effectively triggered) with only one click for both actions.

This has been fixed already.


Should 408 be a retryable status code?

I'm consuming package minio-go in a tool that interfaces with various S3 compatible storages. An issue was raised about Backblaze R2 responding 408 Request Timeout from time to time.
408 is specified as something that is potentially retryable:

If the client has an outstanding request in transit, the client MAY repeat that request on a new connection

Looking at the current list of retryable status codes in this package, it seems 408 is not considered retryable: https://github.com/minio/minio-go/blob/ffa2ddd6f2b41e522235a3c61fb4ff5910a842d7/retry.go#L113-L123
Is there anything from your end that advises against adding it to the list? Happy to do it in a PR if it makes sense, but wanted to open an issue first before opening the PR.

408 is not part of S3 API @m90 so we didn't any retry for those codes.

It looks as if 520 is something Cloudflare specific as well? Would you prefer not to include 408 still? Happy either way.

It looks as if 520 (which is retried) is something Cloudflare specific as well? Would you prefer not to include 408 still? Happy either way.

Feel free to add 408 in this list as a PR thanks.


Failed to load assembly on Android Emulator.

I am unable to use the library and see to be having a similar issue as report on this .net Maui github.
https://github.com/dotnet/maui/issues/7002
On .NET Maui 8.0
I have uninstalled, disabled fast deploy, deleted Bin & Obj directories, cleaned, removed the package, closed VS, reinstalled the package and rebuilt and redeployed but it doesn't help.
I am running a Pixel 5 Emulator.
version 1.8.116 of the sqlite-net library
I have the following errors in the debug output;
Loaded assembly: SQLitePCLRaw.core.dll [External]
Loaded assembly: SQLitePCLRaw.batteries_v2.dll [External]
[monodroid-assembly] open_from_bundles: failed to load assembly SQLitePCLRaw.provider.dynamic_cdecl.dll
[monodroid-assembly] open_from_bundles: failed to load assembly SQLitePCLRaw.provider.dynamic_cdecl.dll

System.IO.FileNotFoundException: 'Could not load file or assembly 'SQLitePCLRaw.provider.dynamic_cdecl, Version=<IP_ADDRESS>6, Culture=neutral, PublicKeyToken=b68184102cba0b3b' or one of its dependencies.'
It occurs when calling the CreateTableAsync method
await DbConnection.CreateTableAsync<AppEventLog>();

Seems it was just a missing assembly!


Use retry-join instead of Kubernetes Job to bootstrap Consul cluster

This is an alternative approach to bootstrapping the cluster.
In this approach, I provide the agents with the -retry-join option. This negates the need for the Kubernetes job to manually bootstrap the cluster.
This alternative is not better than the current approach, just different. I like the retry join approach, so I thought I'd share it. You won't hurt my feelings if you choose to keep the existing approach and do not merge this pull request.
If there are downsides to using the retry join option in Kubernetes, please let me know. I'm fairly new to Kubernetes, so it's very likely I'm unaware of some disadvantages to this approach.

Super dope! I've also switched to this mode in my env.


A function that is passed a string enum actually gets the string value

Issue
Hi! I'm using ts-jest as part of a create-react-app-typescript project that I ejected.
Basically, if I call a function with a string enum, that function doesn't receive the enum but its string value (not sure if I'm clear here but I hope my code examples will make it clearer).
I have the following file languages.ts:
export enum Language {
  Fr = "french",
  En = "english",
}

I use the Language enum as a function parameter in another file utils.ts (I'm posting a dumbed-down version):
import { Language } from "./languages"

export const getLanguageUrl = (language: Language): string => {
 return `/${Language[language]}/`; // should return '/french/' or '/english/'
}

If I use it in my code, in another file, no problem:
import { Language } from "./languages"
import { getLanguageUrl } from "./utils"

console.log(getLanguageUrl(Language.Fr)) // returns '/french/'

However, it doesn't work this way in my Jest tests. I have the following utils.spec.js file:
import { getLanguageUrl } from "./utils"

test("getLanguageUrl", () => {
  it("Gives the correct URL", () => {
    // returns "/undefined/"
    expect(getLanguageUrl(Language.Fr)).toEqual("/french/")
  })
})

I have added a console.log(language) inside my getLanguageUrl function. At runtime (not during the tests), it displays
Fr

But during the tests, it displays
french

As if during the tests, the function didn't actually receive Language.Fr but the string value of Language.Fr. Which causes my test to fail.
Expected behavior
During tests, if passing an enum parameter, the function that receives it should not receive the corresponding enum's value.
My configuration
tsconfig.test.json
{
  "extends": "./tsconfig.json",
  "compilerOptions": {
    "module": "commonjs"
  }
}

tsconfig.json
{
  "compilerOptions": {
    "baseUrl": ".",
    "outDir": "build/dist",
    "module": "esnext",
    "target": "es5",
    "lib": ["es6", "dom"],
    "sourceMap": true,
    "allowJs": true,
    "jsx": "react",
    "moduleResolution": "node",
    "rootDir": "src",
    "forceConsistentCasingInFileNames": true,
    "noImplicitReturns": true,
    "noImplicitThis": true,
    "noImplicitAny": true,
    "strictNullChecks": true,
    "suppressImplicitAnyIndexErrors": true,
    "noUnusedLocals": true
  },
  "exclude": [
    "node_modules",
    "build",
    "scripts",
    "acceptance-tests",
    "webpack",
    "jest",
    "src/setupTests.ts"
  ]
}

package.json
...
  "jest": {
    "collectCoverageFrom": [
      "src/**/*.{js,jsx,ts,tsx}"
    ],
    "setupFiles": [
      "<rootDir>/config/polyfills.js"
    ],
    "testMatch": [
      "<rootDir>/tests/**/*.(j|t)s?(x)",
      "<rootDir>/src/**/?(*.)(spec|test).(j|t)s?(x)"
    ],
    "testEnvironment": "node",
    "testURL": "http://localhost",
    "moduleDirectories": [
      "node_modules",
      "src"
    ],
    "transform": {
      "^.+\\.(js|jsx|mjs)$": "<rootDir>/node_modules/babel-jest",
      "^.+\\.tsx?$": "<rootDir>/config/jest/typescriptTransform.js",
      "^.+\\.css$": "<rootDir>/config/jest/cssTransform.js",
      "^(?!.*\\.(js|jsx|mjs|css|json)$)": "<rootDir>/config/jest/fileTransform.js"
    },
    "transformIgnorePatterns": [
      "[/\\\\]node_modules[/\\\\].+\\.(js|jsx|mjs|ts|tsx)$"
    ],
    "moduleNameMapper": {
      "^react-native$": "react-native-web"
    },
    "moduleFileExtensions": [
      "web.ts",
      "ts",
      "web.tsx",
      "tsx",
      "web.js",
      "js",
      "web.jsx",
      "jsx",
      "json",
      "node",
      "mjs"
    ],
    "globals": {
      "ts-jest": {
        "tsConfigFile": "/home/myname/myproject/tsconfig.test.json"
      }
    }
  },
...

Thanks! I hope it's just a configuration error on my side :)

Hi @mbresson, thanks for reporting the issue, and thanks for all provided information!
Your issue is very odd! I have no time to look deeper at it now, but if you can provide a minimal repo to reproduce the issue, that would be very helpful to save me some time when I'll investigate later on today ;-)

Hi!
Actually I have tried to reproduce it with a basic repo made fresh, and I couldn't. So I suspect that it's a problem with my code and not due to ts-jest. Sorry for bothering you with that and thanks for answering :) I'm closing the issue

No problem and thanks for trying to provide a minimal repo. If your original repo is public give us the URL. I'd love to know what was the issue underneath ;-)

btw, not related and will not change anything, but in your config I think you can shrink this:
{
//...
"moduleFileExtensions": [
      "web.ts",
      "ts",
      "web.tsx",
      "tsx",
      "web.js",
      "js",
      "web.jsx",
      "jsx",
      "json",
      "node",
      "mjs"
]

to 'ts', 'tsx', 'js', 'jsx', 'json', 'node', 'mjs'

It's a private repo, but if I find the root cause (and if it's not just a dumb mistake that I made :D) I'll let you know what it was.
And thanks for the suggestion

I found it and it was indeed a mistake in my code.
In some part of my code that I didn't show, I used a Language variable coming from a reverse mapping that I generated (in order to get the Language (Fr, En) corresponding to its value ("french" or "english"). It's because Typescript never generates reverse mappings for string enums (documented here: https://www.typescriptlang.org/docs/handbook/enums.html#reverse-mappings). So I had to roll my own solution.
Something like this:
const languagesReverseMap: Map<string, Language> = Object.keys(Language).reduce((map, langKey) => {
  map[Language[langKey]] = langKey;
  return map;
}, new Map<string, Language>());

export const stringToLanguage = (language: string): Language | undefined => {
  return languagesReverseMap[language];
}

Now, don't ask me why (I don't know yet), but the Map languagesReverseMap somehow had stringified its values of type Language. So languagesReverseMap["french"] would not give me Language.Fr, it would give me "Fr"...
So writing this test has actually helped me find a problem in my code :) I should not even have written
export const getLanguageUrl = (language: Language): string => {
 return `/${Language[language]}/`; // should return '/french/' or '/english/'

but rather:
export const getLanguageUrl = (language: Language): string => {
 return `/${language}/`; // should return '/french/' or '/english/'

End of the story
PS: ทำงานที่เมืองไทยสนุกไหม ;)

I haven't checked, but I believe Map objects can't be accessed with [ and ]. You must use .get(), .set(), .has(), ... especially when setting.
I had often to deal with your kind of issue, and I kept changing my mind over the time to finally end-up with this solution (for enums which make sense and with few items of course):
export enum LanguageVals {Fr = 'french', En = 'english'}
export enum LanguageKeys {french = 'Fr', english = 'En'}

pros:

it allows good completion for both
it ensures there is no conflict between keys and values
you then have 2 usable types for better type-checking

cons:

code duplication

PS: je suis français, vis (et donc travaille) en Thaïlande depuis plus de 6 ans mais là je monte ma boite en france avant de repartir chez moi ;-)

That's a good idea! I never thought of doing it like this. The code duplication is still manageable for my two values.
For the Map object, I didn't know and got no warning when using [ ], but I have the same problem with .get and .set anyway.
PS : ah, j'avais vu que tu travaillais en Thaïlande sur ton profil, d'où mon message. Je te poserais bien d'autres questions par curiosité mais je ne veux pas spammer cette issue

https://join.slack.com/t/ts-jest/shared_invite/enQtNDE1ODQ0OTEzMTczLWU2ZTk5YTMzYTE1YjBkZTk5ODI1NWU3NWU0NzhlOWJlZDNkYTRlM2Y3NWQ1YWVjMjc5Mjg1NmY1NTdkNWQ3MTA ;-)


How to understand the spark-lens statistics. Is there any wiki?

Hi @mayurdb / @iamrohit  / @rishitesh
We have generated our application's performance report but we are having trouble understanding the output report (html). We have generated the JSON file and we uploaded it to your reporting service which generated a nice HTML report (http://sparklens.qubole.com/report_view/616b961beb11dc0298b1)
Could you please direct us to any type of documentation which explains how to interpret the output HTML report ? Thank you in advance.
Gaurav

update: I was able to find some explanation about the reports on (https://www.qubole.com/blog/introducing-sparklens-report/). This is fine.
If you take a look at the generated report, there are some values in negative (eg: under "efficiency statistics" > "Driver vs Executor Wallclock Time").
We are not able to understand why the values are negative and regarding this - there is no mention on the said blog site.

Hello - I am following up on my question. Thanks.

Hi, I am seeking help on the generated report. Please advise.

Hi, @normalscene
The negative values of the driver/executor wall-clock time might be an indication of event loss while running the spark application. In the newer releases of the Sparklens, we have handled the event loss gracefully. Were you using the older version while generating the sparklens.json? If so, I would suggest you try with the latest version.
If you are already using the latest version, can you please try to generate the report once via the command line instead of using sparklens.qubole.com. This will help us narrow down the issue to sparklens reporting service or sparklens core. You can find the steps to generate the sparklens command-line report in the ReadMe.

Hello @mayurdb
The current version being used is as follows:
gaurav.arya@UB0013:~/mycode/myScalaStuff/sparklens$ cat version.sbt
version in ThisBuild := "0.3.1"
gaurav.arya@UB0013:~/mycode/myScalaStuff/sparklens$

I believe this is the latest version as I took it recently (less than 2 weeks). Please correct me if I am incorrect here.
Unfortunately I am having difficulty spotting the command line reporting steps. Could you kindly just point me towards the section no. ?
Just for record sake, here is my command which I am using to submit my job:
gcloud dataproc jobs submit spark \
	--project our-project \
	--cluster deltest \
	--region us-central1  \
	--properties \
			spark.submit.deployMode=cluster,\
			spark.dynamicAllocation.enabled=false,\
			spark.yarn.maxAppAttempts=1,\
			spark.driver.memory=4G,\
			spark.driver.memoryOverhead=1024m,\
			spark.executor.instances=3,\
			spark.executor.memoryOverhead=1024m,\
			spark.executor.memory=4G,\
			spark.executor.cores=2,\
			spark.driver.cores=1,\
			spark.driver.maxResultSize=2g,\
			spark.extraListeners=com.qubole.sparklens.QuboleJobListener \
	--class com.figmd.someProduct.deletion.dataCleanerMain \
	--jars=gs://our_repository/jars/newDataCleaner.jar,\
			gs://spark-lib/bigquery/spark-bigquery-latest.jar,\
			gs://our_repository/jars/jdbc-postgresql.jar,\
			gs://our_repository/jars/postgresql-42.2.5.jar,\
			gs://our_repository/jars/sparklens_2.11-0.3.1.jar \
	-- cdr 289 AAAA,BBBB our-project CDRDELTEST 20200121 0001

With the above command itself, you should be able to see the report in the driver logs after application completion.

Oh! Understood. I will have to re-run the job (it takes around 75 minutes) and I will get back after that.
thanks for your prompt reply.
Regards,
Gaurav

To get more accurate results, before you re-run see if there was an event loss in the previous runs. grep for key-word "Dropped" in the driver logs. If there was an event loss, try increasing the event queue capacity to a higher value and also increase the driver's memory. This is the conf: spark.scheduler.listenerbus.eventqueue.capacity

@mayurdb
I have re-run the job (but this time, took a smaller data sample to make the processing a little quick compared to earlier one, which took around 75 minutes).
JSON reporting & command-line statistics - both were enabled.
Here are my observations:

Looked for "Dropped" (case insensitive search) in the logs but we didn't find it. So I guess nothing was dropped.

With or without spark.scheduler.listenerbus.eventqueue.capacity the output reports are showing negative values.

Please advise which logs can I share with you to help investigate this.
Links to generated reports:
http://sparklens.qubole.com/report_view/0cfede16246e4423c402 (without drop queue setting)
http://sparklens.qubole.com/report_view/447874de4f73db369339 (with drop queue setting)

@normalscene
The negative numbers can show up for various reasons. One of the things we try to do is to find out how much time executors were busy vs when drivers was busy. We don't really have any metrics around what the driver is doing in the event log. This is estimated by subtracting the time spent in executors from the total execution time. The negative numbers show up when our estimate of time spent in executor end up exceeding the total application time. Main difficulty is figuring out which stages ran in parallel. When we make a mistake in this part, we end up adding time spent instead of taking max among stages. As @mayurdb mentioned another reason is loss of events, where the time doesn't adds up because some events are missing. Please share the event log file and I can try figuring this out. thanks.

@iamrohit
Could you please point me towards the "event log file". I believe I am not aware of its whereabouts.
Kindly assist and I shall make it available ASAP. Thanks in advance.
Cheers,
Gaurav

@normalscene
Your will need to add the following config options to your spark-submit.
spark.eventLog.enabled           (true)
spark.eventLog.dir                    (s3:///some/where/)
After the application is complete, event log file will be available in the spark.eventLog.dir

@iamrohit
Thank you. I will try this out and get back with results shortly.

@iamrohit
I gave it a shot and unfortunately it didn't generate any logs :(.
Allow me to share the command I used just to double check whether I fired the right command or not. Have I missed something?
gcloud dataproc jobs submit spark
	--project bda-sandbox
	--cluster cdrperf
	--region us-central1
	--properties
		spark.eventLog.enabled=true,
		spark.eventLog.dir=gs://cdrmigration/spark-lens-reports/cdrperftest/eventlogs,
		spark.sparklens.reporting.disabled=false,
		spark.sparklens.data.dir=gs://cdrmigration/spark-lens-reports/cdrperftest,
		spark.extraListeners=com.qubole.sparklens.QuboleJobListener,
		spark.submit.deployMode=cluster,
		spark.dynamicAllocation.enabled=false,
		spark.yarn.maxAppAttempts=1,
		spark.driver.memory=36G,
		spark.driver.memoryOverhead=4096m,
		spark.executor.instances=3,
		spark.executor.memoryOverhead=4096m,
		spark.executor.memory=36G,
		spark.executor.cores=8,
		spark.driver.cores=4,
		spark.driver.maxResultSize=10g
	--jars=gs://cdrmigration/jars/cdrprocprod.jar,gs://cdrmigration/jars/jdbc-postgresql.jar,gs://cdrmigration/jars/postgresql-42.2.5.jar,gs://cdrmigration/jars/sparklens_2.11-0.3.1.jar
	--class com.figmd.janus.filetocdr.CDRProcessing
	-- "registry_name" "cdrmigration" jjjjjjjj-cf66-428b-bf02-caa1f608bf36 51dce49e-854a-4f54-8127-34472b12a5ac kkkkkkkk-854a-4f54-8127-34472b12a5ac

@iamrohit
I have captured the sparklens command-line output. It doesn't give us any indication whether if the event log capture was invoked or not.

@normalscene Not really much aware of the internal workings of dataproc. If you have access to history server, newer versions allow downloading this file directly from the history server UI.


Striped table is messed up when filtering

The striped tables get messed up when using the search filter:

Originally posted by @JoshLove-msft in https://github.com/Azure/azure-sdk-tools/pull/1750#r660894712

Resolved in https://github.com/Azure/azure-sdk-tools/pull/2785


Add mode of operation in Vulnerability policy

Description
Add mode of operation for Vulnerability Policy.
Addressed Issue
https://github.com/DependencyTrack/hyades/issues/957
Checklist

[x] I have read and understand the contributing guidelines
[ ] This PR fixes a defect, and I have provided tests to verify that the fix is effective
[x] This PR implements an enhancement, and I have provided tests to verify that it works as intended
[x] This PR introduces changes to the database model, and I have updated the migration changelog accordingly
[ ] This PR introduces new or alters existing behavior, and I have updated the documentation accordingly

Blocked by https://github.com/DependencyTrack/hyades-apiserver/pull/669


Multitenant

add a /backoffice endpoint that list a few fake companies
After that you can visit a fake company website and see the analytics on top of it
TODO: a fake data generator

wrong repo :D


Enable compile warnings.

-Wall and -Wextra have been enabled in GCC/Clang.
-W4 has been enabled in MSVC.

All warnings have been promoted to errors on Unix compilers via -Werror. All warnings (with a couple of exceptions in Clang) have been addressed.

https://github.com/aldelaro5/dolphin-memory-engine/issues/119

#119

Sorry; forgot to comment on this. This PR was only to address warnings in Unix systems, so #119 has not been addressed as part of this. (In fact, now there are even more warnings that need to be addressed on MSVC, as /W4 was been enabled.)


0.2.0 still has ghost phrases

I am on 0.2.0 and just experienced an unspoken " Bye."  being added to the end of a recording.

0.2.0 only manually removed a very common one which was " .". Unfortunately, " Bye." could actually be transcribed so the same thing can't be done. In the future when whisper.cpp can be ran with beam search quicker than how it is now, Transcribro would be able to use that which should reduce hallucinations. Bigger models can also reduce hallucinations.

0.2.1 might reduce these more


Is there any way to hide "forgot pin"

Hi,
Is there any way that "forgot pin" option could be hidden.

Hi @Nidhee, hiding a button is not available right now. We will try to include this feature in the upcoming release. Thanks for using PinLock.


reCAPTCHA for public survey submission

https://developers.google.com/recaptcha/intro
Front end implementation looks pretty straightforward. We're going to need to get an API key from Google, so we should probably coordinate with the back-end team on that since we don't want to use someone's personal account for that.

This is also done, really thought moving it to "done" in the project would close it :man_shrugging:


Feature request: data_table_theme twig token

Create a data_table_theme token like the form_theme token (https://symfony.com/doc/current/form/form_themes.html#applying-themes-to-single-forms).
This would make it possible to define custom theme blocks limited to one table.
Exemple :
{% data_table_theme products _self %}

{% block content %}
    <div class="container-fluid">
        {{ data_table(products) }}
    </div>
{% endblock %}

{% block column_phone_number_value %}
    specific theme
{% endblock %}

PS: awesome work !

Hey. Thanks for the suggestion. The rendering process of this bundle is much simpler than in forms, and it should be easy to implement, by simply updating the themes key in the vars array of the DataTableView.

PS: awesome work !

Thank you! :)

I've implemented the Twig token and merged. It will be included in the next release.
Similar to forms, you can set the data table themes directly in the Twig template, by using the data_table_theme tag:
{% data_table_theme products 'themes/data_table.html.twig' %}

{{ data_table(products) }}

If you wish to use multiple themes, pass an array using the with keyword:
{% data_table_theme products with [
    'themes/data_table.html.twig',
<EMAIL_ADDRESS>] %}

{{ data_table(products) }}

If you wish to disable currently configured themes for the data table and only use given ones, add the only keyword after the list of data table themes:
{% data_table_theme products with ['themes/data_table.html.twig'] only %}

{{ data_table(products) }}

Available in 0.18.0


WIP add materialize webhook source as buz sink

So far this is very much a WIP PR that was made in haste without testing, but could stand as a starting off point to integrating buz with Materialize's webhook sources. Webhook sources have some limitations, but ultimately should be a bit better/more performant than using Tables directly.
https://materialize.com/docs/ingest-data/webhook-quickstart/
I'm not sure how to handle the schema/db names, or if the way I'm doing MZ view/source creation makes sense in this context.

👀


fix(node): fix type of cssPreprocessOptions

We don't really need all keys for cssPreprocessOptions.
Added Partial to make them optional.

Thanks for you pr, but it is already changed into Partial.


fix not proper rpath for libgfortran's .so files

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.

Thanks @katietz. Can you bump the build number?

Thanks @katietz. Can you bump the build number?

Sure, done. Sorry, missed it

Merge without travis?


Convert surface with boundaries to triangle mesh for rendering

Will this be implemented or not?
I already find the Surface defination:
pub enum Surface {
    /// Plane
    Plane(Plane),
    /// 3-dimensional B-spline surface
    BSplineSurface(BSplineSurface<Vector3>),
    /// 3-dimensional NURBS Surface
    NURBSSurface(NURBSSurface<Vector4>),
    /// revoluted curve
    RevolutedCurve(Processor<RevolutedCurve<Curve>, Matrix4>),
}

We have a plan, and we are experimenting with it whenever we have free time. However, I can't promise how long it will take, because we give higher priority to the implementation of STEP I/O, Euler operations, and set operations with the boundary representation.

I already know B-spline and NURBS surface, can you recommand some readings about mathmatical theory of B-Rep surfaces? Thanks.

Sorry, but I can't give you the best answer to this question. In fact, I have yet to find a definitive book on the subject. I tend to extrapolate from the specifications of existing CAD kernels, including OCCT. As for set operations, I plan to use this book as a reference, but I haven't compared it to several other books either.

Now, a prototype version has been implemented.
The difficult part of the Delaunay triangulation is left to the crate spade. This implementation is CPU-driven and may not provide the performance needed as the model grows in size.
Currently, we are implementing some additional mesh algorithms for the test of this tessellation.

I suspect that the CDT algorithm in spade cannot handle holes inside a polygon.
The book Boundary Representation Modelling Techniques lacks detailed algorithms.
I found the following paper which gives an appropriate solution to the problem:
Advancing Front Surface Mesh Generation in Parametric Space Using a Riemannian Surface Definition

I suspect that the CDT algorithm in spade cannot handle holes inside a polygon.

That is right, If one specifies a boundary, the triangle will always be entirely outside or inside the domain. So, the current implementation excludes triangles whose center of gravity is outside the domain when converting data from spade to truck mesh structure. Although there is overlap, we consider that speeding up the process is an issue to be addressed after we have some functionality in place.

I found the following paper which gives an appropriate solution to the problem:

Thank you for the introduction. I will check it out in the near future.

Found another paper: Gabriel-constrained Parametric Surface Triangulation
This approach looks better, only the algorithm to generate sample points is very slow, needs improvement.

There is also this rust crate that looks very promising, which implements Manifold Dual Contouring: https://github.com/hmeyer/tessellation


Read from InputStream instead of nio.Path?

Following https://github.com/tableau/hyper-api-samples/tree/main/Tableau-Supported/Java/read-and-print-data-from-existing-hyper-file
Can I read a hyper file from input stream or byte array instead of a Path?

Unfortunately no. Hyper can only open Hyper files from files.
What is your use case for wanting to open them from a stream/byte array?

Unfortunately no. Hyper can only open Hyper files from files.
What is your use case for wanting to open them from a stream/byte array?

if I have hyper files on s3 or a website url

if I have hyper files on s3 or a website url

Ok - that is unfortunately not possible with HyperAPI right now...
So the rest of my questions are with the intent to figure out "How would we have to extend HyperAPI/Tableau Server to better cater for your use case in the future?".
So S3 it is... but what is your use case? Which problem are you trying to solve by using S3?  Are you building some custom "incremental refresh" solution? Why are you considering using S3 in the first place?
What is the problem with just downloading the files from S3 and storing them to disk before opening them with HyperAPI? Is it file size? Download speeds/volumes? Limited local disk size, e.g. because you are running in AWS Lambda?
Do you need read-write access to the Hyper files or is read-only enough?
In general, Hyper has two requirements for its file storage:

it needs read-write access. Otherwise, commands like UPDATE or INSERT would be impossible to execute
it needs access to arbitrary locations within the files. I.e. it might need to read data from the end of the file, the middle of the file or somewhere else. In particular, the file format is not designed as a streaming format.

In case, read-only access is sufficient for your scenario, the first point is a no-brainer...
The 2nd point, i.e. random-access within files, would be achievable with S3 (which can read files partially and skip over other files). It would require quite some engineering work from our side, though...

Ok - that is unfortunately not possible with HyperAPI right now...
So the rest of my questions are with the intent to figure out "How would we have to extend HyperAPI/Tableau Server to better cater for your use case in the future?".
So S3 it is... but what is your use case? Which problem are you trying to solve by using S3?  Are you building some custom "incremental refresh" solution? Why are you considering using S3 in the first place?
What is the problem with just downloading the files from S3 and storing them to disk before opening them with HyperAPI? Is it file size? Download speeds/volumes? Limited local disk size, e.g. because you are running in AWS Lambda?
Do you need read-write access to the Hyper files or is read-only enough?
In general, Hyper has two requirements for its file storage:

it needs read-write access. Otherwise, commands like UPDATE or INSERT would be impossible to execute
it needs access to arbitrary locations within the files. I.e. it might need to read data from the end of the file, the middle of the file or somewhere else. In particular, the file format is not designed as a streaming format.

In case, read-only access is sufficient for your scenario, the first point is a no-brainer...
The 2nd point, i.e. random-access within files, would be achievable with S3 (which can read files partially and skip over other files). It would require quite some engineering work from our side, though...

I am after read-only access. The problem is 'limited local disk size'

I am after read-only access. The problem is 'limited local disk size'

We now have the ability to access S3 directly. See:
https://help.tableau.com/current/api/hyper_api/en-us/reference/sql/functions-srf.html#FUNCTIONS-SRF-EXTERNAL


Stuck on Waiting for Units Settled Down - Istio Pilot

istio-pilot app in kubeflow gets stuck with "waiting for units settled down" message
I have installed kubeflow using juju according to steps described here: https://charmed-kubeflow.io/docs/install (kubernetes 1.23.10 on Ubuntu 20.04)
  731  26/09/22 14:05:30 juju add-k8s myk8s
  732  26/09/22 14:07:53 juju bootstrap myk8s my-controller
  733  26/09/22 14:15:47 juju add-model kubeflow --debug --show-log
  734  26/09/22 14:16:14 juju status
  735  26/09/22 14:21:11 juju deploy kubeflow-lite --trust --debug --show-log
  736  26/09/22 14:24:24 juju status

Current juju status is that only istio-pilot app is still waiting.
Model     Controller     Cloud/Region  Version  SLA          Timestamp
kubeflow  my-controller  myk8s         2.9.32   unsupported  14:44:41+02:00

App                        Version                    Status   Scale  Charm                    Channel         Rev  Address        Exposed  Message
admission-webhook          res:oci-image@84a4d7d      active       1  admission-webhook        1.6/stable       50  <IP_ADDRESS>   no
argo-controller            res:oci-image@669ebd5      active       1  argo-controller          3.3/stable       99                 no
dex-auth                                              active       1  dex-auth                 2.31/stable     129  <IP_ADDRESS>  no
istio-ingressgateway                                  active       1  istio-gateway            1.11/stable     114  <IP_ADDRESS>   no
istio-pilot                                           waiting      1  istio-pilot              1.11/stable     131  <IP_ADDRESS>   no       waiting for units settled down
jupyter-controller         res:oci-image@8f4ec33      active       1  jupyter-controller       1.6/stable      138                 no
jupyter-ui                 res:oci-image@cde6632      active       1  jupyter-ui               1.6/stable       99  <IP_ADDRESS>  no
kfp-api                    res:oci-image@1b44753      active       1  kfp-api                  2.0/stable       81  <IP_ADDRESS>    no
kfp-db                     mariadb/server:10.3        active       1  charmed-osm-mariadb-k8s  stable           35  <IP_ADDRESS>  no       ready
kfp-persistence            res:oci-image@31f08ad      active       1  kfp-persistence          2.0/stable       76                 no
kfp-profile-controller     res:oci-image@d86ecff      active       1  kfp-profile-controller   2.0/stable       61  <IP_ADDRESS>  no
kfp-schedwf                res:oci-image@51ffc60      active       1  kfp-schedwf              2.0/stable       80                 no
kfp-ui                     res:oci-image@55148fd      active       1  kfp-ui                   2.0/stable       80  <IP_ADDRESS>   no
kfp-viewer                 res:oci-image@7190aa3      active       1  kfp-viewer               2.0/stable       79                 no
kfp-viz                    res:oci-image@67e8b09      active       1  kfp-viz                  2.0/stable       74  <IP_ADDRESS>  no
kubeflow-dashboard         res:oci-image@6fe6eec      active       1  kubeflow-dashboard       1.6/stable      154  <IP_ADDRESS>  no
kubeflow-profiles          res:profile-image@0a46ffc  active       1  kubeflow-profiles        1.6/stable       82  <IP_ADDRESS>  no
kubeflow-roles                                        active       1  kubeflow-roles           1.6/stable       31  <IP_ADDRESS>  no
kubeflow-volumes           res:oci-image@cc5177a      active       1  kubeflow-volumes         1.6/stable       64  <IP_ADDRESS>  no
metacontroller-operator                               active       1  metacontroller-operator  2.0/stable       48  <IP_ADDRESS>  no
minio                      res:oci-image@1755999      active       1  minio                    ckf-1.6/stable   99  <IP_ADDRESS>  no
oidc-gatekeeper            res:oci-image@32de216      active       1  oidc-gatekeeper          ckf-1.6/stable   76  <IP_ADDRESS>   no
seldon-controller-manager  res:oci-image@eb811b6      active       1  seldon-core              1.14/stable      92  <IP_ADDRESS>    no
training-operator                                     active       1  training-operator        1.5/stable       65  <IP_ADDRESS>   no

Unit                          Workload  Agent  Address         Ports              Message
admission-webhook/0*          active    idle   <IP_ADDRESS>    4443/TCP
argo-controller/0*            active    idle   <IP_ADDRESS>
dex-auth/0*                   active    idle   <IP_ADDRESS>
istio-ingressgateway/0*       active    idle   <IP_ADDRESS>
istio-pilot/0*                waiting   idle   <IP_ADDRESS>                       Waiting for ip address
jupyter-controller/0*         active    idle   <IP_ADDRESS>
jupyter-ui/0*                 active    idle   <IP_ADDRESS>  5000/TCP
kfp-api/0*                    active    idle   <IP_ADDRESS>   8888/TCP,8887/TCP
kfp-db/0*                     active    idle   <IP_ADDRESS>  3306/TCP           ready
kfp-persistence/0*            active    idle   <IP_ADDRESS>
kfp-profile-controller/0*     active    idle   <IP_ADDRESS>   80/TCP
kfp-schedwf/0*                active    idle   <IP_ADDRESS>
kfp-ui/0*                     active    idle   <IP_ADDRESS>  3000/TCP
kfp-viewer/0*                 active    idle   <IP_ADDRESS>
kfp-viz/0*                    active    idle   <IP_ADDRESS>   8888/TCP
kubeflow-dashboard/0*         active    idle   <IP_ADDRESS>    8082/TCP
kubeflow-profiles/0*          active    idle   <IP_ADDRESS>   8080/TCP,8081/TCP
kubeflow-roles/0*             active    idle   <IP_ADDRESS>
kubeflow-volumes/0*           active    idle   <IP_ADDRESS>   5000/TCP
metacontroller-operator/0*    active    idle   <IP_ADDRESS>
minio/0*                      active    idle   <IP_ADDRESS>    9000/TCP,9001/TCP
oidc-gatekeeper/0*            active    idle   <IP_ADDRESS>  8080/TCP
seldon-controller-manager/0*  active    idle   <IP_ADDRESS>   8080/TCP,4443/TCP
training-operator/0*          active    idle   <IP_ADDRESS>

All pods in the kubeflow namespace are up and running including istio-pilot-0.
$ kubectl get pod -n kubeflow -o wide
NAME                                             READY   STATUS    RESTARTS      AGE     IP               NODE              NOMINATED NODE   READINESS GATES
admission-webhook-5b67c68685-h6q67               1/1     Running   0             2d      <IP_ADDRESS>     devgto-worker-0   <none>           <none>
admission-webhook-operator-0                     1/1     Running   0             2d      <IP_ADDRESS>    devgto-worker-2   <none>           <none>
argo-controller-5bf749d697-6jdpf                 1/1     Running   0             2d      <IP_ADDRESS>    devgto-worker-7   <none>           <none>
argo-controller-operator-0                       1/1     Running   0             2d      <IP_ADDRESS>   devgto-worker-3   <none>           <none>
dex-auth-0                                       2/2     Running   0             2d      <IP_ADDRESS>     devgto-worker-4   <none>           <none>
istio-ingressgateway-0                           1/1     Running   0             2d      <IP_ADDRESS>    devgto-worker-7   <none>           <none>
istio-ingressgateway-workload-7cbf5464b7-b4rt5   1/1     Running   0             2d      <IP_ADDRESS>    devgto-worker-7   <none>           <none>
istio-pilot-0                                    1/1     Running   0             5h27m   <IP_ADDRESS>     devgto-worker-1   <none>           <none>
istiod-8f9d76cdb-wj8rg                           1/1     Running   0             2d      <IP_ADDRESS>    devgto-worker-2   <none>           <none>
jupyter-controller-c486f467b-v9sr6               1/1     Running   0             2d      <IP_ADDRESS>    devgto-worker-7   <none>           <none>
jupyter-controller-operator-0                    1/1     Running   0             2d      <IP_ADDRESS>    devgto-worker-2   <none>           <none>
jupyter-ui-5674b7b859-wcskr                      1/1     Running   0             2d      <IP_ADDRESS>   devgto-worker-3   <none>           <none>
jupyter-ui-operator-0                            1/1     Running   0             2d      <IP_ADDRESS>   devgto-worker-3   <none>           <none>
kfp-api-6898dc6956-pl5bd                         1/1     Running   0             2d      <IP_ADDRESS>    devgto-worker-7   <none>           <none>
kfp-api-operator-0                               1/1     Running   0             2d      <IP_ADDRESS>    devgto-worker-2   <none>           <none>
kfp-db-0                                         1/1     Running   0             2d      <IP_ADDRESS>   devgto-worker-3   <none>           <none>
kfp-db-operator-0                                1/1     Running   0             2d      <IP_ADDRESS>     devgto-worker-4   <none>           <none>
kfp-persistence-855d7b9667-xsv9s                 1/1     Running   0             2d      <IP_ADDRESS>     devgto-worker-4   <none>           <none>
kfp-persistence-operator-0                       1/1     Running   0             2d      <IP_ADDRESS>    devgto-worker-5   <none>           <none>
kfp-profile-controller-657c457c47-vvq2k          1/1     Running   0             2d      <IP_ADDRESS>    devgto-worker-5   <none>           <none>
kfp-profile-controller-operator-0                1/1     Running   0             2d      <IP_ADDRESS>    devgto-worker-0   <none>           <none>
kfp-schedwf-744d845449-hdp42                     1/1     Running   0             2d      <IP_ADDRESS>    devgto-worker-0   <none>           <none>
kfp-schedwf-operator-0                           1/1     Running   0             2d      <IP_ADDRESS>   devgto-worker-3   <none>           <none>
kfp-ui-76d669cdb6-86xd7                          1/1     Running   0             2d      <IP_ADDRESS>   devgto-worker-3   <none>           <none>
kfp-ui-operator-0                                1/1     Running   0             2d      <IP_ADDRESS>     devgto-worker-1   <none>           <none>
kfp-viewer-69b8f759cf-62mdp                      1/1     Running   0             2d      <IP_ADDRESS>     devgto-worker-1   <none>           <none>
kfp-viewer-operator-0                            1/1     Running   0             2d      <IP_ADDRESS>    devgto-worker-5   <none>           <none>
kfp-viz-67d8cd48f7-fwl4f                         1/1     Running   0             2d      <IP_ADDRESS>    devgto-worker-5   <none>           <none>
kfp-viz-operator-0                               1/1     Running   0             2d      <IP_ADDRESS>     devgto-worker-4   <none>           <none>
kubeflow-dashboard-6c6b4f744-8xmn5               1/1     Running   0             2d      <IP_ADDRESS>     devgto-worker-1   <none>           <none>
kubeflow-dashboard-operator-0                    1/1     Running   0             2d      <IP_ADDRESS>     devgto-worker-4   <none>           <none>
kubeflow-profiles-5668f4f8cf-xfnvf               2/2     Running   0             2d      <IP_ADDRESS>    devgto-worker-0   <none>           <none>
kubeflow-profiles-operator-0                     1/1     Running   0             2d      <IP_ADDRESS>     devgto-worker-1   <none>           <none>
kubeflow-roles-0                                 1/1     Running   0             2d      <IP_ADDRESS>     devgto-worker-0   <none>           <none>
kubeflow-volumes-75b44964c9-ssgxh                1/1     Running   0             2d      <IP_ADDRESS>    devgto-worker-5   <none>           <none>
kubeflow-volumes-operator-0                      1/1     Running   0             2d      <IP_ADDRESS>    devgto-worker-0   <none>           <none>
metacontroller-operator-0                        1/1     Running   0             2d      <IP_ADDRESS>     devgto-worker-4   <none>           <none>
metacontroller-operator-charm-0                  1/1     Running   0             2d      <IP_ADDRESS>      devgto-worker-1   <none>           <none>
minio-0                                          1/1     Running   0             2d      <IP_ADDRESS>     devgto-worker-4   <none>           <none>
minio-operator-0                                 1/1     Running   0             2d      <IP_ADDRESS>   devgto-worker-3   <none>           <none>
modeloperator-94b59f649-fxsck                    1/1     Running   0             2d      <IP_ADDRESS>     devgto-worker-0   <none>           <none>
oidc-gatekeeper-78969987b5-9d2lt                 1/1     Running   0             2d      <IP_ADDRESS>   devgto-worker-3   <none>           <none>
oidc-gatekeeper-operator-0                       1/1     Running   0             2d      <IP_ADDRESS>    devgto-worker-7   <none>           <none>
seldon-controller-manager-546d45c8b7-swwhd       1/1     Running   1 (13h ago)   2d      <IP_ADDRESS>    devgto-worker-5   <none>           <none>
seldon-controller-manager-operator-0             1/1     Running   0             2d      <IP_ADDRESS>    devgto-worker-7   <none>           <none>
training-operator-0                              2/2     Running   0             2d      <IP_ADDRESS>    devgto-worker-7   <none>           <none>

I have deleted the istio-pilot-0 POD, but it did not solve the "waiting" problem.
Here are some logs after the POD was restarted:
$ k logs -f -n kubeflow istio-pilot-0
Defaulted container "charm" out of: charm, charm-init (init)
2022-09-28 07:19:43 INFO juju.cmd supercommand.go:56 running containerAgent [2.9.32 c360f3d92b40458cf15512a7fe5eddb0e7ae57b2 gc go1.18.3]
starting containeragent unit command
containeragent unit "unit-istio-pilot-0" start (2.9.32 [gc])
2022-09-28 07:19:43 INFO juju.cmd.containeragent.unit runner.go:556 start "unit"
2022-09-28 07:19:43 INFO juju.worker.upgradesteps worker.go:60 upgrade steps for 2.9.32 have already been run.
2022-09-28 07:19:43 INFO juju.worker.probehttpserver server.go:157 starting http server on [::]:3856
2022-09-28 07:19:43 INFO juju.api apiclient.go:688 connection established to "wss://controller-service.controller-my-controller.svc.cluster.local:17070/model/4e703fa3-7139-4657-8e51-5e2525440518/api"
2022-09-28 07:19:43 INFO juju.worker.apicaller connect.go:163 [4e703f] "unit-istio-pilot-0" successfully connected to "controller-service.controller-my-controller.svc.cluster.local:17070"
2022-09-28 07:19:43 INFO juju.api apiclient.go:1055 cannot resolve "controller-service.controller-my-controller.svc.cluster.local": lookup controller-service.controller-my-controller.svc.cluster.local: operation was canceled
2022-09-28 07:19:43 INFO juju.api apiclient.go:688 connection established to "wss://<IP_ADDRESS>:17070/model/4e703fa3-7139-4657-8e51-5e2525440518/api"
2022-09-28 07:19:43 INFO juju.worker.apicaller connect.go:163 [4e703f] "unit-istio-pilot-0" successfully connected to "<IP_ADDRESS>:17070"
2022-09-28 07:19:43 INFO juju.worker.caasupgrader upgrader.go:113 abort check blocked until version event received
2022-09-28 07:19:43 INFO juju.worker.caasupgrader upgrader.go:119 unblocking abort check
2022-09-28 07:19:43 INFO juju.worker.migrationminion worker.go:142 migration phase is now: NONE
2022-09-28 07:19:43 INFO juju.worker.logger logger.go:120 logger worker started
2022-09-28 07:19:43 WARNING juju.worker.proxyupdater proxyupdater.go:282 unable to set snap core settings [proxy.http= proxy.https= proxy.store=]: exec: "snap": executable file not found in $PATH, output: ""
2022-09-28 07:19:43 INFO juju.worker.leadership tracker.go:194 istio-pilot/0 promoted to leadership of istio-pilot
2022-09-28 07:19:43 INFO juju.agent.tools symlinks.go:20 ensure jujuc symlinks in /var/lib/juju/tools/unit-istio-pilot-0
2022-09-28 07:19:43 INFO juju.worker.uniter uniter.go:329 unit "istio-pilot/0" started
2022-09-28 07:19:43 INFO juju.worker.uniter uniter.go:347 hooks are retried true
2022-09-28 07:19:44 INFO juju.worker.uniter.charm bundles.go:78 downloading ch:amd64/focal/istio-pilot-131 from API server
2022-09-28 07:19:44 INFO juju.downloader download.go:110 downloading from ch:amd64/focal/istio-pilot-131
2022-09-28 07:19:48 INFO juju.downloader download.go:93 download complete ("ch:amd64/focal/istio-pilot-131")
2022-09-28 07:19:49 INFO juju.downloader download.go:173 download verified ("ch:amd64/focal/istio-pilot-131")
2022-09-28 07:20:08 INFO juju.worker.uniter resolver.go:148 found queued "upgrade-charm" hook
2022-09-28 07:20:10 INFO juju-log Running legacy hooks/upgrade-charm.
2022-09-28 07:20:14 INFO juju.worker.uniter.operation runhook.go:146 ran "upgrade-charm" hook (via hook dispatching script: dispatch)
2022-09-28 07:20:14 INFO juju.worker.uniter resolver.go:148 found queued "config-changed" hook
2022-09-28 07:20:17 INFO juju.worker.uniter.operation runhook.go:146 ran "config-changed" hook (via hook dispatching script: dispatch)
2022-09-28 07:20:17 INFO juju.worker.uniter resolver.go:76 reboot detected; triggering implicit start hook to notify charm
2022-09-28 07:20:18 INFO juju-log Running legacy hooks/start.
2022-09-28 07:20:22 INFO juju.worker.uniter.operation runhook.go:146 ran "start" hook (via hook dispatching script: dispatch)
2022-09-28 07:25:03 INFO juju-log No gateway-info relation found
2022-09-28 07:25:03 INFO juju.worker.uniter.operation runhook.go:146 ran "update-status" hook (via hook dispatching script: dispatch)
2022-09-28 07:30:12 INFO juju-log No gateway-info relation found
2022-09-28 07:30:12 INFO juju.worker.uniter.operation runhook.go:146 ran "update-status" hook (via hook dispatching script: dispatch)
2022-09-28 07:34:15 INFO juju-log No gateway-info relation found
2022-09-28 07:34:15 INFO juju.worker.uniter.operation runhook.go:146 ran "update-status" hook (via hook dispatching script: dispatch)
2022-09-28 07:40:00 INFO juju-log No gateway-info relation found
2022-09-28 07:40:01 INFO juju.worker.uniter.operation runhook.go:146 ran "update-status" hook (via hook dispatching script: dispatch)

I have found one similar issue: https://github.com/canonical/bundle-kubeflow/issues/469 "Stuck on Waiting for Istio Pilot information"
However the solution was not related to my case because to install kubeflow I used a "clean" kubernetes cluster.
By saying "clean" I mean there was no istio installation in this cluster at all, no istio objects before kubeflow installation.
Anyway, I took a look at some istio Roles.
$ kubectl get role -n kubeflow istio-ingressgateway -o yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  annotations:
    controller.juju.is/id: 22411adb-dcc5-4bfc-8a3c-b905f121db68
    juju.is/version: 2.9.32
    model.juju.is/id: 4e703fa3-7139-4657-8e51-5e2525440518
  creationTimestamp: "2022-09-26T12:22:02Z"
  labels:
    app.kubernetes.io/managed-by: juju
    app.kubernetes.io/name: istio-ingressgateway
  name: istio-ingressgateway
  namespace: kubeflow
  resourceVersion: "1393849"
  uid: 8b628c75-18ea-49c9-abc0-1ff39cd4deca
rules:
- apiGroups:
  - '*'
  resources:
  - '*'
  verbs:
  - '*'

$ kubectl get role -n kubeflow istio-ingressgateway-workload-sds -o yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  creationTimestamp: "2022-09-26T12:26:01Z"
  labels:
    app.juju.is/created-by: istio-ingressgateway
    install.operator.istio.io/owning-resource: unknown
    istio.io/rev: default
    operator.istio.io/component: IngressGateways
    release: istio
  name: istio-ingressgateway-workload-sds
  namespace: kubeflow
  resourceVersion: "1396520"
  uid: 7aafa544-4a33-47eb-a3e5-20613a9eacf7
rules:
- apiGroups:
  - ""
  resources:
  - secrets
  verbs:
  - get
  - watch
  - list

$ kubectl patch role -n kubeflow istio-ingressgateway-workload-sds -p '{"apiVersion":"rbac.authorization.k8s.io/v1","kind":"Role","metadata":{"name":"istio-ingressgateway-workload-sds"},"rules":[{"apiGroups":["*"],"resources":["*"],"verbs":["*"]}]}'

role.rbac.authorization.k8s.io/istio-ingressgateway-workload-sds patched

$ kubectl get role -n kubeflow istio-ingressgateway-workload-sds -o yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  creationTimestamp: "2022-09-26T12:26:01Z"
  labels:
    app.juju.is/created-by: istio-ingressgateway
    install.operator.istio.io/owning-resource: unknown
    istio.io/rev: default
    operator.istio.io/component: IngressGateways
    release: istio
  name: istio-ingressgateway-workload-sds
  namespace: kubeflow
  resourceVersion: "2301670"
  uid: 7aafa544-4a33-47eb-a3e5-20613a9eacf7
rules:
- apiGroups:
  - '*'
  resources:
  - '*'
  verbs:
  - '*'

Patching istio-ingressgateway-workload-sds Role did not solve the "waiting" problem.
What else could I do?

Hello @sys-ops, istio requires a loadbalancing service to enable the gateway, is it possible that you are missing loadbalancing in your k8s cluster?
If you are unable to have loadbalancing you can patch the istio-ingressgateway service to something like NodePort.

Hi @DomFleischmann. We do have a loadbalancer, but it is outside of the cluster...
I have changed istio-ingressgateway-workload service from LoadBalancer to NodePort, but nothing has changed.
istio-pilot app still has the "waiting" status with "waiting for units settled down" message.

Hi @sys-ops  thanks for additional info can you evaluate if the gateway is presented?
kubectl get gateway -A

if not you can run
juju run --unit istio-pilot/0 -- "export JUJU_DISPATCH_PATH=hooks/config-changed; ./dispatch"

Give it a minute and check the status.
If you will still have problems you can send us juju debug-log --replay

Hi @misohu , it looks like kubeflow-gateway Gateway gets created every ~5 minutes. I did run the command you provided anyway, but nothing has changed. Where should I send the log file?
$ kubectl get gateway -n kubeflow kubeflow-gateway -o yaml
apiVersion: networking.istio.io/v1beta1
kind: Gateway
metadata:
  creationTimestamp: "2022-10-18T10:11:13Z" <=============================
  generation: 1
  labels:
    app.istio-pilot.io/is-workload-entity: "true"
    app.juju.is/created-by: istio-pilot
  name: kubeflow-gateway
  namespace: kubeflow
  resourceVersion: "11251847"
  uid: f47a024a-7aae-4931-8e5c-0c81e7c1adb9
spec:
  selector:
    istio: ingressgateway
  servers:
  - hosts:
    - '*'
    port:
      name: http
      number: 80
      protocol: HTTP

$ kubectl logs -f -n kubeflow istio-ingressgateway-0 --tail=2
Defaulted container "charm" out of: charm, charm-init (init)
2022-10-18 10:11:32 INFO juju.worker.uniter.operation runhook.go:146 ran "update-status" hook (via hook dispatching script: dispatch)
2022-10-18 10:16:02 INFO juju.worker.uniter.operation runhook.go:146 ran "update-status" hook (via hook dispatching script: dispatch)

$ kubectl get gateway -n kubeflow kubeflow-gateway -o yaml
apiVersion: networking.istio.io/v1beta1
kind: Gateway
metadata:
  creationTimestamp: "2022-10-18T10:15:27Z" <=============================
  generation: 1
  labels:
    app.istio-pilot.io/is-workload-entity: "true"
    app.juju.is/created-by: istio-pilot
  name: kubeflow-gateway
  namespace: kubeflow
  resourceVersion: "11253163"
  uid: 4d3e83a2-3e5d-4aba-ba37-cd8d6da8face
spec:
  selector:
    istio: ingressgateway
  servers:
  - hosts:
    - '*'
    port:
      name: http
      number: 80
      protocol: HTTP

NAMESPACE                       NAME                                 TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                                 AGE    SELECTOR
kubeflow                        istio-ingressgateway                 ClusterIP   <IP_ADDRESS>    <none>        65535/TCP                               21d    app.kubernetes.io/name=istio-ingressgateway
kubeflow                        istio-ingressgateway-endpoints       ClusterIP   None            <none>        <none>                                  21d    app.kubernetes.io/name=istio-ingressgateway
kubeflow                        istio-ingressgateway-workload        NodePort    <IP_ADDRESS>    <none>        80:31954/TCP,443:32077/TCP              21d    istio=ingressgateway

NAMESPACE                       NAME                                                    READY   STATUS             RESTARTS       AGE    IP               NODE              NOMINATED NODE   READINESS GATES
kubeflow                        istio-ingressgateway-0                                  1/1     Running            0              21d    <IP_ADDRESS>    devgto-worker-7   <none>           <none>
kubeflow                        istio-ingressgateway-workload-7cbf5464b7-qt58j          1/1     Running            0              18d    <IP_ADDRESS>     devgto-worker-4   <none>           <none>

$ kubectl get svc -n kubeflow istio-ingressgateway-workload -o jsonpath='{.metadata.labels}'
{"app":"istio-ingressgateway","app.juju.is/created-by":"istio-ingressgateway","install.operator.istio.io/owning-resource":"unknown","istio":"ingressgateway","istio.io/rev":"default","operator.istio.io/component":"IngressGateways","release":"istio"}

$ kubectl get svc -n kubeflow istio-ingressgateway -o jsonpath='{.metadata.labels}'
{"app.kubernetes.io/managed-by":"juju","app.kubernetes.io/name":"istio-ingressgateway"}

$ kubectl get pod -n kubeflow istio-ingressgateway-0 -o jsonpath='{.metadata.labels}'
{"app.kubernetes.io/name":"istio-ingressgateway","controller-revision-hash":"istio-ingressgateway-74f7659644","statefulset.kubernetes.io/pod-name":"istio-ingressgateway-0"}

$ kubectl get pod -n kubeflow istio-ingressgateway-workload-7cbf5464b7-qt58j -o jsonpath='{.metadata.labels}'
{"app":"istio-ingressgateway","chart":"gateways","heritage":"Tiller","install.operator.istio.io/owning-resource":"unknown","istio":"ingressgateway","istio.io/rev":"default","operator.istio.io/component":"IngressGateways","pod-template-hash":"7cbf5464b7","release":"istio","service.istio.io/canonical-name":"istio-ingressgateway-workload","service.istio.io/canonical-revision":"latest","sidecar.istio.io/inject":"false"}

$ juju run --unit istio-pilot/0 -- "export JUJU_DISPATCH_PATH=hooks/config-changed; ./dispatch"

$ kubectl logs -f -n kubeflow  istio-pilot-0 --tail=12
Defaulted container "charm" out of: charm, charm-init (init)
2022-10-18 10:11:14 INFO juju-log No gateway-info relation found
2022-10-18 10:11:14 INFO juju.worker.uniter.operation runhook.go:146 ran "update-status" hook (via hook dispatching script: dispatch)
2022-10-18 10:15:27 INFO juju-log No gateway-info relation found
2022-10-18 10:15:28 INFO juju.worker.uniter.operation runhook.go:146 ran "update-status" hook (via hook dispatching script: dispatch)
2022-10-18 10:20:12 INFO juju-log No gateway-info relation found
2022-10-18 10:20:12 INFO juju.worker.uniter.operation runhook.go:146 ran "update-status" hook (via hook dispatching script: dispatch)
2022-10-18 10:25:18 INFO juju-log No gateway-info relation found
2022-10-18 10:25:19 INFO juju.worker.uniter.operation runhook.go:146 ran "update-status" hook (via hook dispatching script: dispatch)
2022-10-18 10:30:38 INFO juju-log No gateway-info relation found
2022-10-18 10:30:38 INFO juju.worker.uniter.operation runhook.go:146 ran "update-status" hook (via hook dispatching script: dispatch)
2022-10-18 10:35:53 INFO juju-log No gateway-info relation found
2022-10-18 10:35:53 INFO juju.worker.uniter.operation runhook.go:146 ran "update-status" hook (via hook dispatching script: dispatch)

Hi @sys-ops, thanks for reporting the issue.
You can send the juju debug-log --replay --include istio-pilot/0 --include istio-ingressgateway/0 logs here if you have an Ubuntu One account, otherwise just attach them to this github issue.
I can see you sent a list of your istio-ingressgateway services. Could you also list the istio-pilot and istiod services? Thank you!

Hi @sys-ops, it looks like this issue is rather related to istio-pilot waiting for an IP address, which it obtains from a LoadBalancer (in future versions we are adding support for ClusterIP).
Changing from LoadBalancer to NodePort requires extra configuration for istio-pilot (and therefore istio-ingressgateway) and other components to get things up and running.
We can provide a detailed guide for configuring the different kind of services for istio-pilot so you can try in case you still have issues with the deployment.

This issue has been around for a while, since it is not a bug, but a configuration issue, I am closing it. @sys-ops feel free to re-open if you encounter the same or other issues.

@DnPlas  I am getting a similar issue. Attaching screenshot.


Title: A social media web site clone with django framework and a good frontend

Is your proposal related to a problem? Please describe.
Its a advance level project in web dev domain
Add any other context or screenshots about the proposal request here.
Have you read the Contributing Guidelines?
Yes

Please open the pull request I will be submitting
PR on Tuesday


Debugger shows nothing

Thanks for the great project, I hope I will be able to test and enjoy it.
Looks like I missed a step, but I can't figure out where to look for logs or something that can help find the issue.
So I installed ruby 2.1.0 and byebug and ruby debugger for sublimetext on macOS 10.12.3, (sublime build 3126), opened a ruby file in sublimetext and started the debugging of current file.
Many windows appeared at the bottom but they all empty, nothing in Output.
I also changed settings of the package to show debug logs and changed rvm to rbenv, but still nothing in windows.
The only message that I noticed was "Stopping...". It appears if I select "Tools" -> "Build" and then if I start debugging it immediately says "Stopping...".
So what I missed?

Yes, this tool is broken on macOS, it certainly doesn't work for me using Ruby 2.4.1 on 10.12.6...


New switch request --abort-on-warning

Please follow the guide below

You will be asked some questions and requested to provide some information, please read them carefully and answer honestly
Put an x into all the boxes [ ] relevant to your issue (like that [x])
Use Preview tab to see how your issue will actually look like

Make sure you are using the latest version: run youtube-dl --version and ensure your version is 2017.06.18. If it's not read this FAQ entry and update. Issues with outdated version will be rejected.

[x] I've verified and I assure that I'm running youtube-dl 2017.06.18

Before submitting an issue make sure you have:

[x] At least skimmed through README and most notably FAQ and BUGS sections
[x] Searched the bugtracker for similar issues including closed ones

What is the purpose of your issue?

[ ] Bug report (encountered problems with youtube-dl)
[ ] Site support request (request for adding support for a new site)
[x] Feature request (request for a new functionality)
[ ] Question
[ ] Other

Bug Report
Currently youtube-dl allows you to --abort-on-error I'd like to request an option called --abort-on-warning as I'd like to not download a file if it doesn't contain subtitles or other such warnings that can occur when you're downloading from a site.

Alternatively maybe a switch such as --warnings-as-errors so warnings are treated as errors so --abort-on-error can be used instead.

+1 on this request.  A failure to get a subtitle file can go unnoticed otherwise.


Move ecmaFeatures under the parserOptions

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

Coverage remained the same at 100.0% when pulling 5f932e2ba5e07453a17d0b2ac25f2968f74b26a6 on NameFILIP:patch-2 into 51fa561625e1037485a2f0bbf6c75d4224a5f751 on uber-web:master.

This was a quick edit on the github, I've created a proper branch with peerDependency changes here: https://github.com/uber-web/uber-eslint/pull/18


Add TRED.com to the showcase page

Thanks for submitting a pull request! Please provide enough information so that others can review your pull request:

Unless you are a React Native release maintainer and cherry-picking an existing commit into a current release, ensure your pull request is targeting the master React Native branch.

(You can skip this if you're fixing a typo or adding an app to the Showcase.)
Explain the motivation for making this change. What existing problem does the pull request solve?
Prefer small pull requests. These are much easier to review and more likely to get merged. Make sure the PR does only one thing, otherwise please split it.
Test plan (required)
Demonstrate the code is solid. Example: The exact commands you ran and their output, screenshots / videos if the pull request changes UI.
Make sure tests pass on both Travis and Circle CI.
Code formatting
Look around. Match the style of the rest of the codebase. See also the simple style guide.
For more info, see the "Pull Requests" section of our "Contributing" guidelines.

By analyzing the blame information on this pull request, we identified @lacker and @xujinyang to be potential reviewers.

@lacker @hramos - here's the new PR for adding TRED to the showcase page (as requested). Sorry for delay.

cc @cava23

@facebook-github-bot shipit

Thanks for importing.


add the ability to share Base64 image directly, without need of remote url or local image

Hello,
I've add a functionality that i needed in my project, and it can be helpful to other users.
this is an ability to share Base64 image directly without the need to save the screenshot in persistance folder or download it from url.
Take screenshot from any camera, convert Bytes to Base64, and send Base64 string as image parametre
Hope this will help, thank you for your efforts
Best,
Anas

This seems great - I'm going to try and use this if possible


Version change to 0.1.2.

r? @ustulation
(maidsafe_highfive has picked a reviewer for you, use r? to override)

r? @Viv-Rajkumar


[REQUEST] Display some diff information when editing the commit message

I think it can be really convenient to have the diff displayed when editing the commit message, similarly to what is done by the git plug-in for Sublime Text for instance:
https://cask.scotch.io/2014/08/git-sublime-commit-1115x500.jpg
Maybe this can be done directly under the commit message (like in the above screenshot) or in another pane that could be automatically open when a commit is performed?

You can enable this with the 'Verbose Commits' toggle in the package settings. It's currently still marked as experimental so you'll need to turn on experimental features as well. It'll no longer be experimental after the next relase

Oh, great, thank you! I actually saw the option but I didn't check "experimental features".
Btw, great job for the plug-in!


auth timeout error if push lasts longer than 1 hour

I just initiated a large drive push (526 files, 140GB total with some files as large as 20GB, no deep folder nesting, everything is max 2 folders deep)
Part way through the transfer, with about 50% of the files remaining, I got the following error message:
{FILENAME}: googleapi: Error 401: Invalid Credentials, authError
where {FILENAME} was the name of one of my files. This was one of the largest files in my push, weighing 20GB.
Update: It looks like the entire push process hangs once this occurs.

Seems like this is an OAuth credentials expire bug as seen in https://github.com/odeke-em/drive/issues/53#issuecomment-77523404, an hour after upload it trips out.

Is the idea that this error comes up one hour after issuing drive push or if a single file takes longer than one hour to upload?

I suspect, if a single file upload takes longer than one hour to upload.

Is there a way to touch or renew the login OAuth credentials? Like a keepalive message or something?

Exactly that I something I too was thinking of. When doing a migration of code.google.com to github of the OAuth2.0 package I'll investigate this.

By the way, I'm pretty sure whatever timer is tripping, it's not tripping on a single file taking too long, but rather it's tripping when the entire push process takes too long to complete...
I'm running another test now.

Roger that, thanks for the info. Makes sense given that only one token is initialized. Also I think I have a hunch on how to fix this. It is going to involve changing the token.Expiry field to a different value.

Would you mind applying this patch?
diff --git a/src/remote.go b/src/remote.go
index 5385988..13b0da8 100644
--- a/src/remote.go
+++ b/src/remote.go
@@ -635,7 +635,7 @@ func newTransport(context *config.Context) *oauth.Transport {
 		Transport: http.DefaultTransport,
 		Token: &oauth.Token{
 			RefreshToken: context.RefreshToken,
-			Expiry:       time.Now(),
+			Expiry:       time.Now().Add(time.Hour * 6), // Throw in 6 hours extra
 		},
 	}
 }

Sure. It'll be a few hours though. I do need to get this data moved first.

Aye aye. Although the patch might help in solving the OAuth expiry :) Take your time though.

More info:
I don't think this issue comes up on pulls that take longer than one hour.
Also, the timer seems to indeed be one hour and I think it starts counting from when the drive push command is run, rather than from when the user enters Y to proceed with the changes, so any time taken to compute the checksums of the files before the push seems to count against me.

Yap, the token's expiry cutdown begins at init. I started the OAuth2.0 migration and it seems like the new package is going to be more testable and give us more control, plus overall it is better since defining the refresh mechanism will be possible as well as checking for expiry. However, it is morning here and am headed to bed, so the migration is incomplete. Thank you for the tests! Catch you later.

@odeke-em regarding your patch. Although 6 hours may seem good, and I know you may be just doing this to help out @l3iggs, I don't think you should just put a ceiling limit on it. My thoughts are at each 50 or 55min mark, you should compare the full size of the push to what is currently pushed to google drive and ping or change the token expiry for another hour. Maybe this is do-able with the google code at that point in time, not sure.
I know you may be just trying the 6 hours for testing, but for a permanent inclusion in the code, you could think of something like this.
Now I know the logic above may have a fault if the transfer speeds significantly changed (to a lower amount) after the last "check" but atleast you check every 45-55 minutes to see if the expiry needs to be updated. My thoughts only...

@ikwyl6 oh for sure, I was just giving them 6 hours since they were uploading massive files. However, good vigilance.
Actually this morning, I started OAuth2.0 migration from code.google.com to the new shiny lib at golang.org/x/oauth2, and it has a method for auto refreshing which might be something like:

However, this is a work in progress

@odeke-em would it still be helpful for you if I tested the 6 hour patch you posted above?

Not really, I know it works, I was just trying to mitigate your timeout problems since you were uploading huge files :)

Thanks, I got 'em all up!
"Huge" is a relative term, a few tens or hundreds of GBs starts to look quite small when Google is giving away unlimited drive space to users with Google Apps for Education accounts!

Hehe nice, they give about 1TB or so, at least my school account gives me about that.

Wish I had free 1TB! I pay $2-3/mth for 100GB.

Never meant to brag 😜

Hi Everyone, I'm currently uploading 115GB, 24,000 files, and this morning it looks like it's every 1 hour based on the 401 errors. I'm happy to test the new code once it's ready, as I have another 500GB to push.  This is a great drive client, I have been looking for something like this, and a reason to start learning Go.

Hello @4c41, you know what I'll spin up for you the quick fix into master until I have finished the OAuth2.0 port from code.google.com to golang/x. @ikwyl6 I'll get the good solution in soon :). This way you can keep uploading your files with no waits. Give me 5 minutes

@4c41 please get the latest from master, it shouldn't time out for at least 10 hours. What you actually could do is a couple of parallel uploads say let one instance upload some dirs, let the other do the next etc. Also welcome to drive and it is great to hear from you. As always please don't hestiate to reach out in case of any questions.

Excellent.  Many thanks @odeke-em, I have updated, built and running the new code now.  I'll check the output tonight after work.  I didn't realise you can run multiple instances, thanks, I've got two running now, one with small files and one with large. Thanks again!

Even with multiple accounts you can. Aye aye, hope it doesn't trip out and can do the uploads. Thank you too and good luck.

Just to let you know, @odeke-em, I'm still getting the hourly "googleapi: Error 401: Invalid Credentials, authError" error message. I did an rm -rf * in the gocode/src folder and gocode/bin folders before getting and building this morning, and have confirmed I have the changed line "Expiry: time.Now().Add(time.Hour * 10),".
Is there anything else you'd like me to try?

Not really, that was just a time extension for 10 hours ( a kludge ). For now there is not more to test.

Okay, that's fine.  I'll keep an eye on any future updates.  Thanks @odeke-em

Sorry for the late reply. Roger that @4c41.

Has anyone seen this bug for pulls that take longer than 1 hour?

@kcwu tested it out and gave a response here https://github.com/odeke-em/drive/issues/28#issuecomment-84650909 that he was able to perform an upload that lasted almost 4 hours.

That was using resumable upload. No applying any other fixes.

Just saw the failure with "googleapi: Error 401: Invalid Credentials, authError" after 5h2m14s while uploading a single<PHONE_NUMBER> byte file (just under 2 GB). Time confirmed with bash time builtin as "real 302m17.841s".
This was with a fresh build on master at 626085fbb5d8074165e3e25bbfcf01a370225868 and I can confirm that src/github.com/odeke-em/drive/src/remote.go contains:
		// TODO: Fix this temporary bad hack with periodic refresh
		Expiry: time.Now().Add(time.Hour * 10),

Thank you @bencaradocdavies for the check. Fix coming soon hopefully.

This bug is currently killing me. Does anyone have a workaround so that I can push big files at least for now?

@l3iggs sorry for the late reply. I don't yet have one, but on attempting to work on it before the OAuth2.0 migration is done, I noticed that for the old OAuth API, on OAuth errors, the Google API client returns a stringified errors and a nil response instead of the errored response plus the actual error. It erraneously tried to refresh but could not. However if this information could have been relayed back to drive, drive could just check the error code and then probably retry. Here is my dig up on error
# When the original net/http get request is made and fails it returns the right expectations,
# a non-nil response and you can see an error code that could be checked
retrievedResponse:
 &{
      400 Bad Request 400 HTTP/1.1 1 1
      map[Date:[Sun, 10 May 2015 06:35:37 GMT]
      X-Frame-Options:[SAMEORIGIN] X-Xss-Protection:[1; mode=block] Server:[GSE] Alternate-Protocol:[443:quic,p=1]
      Vary:[Accept-Encoding]
      Content-Type:[application/json]
      Cache-Control:[no-cache, no-store, max-age=0, must-revalidate]
      Pragma:[no-cache]
      Expires:[Fri, 01 Jan 1990 00:00:00 GMT]
      X-Content-Type-Options:[nosniff]
      Accept-Ranges:[none]] 0xc2084b6040 -1
      [chunked] false map[] 0xc2080c21a0 0xc20846a420
}
originalError: <nil>

# Now in the old OAuth2 api code.google.com/p/goauth/oauth, notice this
accessToken: ""
err: OAuthError: updateToken: Unexpected HTTP status 400 Bad Request

# Then the OAuth API on the final call gets this back
respx <nil> xerr OAuthError: updateToken: Unexpected HTTP status 400 Bad Request

# What drive gets back
resp: nil
error: Get https://www.googleapis.com/drive/v2/files/root?alt=json: OAuthError: updateToken: Unexpected HTTP status 400 Bad Request: '/'

So as you can see it is tricky problem to even try to patch. I have been digging through it and if I discover needs that suit us, I'll either submit patches to the new OAuth package or file issues there.
Thank you for your patience!

Thanks for your efforts! I guess the thing that stands out most to me is the end of the last error message you included there:
Unexpected HTTP status 400 Bad Request: '/'

Looks like drive is sending an empty request to me. I assume this is when it tries to renew the auth. What does it send and/or get back when it does the working authorization the first time?

No no, that was just a custom debug statement test that I made to debug the whole thing, don't read too much in the '/' that is more of:
// on error
fmt.Printf("%v: %s\n", err, relPath)

Maybe it's worth taking a look at how this project does its authentication: https://github.com/prasmussen/gdrive
I don't get any timeout issues when I use this client.

Hello, I just want to report that I'm pushing 12TB+ of data to Google Drive. Estimated to take 212 hours. It's been running for about 22 hours so far, and a little over 1TB of it has been uploaded.
However, every once in awhile, I'll get the following errors:
googleapi: Error 401: Invalid Credentials, authError
googleapi: Error 403: User rate limit exceeded, userRateLimitExceeded
googleapi: Error 500: Internal Error, internalError
Getting the errors doesn't stop the transfer. It is still ongoing, but it looks like the files where the above errors occurred are not being uploaded to Google Drive.

Hello folks, would you mind getting the latest from master. @markjarzynski thank you for reporting this, as for the userRate limit exceeded, I'll probably have to include some sort of throttle and exponential backoff -- this I have started on a different really experimental branch.
Thank you

With the latest from master this should be fixed

Closing this since it is outstanding. Please re-open if it persists

Trying to push 50 gig file, and I receive the error.  I just installed for the first time a few days ago, so it should have been fixed by then?

I also have noticed this with a 5GB push that has taken 3 hours, it erred once per hour on 3 separate files (each file is only about 50MB each).

It continues to upload, but once its done, the files are no in google drive.

Hey folks please get the latest from master by
$ go get -u github.com/odeke-em/drive/drive-gen && drive-gen

Uploading should be faster and there is also a mechanism for exponential backoff on encountering retryable errors.
Thank you for the patience.


In tf.gradients, why -self.action_gradien is needed?

Hi, in the code of ActorNetwork
        self.unnormalized_actor_gradients = tf.gradients(
            self.scaled_out, self.network_params, -self.action_gradient)

Why -self.action_gradient is needed here? grad_ys is -self.action_gradient , but you returned self.unnormalized_actor_gradients .

My understanding is in the paper, the actor policy updating format it

and since the J is the expected value and our target is to maximizing the J, so in
self.unnormalized_actor_gradients = tf.gradients(
            self.scaled_out, self.network_params, -self.action_gradient)
        self.actor_gradients = list(map(lambda x: tf.div(x, self.batch_size), self.unnormalized_actor_gradients))

negating self.action_gradient is a good trick to minimizing the J.
In
self.unnormalized_actor_gradients = tf.gradients(
            self.scaled_out, self.network_params, -self.action_gradient)

-self.action_gradient is the weight as in the paper

Part A is tf.gradients(self.scaled_out, self.network_params) and part B is-self.action_gradient.


"what():  timeout" issue in regard with Radio Address

Hi,
I am using crazyflie 2.0 and crazyflie_ros.
When I execute hovering launch file, then it worked with Radio address  0xE7E7E7E7E7.
($ roslaunch crazyflie_demo hover_opti_temp.launch uri:=radio://0/100/2M/ frame:=cf2 x:=0 y:=0 z:=1)
However, I switch Radio address to 0xE7E7E7E701 as shown in the following figure.

Then, when run the following command, the error message happened.
$ roslaunch crazyflie_demo hover_opti_temp.launch uri:=radio://0/100/2M/ frame:=cf2 x:=0 y:=0 z:=1
or
$ roslaunch crazyflie_demo hover_opti_temp.launch uri:=radio://0/100/2M/E7E7E7E701 frame:=cf2 x:=0 y:=0 z:=1
The error message is like that
terminate called after throwing an instance of 'std::runtime_error'
what():  timeout
Please help me.
Thank you.
P.S. In this package, there is only one yaml file, crazyflie_controller/config/crazyflie2.yaml. But it does not seem to be related with radio setting, but PID gains.

Does the Python Client find the CF using the specified address? Also, when reconfiguring, it is best to use a USB cable for connection (in my experience it doesn't always work to reconfigure while connected over the radio.)
Your usage of crazyflie_ros seems correct. You don't need to edit any config file.

When I switch Radio Address, then I turned it off and tuned it on.
After that, I ran Python Client again.
At the first time, Python Client did not scan anything.
So I change "Address" to 0xE7E7E7E701 in the following figure. Then, it can scan cf2 and connect to it.

That looks good. Does rosrun crazyflie_tools scan --address 0xE7E7E7E701 find it, too?

The result is that
$ rosrun crazyflie_tools scan --address 0xE7E7E7E701
Found Crazyradio with version 0.53
radio://0/100/2M/E7E7E7E701
No Crazyflie over USB found.

That looks like the configuration is correct. How does hover_opti_temp.launch look like?

Yes, I think so.
I also used usb cable as well, but the results are the same.
The launch file is the same with the original version except the motion capture camera parts.
I am using optitrack, so I just changed
< arg name="opti_ip" default="!@#$%"/>
< arg name="frame" default="!@#$%" />
.
.

That is all I changed.

What do you mean by "original version"? The snippets you show look very different from https://github.com/whoenig/crazyflie_ros/blob/master/crazyflie_demo/launch/hover_vrpn.launch
My guess is that maybe the uri doesn't get passed in correctly to the crazyflie_add call. If you post the full log it should contain the uri it tries to connect to.

I mean the original version is the link what you gave me.
From the link you give me, https://github.com/whoenig/crazyflie_ros/blob/master/crazyflie_demo/launch/hover_vrpn.launch,
I only changed,
1.
<arg name="ip" default="vicon" /> to <arg name="opti_ip" default=<..optitrack ip address../>
2.
<arg name="frame" default="crazyflie" /> to <arg name="frame" default="cf2" />
3.
<!-- run vrpn client -->
    <node pkg="ros_vrpn_client" name="vrpn" output="screen" type="ros_vrpn_client" required="true">
      <param name="ip" value="$(arg ip)" />
      <param name="port" value="$(arg port)" />
      <param name="frame_id" value="/world" />
      <param name="child_frame_id" value="$(arg frame)" />
</node>

to
  <!-- run OptiTrack bridge -->
  <include file="$(find vrpn_client_ros)/launch/sample_temp.launch">
	<arg name="server" value="$(arg opti_ip)" />
  </include>

Because I am using "vrpn_client_ros" package (http://wiki.ros.org/vrpn_client_ros), I changed as like the above.
Actually, the parameter information is defined in "sample_temp.launch"
I attach the "sample_temp.launch"
<launch>
  <arg name="server" default="localhost"/>
  <node pkg="vrpn_client_ros" type="vrpn_client_node" name="vrpn_client_node" output="screen">
    <rosparam subst_value="true">
      server: $(arg server)
      port: 3883

      update_frequency: 100.0
      frame_id: world
      child_frame_id: cf2
      # Use the VRPN server's time, or the client's ROS time.
      use_server_time: false
      broadcast_tf: true

      # Must either specify refresh frequency > 0.0, or a list of trackers to create
      refresh_tracker_frequency: 1.0
      #trackers:
      #- FirstTracker
      #- SecondTracker
    </rosparam>
  </node>
</launch>

I hope what I show you is helpful for resolving the issue.
I will give you the full log soon.

With 0xE7E7E7E7E7, I got the following log.
ubuntu@-ubuntu:~/catkin_ws$ roslaunch crazyflie_demo hover_opti_temp.launch uri:=radio://0/100/2M frame:=cf2 x:=0 y:=0 z:=1
... logging to /home/ubuntu/.ros/log/85ed4b96-1015-11e8-bc02-74d435137038/roslaunch-asrl-ubuntu-23376.log
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

xacro: Traditional processing is deprecated. Switch to --inorder processing!
To check for compatibility of your document, use option --check-order.
For more infos, see http://wiki.ros.org/xacro#Processing_Order
xacro.py is deprecated; please use xacro instead
started roslaunch server http://asrl-ubuntu:40333/

SUMMARY
========

PARAMETERS
 * /crazyflie/controller/PIDs/X/integratorMax: 0.1
 * /crazyflie/controller/PIDs/X/integratorMin: -0.1
 * /crazyflie/controller/PIDs/X/kd: 20.0
 * /crazyflie/controller/PIDs/X/ki: 2.0
 * /crazyflie/controller/PIDs/X/kp: 40.0
 * /crazyflie/controller/PIDs/X/maxOutput: 10.0
 * /crazyflie/controller/PIDs/X/minOutput: -10.0
 * /crazyflie/controller/PIDs/Y/integratorMax: 0.1
 * /crazyflie/controller/PIDs/Y/integratorMin: -0.1
 * /crazyflie/controller/PIDs/Y/kd: -20.0
 * /crazyflie/controller/PIDs/Y/ki: -2.0
 * /crazyflie/controller/PIDs/Y/kp: -40.0
 * /crazyflie/controller/PIDs/Y/maxOutput: 10.0
 * /crazyflie/controller/PIDs/Y/minOutput: -10.0
 * /crazyflie/controller/PIDs/Yaw/integratorMax: 0.0
 * /crazyflie/controller/PIDs/Yaw/integratorMin: 0.0
 * /crazyflie/controller/PIDs/Yaw/kd: -20.0
 * /crazyflie/controller/PIDs/Yaw/ki: 0.0
 * /crazyflie/controller/PIDs/Yaw/kp: -200.0
 * /crazyflie/controller/PIDs/Yaw/maxOutput: 200.0
 * /crazyflie/controller/PIDs/Yaw/minOutput: -200.0
 * /crazyflie/controller/PIDs/Z/integratorMax: 1000.0
 * /crazyflie/controller/PIDs/Z/integratorMin: -1000.0
 * /crazyflie/controller/PIDs/Z/kd: 6000.0
 * /crazyflie/controller/PIDs/Z/ki: 3500.0
 * /crazyflie/controller/PIDs/Z/kp: 5000.0
 * /crazyflie/controller/PIDs/Z/maxOutput: 60000.0
 * /crazyflie/controller/PIDs/Z/minOutput: 10000.0
 * /crazyflie/controller/frame: cf2
 * /crazyflie/controller/worldFrame: world
 * /crazyflie/crazyflie_add/enable_logging: False
 * /crazyflie/crazyflie_add/enable_logging_battery: True
 * /crazyflie/crazyflie_add/enable_logging_imu: True
 * /crazyflie/crazyflie_add/enable_logging_magnetic_field: True
 * /crazyflie/crazyflie_add/enable_logging_packets: True
 * /crazyflie/crazyflie_add/enable_logging_pressure: True
 * /crazyflie/crazyflie_add/enable_logging_temperature: True
 * /crazyflie/crazyflie_add/pitch_trim: 0
 * /crazyflie/crazyflie_add/roll_trim: 0
 * /crazyflie/crazyflie_add/tf_prefix: crazyflie
 * /crazyflie/crazyflie_add/uri: radio://0/100/2M
 * /crazyflie/crazyflie_add/use_ros_time: True
 * /crazyflie/joy/dev: /dev/input/js0
 * /crazyflie/joystick_controller/use_crazyflie_controller: True
 * /crazyflie/pose/name: goal
 * /crazyflie/pose/rate: 30
 * /crazyflie/pose/x: 0
 * /crazyflie/pose/y: 0
 * /crazyflie/pose/z: 1
 * /robot_description: <?xml version="1....
 * /rosdistro: kinetic
 * /rosversion: 1.12.12
 * /vrpn_client_node/broadcast_tf: True
 * /vrpn_client_node/child_frame_id: cf2
 * /vrpn_client_node/frame_id: world
 * /vrpn_client_node/port: 3883
 * /vrpn_client_node/refresh_tracker_frequency: 1.0
 * /vrpn_client_node/server: 130.**.***.***
 * /vrpn_client_node/update_frequency: 100.0
 * /vrpn_client_node/use_server_time: False

NODES
  /crazyflie/
    baselink_broadcaster (tf/static_transform_publisher)
    controller (crazyflie_controller/crazyflie_controller)
    crazyflie_add (crazyflie_driver/crazyflie_add)
    joy (joy/joy_node)
    joystick_controller (crazyflie_demo/controller.py)
    pose (crazyflie_demo/publish_pose.py)
  /
    crazyflie_server (crazyflie_driver/crazyflie_server)
    rviz (rviz/rviz)
    vrpn_client_node (vrpn_client_ros/vrpn_client_node)

auto-starting new master
process[master]: started with pid [23390]
ROS_MASTER_URI=http://localhost:11311

setting /run_id to 85ed4b96-1015-11e8-bc02-74d435137038
process[rosout-1]: started with pid [23403]
started core service [/rosout]
process[crazyflie_server-2]: started with pid [23420]
process[crazyflie/crazyflie_add-3]: started with pid [23421]
process[crazyflie/joy-4]: started with pid [23429]
process[crazyflie/joystick_controller-5]: started with pid [23445]
process[crazyflie/controller-6]: started with pid [23461]
process[crazyflie/pose-7]: started with pid [23476]
process[crazyflie/baselink_broadcaster-8]: started with pid [23490]
[ INFO] [1518454526.878112016]: wait_for_service /add_crazyflie
[ INFO] [1518454526.880280444]: found /add_crazyflie
[ INFO] [1518454526.884379554]: Adding radio://0/100/2M as crazyflie with trim(0.000000, 0.000000). Logging: 1, Parameters: 0, Use ROS time: 1
process[vrpn_client_node-9]: started with pid [23499]
process[rviz-10]: started with pid [23523]
[ INFO] [1518454526.907215496]: Connecting to VRPN server at 130.**.***.***:3883
[ INFO] [1518454526.912256089]: Connection established
check_vrpn_cookie(): VRPN Note: minor version number doesn't match: (prefer 'vrpn: ver. 07.34', got 'vrpn: ver. 07.20  0').  This is not normally a problem.
[ INFO] [1518454526.937161646]: Opened joystick: /dev/input/js0. deadzone_: 0.050000.
[ INFO] [1518454526.972389286]: Requesting parameters...
Params: 141
[crazyflie/crazyflie_add-3] process has finished cleanly
log file: /home/ubuntu/.ros/log/85ed4b96-1015-11e8-bc02-74d435137038/crazyflie-crazyflie_add-3*.log
[ INFO] [1518454527.373053439]: Ready...
[ INFO] [1518454527.373087043]: Elapsed: 0.443750 s
[INFO] [1518454527.433525]: found update_params service
[INFO] [1518454527.433932]: waiting for emergency service
[INFO] [1518454527.435062]: found emergency service
[INFO] [1518454527.435290]: waiting for land service
[ INFO] [1518454527.917810029]: Found new sender: cf2
[ INFO] [1518454527.917968770]: Creating new tracker cf2
[INFO] [1518454528.340457]: found land service
[INFO] [1518454528.340863]: waiting for takeoff service
[INFO] [1518454528.341977]: found takeoff service
^C[rviz-10] killing on exit
[vrpn_client_node-9] killing on exit
[crazyflie/baselink_broadcaster-8] killing on exit
[crazyflie/pose-7] killing on exit
[crazyflie/joystick_controller-5] killing on exit
[crazyflie/controller-6] killing on exit
[crazyflie/joy-4] killing on exit
[crazyflie_server-2] killing on exit
vrpn_Connection::~vrpn_Connection: Connection was deleted while 1 references still remain.
[rosout-1] killing on exit
[master] killing on exit
shutting down processing monitor...
... shutting down processing monitor complete
done

Thanks for the details.

Which OS are you running. In particular, is it 64 or 32-bit?
Can you try if one of the command line tools connects, e.g. rosrun crazyflie_tools listParams --uri radio://0/100/2M/E7E7E7E701

I am sorry.
I found that I got the flight with "0xE7E7E7E7E7" address.
However, after the flight I executed crazyflie-clients-python with the command "python3 bin/cfclient", I got the same error when I run "roslaunch crazyflie_demo hover_opti_temp.launch uri:=radio://0/100/2M/E7E7E7E701 frame:=cf2 x:=0 y:=0 z:=1".
So I replugged CrazyRadio PA, but the same error happened.
Finally, I reboot CF2, then hovering launch file worked....weird...
I think that was related with code issue, but usb or crazyflie-client-python issue...
Thank you so much for your help anyway.


Write only transactions are not atomic

Hi,
Write only transactions uses bulk write which is not atomic in MongoDB.
How do you think is it ok or maybe it’s better to consider using MongoDB sessions and multi-document transactions?
I’m studying guarantees that this library provides before using it on production and I a bit worry that there are some scenarios that may lead to corrupted data or undefined behaviour.

Hi @nike61,
Thank you for your feedback!
I did write an implementation using transactions. but it didn't work due to the way Hangfire schedules changes, which can be conflicting on the same document which mongodb transactions doesnt support.
However All write operations use a unique key which ensures atomic operation on document level and all job data is in the same collection. Hangfire itself also wraps the entire write-operation in a distributed lock for that specific operation which also should ensure atomicity.
you can enable trace logging and review the filters/updates/inserts also which will give more insight into what is written in different scenarios.
I personally use this lib in multiple production environments without issue and I know others do successfully also. check out:
https://github.com/Hangfire-Mongo/Hangfire.Mongo/issues/314#issuecomment-1175687446
However, this is a lib which is maintained in my spare time so there are no guarantees. :)
You override almost any behavior in the lib by inheriting the original. You also need to override the MongoFactory to return the correct instance. I would love to see a go with mongodb sessions!
I hope this answers your questions/concerns :)


polaris (a.k.a Mi MIX 2S) : Initial support

What Changed
added initial support for xiaomi mi mix 2s. works and has been tested.
Reason
i was bored
Checklist

[x] Is what you changed Tested?
[x] Is the Source Code Cleaned?

confirmed legit by me

There are some other Small Mistakes than the One I just Noted here. I am gone correct the others

i fixed raw.inc now


fix CAMEL-11691

https://issues.apache.org/jira/browse/CAMEL-11691

Thanks for the PR it has been merged. Do you mind closing this?

sure :)


Implementing the saving of the diagram as an image

Implementing the saving of the diagram as an image
This issue is about saving of the diagram as an image in a file.
The user flow
To implement that, we will add a new button to the toolbar. When the user clicks on this button, the VsCode saving dialog should be open and asks him where to save the file.
When the user selects a location, the image will be saved in the location.
Some documentation

How to open the VsCode saving dialogs
Here is the documentation : https://code.visualstudio.com/api/references/vscode-api#:~:text=or undefined.-,showSaveDialog,-(options%3F
An usage example : https://github.com/Durandal14/vscode-extension-dbml-viewer/blob/main/src/extension.ts#L118C37-L118C51

How to generate the image
Since the plugin uses Konva.js we that use the provided method for create image.
Here is the documentation : https://konvajs.org/api/Konva.Node.html#toImage:~:text=()%3B-,toDataURL(config),-Creates a composite

We will keep the image as PNG

We need to make sure we capture only those parts of the scene that have a drawing.

Some indication about the code

The toolbar component : https://github.com/BOCOVO/db-schema-visualizer/blob/6ad2a76db6d362b89c4822a0344f1c10d397c396/packages/json-table-schema-visualizer/src/components/Toolbar/Toolbar.tsx
The scene reference : https://github.com/BOCOVO/db-schema-visualizer/blob/d872d329628113a7b8ff418d205aaaff017d1898/packages/json-table-schema-visualizer/src/components/DiagramViewer/DiagramWrapper.tsx#L28
Sending message from the UI to the extension "Backend"
The documentation : https://code.visualstudio.com/api/extension-guides/webview#passing-messages-from-an-extension-to-a-webview
How it is implemented in the plugin :
- handling the command server-side : https://github.com/BOCOVO/db-schema-visualizer/blob/d872d329628113a7b8ff418d205aaaff017d1898/packages/extension-shared/extension/views/helper.ts#L44-L45
- sending a command from the webview : https://github.com/BOCOVO/db-schema-visualizer/blob/d872d329628113a7b8ff418d205aaaff017d1898/packages/extension-shared/src/App.tsx#L37

hi @ayushsaini12

When can we expect the release version so that we can export .png, .svg or .pdf?


Fix #4605 - Do not cache commands with Contains on Enumerable parameter.

May need to revisit the CommandCacheKey comparison after  #4575 is merged
@anpete

Can you add tests?

Updated based on feedback / discussion
Added a test to cover the Contains on Enumerable parameter in a subquery case, though this may not be necessary now that the IsCacheable state is computed after SQL gen.

:shipit:


formalize and automate translation pipeline

we need to standardise how we generate translations from en to other supported languages. ideally this is an automated process that fits into the current i18n setup

I hackily repurposed a script for a different project to do https://github.com/fedimint/ui/pull/205, I'll try to post that here so that someone (maybe me if I find time) can make it re-usable.

I've been exploring ways to formalize and automate the Fedimint UI project's translation pipeline to streamline the localization process. After some research and analysis, I'd like to propose a solution inspired by successful implementations in projects like Blink Wallet, Bitcoin Core and Jam UI.
Justification

Proven Success: Bitcoin Core, Blink, and Jam UI have effectively utilized Transifex for translation management, demonstrating its suitability for open-source projects like Fedimint.

Cost-Effective Solution: Transifex offers a free tier for open-source projects, potentially reducing costs associated with translation management. Moreover, it provides automated translation features, which could alleviate manual translation efforts.

Community Collaboration: Transifex fosters community collaboration by offering a collaborative translation environment. This enables translators to work together, ensuring translation accuracy and consistency.

Integration with i18next: We can seamlessly integrate Transifex with i18next to handle localization tasks within our application codebase.

Implementation Plan

[ ] Integration with Transifex: Set up a Transifex project and configure it to integrate with the project's GitHub repository. This integration will automate the synchronization of source code and translations.

[ ] Utilization of i18next: Implement i18next to manage localization tasks within the application codebase. i18next provides robust features for translations and language detection.

[ ] Translation Management: Translators can access the Transifex platform to translate strings into their respective languages. The collaborative environment provided by Transifex will facilitate efficient translation workflows.

[ ] Automatic Synchronization: Transifex will automate the synchronization process by periodically pulling the latest translations and pushing them to our GitHub repository. This ensures that translated content remains up-to-date with the latest changes in the codebase.

I have developed a quick POC to validate the proposed localization pipeline using Transifex and i18next, which involved setting up a React project, as well as integrating Transifex and i18next.

What's wrong with doing the translation scripts, LLM translation got a thousand times better in the last couple months and costs like 30 cents to do a full translation? I updated it a little while ago and with a Google API key it takes like 5 mins. Is transfinex just for reviewing those or for doing the full translations?

Transifex allows both reviews and full translation - emphasizes a collaborative approach.

What's wrong with doing the translation scripts, LLM translation got a thousand times better in the last couple months and costs like 30 cents to do a full translation? I updated it a little while ago and with a Google API key it takes like 5 mins. Is transfinex just for reviewing those or for doing the full translations?

Okay that seems like a big lift for minor gain, there's no major prose/educational content that's specific to get correct, almost all of it is word or phrase level translation that  we can like 99% of the way through with translation scripts. If you make the pipeline it might be useful in the future if we add more translatable content but generally seems unnecessary right now.

Closing, all translations now done with tranlsations script


add DesignMode class and db reading

There is a new DesignMode class, with two methods fromdb() and frommanual() to read the inputs.
The DesignModeCheck class inherits these methods, and will use fromdb() if desmode_manual is not specified when the class is instantiated, and frommanual() otherwise.
I have tested fromdb() at Utah with the latest sdssdb product. I have not tested frommanual().

Actually I realize that to avoid many unncessary db calls, and to make the code a little more portable for testing purposes, I am going to want to write out the DesignMode to a file. So I'm going to make that change and will issue a new pull request when that's done.