Temporary directory path from environment vars

A workaround for #582 Path too long.
By setting the environment variable temp  to a folder with a shorter path, you can gain more chars for the checkout.
In most scenarios, the var temp is either not set (linux) or set to the same value as Path.GetTempPath() anyway (my windows machine) i.e. C:\Users\ANTHONY.STEELE\AppData\Local\Temp so you can make this shorter by pointing it at c:\temp or the like.

We only need one folder factory. It's state doesn't change during the run
Get the system temp path at startup
Check the env var temp.

Do not merge yet, let's check if this is the correct environment var to use.

Not needed, this env var check replicates what Path.GetTempPath does anyway


Hardhat allows external artifacts

Resolve https://github.com/ethereum-ts/TypeChain/issues/367

@krzkaczor can you review this PR again?

Thanks! I will add changesets and try to release it soon.

Released as<EMAIL_ADDRESS>


FasterAnims Separation

Is there anyway to keep the faster summon animation that you introduced but also keep the text dialog at regular stock speed?

The speed from that script is a single value so not as written. I do not believe this is possible but there may be others that know better than I.

The speed from that script is a single value so not as written. I do not believe this is possible but there may be others that know better than I.

Thank you for your insight.


javascript error: Electron APIs can not be invoked outside of WDIO

Generated electron project as suggested here
npm init electron-app@latest my-new-app -- --template=vite-typescript
Configured Webdriver for electron as suggested here,
npm create wdio@latest ./
Also, followed the step for accessing electron api step defined here
Was trying to run a simple test.e2e.ts with npm run wdio command,
import { expect } from '@wdio/globals'
import { browser } from 'wdio-electron-service'

describe('Electron Testing', () => {
    it('should open the default window height and width', async () => {
        const bounds = await browser.electron.execute((electron) => {
          const focusedWindow =  electron.BrowserWindow.getFocusedWindow()
          return focusedWindow.getBounds()
        })

        await expect(bounds).toEqual(800)
        await expect(bounds).toEqual(600)
    })
})

I am constantly getting below error,

[0-0] 2024-04-04T22:45:07.307Z WARN webdriver: Request failed with status 500 due to javascript error: Electron APIs can not be invoked outside of WDIO
[0-0]   (Session info: chrome=122.0.6261.156)
[0-0] 2024-04-04T22:45:07.307Z INFO webdriver: Retrying 3/3
[0-0] 2024-04-04T22:45:07.307Z INFO webdriver: [POST] http://<IP_ADDRESS>:59944/session/c77850cde9a524af635989307f0a3299/execute/sync
[0-0] 2024-04-04T22:45:07.308Z INFO webdriver: DATA {
[0-0]   script: 'executeWithinElectron(...) [635 bytes]',
[0-0]   args: [
[0-0]     '(electron) => {\n' +
[0-0]       '            const focusedWindow = electron.BrowserWindow.getFocusedWindow();\n' +
[0-0]       '            return focusedWindow.getBounds();\n' +
[0-0]       '        }'
[0-0]   ]
[0-0] }
[0-0] 2024-04-04T22:45:07.639Z ERROR webdriver: Request failed with status 500 due to javascript error: javascript error: Electron APIs can not be invoked outside of WDIO
[0-0]   (Session info: chrome=122.0.6261.156)
[0-0] javascript error in "Electron Testing.should open the default window height and width"
javascript error: javascript error: Electron APIs can not be invoked outside of WDIO
  (Session info: chrome=122.0.6261.156)
    at async ElectronWorkerService.execute (file:///Users/sb/SampleProjects/electron-wdio-vite-typescript/elvitw/node_modules/wdio-electron-service/src/commands/execute.ts:21:23)
    at async Context.<anonymous> (/Users/sb/SampleProjects/electron-wdio-vite-typescript/elvitw/test/specs/test.e2e.ts:6:24)
[0-0] 2024-04-04T22:45:07.657Z INFO webdriver: COMMAND deleteSession()
[0-0] 2024-04-04T22:45:07.658Z INFO webdriver: [DELETE] http://<IP_ADDRESS>:59944/session/c77850cde9a524af635989307f0a3299
[0-0] 2024-04-04T22:45:07.709Z INFO webdriver: RESULT null
[0-0] 2024-04-04T22:45:07.709Z INFO webdriver: Kill driver process with PID 22916
[0-0] FAILED in chrome - file:///test/specs/test.e2e.ts
2024-04-04T22:45:07.841Z INFO @wdio/cli:launcher: Run onWorkerEnd hook
2024-04-04T22:45:07.841Z INFO @wdio/cli:launcher: Run onComplete hook

Please suggest what is wrong.
Environment:
Node version: v20.11.1
Npm version: 10.2.4
OS: Mac OS ( 14.4 )
Package.json:

{
  "name": "elvitw",
  "productName": "elvitw",
  "version": "1.0.0",
  "description": "My Electron application description",
  "main": ".vite/build/main.js",
  "scripts": {
    "start": "electron-forge start",
    "package": "NODE_ENV=test electron-forge package",
    "make": "electron-forge make",
    "publish": "electron-forge publish",
    "lint": "eslint --ext .ts,.tsx .",
    "wdio": "wdio run ./wdio.conf.ts"
  },
  "devDependencies": {
    "@electron-forge/cli": "^7.3.1",
    "@electron-forge/maker-deb": "^7.3.1",
    "@electron-forge/maker-rpm": "^7.3.1",
    "@electron-forge/maker-squirrel": "^7.3.1",
    "@electron-forge/maker-zip": "^7.3.1",
    "@electron-forge/plugin-auto-unpack-natives": "^7.3.1",
    "@electron-forge/plugin-fuses": "^7.3.1",
    "@electron-forge/plugin-vite": "^7.3.1",
    "@electron/fuses": "^1.8.0",
    "@typescript-eslint/eslint-plugin": "^5.62.0",
    "@typescript-eslint/parser": "^5.62.0",
    "@wdio/cli": "^8.35.1",
    "@wdio/local-runner": "^8.35.1",
    "@wdio/mocha-framework": "^8.35.0",
    "@wdio/spec-reporter": "^8.32.4",
    "electron": "29.2.0",
    "eslint": "^8.57.0",
    "eslint-plugin-import": "^2.29.1",
    "ts-node": "^10.9.2",
    "typescript": "~4.5.4",
    "vite": "^5.2.8",
    "wdio-electron-service": "^6.4.0"
  },
  "keywords": [],
  "author": {
    "name": "test",
    "email"<EMAIL_ADDRESS>  },
  "license": "MIT",
  "dependencies": {
    "electron-squirrel-startup": "^1.0.0"
  }
}

Thank you for your help.

Hi @SanjeevForYou, basically the environment variable WDIO_ELECTRON is set in the service index in order to ensure that the service API is not used outside the service.  It appears that running the service using this Vite base is causing the environment variable check to fail, I haven't been able to work out why yet.  Setting the variable manually so far hasn't worked.
Vite has a specific way of handling environment variables so we will need to look at what can be done here:
https://vitejs.dev/guide/env-and-mode.html#env-variables-and-modes

After a bit of investigation I found this article which covers the issue.
I implemented the following to make it work:
create .env - at the root of the project
WDIO_ELECTRON=true

in vite.preload.config.ts, import loadEnv from vite and use it to get the environment variables from the .env file:
const env = loadEnv(buildConfig.mode, process.cwd(), "WDIO_");

then add the following definition to the config:
    define: {
      "process.env.WDIO_ELECTRON": env.WDIO_ELECTRON,
    },

e.g.
import type { ConfigEnv, UserConfig } from "vite";
import { defineConfig, mergeConfig, loadEnv } from "vite";
import { getBuildConfig, external, pluginHotRestart } from "./vite.base.config";

// https://vitejs.dev/config
export default defineConfig((buildConfig) => {
  const env = loadEnv(buildConfig.mode, process.cwd(), "WDIO_");
  const forgeEnv = buildConfig as ConfigEnv<"build">;
  const { forgeConfigSelf } = forgeEnv;
  const config: UserConfig = {
    build: {
      rollupOptions: {
        external,
        // Preload scripts may contain Web assets, so use the `build.rollupOptions.input` instead `build.lib.entry`.
        input: forgeConfigSelf.entry!,
        output: {
          format: "cjs",
          // It should not be split chunks.
          inlineDynamicImports: true,
          entryFileNames: "[name].js",
          chunkFileNames: "[name].js",
          assetFileNames: "[name].[ext]",
        },
      },
    },
    plugins: [pluginHotRestart("reload")],
    define: {
      "process.env.WDIO_ELECTRON": env.WDIO_ELECTRON,
    },
  };

  return mergeConfig(getBuildConfig(forgeEnv), config);
});

I'll keep this issue open and update the docs to cover using the service with Vite.

@christian-bromann what do you think about this issue?  Vite is very popular and the above steps add a fair bit of weight to the setup process.
Is there another way to limit Electron API usage to the WDIO environment only, without using environment variables?  The other alternative is to remove the guard entirely.  Also, the issue may be redundant after #308.

as a security measure to ensure that the service API is not used outside the service.

Isn't the general recommendation to only include this script when compiling the Electron application for testing? How does this additional check makes it more safer? Another way I could imagine this to work on top of my head is very using application parameter. WDIO can attach a certain parameter to the application call and only allow invoke the context bridge if the parameter is set.

Isn't the general recommendation to only include this script when compiling the Electron application for testing?

Yes, and I think the guard for the preload script here isn't secure as it simply adds another step for anyone wishing to access the APIs.  The same applies for the application parameter approach - the parameter would be freely accessible on github, so I think we remove the guard here.

Released in 6.4.1.

Really appreciate it. Thank you so much for the very quick turnaround.


No TZD for DateTime when UseUTCDateTime set to false

Hi!
I have found that whenever I serialize a DateTime, it does not serialize timezone information.
Examples:
Using Newtonsoft:
JsonConvert.SerializeObject(DateTime.Now)
"2018-12-03T12:33:54.1284875+01:00"
Using fastJSON:
fastJSON.JSON.ToJSON(DateTime.Now, new fastJSON.JSONParameters{ UseUTCDateTime = false})
"2018-12-03T12:35:56"
Am I doing something wrong?

That is by design, the thinking being if you are not using UTC (which has timezone info) then you are in local time hence no timezone (which makes reading and changing the json string easier).

Maybe, but I think it is not "standard", because if I have two communicate with a server that is not in my time zone (and which I don't have access to its code) I will have problems.
Having time zone difference present in the string representation makes all this problems disappear, because if I represent a DateTime with TZD, the other party will know both, UTC time and local time of my request.
Perhaps I could do some changes to your code and a pull request for you to take a look to my implementation to see if that fits your thougts.
Anyway... thanks for the answer (thumbsup)


testing integration test generation tools

This PR adds a new section to be used by autorest.cli.
Initially I am adding basic support for integration test generation.

Automation for azure-sdk-for-python

Automation for azure-sdk-for-go

Can one of the admins verify this patch?

Thank you Zim for adding these tests.

hi @zikalino, could you pls also share  your e2e story about this change? what's the pipeline? what's the impact to service team and PR reviewers?  what's the output? how to handle error etc.

synced with Zim offline, we'll do the code change when az cli test examples plan is clear.

Hi, @zikalino. The PR has be closed for a long time and it's related branch still exist. If no further used for over 14 days, I will delete this related branch. Please tell me if you still need this branch.

Hi, @zikalino. The PR has be closed for a long time and it's related branch still exist. Please tell me if you still need this branch or i will delete it in 14 days.

Hi, @zikalino. The PR has be closed for a long time and it's related branch still exist. Please tell me if you still need this branch or i will delete it in 14 days.


Adapt line folding to cover surrogate pairs

https://github.com/sedenardi/node-caldav-adapter/blob/62a34c2c9204db37f789d08c378318127cb4090d/src/common/eventBuild.ts#L84
Consider adapting this line folding method as in sebbo2002/ical-generator#223.

Very interesting. Thanks for linking that PR so I could learn from your blog post (along with Wikipedia to learn why there are only 17 planes, rather than 256 like 2 hex digits would suggest).
I'm more than happy to use this logic in this library, given that it follows the RFC and is used in ical-generator, which this library relies on to generate iCal objects. Before I copy/paste your implementation in the linked PR, I've got a couple questions:

What are the unicode boundaries you're checking in if (ch >= '\ud800' && ch <= '\udbff') (I didn't see anything in your post or wiki that would tip me off)
Why are you checking unicode value range rather than just checking length of the character like you do in your post ('𝌆'.length == 2)
Would you be open to making your function a standalone library? I feel like many CalDAV/iCal libraries would benefit from using the same octet checking, and your logic wouldn't just exist in two random libraries.

Thanks for your help.

Very interesting. Thanks for linking that PR so I could learn from your blog post

I am not the author of this blog post, I only learned form that.

What are the unicode boundaries you're checking in if (ch >= '\ud800' && ch <= '\udbff') (I didn't see anything in your post or wiki that would tip me off)

The blog says "The first code unit of a surrogate pair is always in the range from 0xD800 to 0xDBFF".

Why are you checking unicode value range rather than just checking length of the character like you do in your post ('𝌆'.length == 2)

'𝌆' is Unicode character. But in order to get a single Unicode character from a string, I cannot use string[offset] or string.charAt(offset), because that gives me a Javascript character, which might just be the first of a surrogate pair. And to check whether this is the case, I check the Unicode value range. Makes sense?

Would you be open to making your function a standalone library? I feel like many CalDAV/iCal libraries would benefit from using the same octet checking, and your logic wouldn't just exist in two random libraries.

Good idea, but it is probably more efficient if you or @sebbo2002 publish this library alongside your existing ones. I do not claim any copyright on these few lines of code.

Apologies, I should've checked the author before attributing it to you! Regardless, thank you for surfacing it to me.

The blog says "The first code unit of a surrogate pair is always in the range from 0xD800 to 0xDBFF".

Doh, that's why you shouldn't read HEX char codes late at night.

'𝌆' is Unicode character. But in order to get a single Unicode character from a string, I cannot use string[offset] or string.charAt(offset), because that gives me a Javascript character, which might just be the first of a surrogate pair. And to check whether this is the case, I check the Unicode value range. Makes sense?

Yes. If I have a string 'const str = abc𝌆ef, str[3].lengthwill equal1` because it's the Javascript character.

Good idea, but it is probably more efficient if you or @sebbo2002 publish this library alongside your existing ones. I do not claim any copyright on these few lines of code.

Sounds good. I'll include the code in this library for now, and keep an eye on whether @sebbo2002 himself decides to publish it separately or not. It may be too niche to really need to be an entirely separate package anyway.

@HeikoTheissen Published to npm as version 4.1.0. Thanks again for your contribution.


graalvmCEPackages.graaljs: 24.0.1 -> 24.1.1

Automatic update generated by nixpkgs-update tools. This update was made based on information from passthru.updateScript.
meta.description for graalvmCEPackages.graaljs is: High-Performance Polyglot VM (Product: graaljs)
meta.homepage for graalvmCEPackages.graaljs is: https://www.graalvm.org/
Updates performed

Ran passthru.UpdateScript

To inspect upstream changes

Release on GitHub

Compare changes on GitHub

Impact
Checks done

built on NixOS
The tests defined in passthru.tests, if any, passed
found 24.1.1 with grep in /nix/store/lqqikahwakpmnks3l17w3hcaifmm1sqx-graaljs-24.1.1
found 24.1.1 in filename of file in /nix/store/lqqikahwakpmnks3l17w3hcaifmm1sqx-graaljs-24.1.1

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

2 total rebuild path(s)

2 package rebuild(s)

First fifty rebuilds by attrpath

graalvmCEPackages.graaljs

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/lqqikahwakpmnks3l17w3hcaifmm1sqx-graaljs-24.1.1 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

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

Or:
nix build github:r-ryantm/nixpkgs/9c3233afc41c2b6bd051934115acfe963bd720f0#graalvmCEPackages.graaljs

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/lqqikahwakpmnks3l17w3hcaifmm1sqx-graaljs-24.1.1
ls -la /nix/store/lqqikahwakpmnks3l17w3hcaifmm1sqx-graaljs-24.1.1/bin

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

x86_64-linux

:white_check_mark: 1 package built:

graalvmCEPackages.graaljs

Maintainer pings
cc @bennyandresen @hlolli @glittershark @ericdallo for testing.

[!TIP]
As a maintainer, if your package is located under pkgs/by-name/*, you can comment @NixOS/nixpkgs-merge-bot merge to automatically merge this update using the nixpkgs-merge-bot.

Add a :+1: reaction to pull requests you find important.

nixpkgs-review result
Generated using nixpkgs-review.
Command: nixpkgs-review pr 358485

aarch64-darwin

:white_check_mark: 1 package built:

graalvmCEPackages.graaljs


fix: set ulimit -n 65535

Motivation
cc @merrymercy @Ying1123 @hnyls2002
When the number of num-prompts is relatively large, for example, 10,000, the default ulimit -n on my development machine is 1024. This causes most requests to fail. This fix ensures that the server automatically sets ulimit upon startup and similarly requires ulimit during client benchmark.
hardware: A100 80G
client: https://github.com/vllm-project/vllm/blob/main/benchmarks/benchmark_serving.py
Note: disable streaming
ref: https://www.ibm.com/support/pages/recommended-values-os-ulimit-feature
# server
python3 -m sglang.launch_server --model /root/Meta-Llama-3-8B-Instruct --trust-remote-code --port 23333 --disable-radix-cache

# client ok
ulimit && python3 benchmark_serving.py --backend openai --host <IP_ADDRESS> --port 23333 --dataset ShareGPT_V3_unfiltered_cleaned_split.json --model /root/Meta-Llama-3-8B-Instruct --tokenizer /root/Meta-Llama-3-8B-Instruct --num-prompts 10000 --request-rate 128 --trust-remote-code
# client not
python3 benchmark_serving.py --backend openai --host <IP_ADDRESS> --port 23333 --dataset ShareGPT_V3_unfiltered_cleaned_split.json --model /root/Meta-Llama-3-8B-Instruct --tokenizer /root/Meta-Llama-3-8B-Instruct --num-prompts 10000 --request-rate 128 --trust-remote-code

server ok, client ok
============ Serving Benchmark Result ============
Successful requests:                     10000
Benchmark duration (s):                  376.37
Total input tokens:                      2206428
Total generated tokens:                  1870511
Request throughput (req/s):              26.57
Input token throughput (tok/s):          5862.32
Output token throughput (tok/s):         4969.82
---------------Time to First Token----------------
Mean TTFT (ms):                          143441.34
Median TTFT (ms):                        145877.07
P99 TTFT (ms):                           291688.43
-----Time per Output Token (excl. 1st token)------
Mean TPOT (ms):                          0.00
Median TPOT (ms):                        0.00
P99 TPOT (ms):                           0.00
---------------Inter-token Latency----------------
Mean ITL (ms):                           154188.26
Median ITL (ms):                         156223.75
P99 ITL (ms):                            292479.30
==================================================

server ok, client not
============ Serving Benchmark Result ============
Successful requests:                     3145
Benchmark duration (s):                  122.54
Total input tokens:                      688371
Total generated tokens:                  582171
Request throughput (req/s):              25.67
Input token throughput (tok/s):          5617.53
Output token throughput (tok/s):         4750.87
---------------Time to First Token----------------
Mean TTFT (ms):                          30375.16
Median TTFT (ms):                        24228.75
P99 TTFT (ms):                           100871.26
-----Time per Output Token (excl. 1st token)------
Mean TPOT (ms):                          0.00
Median TPOT (ms):                        0.00
P99 TPOT (ms):                           0.00
---------------Inter-token Latency----------------
Mean ITL (ms):                           32828.14
Median ITL (ms):                         27608.77
P99 ITL (ms):                            101425.95
==================================================

server not, client not
============ Serving Benchmark Result ============
Successful requests:                     3103
Benchmark duration (s):                  125.92
Total input tokens:                      685120
Total generated tokens:                  577594
Request throughput (req/s):              24.64
Input token throughput (tok/s):          5440.98
Output token throughput (tok/s):         4587.04
---------------Time to First Token----------------
Mean TTFT (ms):                          29561.66
Median TTFT (ms):                        22865.67
P99 TTFT (ms):                           99962.48
-----Time per Output Token (excl. 1st token)------
Mean TPOT (ms):                          0.00
Median TPOT (ms):                        0.00
P99 TPOT (ms):                           0.00
---------------Inter-token Latency----------------
Mean ITL (ms):                           31773.40
Median ITL (ms):                         26089.01
P99 ITL (ms):                            100067.45
==================================================

server not, client ok
============ Serving Benchmark Result ============
Successful requests:                     3082
Benchmark duration (s):                  119.42
Total input tokens:                      658200
Total generated tokens:                  584397
Request throughput (req/s):              25.81
Input token throughput (tok/s):          5511.84
Output token throughput (tok/s):         4893.81
---------------Time to First Token----------------
Mean TTFT (ms):                          29668.30
Median TTFT (ms):                        22791.54
P99 TTFT (ms):                           98546.82
-----Time per Output Token (excl. 1st token)------
Mean TPOT (ms):                          0.00
Median TPOT (ms):                        0.00
P99 TPOT (ms):                           0.00
---------------Inter-token Latency----------------
Mean ITL (ms):                           31782.30
Median ITL (ms):                         25786.61
P99 ITL (ms):                            99130.20
==================================================

Modification
as titled
Checklist

Ensure pre-commit or other linting tools are used to fix potential lint issues.
Confirm that modifications are covered by complete unit tests. If not, please add more unit tests for correctness.
Modify documentation as needed, such as docstrings or example tutorials.

I'll rebase the main branch.

done cc @Ying1123


running elegant sim in radtrack with embedded file links does not work

When running elegant in Radtrack, the file links (e.g. WAKE) that are hard coded in the LTE file cause a fatal error.
This happens because the file links are referenced using a subdirectory (i.e. "directory/filename.sdds") but radtrack collapses the file tree structure and can not find these files.

Duplicate of #126.


Feature Services

We need to figure out where the feature services that back this app will be hosted. The data is contained in both the Roads and Trails and Pathways SGID datasets.
Relevant fields in Roads
FULLNAME, BIKE_L, BIKE_R, and perhaps BIKE_NOTES.
The BIKE_* fields use the following domain:

Code
Name

1A
1A Cycle track, at-grade, protected with parking

1B
1B Cycle track, protected with barrier

1C
1C Cycle track, raised and curb separated (may be multiuse with peds)

1D
1D Cycle track, bi-directional

1E
1E Cycle track, center-running

2A
2A Buffered bike lane

2B
2B Bike lane

2C
2C Bi-directional buffered bike lane

3A
3A Shoulder bikeway

3B
3B Marked shared roadway

3C
3C Signed shared roadway

1
1 Cycle track, unspecified

2
2 Bike lane, unspecified

3
3 Other bike route, unspecified

PP
Parallel Bike Path, Paved

PU
Parallel Bike Path, Unpaved

UN
Unknown Category

Relevant fields in Tails & Pathways
PrimaryName

BikeDifficulty
Count

Beginner
3762

Intermedi*
2420

Expert
1339

Advanced
46

Intermediate
17

CartoCode
Count

4 - Road-concurrent
18198

3 - Paved Shared Use
8792

2 - Hiking and Biking Allowed
8206

1 - Hiking Only
3139

9 - Link
3012

8 - Bridge, Tunnel
147

5 - Biking Only
140

7 - Steps
82

6 - Equestrian Primary
7

DesignatedUses
Count

Multiuse
34039

Pedestrian
2572

Bike
140

Question for @bert-granberg:
What queries should go with what values in the filter for the app? What other attributes should show up in the identify panel?
Editing
Possible branch versioning via the UGRC portal instance.

@bert_granberg is going to get us an ETL script and then we will push out the feature services.

@bert_granberg is going to get us an ETL script and then we will push out the feature services.

@joshua-reynolds is planning to do the ETL script that brings the road centerlines features with Bike_* attributes together with the  trails/pathways features. Basically deriving one new feature class with the needed data elements from from the two feature classes. The end product would essentially be "bikeways" (on street + pathways bike routes in the real world). The on street would need the type of bike facility and the level of traffic stress.

@bert-granberg Don't we already have this in the bike layer of the multimodal network?

One service for existing infrastructure
One service for planned

A preliminary feature service from @joshua-reynolds this morning:
https://wfrc.maps.arcgis.com/home/item.html?id=cc0db244166f486891c02b6d306165fd
This schema is as follows:
'NAME' - name of the street or trail
'CARTOCODE' - cartographic code,
'SIDE_1' - direction (N,S,W, E),
'SIDE_2' -  direction (N,S,W, E),
'TYPE' - bike facility type ,
'STATUS' - existing or planned,
'SOURCE' - roads or trails,
'SOURCE_ID' - id for joining back to global id of source data
*highlighted fields have unofficial data

The script is complete and can be found here:
https://github.com/WFRCAnalytics/Bike-App-Create-Features

The latest draft web map is here: https://wfrc.maps.arcgis.com/apps/mapviewer/index.html?webmap=1da30e08d4ce4950bb44662e5c9a54fb


permission to record

when i refuse to give the permission to record in android ， the _checkPermission promise always return true，
how can I get user refuse action？

Hi! If you are still having this question in the latest version, could you please open an issue with more details following the issue template? Thanks!


Several repos for same URL

This should not be possible

hmm, I'm pretty sure there have been some checks for this implemented

It seems that only the package is checked, not the URL.
A quick fix could be to check if the URL is used in some registered repository, later this check could be extended to forks?

can this issue be closed?

Closed by #4330


chore: upgrade dependencies

:tada: This PR is included in version 2.3.12 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release
v2.3.12

Your semantic-release bot :package::rocket:


I am having this issue while trying to use my own name domain name.

That means your domain has been used by a mailbox and this mailbox needs to be changed so you can add the domain into SimpleLogin. Please get in touch with<EMAIL_ADDRESS>so we can find a solution.


(maint) mark project unmaintained

ping @nathanielksmith @rlinehan just a conversation starter

i'd be willing to consider taking this over if @voxpupuli isn't interested

This makes me really sad, because I'd love to have the time and energy to maintain this, but I think it's unfortunately true. @dhgwilliam if you or @voxpupuli would be interested in taking this over that would be awesome!

CLA signed by all contributors.

Closing this as ownership and maintenance has been transferred to Vox Pupuli.


Optimise resource list with bindonce?

http://toddmotto.com/angular-one-time-binding-syntax/

Closing this because we need filters and they don't work with bind-once.


use fast delete_file_in_range for peer destroy

@ngaut @BusyJay @disksing @zhangjinpeng1987

Use fast delete_file_in_range to delete data quickly, this function is fast but can't guarantee data consistence.

For peer destroy, first set Tombstone and clear raft meta, then use fast delete to delete data and raft log. If we meet panic when fast deleting, the peer is still tombstone when restart and has no side effect. Btw, the dirty data will be cleared up if a newer snapshot for this region applied, and we will introduce compaction filter to handle this dirty data later.  @ngaut , @BusyJay and I discuss that we don't need to introduce another Destroying state, using Tombstone is enough.
For snapshot apply, because we may crash in case 2, so we must force clear the data in snapshot range before applying snapshot.
For log compaction, because we don't care consistent before, so we can use fast delete directly.

Any update? @BusyJay
If we can't support CompactionFilter now, I think we should use Destroying flag.
It doesn't conflict with following Compaction work.
/cc @ngaut

@ngaut @siddontang PTAL
Instead of introducing a new Destroying flag or using CompactionFilter, I add a clean up function to store. It will keep all the valid data ranges, and delete all the invalids (if a key is not in any range of known region, then it's invalid) when startup.

@BusyJay should update ci script, now we must install rocksdb manually, without brew.

LGTM
PTAL @hhkbp2 @zhangjinpeng1987

LGTM

LGTM


feat: ingress to domain

Renamed ingress to domain, removed "Host" from config.

Codecov Report
Patch coverage: 56.00% and project coverage change: -0.05 :warning:

Comparison is base (4f8e4a5) 24.81% compared to head (fc5d66b) 24.77%.

:exclamation: Your organization is not using the GitHub App Integration. As a result you may experience degraded service beginning May 15th. Please install the Github App Integration for your organization. Read more.
Additional details and impacted files
@@             Coverage Diff             @@
##           develop     #749      +/-   ##
===========================================
- Coverage    24.81%   24.77%   -0.05%
===========================================
  Files           55       55
  Lines         5524     5517       -7
===========================================
- Hits          1371     1367       -4
+ Misses        4048     4045       -3
  Partials       105      105

Impacted Files
Coverage Δ

golang/pkg/crane/k8s/deploy_facade.go
0.00% <0.00%> (ø)

golang/pkg/crane/k8s/ingress.go
0.00% <0.00%> (ø)

golang/api/v1/deploy.go
80.61% <100.00%> (ø)

golang/internal/mapper/grpc.go
66.24% <100.00%> (-0.08%)
:arrow_down:

golang/pkg/dagent/utils/traefik.go
100.00% <100.00%> (ø)

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


U+23AF HORIZONTAL LINE EXTENSION is too low

The names list says U+23AF HORIZONTAL LINE EXTENSION is “used for extension of arrows”, so it should be aligned with horizontal arrows.

Fixed in https://github.com/blobject/agave/releases/tag/v34


Unable to facilitate x:Bind between scopes

Hi,
I used to set the DataContext to lower scopes whenever necessary, so I can use shorter binding expressions: (ViewModel is of type ContactViewModel, that exposes a Phones collection property):
<Page DataContext="{Binding ViewModel}">
  <ListView ItemsSource="{Binding Phones}"/>
</Page>

I'm trying to use the above with x:Bind as follows:
<Page DataContext="{x:Bind ViewMode}">
  <ListView ItemsSource="{x:Bind Phones}"/>
</Page>

But I get the following error:
>XLS0432: The property 'Phones' was not found in type 'ContactsPage'. | MyProject.Client.UWP

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

ID: 6dd64d43-7b7b-abed-ff27-fafa2b82df0f
Version Independent ID: 6c349724-5273-3463-7d7e-b685a89f093f
Content: xBind markup extension - UWP applications
Content Source: windows-apps-src/xaml-platform/x-bind-markup-extension.md
Product: uwp
Technology: platform
GitHub Login: @jwmsft
Microsoft Alias: jimwalk

x:Bind on a Page (or other x:class markup) binds to properties on the backing class, not to the DataContext like {Binding} does. So if this markup is for a class named ContactsPage, {x:Bind Phones} is looking for a ContactsPage.Phones property.
So your best solution might be the more verbose {x:Bind ViewModel.Phones}. You could also suggest this as a new feature by posting an issue to the repo.

@MikeHillberg

You could also suggest this as a new feature by posting an issue to the repo.

Done: https://github.com/microsoft/microsoft-ui-xaml/issues/2237

Thanks @MikeHillberg for the answer and @weitzhandler for filing the suggestion. If anything else arises, feel free to reopen the thread.


Sent to Defichain does not work

When trying to pull form BSC to Defichain on the bridge, there are no confirmations, even when waiting an hour.

Didn't work in Brave, but in Opera.


Gathering Compute Instances and OS and Version Details

Describe the bug
Joining the tables oci_core_instance and oci_core_image trying to collect the VM names, OS details. I am using the following query:
select
  inst.id,
  inst.display_name,
  inst.shape_config_ocpus,
  inst.shape_config_memory_in_gbs,
  inst.shape,
  img.operating_system,
  img.operating_system_version,
  inst.shape_config_local_disks,
  inst.shape_config_local_disks_total_size_in_gbs
from
  oci_core_instance inst,
  oci_core_image img
where
inst.source_details ->> 'imageId' is not null
and inst.source_details ->> 'imageId'=img.id
order by display_name, shape ;

Steampipe version (steampipe -v)
Steampipe v0.20.8
Plugin version (steampipe plugin list)
| Installed Plugin                                                | Version |
| hub.steampipe.io/plugins/turbot/oci@latest | 0.28.0
To reproduce
Run the aforementioned query on steampipe.
Expected behavior
Receive a list with VM details and Image OS and Version details.
Additional context
I have over 150 VMs and only 4 are being returned, so the ID between the image and vm is not matching. Could this be cause by the image id have been replaced by newer images and for that reason with new IDS? Can we retrieve the old image in that case?

@simonneto Thanks for trying out Steampipe!
We acknowledge and appreciate your raising this issue.
The query looks good first-hand as I get results with my minimal data set; we must run it against our dev account with the required resource created and test it. We'll be getting back on this.
Thanks!

thanks a lot Raj, if there is anything I can help, I am glad to help, I joined the Slack Workspace so you can find me there if you want to have a chat. I believe some of the image IDs used for the vms are no longer available as they get updated frequently.
Thanks again

@simonneto, you may be right. I could perform a different case with your extensive data set. It's hard to replicate a similar scenario. Instead, this is what I tried to establish to validate your statement; hope it behaves in the same way as you mentioned

Created instanceA from the current set of choices that OCI provides from the image list ( we get it from the oci_core_image table)
I executed your query, which will surely return the result of one instance, as the query checks the live available image-id to match. So this is fine.
Now, I created a custom image from the instanceA, hence it generated a new custom image ( we use oci_core_image_custom) -- Your query is only using oci_core_image; I am not sure if all your instances are provisioned using OCI provided images or any enterprise custom images? If it uses any custom images, then you must change the query
As part of this step, I created InstanceB from my custom image and changed the below query to look for both core & custom images - This resulted in me two rows, as expected, as both images are now available in core and custom sections
Finally, I deleted the custom image and executed the query - it resulted in only one row; as expected, the query didn't find the required live custom image ID, and it only found the OCI-provided core image ID.

Request you to validate the same and check if your story is the same or something different we worry about fixing 👍
with image as(
  select
    id,
    operating_system,
    operating_system_version
  from
    oci_core_image
  union
   select
    id,
    operating_system,
    operating_system_version
  from
    oci_core_image_custom
)
select
  inst.id,
  inst.display_name,
  inst.shape_config_ocpus,
  inst.shape_config_memory_in_gbs,
  inst.shape,
  img.operating_system,
  img.operating_system_version,
  inst.shape_config_local_disks,
  inst.shape_config_local_disks_total_size_in_gbs
from
  oci_core_instance inst,
  image img
where
  inst.source_details ->> 'imageId' is not null
  and inst.source_details ->> 'imageId'= img.id
order by display_name, shape ;

cheers!

Hi Raj,
the custom images are a good catch and in deed I as already treating them separately in a separate query, I did not know we could use with statement here.
But here are some results:\
select count(1)  from     oci_core_instance;
+-------+
| count |
+-------+
| 195   |
+-------+
select count(1)
from
   oci_core_image_custom;

+-------+
| count |
+-------+
| 13    |
+-------+
If I use the custom images, this count goes up to 8, still far away from the 195 VMs that we have running.
with image as(
  select
    id,
    operating_system,
    operating_system_version
  from
    oci_core_image
  union
   select
    id,
    operating_system,
    operating_system_version
  from
    oci_core_image_custom
)
select
count(1)
from
  oci_core_instance inst,
  image img
where
  inst.source_details ->> 'imageId' is not null
  and inst.source_details ->> 'imageId'= img.id

+-------+
| count |
+-------+
| 8     |
+-------+
I believe this could be caused by aged images that are no longer available, I have collected a list of all available Image IDs (around 314) and did a sample search of all the VM IDs on that list and really, not many showed up.
I also noticed that some VMs have a null image ID in the oci_core_instance table.
Perhaps the Images are rotated out when they are older than a given date?
Cheers,
Simon

@rajlearner17  I found something even more weird, while collecting information to raise the SR.
I picked one random Image ID (ocid1.image.oc1.iad.aaaaaaaapulaxjedwo2y3koeli6zq6evql6rropyxpni3wu44i2rbffgxgza)
I have a total of 13 VMs created from that Image ID
select count(1) from oci_core_instance where source_details ->> 'imageId'='ocid1.image.oc1.iad.aaaaaaaapulaxjedwo2y3koeli6zq6evql6rropyxpni3wu44i2rbffgxgza' +-------+ | count | +-------+ | 13    | +-------+
Now, if I run my previous query, replacing the not null filter by that specific image id, I get all 13 VMs:
select count(1) from   oci_core_instance inst,   oci_core_image img where inst.source_details ->> 'imageId'='ocid1.image.oc1.iad.aaaaaaaapulaxjedwo2y3koeli6zq6evql6rropyxpni3wu44i2rbffgxgza' and inst.source_details ->> 'imageId'=img.id; +-------+ | count | +-------+ | 13    | +-------+
Now, when I just remove the ImageID filter, I get only 4.
select count(1) from   oci_core_instance inst,   oci_core_image img where inst.source_details ->> 'imageId'=img.id; +-------+ | count | +-------+ | 4     | +-------+
That is strange.

@simonneto  Sorry for the delayed response!
From your above note, I am also worried about guessing if this tilts towards any Postgres-fdw related issue during query planning and execution time. My greatest worry is we don't have this big data set to test; hence your input is definitely helping to understand. Thank you!
Your image id is an OCI-provided image resulting in 13 VMs, i.e. Oracle-Linux-7.8-2020.09.23-0; though it's not listed in the OCi console for selection, it exists in oci_core_image list.
I tried to reproduce it again with not the same, but ocid1.image.oc1.ap-mumbai-1.aaaaaaaamzuljaakjn774w6ymitld3mpoih3fuvi25u5i2vq6uqsqhjc3roa  i.e. Oracle-Linux-9.1-Minimal-2023.07.07-0  with limited (3) no of instance, however, all the query resulted as expected results.

Can you please run the query I suggested with CTE and check what outcome you get? Is it the same as you reported 4 Vms with the above query?
I hope there are no region constraints based on your .spc file setting
I would tweak the query to add nested query and check how the result is rendered i.e.

select
  count(1)
from
  oci_core_instance inst
-- oci_core_image img
where
  inst.source_details ->> 'imageId' in ( select id from oci_core_image)

Keep us posted!

Hi Raj,
I know that our data set is interesting and if you want to schedule some time for us to go through it and perform some tests that can help you out, please let me know and we can get that organized.
I ran the query with the sub-query just like your example and I got the same 4 VMs.
I know that OCI rotates VMS and although the old ones are there, you can no longer choose them to provision new VMs after they are "aged".
The image IDs also vary between regions, but my connection does have all the regions configured and I can see all the resources, across them normally (my 100+ VMs are spread across Phoenix and Ashburn)
I was thinking if this could be some related to the data type of the join of the source_details ->> 'imageId' in oci_core_instance and id in oci_core_image, maybe some internal data type conversion or special character since this is a string.
To be honest I am not very familiar with jsonb data type and if it needs some type of conversion before trying to use it on a join operation (although it works fine when we have a filter).  Maybe it could be something related with the volume? Over 300 images and 100 VMs to join is causing issues?
Do you have access to the execution plan of the queries or any trace that could help us figure out what the query is doing internally?
Cheers,
Simon

@simonneto
Would you please send me the outcome of this query?
select
  count(1)
from
  oci_core_instance inst
-- oci_core_image img
where
  inst.source_details ->> 'imageId' in ( select id from oci_core_image)

Thank you

Sorry mate, totally forgot:
> select   count(1) from   oci_core_instance inst -- oci_core_image img where   inst.source_details ->> 'imageId' in ( select id from oci_core_image) +-------+ | count | +-------+ | 4     | +-------+

As discussed in slack, we will try to get in touch with you and see what best we can do to resolve this. It's good to know you are trying to build dashboard(s) as well.
Thank you

Hi @simonneto, can you please provide some more info by executing the below queries with explain to see the query plan
Case-1 - returns count as 13 with hard-coded image-id
explain select
count(1)
from
oci_core_instance inst,
oci_core_image img
where
inst.source_details ->> 'imageId'='ocid1.image.oc1.iad.aaaaaaaapulaxjedwo2y3koeli6zq6evql6rropyxpni3wu44i2rbffgxgza'
and inst.source_details ->> 'imageId'=img.id;

Case-2 - returns count as 4, expected 13 Vms, assuming the above image-id is expected
explain select
  count(1)
from
  oci_core_instance inst,
  oci_core_image img
where
  inst.source_details ->> 'imageId'=img.id;

Case-3 - Still returns count as 4, after using nest query, expected 13 Vms
explain select
  count(1)
from
  oci_core_instance inst
-- oci_core_image img
where
  inst.source_details ->> 'imageId' in ( select id from oci_core_image)

Case-4- Using CTE - Returns 8 Vms Expected 13 Vms
explain with image as(
  select
    id,
    operating_system,
    operating_system_version
  from
    oci_core_image
  union
   select
    id,
    operating_system,
    operating_system_version
  from
    oci_core_image_custom
)
select
count(1)
from
  oci_core_instance inst,
  image img
where
  inst.source_details ->> 'imageId' is not null
  and inst.source_details ->> 'imageId'= img.id

I am sorry to ask to share so many details again; this will help to get the broader team member to get this input before we connect.
You can share all details in one set file and attach it here or execute the queries and respective outcomes something like this below wrapped with Fenced Code Block
explain select
  count(1)
from
  oci_core_instance inst
-- oci_core_image img
where
  inst.source_details ->> 'imageId' in ( select id from oci_core_image)
+-----------------------------------------------------------------------------------------------------------+
| QUERY PLAN                                                                                |
+-----------------------------------------------------------------------------------------------------------+
| Aggregate  (cost=20016565815918.79..20016565815918.80 rows=1 width=8)                                     |
|   ->  Nested Loop Semi Join  (cost=0.00..20016565814668.79 rows=500000 width=0)                           |
|         Join Filter: ((inst.source_details ->> 'imageId'::text) = oci_core_image.id)                      |
|         ->  Foreign Scan on oci_core_instance inst  (cost=0.00..10000000000000.00 rows=1000000 width=100) |
|         ->  Materialize  (cost=0.00..10000000020625.00 rows=1000000 width=100)                            |
|               ->  Foreign Scan on oci_core_image  (cost=0.00..10000000000000.00 rows=1000000 width=100)   |
+-----------------------------------------------------------------------------------------------------------+

explain_plan.txt
@rajlearner17
I have attached the file.

@simonneto -- Just adding some more details we looked into to your environment; I will redirect this in the Steampipe channel to include more experts to suggest
Today we tried with materialized-view.
-- Create materialized view for oci_core_instance
CREATE MATERIALIZED VIEW public.mv_oci_core_instance AS
SELECT
  id,
  display_name,
  shape_config_ocpus,
  shape_config_memory_in_gbs,
  shape,
  source_details,
  shape_config_local_disks,
  shape_config_local_disks_total_size_in_gbs
FROM
  oci_core_instance;

-- Create materialized view for oci_core_image
CREATE MATERIALIZED VIEW public.mv_oci_core_image AS
SELECT
  id,
  operating_system,
  operating_system_version
FROM
  oci_core_image;

SELECT
  inst.id,
  inst.display_name,
  inst.shape_config_ocpus,
  inst.shape_config_memory_in_gbs,
  inst.shape,
  img.operating_system,
  img.operating_system_version,
  inst.shape_config_local_disks,
  inst.shape_config_local_disks_total_size_in_gbs
FROM
  mv_oci_core_instance inst
JOIN
  mv_oci_core_image img
ON
  inst.source_details ->> 'imageId' = img.id
WHERE
  inst.source_details ->> 'imageId' IS NOT NULL
ORDER BY
  inst.display_name,
  inst.shape;

Over the above view we executed
SELECT
  inst.id,
  inst.display_name,
  inst.shape_config_ocpus,
  inst.shape_config_memory_in_gbs,
  inst.shape,
  img.operating_system,
  img.operating_system_version,
  inst.shape_config_local_disks,
  inst.shape_config_local_disks_total_size_in_gbs
FROM
  mv_oci_core_instance inst
JOIN
  mv_oci_core_image img
ON
  inst.source_details ->> 'imageId' = img.id
WHERE
  inst.source_details ->> 'imageId' IS NOT NULL
ORDER BY
  inst.display_name,
  inst.shape;

This also resulted in only 4 results.

@simonneto Thanks for waiting patiently. As discussed, query provides the promising result to list the expected rows using left join
select
  inst.id,
  inst.display_name,
  inst.shape_config_ocpus,
  inst.shape_config_memory_in_gbs,
  inst.shape,
  inst.source_details ->> 'imageId' as instance_image_id,
  img.id as image_id,
  img.operating_system,
  img.operating_system_version,
  inst.shape_config_local_disks,
  inst.shape_config_local_disks_total_size_in_gbs
from
  oci_core_instance inst
  left join oci_core_image img
  on inst.source_details ->> 'imageId' = img.id
order by display_name, shape;

Your expected result as below
> select
count(1)
from
  oci_core_instance inst
  left join oci_core_image img
  on inst.source_details ->> 'imageId' = img.id
+-------+
| count |
+-------+
| 186   |
+-------+

HTH to proceed similar approach for the rest of the queries, if any. Let us know if we can close this issue.

@simonneto
Marking this as closed. Please let us know if you need any more help.
Cheers!

Although the count seem to be returning the right number of VMs, when we retrieve the actual image and instance details, we see a lot of null.
select   inst.display_name,   inst.source_details ->> 'imageId',   img.id,   img.operating_system,   img.operating_system_version from   oci_core_instance inst   left join oci_core_image img   on inst.source_details ->> 'imageId' = img.id order by inst.display_name
See the result set attached.
If we gather the same information looping and using the CLI we have a more accurate information.
Thanks,
Simon
resultset.txt

@simonneto If you run this query:
select
  img.id,
  img.operating_system,
  img.operating_system_version
from
  oci_core_image img;

Do you get the results you expect for each image, or are there unexpected null values?

That gives me a consistent result, no nulls, the join operation seem to be lost.

@simonneto Can you please share your results from the image query above too? Thanks!

@rajlearner17 I'm interested in the query results for:
select
  img.id,
  img.operating_system,
  img.operating_system_version
from
  oci_core_image img;

The query results you've mentioned I believe are from:
select
  inst.display_name,
  inst.source_details ->> 'imageId',
  img.id,
  img.operating_system,
  img.operating_system_version
from
  oci_core_instance inst
  left join oci_core_image img
  on inst.source_details ->> 'imageId' = img.id
order by inst.display_name

I'm interested in the standalone image information because I'm not sure if our oci_core_image table is fetching the expected images, but this info should help us determine that.

I have just attached the resultset.
resultset1.txt

@simonneto From your latest result set of image data, do you see the images in there that you'd expect to see for instances you get from the oci_core_instance table?
If there are any missing images from the list, do you know maybe if they'd be in another region that's not included in your oci.spc config file? Or maybe they get returned from the oci_core_image_custom table instead?

Hi @simonneto , we haven't heard back from you in a few weeks, but if you're still running into this issue, can you please see my latest comment? Thanks!

sorry @cbruno10 for the delay, so, I can see all the images there, none of the images are from another region, that is not even possible in OCI, to create a compute instance with an image from another region.
During my tests, I did pick random instances that were not being retrieved by the join query and individually, they seem to work.
If I run this query:
select
inst.id,
img.id
from
oci_core_instance inst,
oci_core_image img
where
inst.source_details ->> 'imageId'=img.id;
I only have 4 Instances, all using the same image id.
+-------------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
| id                                                                                | id                                                                               |
+-------------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
| ocid1.instance.oc1.iad.anuwcljsghe63nacuuihdnyg3pek7dmbfytzhvdnqipds7bceepfvpuusfcq | ocid1.image.oc1.iad.aaaaaaaatw76yshzzwmu6l7rdpsv3kpfnanubwtdhjbrhelz4n7sz7ss5s6q |
| ocid1.instance.oc1.iad.anuwcljsghe63nacqst2uopad4alptlgigtkv7dvnyf6czzvg5xr5ktdslnq | ocid1.image.oc1.iad.aaaaaaaatw76yshzzwmu6l7rdpsv3kpfnanubwtdhjbrhelz4n7sz7ss5s6q |
| ocid1.instance.oc1.iad.anuwcljsghe63nacydhzwm5mmqa7tmcga3ko4wecoh777tuevnx2jnfhpewa | ocid1.image.oc1.iad.aaaaaaaatw76yshzzwmu6l7rdpsv3kpfnanubwtdhjbrhelz4n7sz7ss5s6q |
| ocid1.instance.oc1.iad.anuwcljsghe63nacrkaqkgeon33fml2irr3i7yemoy54t3rpxpkfrmkzyaua | ocid1.image.oc1.iad.aaaaaaaatw76yshzzwmu6l7rdpsv3kpfnanubwtdhjbrhelz4n7sz7ss5s6q |
+-------------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
If I list all instances, basically all of them have image id. Some are null, because they were created from custom images.
select id , source_details ->> 'imageId' from oci_core_instance
So, I randomly pick one image id, lets say:
ocid1.image.oc1.phx.aaaaaaaauxuj5dscwgh46cozxonoxykaepa3xgshcmex75sldsmjmsatj5ra
and run a query in the images filtering for that, I can see it.

select
img.operating_system,
img.operating_system_version
from
oci_core_image img
where img.id='ocid1.image.oc1.phx.aaaaaaaauxuj5dscwgh46cozxonoxykaepa3xgshcmex75sldsmjmsatj5ra'
+------------------+--------------------------+
| operating_system | operating_system_version |
+------------------+--------------------------+
| Oracle Linux     | 8.7                      |
+------------------+--------------------------+

I hope that helps.
We can also have a session on it if you want and it makes it easier for you,.

@simonneto I had a look at both result sets you posted (list of instances from https://github.com/turbot/steampipe-plugin-oci/issues/528#issuecomment-1680719836 and list of images from https://github.com/turbot/steampipe-plugin-oci/issues/528#issuecomment-1682273524), and I took a look at the top 5 rows and pulled out the inst.source_details ->> 'imageId' values:
- ocid1.image.oc1.phx.aaaaaaaatgj6aodlwvyrwlmd6pjrfk3ccr4fv23mw56l3gwsy6cnze56d4ja
- ocid1.image.oc1..aaaaaaaazhhnenhc73ptr6c4dn3nw4sc6eixlqtg5xm4prvxhu7xjdg2ceuq
- ocid1.image.oc1.iad.aaaaaaaasdqmcux7p5sdhhsqygmfzf2n6smemihykfv4bv7qh4235zre75da
- ocid1.image.oc1..aaaaaaaay65ebdc7zge3z3fimpktuso35fdsgx6aoyk5rmu7za3oe7zf3cnq
- ocid1.image.oc1..aaaaaaaay65ebdc7zge3z3fimpktuso35fdsgx6aoyk5rmu7za3oe7zf3cnq

I didn't find these image IDs in the second result set (from the list of images). Would you expect to find these image IDs listed from oci_core_image?

The last 2 IDs you sent are the same and when running the query for the second id, the query is been running for 10 min and not returning any result.
select
img.operating_system,
img.operating_system_version
from
oci_core_image img
where img.id =
'ocid1.image.oc1..aaaaaaaazhhnenhc73ptr6c4dn3nw4sc6eixlqtg5xm4prvxhu7xjdg2ceuq'
⠋ Executing query…

@simonneto Sorry, I had missed there were 2 duplicate image IDs, they appeared since the last two instances used the same image.
I wasn't asking if you could run a query actually, it was more a question of if you run a query to list all of the images without a where clause, do you see the images I had mentioned in https://github.com/turbot/steampipe-plugin-oci/issues/528#issuecomment-1712062571? If not, then that's why your original query that relied on join wouldn't return the proper results, since the oci_core_image table wouldn't contain those images.

@simonneto Based off of the results from https://github.com/turbot/steampipe-plugin-oci/issues/528#issuecomment-1682273524, which I think contains the query results from running:
select
  img.id,
  img.operating_system,
  img.operating_system_version
from
  oci_core_image img;

I don't see all of the images actually, e.g., if I search for the image ID ocid1.image.oc1.phx.aaaaaaaatgj6aodlwvyrwlmd6pjrfk3ccr4fv23mw56l3gwsy6cnze56d4ja (which I found in https://github.com/turbot/steampipe-plugin-oci/issues/528#issuecomment-1680719836, which contains all of the instances along with their image IDs), I don't find it in the full list of images.
Another way to test this using fresh results would be:

Run this query:

select
  display_name as instance_display_name,
  source_details ->> 'imageId' as instance_image_id,
from
  oci_core_instance
order by display_name

Then run this query:

select
  id as image_id,
  operating_system as image_os,
  operating_system_version as image_os_version
from
  oci_core_image;

Then for the first 5-10 rows from the first query, search for the image ID in the second query results

Can you please try running this series of queries and comparisons? Also, can you please attach both query results in a new comment as well (they may be very similar to the previous results you ran, but I think looking at the same set of data could help).
Thanks!

hey @cbruno10 sorry for the delay, it seems that the query on oci_core_image is not returning consistent results. 4 days ago on this update I was able to do what you asked, I randomly picked the image id ocid1.image.oc1.phx.aaaaaaaauxuj5dscwgh46cozxonoxykaepa3xgshcmex75sldsmjmsatj5ra and I could query it on oci_core_image, it seems I no longer can do that.
I am attaching the full results on both queries and I could not find any a single match.
query_results.txt

@simonneto If you run this query to use the oci_core_image_custom table instead, can you please share the list of results:
select
  id as image_id,
  operating_system as image_os,
  operating_system_version as image_os_version,
  region,
  compartment_id
from
  oci_core_image_custom;

I'm not sure why, but in the oci_core_image table, we restrict results to the root compartment (https://github.com/turbot/steampipe-plugin-oci/blob/a9b1a923c2d689b9b1e0b27a8ad0902c87751498/oci/table_oci_core_image.go#L184-L187), but this may be why you aren't seeing the expected images.

Here is the result of the query.
I am not clear on why this is happening, because that query worked not long ago, you can see in one of my previous comments.
query_results_custom.txt

@simonneto
In terms of previous queries working, looking back at the results from https://github.com/turbot/steampipe-plugin-oci/issues/528#issuecomment-1682273524, I can't find the image ID ocid1.image.oc1.phx.aaaaaaaauxuj5dscwgh46cozxonoxykaepa3xgshcmex75sldsmjmsatj5ra in that list. These results were also run before you ran the queries in https://github.com/turbot/steampipe-plugin-oci/issues/528#issuecomment-1711788461 I believe, so it seems like previous queries may not have been returning the correct images either from the oci_core_image table.
I think the issue is with getting the correct list of images, so may be good to dig in more there.
First, can you please share your ~/.steampipe/config/oci.spc connections (with sensitive info removed)? Also, have you changed any of your OCI connections, or creds within the OCI CLI at all recently over the past few weeks?
Then, can you please run the following query and share the results:
select
  id as image_id,
  display_name as image_name,
  operating_system as image_os,
  operating_system_version as image_os_version,
  region,
  compartment_id,
  tenant_id
from
  oci_core_image_custom
order by
  image_id;

For the results the above query produces, does that list of images match what you see in the OCI console? Are there any particular types of images missing from the query results, or any that are in the query results you wouldn't expect to see? We don't have access to see what images are in your OCI account, so that part of the comparison will need to be completed by you.

Here is the content of the file and no, I have not changed my access level in the last weeks.
connection "oci_x" {
plugin                = "oci"
config_file_profile   = "OCIX"          # Name of the profile in the OCI config file
config_path           = "/Users/sneto/.oci/config"    # Path to config file
regions               = ["us-phoenix-1", "us-ashburn-1"] # List of regions to query resources
}
query_results_1.txt

@simonneto Thanks for sending over those query results!
I think getting a few other data points around images may be helpful, can you please see the questions below? Thanks!

Using the OCI CLI, if you run oci compute image list --all --compartment-id <id here> (from https://docs.oracle.com/en-us/iaas/tools/oci-cli/3.33.0/oci_cli_docs/cmdref/compute/image/list.html), do you see all images for the given compartment ID you'd expect?
For the most recent query results you shared, does that list of images match what you see in the OCI console and from the OCI CLI command output?
For the images you're looking for, do you know if those images live in the root compartment in your tenant, or are they in other compartments?
Are there any particular types of images missing from the query results, or any that are in the query results you wouldn't expect to see?

Hi @cbruno10 I did a research and the images are scattered across different compartments. When I search various image ids using the CLI or even the GUI I can find them. Both custom and standard images.

Hey @simonneto, could you please try this branch and let us know your findings.
Steps -
git clone git@github.com:turbot/steampipe-plugin-oci.git
cd steampipe-plugin-oci
git checkout core_image
make
run your query

query_results_2.txt

Could you please try the below and let us know if the issue still persists -
select
  inst.id,
  inst.display_name,
  inst.shape_config_ocpus,
  inst.shape_config_memory_in_gbs,
  inst.shape,
  img.operating_system,
  img.operating_system_version,
  inst.shape_config_local_disks,
  inst.shape_config_local_disks_total_size_in_gbs
from
  oci_core_instance inst,
  oci_core_image img
where
inst.source_details ->> 'imageId' is not null
and inst.source_details ->> 'imageId'=img.id
order by display_name, shape ;

@cbruno10 yeah mate, the issue is there.
`> select
inst.id,
inst.display_name,
inst.shape_config_ocpus,
inst.shape_config_memory_in_gbs,
inst.shape,
img.operating_system,
img.operating_system_version,
inst.shape_config_local_disks,
inst.shape_config_local_disks_total_size_in_gbs
from
oci_core_instance inst,
oci_core_image img
where
inst.source_details ->> 'imageId' is not null
and inst.source_details ->> 'imageId'=img.id
order by display_name, shape ;
+-------------------------------------------------------------------------------------+--------------+--------------------+----------------------------+----------------+------------------------------+--------------------------+--------------------------+----------------->
| id                                                                                | display_name | shape_config_ocpus | shape_config_memory_in_gbs | shape          | operating_system             | operating_system_version | shape_config_local_disks | shape_config_loc>
+-------------------------------------------------------------------------------------+--------------+--------------------+----------------------------+----------------+------------------------------+--------------------------+--------------------------+----------------->
| ocid1.instance.oc1.iad.anuwcljsghe63nacrkaqkgeon33fml2irr3i7yemoy54t3rpxpkfrmkzyaua | db-app-1     | 2                  | 30                         | VM.Standard2.2 | Oracle Linux Cloud Developer | 8                        | 0                        |           >
| ocid1.instance.oc1.iad.anuwcljsghe63nacydhzwm5mmqa7tmcga3ko4wecoh777tuevnx2jnfhpewa | db-app-2     | 2                  | 30                         | VM.Standard2.2 | Oracle Linux Cloud Developer | 8                        | 0                        |           >
| ocid1.instance.oc1.iad.anuwcljsghe63nacqst2uopad4alptlgigtkv7dvnyf6czzvg5xr5ktdslnq | web-app-1    | 2                  | 30                         | VM.Standard2.2 | Oracle Linux Cloud Developer | 8                        | 0                        |           >
| ocid1.instance.oc1.iad.anuwcljsghe63nacuuihdnyg3pek7dmbfytzhvdnqipds7bceepfvpuusfcq | web-app-2    | 2                  | 30                         | VM.Standard2.2 | Oracle Linux Cloud Developer | 8                        | 0                        |           >
+-------------------------------------------------------------------------------------+--------------+--------------------+----------------------------+----------------+------------------------------+--------------------------+--------------------------+----------------->

`

But I have been working around with with some python SDK and I am listing all the contents of all compartments and regions of a tenancy and exporting to an excel sheet.

@simonneto For these images:
- ocid1.image.oc1.phx.aaaaaaaatgj6aodlwvyrwlmd6pjrfk3ccr4fv23mw56l3gwsy6cnze56d4ja
- ocid1.image.oc1..aaaaaaaazhhnenhc73ptr6c4dn3nw4sc6eixlqtg5xm4prvxhu7xjdg2ceuq
- ocid1.image.oc1.iad.aaaaaaaasdqmcux7p5sdhhsqygmfzf2n6smemihykfv4bv7qh4235zre75da
- ocid1.image.oc1..aaaaaaaay65ebdc7zge3z3fimpktuso35fdsgx6aoyk5rmu7za3oe7zf3cnq

Are you able to locate them using the OCI CLI or with your Python SDK? If so, are you able to find what compartment and what region they're in? These are image IDs that some of your instances are using but aren't being returned from the oci_core_image table currently.
Also, can you please share the results of these 2 queries:
select
  name,
  id,
  compartment_id,
  tenant_id
from
  oci_identity_compartment;

and:
select
  name,
  tenant_id
from
  oci_region;

Thanks for running all of these queries, I know it's a lot of work to constantly post the results, but hoping we can figure out the issue/bugs soon!

Some more findings -
There are images like - ocid1.image.oc1..aaaaaaaazhhnenhc73ptr6c4dn3nw4sc6eixlqtg5xm4prvxhu7xjdg2ceuq which are not region specific like other core images but available in all region. This region does not come in ListImages API but in GetImage API. Also, they are available for all compartments(publisherCompartment).
➜  steampipe-plugin-oci git:(core_image) ✗ oci compute image get --image-id ocid1.image.oc1..aaaaaaaazhhnenhc73ptr6c4dn3nw4sc6eixlqtg5xm4prvxhu7xjdg2ceuq
WARNING: Permissions on /Users/sourav/.oci/config are too open.
To fix this please try executing the following command:
oci setup repair-file-permissions --file /Users/sourav/.oci/config
Alternatively to hide this warning, you may set the environment variable, OCI_CLI_SUPPRESS_FILE_PERMISSIONS_WARNING:
export OCI_CLI_SUPPRESS_FILE_PERMISSIONS_WARNING=True

{
  "data": {
    "agent-features": null,
    "base-image-id": null,
    "billable-size-in-gbs": 0,
    "compartment-id": "publisherCompartment",
    "create-image-allowed": false,
    "defined-tags": {},
    "display-name": "Oracle Enterprise Manager 13.4 Release - RU6",
    "freeform-tags": {},
    "id": "ocid1.image.oc1..aaaaaaaazhhnenhc73ptr6c4dn3nw4sc6eixlqtg5xm4prvxhu7xjdg2ceuq",
    "launch-mode": "NATIVE",
    "launch-options": {
      "boot-volume-type": "PARAVIRTUALIZED",
      "firmware": "UEFI_64",
      "is-consistent-volume-naming-enabled": true,
      "is-pv-encryption-in-transit-enabled": false,
      "network-type": "PARAVIRTUALIZED",
      "remote-data-volume-type": "PARAVIRTUALIZED"
    },
    "lifecycle-state": "AVAILABLE",
    "listing-type": null,
    "operating-system": "Oracle Linux",
    "operating-system-version": "8",
    "size-in-mbs": 153600,
    "time-created": "2020-09-23T00:56:02.924000+00:00"
  },
  "etag": "7be54c7e5c5407bec03d5092810e95429eb1a9c7d7214f50592314b0a8525561"
}

@simonneto There are a few things we found in our table and from OCI:

As you and @bigdatasourav noted, some images come from publishers ("compartment-id": "publisherCompartment") or don't have any assigned compartment ID ("compartment-id": null)
This means using ListImages will not return those images and only GetImage will return them
Our FDW seems to have some issues passing in qualifier information from JSONB columns, so this is why I think ListImages call is being made, not GetImage in the oci_core_image table, when you run your query

I've raised https://github.com/turbot/steampipe-postgres-fdw/issues/352 to track that issue, but a suggested workaround in the meantime is to try using a materialized view:
with instance as materialized (
  select
    id,
    display_name,
    source_details ->> 'imageId' as image_id
  from
    oci_core_instance
)
select
  inst.id,
  inst.display_name,
  inst.image_id,
  img.id,
  img.compartment_id
from
  instance as inst,
  oci_core_image as img
where
  inst.image_id is not null
  and inst.image_id = img.id
order by
  inst.display_name;

Can you please try running that query above (with the compiled main branch instead of core_image branch)?
This query doesn't contain all of the details in your original query, but it should help us determine if more image information is being pulled in correctly.

@simonneto @cbruno10, Regarding ListImages API, this could be the reason for the missing OCIDs.

That makes sense to me and why was becoming so mysterious. If this is the case, it will be a challenge to find image details for relatively old VMs.

@simonneto Does the most recent query I posted retrieve anymore rows for you?

@cbruno10 no mate, same result.

@simonneto Thanks for testing, if that's the case, then I believe the missing images may be due to OCI replacing images over time (from https://github.com/turbot/steampipe-plugin-oci/issues/528#issuecomment-1726800309).
For getting images that are still returned from OCI though, I recommend using this query:
with instance as materialized (
  select
    id,
    display_name,
    source_details ->> 'imageId' as image_id
  from
    oci_core_instance
)
select
  inst.id,
  inst.display_name,
  inst.image_id,
  img.id,
  img.compartment_id
from
  instance as inst,
  oci_core_image as img
where
  inst.image_id = img.id
order by
  inst.display_name;

As I noted in https://github.com/turbot/steampipe-plugin-oci/issues/528#issuecomment-1718059549, there is an issue with our FDW that requires the use of materialized as a workaround at the moment.
One enhancement to the query would be to also join with the oci_core_image_custom table if any of your instances use custom images.
@simonneto I believe the query I shared above should work for retrieving all currently available images and as of now, there's no known way to programmatically get images that OCI has replaced.
So I don't believe there's anything left to investigate for this issue at the moment, but if there is, please let us know.


How to add new objects without using Create buttons?

I'm creating some objects in javascript that I want to enable edition with Create. Create doesn't seem to provide a way to manually add new objects. Right now I'm restarting Create altogether but this seems overkill and some information is lost. Is it possible to make Create recognize my new element as editable?

@lopis you can simply register them to VIE's main Backbone collection.
Example: https://github.com/bergie/create/blob/00d43ea4e53ea084333f0280753964db9131ade5/src/metadataWidgets/jquery.Midgard.midgardTags.js#L85


[Chore] Bump version to 3.17.0

What happened 👀
Bump version to 3.17.0
Insight 📝
Automatically created by the Bump Version workflow.
Proof Of Work 📹
On the Files changed tab

I'll create a new pull request, so we can keep this as a reference for the bug ticket


Upgrade Stardog to 9.0.0

Stardog should be upgraded to 9.0.0, and a new release should be done.
Changelogs: https://docs.stardog.com/release-notes/stardog-platform#900-release-2023-04-05

Done, and released for v0.8.0.


IP

When making a new client you cant specify a port or an ip you can do it manually but it would be cool to have it in the script when you run the script you can specify the port and ip to add a new client

No plans to implement this into the script, sorry.


Register the poll command for the Chat Commander module

Hello,
It would be nice to have the /poll command registered with the Chat Commander module for auto-completion in the chat, according to https://gitlab.com/woodentavern/foundryvtt-chat-command-lib#registering-or-removing-commands.

Added support in new version. Since I never used Chat Commander before, please let me know if everything works as intended or if there is something I could improve :)

Looks great, and works perfectly, thank you! :D
Only thing I can suggest is adding an icon, but that's just a tiny detail.


add installation instructions

You might also want to consider publishing this on npm as @wokalski/vow, since it seems mature enough for that and being published would better reflect that.
Once this has been merged I'll remove the neglected flag on redex, but also let me know if you publish so I can update it accordingly (or just make a PR to do it yourself)

Thank you very much. I'm publishing it now.

Great! Remember to update your readme before publishing, so the published instruction are correct.

🤦♂


Do not inherit entity config defaultDisplayName

@aledsage could you review it.

Inherited configs are not persisted so the fix will work when applying to an Apache Brooklyn instance which already persisted such config values.

retest please

retest this please

LGTM

Looks good

LGTM; tests pass locally for me. Merging now.

Failure in jenkins looks unrelated (a timeout):
Failed to notify spy hudson.maven.Maven3Builder$JenkinsEventSpy: Invalid object ID 11 iota=46
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.18.1:test (default-test) on project brooklyn-launcher: There was a timeout or other error in the fork -> [Help 1]


v0.3.0

Coverage remained the same at 100.0% when pulling 9b0a23170113b02c65b5490edb423b9803df4651 on develop into a7fb4afd99cc02691c09afed838555f2d28e48b8 on master.


Project deppending on other project not compiling after switching to main

I collaborate in some C++ projects, and, in one of them, we are recently experienciing compilation issues since we switched the cmake-action we use from version v2.0.0 to main.
The issue affects this repository, which deppends on this other one.
To discover this issue, we created this pull request.
The "parent" project can compile with no issues, but the "child" one errors out with this error:
Run threeal/cmake-action@main
-- Building for: Visual Studio 17 2022
-- The C compiler identification is MSVC [19](https://github.com/gigabit-clowns/xmipp4-communication-mpi/actions/runs/11990281683/job/33427612733#step:5:20).42.34433.0
-- The CXX compiler identification is MSVC 19.42.34433.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: C:/Program Files/Microsoft Visual Studio/[20](https://github.com/gigabit-clowns/xmipp4-communication-mpi/actions/runs/11990281683/job/33427612733#step:5:21)22/Enterprise/VC/Tools/MSVC/14.42.34433/bin/Hostx64/x64/cl.exe - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: C:/Program Files/Microsoft Visual Studio/20[22](https://github.com/gigabit-clowns/xmipp4-communication-mpi/actions/runs/11990281683/job/33427612733#step:5:23)/Enterprise/VC/Tools/MSVC/14.42.34433/bin/Hostx64/x64/cl.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
CMake Error at CMakeLists.txt:41 (find_package):
  By not providing "Findxmipp4-core.cmake" in CMAKE_MODULE_PATH this project
  has asked CMake to find a package configuration file provided by
  "xmipp4-core", but CMake did not find one.

  Could not find a package configuration file provided by "xmipp4-core" with
  any of the following names:

    xmipp4-coreConfig.cmake
    xmipp4-core-config.cmake

  Add the installation prefix of "xmipp4-core" to CMAKE_PREFIX_PATH or set
  "xmipp4-core_DIR" to a directory containing one of the above files.  If
  "xmipp4-core" provides a separate development package or SDK, be sure it
  has been installed.

-- Configuring incomplete, errors occurred!

As stated before, this error only occurs selecting cmake-action in branch main, but works fine in v2.0.0.
Is there anything that gets set differently in the tags when they get generated for release that makes it necessary to use a tag always, or could it be a bug introduced post 2.0.0?

Thanks for pointing this out. It is likely an error introduced in the main branch. It seems that the main version incorrectly sets the arguments used to call the CMake command, particularly for the input xmipp4-core_ROOT=D:\a\xmipp4-communication-mpi\xmipp4-communication-mpi/../xmipp4-core/dist.
I suggest trying to run the action again using the main branch. I just updated it yesterday to include logs for the executed command (see #524). Check what makes the command from the main branch differ from the one in the v2.0.0 tag.

Okay, so I have just made a test in this draft Pull Request.
At first, I set both uses of cmake action (one in the main workflow and another in a composite action) to use main branch, and the results were:

The composite action that installs the project marked as a dependency works fine, that step finishes with exit code 0:

Run threeal/cmake-action@main
cmake D:\a\xmipp4-communication-mpi\xmipp4-communication-mpi/../xmipp4-core -B D:\a\xmipp4-communication-mpi\xmipp4-communication-mpi/../xmipp4-core/build -DBUILD_TESTING=OFF -DCMAKE_BUILD_TYPE=Release -DXMIPP4_CORE_BUILD_SPDLOG=ON
-- Building for: Visual Studio 17 2022
-- The C compiler identification is MSVC 19.42.34433.0
-- The CXX compiler identification is MSVC 19.42.34433.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Tools/MSVC/14.42.34433/bin/Hostx64/x64/cl.exe - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Tools/MSVC/14.42.34433/bin/Hostx64/x64/cl.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - not found
-- Found Threads: TRUE
-- Build spdlog: 1.15.0
-- Build type: Release
-- Generating install
-- Configuring done (17.4s)
-- Generating done (0.1s)
-- Build files have been written to: D:/a/xmipp4-communication-mpi/xmipp4-core/build
cmake --build D:\a\xmipp4-communication-mpi\xmipp4-communication-mpi/../xmipp4-core/build --config Release
MSBuild version 17.12.6+db5f6012c for .NET Framework

  1>Checking Build System
  Building Custom Rule D:/a/xmipp4-communication-mpi/xmipp4-core/build/_deps/spdlog-src/CMakeLists.txt
  spdlog.cpp
  stdout_sinks.cpp
  color_sinks.cpp
  file_sinks.cpp
  async.cpp
  cfg.cpp
  bundled_fmtlib_format.cpp
  Generating Code...
     Creating library D:/a/xmipp4-communication-mpi/xmipp4-core/build/_deps/spdlog-build/Release/spdlog.lib and object D:/a/xmipp4-communication-mpi/xmipp4-core/build/_deps/spdlog-build/Release/spdlog.exp
  spdlog.vcxproj -> D:\a\xmipp4-communication-mpi\xmipp4-core\build\_deps\spdlog-build\Release\spdlog.dll
  Building Custom Rule D:/a/xmipp4-communication-mpi/xmipp4-core/CMakeLists.txt
  cmake_pch.cxx
  Could not determine float byte ordering. Defaulting to system byte order
  communicator_manager.cpp
  dummy_communicator.cpp
  dummy_communicator_backend.cpp
  checks.cpp
  device_manager.cpp
...

The next step, the one that installs the current project fails with this error:

Run threeal/cmake-action@main
cmake D:\a\xmipp4-communication-mpi\xmipp4-communication-mpi -B D:\a\xmipp4-communication-mpi\xmipp4-communication-mpi/build -DCMAKE_C_COMPILER=cl -DCMAKE_CXX_COMPILER=cl -DCMAKE_BUILD_TYPE=Release -Dxmipp4-core_ROOT=D:axmipp4-communication-mpixmipp4-communication-mpi/../xmipp4-core/dist
-- Building for: Visual Studio 17 2022
-- The C compiler identification is MSVC [19](https://github.com/gigabit-clowns/xmipp4-communication-mpi/actions/runs/12007485778/job/33468153047?pr=17#step:5:20).42.34433.0
-- The CXX compiler identification is MSVC 19.42.34433.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: C:/Program Files/Microsoft Visual Studio/[20](https://github.com/gigabit-clowns/xmipp4-communication-mpi/actions/runs/12007485778/job/33468153047?pr=17#step:5:21)22/Enterprise/VC/Tools/MSVC/14.42.34433/bin/Hostx64/x64/cl.exe - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: C:/Program Files/Microsoft Visual Studio/20[22](https://github.com/gigabit-clowns/xmipp4-communication-mpi/actions/runs/12007485778/job/33468153047?pr=17#step:5:23)/Enterprise/VC/Tools/MSVC/14.42.34433/bin/Hostx64/x64/cl.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
CMake Error at CMakeLists.txt:41 (find_package):
  By not providing "Findxmipp4-core.cmake" in CMAKE_MODULE_PATH this project
  has asked CMake to find a package configuration file provided by
  "xmipp4-core", but CMake did not find one.

  Could not find a package configuration file provided by "xmipp4-core" with
  any of the following names:

    xmipp4-coreConfig.cmake
    xmipp4-core-config.cmake

  Add the installation prefix of "xmipp4-core" to CMAKE_PREFIX_PATH or set
  "xmipp4-core_DIR" to a directory containing one of the above files.  If
  "xmipp4-core" provides a separate development package or SDK, be sure it
  has been installed.

-- Configuring incomplete, errors occurred!
Error: Command exited with status code 1

Then, I reverted the version in the main workflow to v2, keeping the one in the composite to main.
The installation of the dependency still worked the same, and the main project compilation-installation worked too:
Run threeal/cmake-action@v2
"C:\Program Files\CMake\bin\cmake.exe" D:\a\xmipp4-communication-mpi\xmipp4-communication-mpi -B D:\a\xmipp4-communication-mpi\xmipp4-communication-mpi/build -DCMAKE_C_COMPILER=cl -DCMAKE_CXX_COMPILER=cl -DCMAKE_BUILD_TYPE=Release -Dxmipp4-core_ROOT=D:\a\xmipp4-communication-mpi\xmipp4-communication-mpi/../xmipp4-core/dist
-- Building for: Visual Studio 17 2022
-- The C compiler identification is MSVC [19](https://github.com/gigabit-clowns/xmipp4-communication-mpi/actions/runs/12007680390/job/33468769789?pr=17#step:5:20).42.34433.0
-- The CXX compiler identification is MSVC 19.42.34433.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: C:/Program Files/Microsoft Visual Studio/[20](https://github.com/gigabit-clowns/xmipp4-communication-mpi/actions/runs/12007680390/job/33468769789?pr=17#step:5:21)22/Enterprise/VC/Tools/MSVC/14.42.34433/bin/Hostx64/x64/cl.exe - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: C:/Program Files/Microsoft Visual Studio/20[22](https://github.com/gigabit-clowns/xmipp4-communication-mpi/actions/runs/12007680390/job/33468769789?pr=17#step:5:23)/Enterprise/VC/Tools/MSVC/14.42.34433/bin/Hostx64/x64/cl.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - not found
-- Found Threads: TRUE
-- Found MPI_CXX: C:/Program Files (x86)/Intel/oneAPI/mpi/latest/lib/impi.lib (found suitable version "3.1", minimum required is "3")
-- Found MPI: TRUE (found suitable version "3.1", minimum required is "3") found components: CXX
-- Configuring done (15.3s)
-- Generating done (0.1s)
CMake Warning:
  Manually-specified variables were not used by the project:
    CMAKE_BUILD_TYPE
-- Build files have been written to: D:/a/xmipp4-communication-mpi/xmipp4-communication-mpi/build
"C:\Program Files\CMake\bin\cmake.exe" --build D:\a\xmipp4-communication-mpi\xmipp4-communication-mpi/build --config Release
MSBuild version 17.12.6+db5f6012c for .NET Framework
  1>Checking Build System
  Building Custom Rule D:/a/xmipp4-communication-mpi/xmipp4-communication-mpi/CMakeLists.txt
  mpi_communicator.cpp
  mpi_communicator_backend.cpp
  mpi_error.cpp
  mpi_instance.cpp
  mpi_operation.cpp
...

Indeed, it looks like in main branch, flag xmipp4-core_ROOT is not being parsed correctly, missing the \ characters, which explains why this issue is only happening in our Windows build.

Right, the issue seems to be caused by the action incorrectly parsing the command-line arguments. I'll probably need to write my own function for handling arguments with quotes instead of relying on an external library.

@MartinSalinas98 try this branch: add-parse-args-quote-func

Seems to work fine:
Run threeal/cmake-action@add-parse-args-quote-func
cmake D:\a\xmipp4-communication-mpi\xmipp4-communication-mpi -B D:\a\xmipp4-communication-mpi\xmipp4-communication-mpi/build -DCMAKE_C_COMPILER=cl -DCMAKE_CXX_COMPILER=cl -DCMAKE_BUILD_TYPE=Release -Dxmipp4-core_ROOT=D:\a\xmipp4-communication-mpi\xmipp4-communication-mpi/../xmipp4-core/dist
...


Language/runtime: "context" enum

this should be part of a larger context object which is passed around as a first-class item and includes a pointer to the current store-specific TransactionContext(s).

fixed in c6dae42d121caf5340d68773d2ef4fc71c0b7d17


Website is down

As the title says:
This site can’t be reachedThe web page at https://autoplug.ddns.net/ might be temporarily down or it may have moved permanently to a new web address.
ERR_TUNNEL_CONNECTION_FAILED

@ichbestimmtnicht Let me quote from my spigot-posts first line: "News: We are updating our website, that's why registration will not work for a while. Sry for the inconvenience!
Get notified when the update is ready: https://discord.gg/GGNmtCC"
https://www.spigotmc.org/resources/autoplug-automatic-plugin-updater.78414/

@ichbestimmtnicht Let me quote from my spigot-posts first line: "News: We are updating our website, that's why registration will not work for a while. Sry for the inconvenience!
Get notified when the update is ready: https://discord.gg/GGNmtCC"
https://www.spigotmc.org/resources/autoplug-automatic-plugin-updater.78414/


Project reading in dev

I'm new to javascript and easybase, and I'm implementing a project using several tables and users. I can write to a table using addRecord or Frame().push but then always get back an empty Frame or a frame with just the newest element respectively. The table has read/write permissions for the user in the project settings, so it seems like writing works fine but reading does not. I'm working in dev on localhost and I'm wondering if this is because there's an option to make an integration "testing mode enabled" for a table but not for the whole project. Any ideas for how to work with or around this? Thanks.
Specifics:
My table "FEELINGS" currently has many rows and appears on https://app.easybase.io/#/tables as such. My constant row is a Record which contains a key-value pair location: "beginning". This code is within an async function called when a user clicks "save", and the user is signed in:
configureFrame( {tableName: "FEELINGS"} )
await sync()
await addRecord({
            insertAtEnd: true,
            newRecord: row,
            tableName: "FEELINGS"
        })
await sync()
console.log(Frame().map(e => e.location))

The log is Frame:  [].
If I replace the code as such:
configureFrame( {tableName: "FEELINGS"} )
await sync()
Frame().push(row)
await sync()
console.log(Frame().map(e => e.location))

The log is Frame:  ["beginning"], so it now contains the pushed item but not any others.

Hello,
If you're using a project and have enabled a table's permissions in the project menu, you don't need to make a table-specific React integration. So, you can safely delete those without loosing access from your code.
From there, I think the issue might be that you're accessing Frame() before it's updated. sync() does not return after the new Frame has been configured, it returns after the networking functions are complete. The useFrameEffect() hook is  used for dealing with your newly updated Frame(). So, try something like the following code snippet. Let me know if this helps!
const {
  configureFrame,
  sync,
  Frame,
  isUserSignedIn,
  addRecord,
  useFrameEffect
} = useEasybase();

useFrameEffect(() => {
  console.log(Frame().map(e => e.location))
});

const clickedButton = async (res) => {
  if (isUserSignedIn()) {
    await addRecord({
      insertAtEnd: true,
      newRecord: row,
      tableName: "FEELINGS"
    })

    configureFrame( {tableName: "FEELINGS"});
    sync();
  }
}

Thanks so much! This helps me understand a lot better. Based on this, it seems like I'm having issues in general reading information with Frame: currently on the web app I can check that I've written several rows of data to my table "FEELINGS", and I get successful message responses when I write to it, but a call to Frame() always returns an empty list.
if (!configureFrame({ tableName: "FEELINGS" }).success) {
    console.log("failed to configure frame")
}
if (!(await sync()).success) { console.log("failed to sync") }

console.log(Frame())
console.log(Frame().map(e => e.location))

Console logs:
Proxy {Symbol(observable-meta-key): x, observe: ƒ, unobserve: ƒ}
[[Handler]]: x
[[Target]]: Array(0)
[[IsRevoked]]: false

[]

I thought maybe the issue was with the existing records in my table not being accessed because of a user authentication problem, but I changed my project permissions to universal read access and universal write access, and I got the same result. Any ideas?
A few other miscellaneous notes (I'm new to using Issues so I'm not sure of what the best format is to ask about these -- sorry for a very long post):

I've adjusted my project to be almost entirely write-only due to the above problem, but I'm now trying to use updateRecordImage to add an image and it's giving me this error with this code (with both the commented and uncommented versions of imgRecord). So, this is the more relevant use case for me now -- unsure if it has the same underlying problem as above or not.
if (isUserSignedIn()) {
    if (!configureFrame({ tableName: "METADATA" }).success) {
        console.log("failed to configure frame")
    }
    if (!(await sync()).success) { console.log("failed to sync") }
    const imgRecord = Frame().filter(e => e.name == "participant-img")[0]  // this is undefined due to the above issue even though there exists a record matching this
    // const imgRecord = { name: "participant-img" }
    const record = {
        attachment: participantImg,
        columnName: "img",
        record: imgRecord,
        tableName: "METADATA"
    }
    if (!(await updateRecordImage(record)).success) {
        console.log("failed to add bio image record, trying again...")
        console.log(await updateRecordImage(record))
    }
    if (!(await sync()).success) { console.log("failed to sync") }
}

failed to add bio image record, trying again...
{success: false, message: "Attempting to add attachment to a new record that has not been synced. Please sync() before trying to add attachment."}

Overall I've noticed that I get a network error when I try to add a record to an empty table. I've been circumventing this by adding a row manually in the app to each table, so it's not a big issue but a potential bug. Here's the errror:
{message: TypeError: Network request failed
    at XMLHttpRequest.xhr.onerror (http://localhost:3000/static/j…, success: false}
message: TypeError: Network request failed at XMLHttpRequest.xhr.onerror (http://localhost:3000/static/js/vendors~main.chunk.js:1061:20)
message: "Network request failed"
stack: "TypeError: Network request failed↵    at XMLHttpRequest.xhr.onerror (http://localhost:3000/static/js/vendors~main.chunk.js:1061:20)"
__proto__: Error
success: false
__proto__: Object

I would like to be able to export tables from the web app based on user, but user id information is not included in exports: is there a way to do this?

Thanks for your patience and help!

Okay I think I have some solutions for the problems you're facing here.
First, install the latest version of this package with npm install easybase-react. This should resolve the image uploading image you were facing.
Following that, move the these two lines:
console.log(Frame())
console.log(Frame().map(e => e.location))

to the useFrameEffect() hook like so:
function MyComponent(props){
  const { configureFrame, sync, Frame, useFrameEffect } = useEasybase();

  const someoneClickedButton () => {
    if (!configureFrame({ tableName: "FEELINGS" }).success) {
        console.log("failed to configure frame")
    }
    if (!(await sync()).success) { console.log("failed to sync") }
  }

  useFrameEffect(() => {
    console.log(Frame().map(e => e.location))
  })

  return (
    //...
  )
}

Calling sync() changes your Frame which triggers the useFrameEffect hook.
Let me know if these solutions fix some some of the issues you were facing. Thanks!

Hi - I'm having the same issue, were you able to resolve it? I'm able to write to my table but not read from it. (Write and read are both enabled in the table settings.) Frame() is empty, and useFrameEffect() is never called. Any troubleshooting tips @dilan-dio4? Thanks!
function App() {
  const { Frame, configureFrame, sync, useFrameEffect } = useEasybase();

  useEffect(() => {
    configureFrame({ tableName: "RECIPES" });
    sync();
  }, [configureFrame, sync]);

  useFrameEffect(() => {
    console.log("useFrameEffect called");
    console.log(Frame().map(e => e.location))
  })

  return (
    <EasybaseProvider ebconfig={ebconfig}>

            {Frame().map((r) => (
              <Recipe name={r.name} link = {r.link} description = {r.description} />
            ))}

    </EasybaseProvider>
  );
}


Prototype/feature/improved tests

Codecov Report

Merging #7 into prototype/muckup will increase coverage by 0.47%.
The diff coverage is 84%.

@@                 Coverage Diff                  @@
##           prototype/muckup       #7      +/-   ##
====================================================
+ Coverage             92.28%   92.76%   +0.47%
====================================================
  Files                     4        4
  Lines                   363      373      +10
====================================================
+ Hits                    335      346      +11
+ Misses                   28       27       -1

Impacted Files
Coverage Δ

muckup/mutators.py
96.35% <100%> (+0.03%)
:arrow_up:

muckup/__main__.py
94.25% <81.81%> (+1.66%)
:arrow_up:

muckup/runner.py
83.69% <83.33%> (+0.36%)
:arrow_up:

Continue to review full report at Codecov.

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