Add documentation for "Hosting considerations" when running SignalR

Describe the new topic

There are various things that can affect ASP.NET Core SignalR deployments that we need to document

Sticky sessions are required, it would be good to show in a couple of common environments how that is setup

Azure App Service
HA proxy (link to external doc)
nginx (link to external doc)
kubernetes (https://github.com/aspnet/SignalR/issues/2333#issuecomment-391396158)

Controlling the number of concurrent connections via the various servers

IIS (we need to see if this is even possible)
Kestrel

A short blurb that describes the fact that multiple servers requires a backplane and we have redis built in (link to the scale out doc that we don't have yet https://github.com/aspnet/Docs/issues/7814)

HAProxy: https://www.haproxy.com/blog/load-balancing-affinity-persistence-sticky-sessions-what-you-need-to-know/
nginx: https://docs.nginx.com/nginx/admin-guide/load-balancer/http-load-balancer/#sticky
This could possibly be merged with the high-level parts of #7814 and then the Redis-specific stuff could be moved off to a sub-doc or something. There's a lot of similarity here since most modern applications are hosted with multiple server instances, which means scale-out is a consideration.


Broken Date type reflection mechanizm

There is an issue in a transpilation mechanizm that ts-node also use:
https://github.com/TypeStrong/ts-node/issues/511
import "reflect-metadata";

const CollectMetadata: PropertyDecorator = (target, propertyKey) => {
    const ReflectType = Reflect.getMetadata("design:type", target, propertyKey);
    console.log(ReflectType);
    console.log(ReflectType === Date);
}

class Test {
    @CollectMetadata
    property: Date;
}

The workaround is to use --type-check flag with ts-node.
Is there an equivalent of that option in ts-jest?
Thanks!

Interesting. Not currently. I'm not sure what the --type-check flag actually does.

I also have this problem. I made a repo that demonstrates the issue: https://github.com/akheron/ts-jest-test

I'm not sure about this but I suspect this would involve walking through the AST

I ask that we reopen this issue. Both this issue and #445, which I created, were closed but we have 4 people having the same issue in the span of a few days so this issue is probably not going away.
As mentioned in #445, a similar issue is solved in ts-node by using the --type-check flag. I did a brief dive into their code, and while I'm not an expert in ts compilation, it seems like they're just setting additional compiler settings.

I definitely agree that this shouldn't be closed, (but to me it seems open). Would love a PR (or a test case on a ts-jest branch) if anyone feels up for the task.

@jelling

it seems like they're just setting additional compiler settings.

I couldn't find info on this but if you can tell me which compiler settings need to be set, this can be added to ts-jest. If it's something more than compiler settings, I'm going to need help here

I definitely agree that this shouldn't be closed, (but to me it seems open). Would love a PR (or a test case on a ts-jest branch) if anyone feels up for the task.

I've created a PR with test suite to show the problem 😉

That's wonderful thank you so much! Hopefully we can get this looked at soon!
(if anyone else reading wants to give it a shot, you're also very welcome, we're not a huge base of contributors and we all have stuff to do)

I am having the same problem. Here is a quick workaround.
const forceType = (object: any) => (
  target: any,
  propertyKey: string,
) => {
  Reflect.defineMetadata('design:type', object, target, propertyKey);
};

class MyType {
    @minDate('now')
    @optional()
    @forceType(Date) // add extra annotation here
    date?: Date;
  }

Also, there are similar problems with arrays.
type StringOrNumber = string | number;

class MyType {
  a: string[], // OK, array is emitted
  b: Array<string | number>, // Wrong, object is emited
  c: StringOrNumber[], // OK
  d: MyCustomClass[], // OK
}

I've taken a look at ts-node.
It seems that if typechecking is set, they create a typescript language service and make that emit the output. Details here
Relevant parts with some stuff commented out is below:

if (typeCheck) {
    // Set the file contents into cache.
    const updateMemoryCache = function (code: string, fileName: string) {
      //...
      }
    }

    // Create the compiler host for type checking.
    const serviceHost = {
      getScriptFileNames: () => Object.keys(memoryCache.versions),
      getScriptVersion: (fileName: string) => {
           //..
      },
      getScriptSnapshot (fileName: string) {
          //...
      },
      fileExists: debugFn('fileExists', fileExists),
      readFile: debugFn('getFile', readFile),
      readDirectory: debugFn('readDirectory', ts.sys.readDirectory),
      getDirectories: debugFn('getDirectories', ts.sys.getDirectories),
      directoryExists: debugFn('directoryExists', ts.sys.directoryExists),
      getNewLine: () => EOL,
      getCurrentDirectory: () => cwd,
      getCompilationSettings: () => config.options,
      getDefaultLibFileName: () => ts.getDefaultLibFilePath(config.options),
      getCustomTransformers: () => transformers
    }

    const service = ts.createLanguageService(serviceHost)

    getOutput = function (code: string, fileName: string, lineOffset: number = 0) {
      // Must set memory cache before attempting to read file.
      updateMemoryCache(code, fileName)

      const output = service.getEmitOutput(fileName)

      // Get the relevant diagnostics - this is 3x faster than `getPreEmitDiagnostics`.
      const diagnostics = service.getCompilerOptionsDiagnostics()
        .concat(service.getSyntacticDiagnostics(fileName))
        .concat(service.getSemanticDiagnostics(fileName))

      const diagnosticList = filterDiagnostics(diagnostics, ignoreDiagnostics)

      if (diagnosticList.length) {
        throw new TSError(formatDiagnostics(diagnosticList, cwd, ts, lineOffset))
      }

      if (output.emitSkipped) {
        throw new TypeError(`${relative(cwd, fileName)}: Emit skipped`)
      }

      // Throw an error when requiring `.d.ts` files.
      if (output.outputFiles.length === 0) {
        throw new TypeError(
          'Unable to require `.d.ts` file.\n' +
          'This is usually the result of a faulty configuration or import. ' +
          'Make sure there is a `.js`, `.json` or another executable extension and ' +
          'loader (attached before `ts-node`) available alongside ' +
          `\`${basename(fileName)}\`.`
        )
      }

      return [output.outputFiles[1].text, output.outputFiles[0].text]
    }

I am also experiencing this issue when using typeorm (like #452). Is there any workaround yet?

Same issue here with TypeORM.

Hi.
We've added a new experimental flag, that might solve these issues:
It's useExperimentalLanguageServer and it's set in the ts-jest key, just like the rest of the settings.
Please report back whether:
a) This fixes the issues
b) What kind of performance-hit you're taking.

Hey @GeeWee, first off, thanks for your work on this, that PR looks like it took a while. I implemented the flag this morning.

I received a ton of errors like TSC language server encountered errors while transpiling. Errors: [object Object],[object Object],[object Object]
Editing ts-jest/dist/transpiler.js:59:15 to have d.messageText.messageText fixed the output so I could actually read the error.
The errors were Errors: Cannot write file '/app/src/file.js' because it would overwrite input file.
Building this project outside of ts-jest works normally, here is our TSConfig:

{
    "compilerOptions": {
        "target": "es2017",
        "module": "commonjs",
        "allowJs": true,
        "outDir": "./dist",
        "strict": true,
        "inlineSourceMap": true,
        "experimentalDecorators": true,
        "emitDecoratorMetadata": true,
        "typeRoots": ["node_modules/@types", "./src/typedefs"]
    },
    "include": ["src/**/*"],
    "exclude": ["node_modules", "src/**/*.test.ts", "src/**/__mocks__/*"]
}

It looks like the new service is trying to overwrite source files on disk, instead of using the proper outDir.
I'll continue debugging on my side, just wanted to give you some feedback on the flag. Not sure if it fixes the TypeORM issues yet.

@jonathandelgado ts-jest deletes the outDir config (see the accompanying comment for the reason)
Would it be possible for you to comment out the equivalent line in your node_modules/ts-jest/dist directory and see if that

fixes the issue you've reported AND
addresses the TypeORM/related issue
?

Thanks a lot for the feedback, good thing we didn't roll this out properly yet :)

@kulshekhar Good call on the outDir deletion. I went ahead and commented that out locally and was able to get around that issue. However, as noted in that comment, the sourcemaps are incorrect as expected.
Immediately following fixing that, I started getting a ton of type errors that I wouldn't receive in a normal build (even including tests in that build). One that specifically stood out was (21,29): Property 'user' does not exist on type 'Request'. For context, we use express and manually inject a user attribute in middleware. However, we have a namespace override in our ./src/typedefs folder, which is in the above config under typeRoots.
I did a preliminary search in this repo for any "gotchas" that would be similar to the outDir change, but I didn't see anything. I assume that property just isn't being respected by the new language service? I took a look at the PR, but to be honest, I don't know enough about the Typescript compiler to offer any more meaningful feedback past that.
I'll try to hop back on this tonight and continue debugging, thank you both for your help on this!

We've updated some of the ts language server code. Try pulling the latest version - I don't think it'll fix the issues but it's worth a shot.
Otherwise, It'd be great if we could get an isolated test case more that demonstrates this behaviour.

Thanks for pinging me on this, I've been working on some other projects recently, so this fell a little bit down my backlog. I'll pull down the latest changes and if I still have the problem I'll get an isolated repo setup for you within the next few days. Thanks again!

@GeeWee It looks like @akheron put together a repo with an isolated test case here: https://github.com/akheron/ts-jest-test

To follow up, is appears the repo @csuich2 linked works when you implement the experimental flag, so that's awesome.
I went ahead and grabbed the most recent changes from ts-jest, commented out the build line, fixed the d.messageText.messageText thing and I'm still having issues related to the new service. I'm getting errors that state TSC language server encountered errors while transpiling. Errors: (That's not a typo, there are no errors after that point). I spent some time looking into them, but didn't find anything really promising.
I think this should be moved to another ticket, though, since it seems unrelated to the current issue.

(Interestingly enough, the typescript team has told me on twitter that the reflection might be a bug in their implementation of transpileModule, hold your horses for this one)

The bug should be fixed on the typescript teams end: See https://github.com/Microsoft/TypeScript/issues/16872
Can anyone confirm this works with typescript@next? (without using the experimentalLanguageServer flag)

Awesome. Closing.

For the record, I've confirmed this is working with TS 2.9.1 as well.


⚠ RPC server - Figment Solana has degraded performance

In eca161b, RPC server - Figment Solana ($FIGMENT_SOLANA_RPC_URL) experienced degraded performance:

HTTP code: 429
Response time: 133 ms

Resolved: RPC server - Figment Solana performance has improved in 76f388b.


Wallet Failing while using old Massa Station Version

Describe the bug
The wallet does not work when opening it through Massa Station 0.2.3 (not latest)
To Reproduce
Steps to reproduce the behavior:
The wallet is installed and there are no accounts.

Have and old version of Massa Station (here 0.2.3)
Open the homepage
Open wallet
See error error 500 & screen shots

Screenshots

MassaStation version
0.2.3
Desktop (please complete the following information):
MacOs ventura

Currently under investigation

As of 11 am today, I was not able to reproduce the bug. If I encounter it again I will continue my investigation.
In parallel, I am also examining the process of checking version compatibility between Massa Station and plugins.

response :
code 602
message "source in query is required"

isn't that related to the fix we did on the usePost @pivilartisant ?

It seem to be that there is a problem in the install mechanism :
when we are updating a plugin, we are checking with the store if the plugin is compatible with massastation version,
but when we are installing a plugin from the store we are just giving the url as parameter so there is no mechanism to check if the plugin we vant to install is compatible with massastation

Blocked : When investigating, we discovered that there seems to be no validation when installing a plugin so i think that we should create a separate issue

Blocked : I wasn't able to reproduce the bug. && When investigating, we discovered that there seems to be no validation when installing a plugin so i think that we should create a separate issue @Pierregvx @Thykof

yes, check out https://github.com/massalabs/station-massa-wallet/issues/504

What do we need to do to unblock this ticket?
@pivilartisant @Pierregvx it's not clear to me + it is a real problem as no one experienced it?

What do we need to do to unblock this ticket? @pivilartisant @Pierregvx it's not clear to me + it is a real problem as no one experienced it?

IMO this can be closed as the fix would be in https://github.com/massalabs/station-massa-wallet/issues/504

@pivilartisant you can't close a reported bug before the solution is implemented. It's bad practice. What if the suggested solution is not correct?

I closed because this will be solve by #504 (not priorized) so this one is a duplicate.


Nvidia nsight (nsys) with Horovod (using mpirun) resulting in deadlock

TensorFlow version (use command below): 2.4.1
PyTorch version (use command below): 1.9.0
Python version: 3.8.4
GCC/Compiler version (if compiling from source): 5.2.0
OpenMPI version: 4.1.0
CUDA/cuDNN version: 11.0
GPU model and memory: A100

Describe the current behavior
The program is going in a deadlock where threads keep waiting for one (or multiple) ranks. We use mpirun.
Describe the expected behavior
Since all the processes are monitoring the gpu behavior and processing similar amount of data, the load on all processes should be equal and deadlock shouldn't happen.
Standalone code to reproduce the issue
Not yet developed
Other info / logs Include any logs or source code that would be helpful to
diagnose the problem. If including tracebacks, please include the full
traceback. Large logs and files should be attached.
[2021-11-18 21:35:46.256559: W /tmp/pip-install-2ki5kaqo/horovod_610732e1ed6541bc8eb95d6e0fc227fd/horovod/common/stall_inspector.cc:107] One or more tensors were submitted to be reduced, gathered or broadcasted by subset of ranks and are waiting for remainder of ranks for more than 60 seconds. This may indicate that different ranks are trying to submit different tensors or that only subset of ranks is submitting tensors, which will cause deadlock.
Missing ranks:
0: [allreduce.noname.1]
2: [allreduce.noname.1]
[2021-11-18 21:36:46.257429: W /tmp/pip-install-2ki5kaqo/horovod_610732e1ed6541bc8eb95d6e0fc227fd/horovod/common/stall_inspector.cc:107] One or more tensors were submitted to be reduced, gathered or broadcasted by subset of ranks and are waiting for remainder of ranks for more than 60 seconds. This may indicate that different ranks are trying to submit different tensors or that only subset of ranks is submitting tensors, which will cause deadlock.
Missing ranks:
0: [allreduce.noname.1]
2: [allreduce.noname.1]
[2021-11-18 21:37:46.257757: W /tmp/pip-install-2ki5kaqo/horovod_610732e1ed6541bc8eb95d6e0fc227fd/horovod/common/stall_inspector.cc:107] One or more tensors were submitted to be reduced, gathered or broadcasted by subset of ranks and are waiting for remainder of ranks for more than 60 seconds. This may indicate that different ranks are trying to submit different tensors or that only subset of ranks is submitting tensors, which will cause deadlock.
Missing ranks:
0: [allreduce.noname.1]
2: [allreduce.noname.1]
[2021-11-18 21:38:46.257948: W /tmp/pip-install-2ki5kaqo/horovod_610732e1ed6541bc8eb95d6e0fc227fd/horovod/common/stall_inspector.cc:107] One or more tensors were submitted to be reduced, gathered or broadcasted by subset of ranks and are waiting for remainder of ranks for more than 60 seconds. This may indicate that different ranks are trying to submit different tensors or that only subset of ranks is submitting tensors, which will cause deadlock.
Missing ranks:
0: [allreduce.noname.1]
2: [allreduce.noname.1]

The issue got resolved by using horovodrun -np <n_gpus> instead of mpirun -n <n_gpus> --bind-to none -map-by slot -x NCCL_DEBUG=INFO -x LD_LIBRARY_PATH .


feat: limit data returned when filters are absent (FC-0033)

For course- and component-scoped datasets, limit the results of a query when filter values are absent. This will prevent returning a lot of data in a way that could be confusing for users.
Here are two screenshots of the problem performance tab that shows the default view and the view when a specific problem is selected:

Thanks for the pull request, @SoryRawyer!  Please note that it may take us up to several weeks or months to complete a review and merge your PR.
Feel free to add as much of the following information to the ticket as you can:

supporting documentation
Open edX discussion forum threads
timeline information ("this must be merged by XX date", and why that is)
partner information ("this is a course on edx.org")
any other information that can help Product understand the context for the PR

All technical communication about the code itself will be done via the GitHub pull request interface. As a reminder, our process documentation is here.
Please let us know once your PR is ready for our review and all tests are green.

@SoryRawyer 🎉 Your pull request was merged!  Please take a moment  to answer a two question survey so we can improve your experience in the future.


feat: add requireUser functions

Looks good. Small typo but otherwise good to go.
I'll try to find some time to fix / flesh out the test suite at some point


Fix octal literal to work in both Python 2 and Python 3

@Crazybus A repeat of #188 on a different file.

[ ] Chart version not bumped (the versions are all bumped and released at the same time)
[ ] README.md updated with any new values or changes
[ ] Updated template tests in ${CHART}/tests/*.py
[ ] Updated integration tests in ${CHART}/examples/*/test/goss.yaml

Since this is a community submitted pull request, a Jenkins build has not been kicked off automatically. Can an Elastic organization member please verify the contents of this patch and then kick off a build manually?

jenkins test this please


doppler: 3.45.0 -> 3.52.1

Automatic update generated by nixpkgs-update tools. This update was made based on information from https://github.com/dopplerhq/cli/releases.
meta.description for doppler is: "The official CLI for interacting with your Doppler Enclave secrets and configuration"
meta.homepage for doppler is: "https://doppler.com"
meta.changelog for doppler is: ""
Updates performed

Golang update

To inspect upstream changes

Release on GitHub

Compare changes on GitHub

Impact

Checks done (click to expand)

built on NixOS
The tests defined in passthru.tests, if any, passed
found 3.46.0 with grep in /nix/store/v18cgl69sd5b8ib4c8iag73c7cad7cji-doppler-3.46.0
found 3.46.0 in filename of file in /nix/store/v18cgl69sd5b8ib4c8iag73c7cad7cji-doppler-3.46.0

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

1 total rebuild path(s)

1 package rebuild(s)

First fifty rebuilds by attrpath
doppler

Instructions to test this update (click to expand)

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

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

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

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

1 package built:

doppler

Maintainer pings
cc @lucperkins for testing.

Automatic update generated by nixpkgs-update tools. This update was made based on information from https://github.com/dopplerhq/cli/releases.
meta.description for doppler is: "The official CLI for interacting with your Doppler Enclave secrets and configuration"
meta.homepage for doppler is: "https://doppler.com"
meta.changelog for doppler is: ""
Updates performed

Golang update

To inspect upstream changes

Release on GitHub

Compare changes on GitHub

Impact

Checks done (click to expand)

built on NixOS
The tests defined in passthru.tests, if any, passed
found 3.47.0 with grep in /nix/store/dfx7dffyh3jh1gkczbzaampyiivs838g-doppler-3.47.0
found 3.47.0 in filename of file in /nix/store/dfx7dffyh3jh1gkczbzaampyiivs838g-doppler-3.47.0

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

1 total rebuild path(s)

1 package rebuild(s)

First fifty rebuilds by attrpath
doppler

Instructions to test this update (click to expand)

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

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

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

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

1 package built:

doppler

Maintainer pings
cc @lucperkins for testing.

Automatic update generated by nixpkgs-update tools. This update was made based on information from https://github.com/dopplerhq/cli/releases.
meta.description for doppler is: "The official CLI for interacting with your Doppler Enclave secrets and configuration"
meta.homepage for doppler is: "https://doppler.com"
meta.changelog for doppler is: ""
Updates performed

Golang update

To inspect upstream changes

Release on GitHub

Compare changes on GitHub

Impact

Checks done (click to expand)

built on NixOS
The tests defined in passthru.tests, if any, passed
found 3.52.1 with grep in /nix/store/aw66k35j1ammn33c5alzik95xclwaly2-doppler-3.52.1
found 3.52.1 in filename of file in /nix/store/aw66k35j1ammn33c5alzik95xclwaly2-doppler-3.52.1

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

1 total rebuild path(s)

1 package rebuild(s)

First fifty rebuilds by attrpath
doppler

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/aw66k35j1ammn33c5alzik95xclwaly2-doppler-3.52.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 doppler https://github.com/r-ryantm/nixpkgs/archive/71e68d09adbc8ed27492b26b035925114123c785.tar.gz

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/aw66k35j1ammn33c5alzik95xclwaly2-doppler-3.52.1
ls -la /nix/store/aw66k35j1ammn33c5alzik95xclwaly2-doppler-3.52.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.
Result of nixpkgs-review run on x86_64-linux 1

1 package built:

doppler

Maintainer pings
cc @lucperkins for testing.


Accept Suggestion On Enter setting is ignored

Issue Type: Bug
Whatever value is set for "Accept Suggestion On Enter" a newline is always inserted when pressing enter with a suggestion box open.

Start a new typescript file
Type "cons"
Wait for the suggestion box to appear (or press ctrl+space) with "console" selected
Press enter

The result, no matter the setting (on, smart or off) is always the characters "const" and the cursor on the next line.
VS Code version: Code 1.29.1 (bc24f98b5f70467bc689abf41cc5550ca637088e, 2018-11-15T19:06:21.742Z)
OS version: Darwin x64 18.2.0

System Info

Item
Value

CPUs
Intel(R) Core(TM) i5-5257U CPU @ 2.70GHz (4 x 2700)

GPU Status
2d_canvas: enabledchecker_imaging: disabled_offflash_3d: enabledflash_stage3d: enabledflash_stage3d_baseline: enabledgpu_compositing: enabledmultiple_raster_threads: enabled_onnative_gpu_memory_buffers: enabledrasterization: enabledvideo_decode: enabledvideo_encode: enabledwebgl: enabledwebgl2: enabled

Load (avg)
7, 10, 9

Memory (System)
16.00GB (0.45GB free)

Process Argv

Screen Reader
no

VM
0%

Extensions (10)

Extension
Author (truncated)
Version

EditorConfig
Edi
0.12.5

vsc-material-theme
Equ
2.6.2

tab-indent-space-align
j-z
0.0.2

theme-karyfoundation-themes
kar
18.2.1

python
ms-
2018.11.0

csharp
ms-
1.17.1

ayu
tea
0.17.0

org-mode
too
0.5.0

unity-debug
Uni
2.6.6

vscodeintellicode
Vis
1.1.0

(7 theme extensions excluded)

It appears that the tab-indent-space-align extension was causing the issue, never mind


PG Instrumentation: Invalid span attribute value type Arel::Nodes::SqlLiteral

Problem
Our logs are filled with errors like this:
OpenTelemetry error: invalid span attribute value type Arel::Nodes::SqlLiteral for key 'db.statement' on span 'SELECT <database name here>'

I expected to just see the statement in the trace (in Jaeger in our case), but it seems to be excluded.
Runtime
ruby -v
=> ruby 3.0.3p157 (2021-11-24 revision 3fb7d2cadc) [x86_64-linux]

How to reproduce
This works:
ApplicationRecord.connection.execute("Select 'test'")

In Jaeger we get:

This doesn't work:
# This is valid code and executes the statement fine
ApplicationRecord.connection.execute(Arel.sql("Select 'test'"))
=> {"?column?"=>"test"}

# ... but console logs show this
=> E, [2022-03-03T16:25:32.573458 #52] ERROR -- : OpenTelemetry error: invalid span attribute value type Arel::Nodes::SqlLiteral for key 'db.statement' on span 'SELECT ***REDACTED**'

In Jaeger the db.statement tag is missing:

Potential solution
Maybe the gem could be changed to use #to_s:
Arel.sql("Select 'test'").to_s
=> "Select 'test'"

Potential Workarounds

Perhaps use db_statement: :omit to reduce log noise
Use #to_s everywhere

Thanks for the report @danielmbarlow.
It looks like this is the problematic line in our PG instrumentation https://github.com/open-telemetry/opentelemetry-ruby/blob/ad51972e9bdc8ead0e69642056a4935683464dfc/instrumentation/pg/lib/opentelemetry/instrumentation/pg/patches/connection.rb#L87
We expect sql passed into the connection_adapters execute method to be a string type, here (which then invokes async_exec,  which is what we instrument).
But instead it's being passed a Arel::Nodes::SqlLiteral type (which is what's returned by Arel#sql, it would seem).
I have to investigate what the expected types are for the 1st argument in the connection_adapters execute method. I think if this is a valid argument type, we should attempt to be more defensive here, and ideally make some attempt to generate a valid span attribute value value from the passed in argument

A primitive type: string, boolean, double precision floating point (IEEE 754-1985) or signed 64 bit integer.

It's possible this issue would also impact our mysql2 and trilogy instrumentation as well (i havent looked into those instrumentations too closely yet).
I'll update this issue when i have more information.


EnDeclaration requires write when a file has been modified

When one has modified a file (but not saved it) and uses EnDeclaration, the following error appears:
Error detected while processing CursorHold Auto commands for "*.scala":
NvimError('Vim(edit):E37: No write since last change (add ! to override)',)
Traceback (most recent call last):

Instead of throwing this exception, either we figure out a way to follow a declaration without needing to save the file, or we ask the user to save it before executing the command. This should require a very straightforward fix.

The server needs us to save the file before it can index the changes, otherwise it won't know which object in the AST you're referring to. So the only option is to prompt for save, and if the user says no we just abort the command with a message.

I think @jvican means that this error can happen even if you're not trying to go to a definition that has anything to do with the unwritten changes you've made in a file—the issue is with :set nohidden present, it happens even if you've done nothing but added a blank line, for example.
Seems the solution is still just as @ChrisCoffey suggests though: nothing to really do except forward Vim's normal error message in a nicer way than an uncaught exception, and abort the command. Well, minus the "(add ! to override)" bit, unless we actually did implement :EnDeclaration! to behave like :edit! in this regard.

I think we're on the same page here @ches.
My point was just that many of the server's commands (including this one) are based on coordinates within the file, so even a seemingly inconsequential change like adding a new line will likely return gibberish if the change isn't saved to disk & indexed by the server.
I'm glad you raised the error @jvican , seems like a good one for a new(ish) contributor to take on 😄

Hi guys, looks to me like SymbolAtPointReq can take a SourceFileInfo as a parameter, so it looks like saving the file isn't mandatory, what do you think ?

👍  @yazgoo, it seems there are even some tests highlighting a few relevant unsaved file use cases. Otherwise we start running up against tradeoffs that aren't ideal on either side, like #220.

I haven't looked into it, but what it would be nice is if we could just send the contents of the file, instead of the filepath. In that case, we could read the file contents from the vim buffer with the last version of the changes (but without writing them to disk).


Remove scrolljacking behavior

Hello! I stumbled upon this project and it looks quite interesting. However, upon reading the landing page I noticed immediately that the default scroll behavior of my browser wasn't active. The page scrolls much further on each scroll than I am used to. This is not only unintuitive, but also makes reading the examples much harder. With default scroll behavior I can scroll while reading and keep my frame of reference, whereas here it immediately snaps onto the center of the next block, moving the top of the previous block out of the view.
If you implemented this to always align the individual blocks as centered, maybe an alternative would be a "next"/"down arrow" button on the individual blocks? This would keep the behavior without overriding anything.

Thanks for reaching out and for the advice! The homepage building was outsourced to some company, and I agree that it was quite messy behind the scenes. However, I have just committed a complete rewrite, which uses just tailwind css.


Enhance the README File

Related Issue
Fixes #584
Description
@SUGAM-ARORA I have amde the changes to the README File. Kindly review this.
Type of PR

[ ] Bug fix
[x] Feature enhancement
[ ] Documentation update
[ ] Other (specify): _______________

Screenshots / videos (if applicable)
[Attach any relevant screenshots or videos demonstrating the changes]
Checklist:

[x] I have performed a self-review of my code
[x] I have read and followed the Contribution Guidelines.
[x] I have tested the changes thoroughly before submitting this pull request.
[x] I have provided relevant issue numbers, screenshots, and videos after making the changes.
[x] I have commented my code, particularly in hard-to-understand areas.

Additional context:
[Include any additional information or context that might be helpful for reviewers.]

@SUGAM-ARORA Sir branch Updation done


Document how and when to use TextPainter.setPlaceholderDimensions

Hello Flutter Dev Team! :)
When I use TextSpan with WidgetSpan, the TextPainter fails on calling tp.layout().
      var span = TextSpan(
        children: [
            WidgetSpan(child: Icon(Icons.access_time)),
            TextSpan(text: "Clock")
        ],
      );

      var tp = TextPainter(
        maxLines: 10,
        textAlign: TextAlign.left,
        textDirection: TextDirection.ltr,
        text: span,
      );

      tp.layout();

Flutter (Channel stable, v1.12.13+hotfix.7, on Linux, locale en_US.UTF-8)
════════ Exception caught by widgets library ═══════════════════════════════════════════════════════
The following assertion was thrown building LayoutBuilder:
'package:flutter/src/widgets/widget_span.dart': Failed assertion: line 103 pos 12: 'dimensions != null': is not true.

When the exception was thrown, this was the stack:
#2      WidgetSpan.build (package:flutter/src/widgets/widget_span.dart:103:12)
#3      TextSpan.build (package:flutter/src/painting/text_span.dart:211:15)
#4      TextPainter.layout (package:flutter/src/painting/text_painter.dart:544:13)

Possibly related to 51306 ?

I was able to reproduce this issue on latest master channel.
A simple usage of the class WidgetSpan throws an exception. The cause of the issue is just:
WidgetSpan(child: Icon(Icons.timelapse))
Logs
Performing hot restart...
Syncing files to device iPhone 11 Pro Max...
Restarted application in 1,082ms.

════════ Exception caught by rendering library ═════════════════════════════════════════════════════
The following assertion was thrown during paint():
'package:flutter/src/widgets/widget_span.dart': Failed assertion: line 103 pos 12: 'dimensions != null': is not true.

Either the assertion indicates an error in the framework itself, or we should provide substantially more information in this error message to help you determine and fix the underlying cause.
In either case, please report this assertion by filing a bug on GitHub:
  https://github.com/flutter/flutter/issues/new?template=BUG.md

The relevant error-causing widget was:
  CustomPaint file:///Users/pedromassango/dev/Projects/flutter_example/lib/main.dart:17:12
When the exception was thrown, this was the stack:
#2      WidgetSpan.build (package:flutter/src/widgets/widget_span.dart:103:12)
#3      TextSpan.build (package:flutter/src/painting/text_span.dart:212:15)
#4      TextPainter.layout (package:flutter/src/painting/text_painter.dart:569:14)
#5      MyPainter.paint (package:flutter_example/main.dart:39:7)
#6      RenderCustomPaint._paintWithPainter (package:flutter/src/rendering/custom_paint.dart:531:13)
...
The following RenderObject was being processed when the exception was fired: RenderCustomPaint#a428c relayoutBoundary=up2
...  parentData: offset=Offset(57.0, 298.0) (can use size)
...  constraints: BoxConstraints(0.0<=w<=414.0, 0.0<=h<=896.0)
...  size: Size(300.0, 300.0)
RenderObject: RenderCustomPaint#a428c relayoutBoundary=up2
  parentData: offset=Offset(57.0, 298.0) (can use size)
  constraints: BoxConstraints(0.0<=w<=414.0, 0.0<=h<=896.0)
  size: Size(300.0, 300.0)
════════════════════════════════════════════════════════════════════════════════════════════════════

════════ Exception caught by rendering library ═════════════════════════════════════════════════════
The following assertion was thrown during paint():
'package:flutter/src/widgets/widget_span.dart': Failed assertion: line 103 pos 12: 'dimensions != null': is not true.

Either the assertion indicates an error in the framework itself, or we should provide substantially more information in this error message to help you determine and fix the underlying cause.
In either case, please report this assertion by filing a bug on GitHub:
  https://github.com/flutter/flutter/issues/new?template=BUG.md

The relevant error-causing widget was:
  CustomPaint file:///Users/pedromassango/dev/Projects/flutter_example/lib/main.dart:17:12
When the exception was thrown, this was the stack:
#2      WidgetSpan.build (package:flutter/src/widgets/widget_span.dart:103:12)
#3      TextSpan.build (package:flutter/src/painting/text_span.dart:212:15)
#4      TextPainter.layout (package:flutter/src/painting/text_painter.dart:569:14)
#5      MyPainter.paint (package:flutter_example/main.dart:39:7)
#6      RenderCustomPaint._paintWithPainter (package:flutter/src/rendering/custom_paint.dart:531:13)
...
The following RenderObject was being processed when the exception was fired: RenderCustomPaint#a428c relayoutBoundary=up2
...  parentData: offset=Offset(57.0, 298.0) (can use size)
...  constraints: BoxConstraints(0.0<=w<=414.0, 0.0<=h<=896.0)
...  size: Size(300.0, 300.0)
RenderObject: RenderCustomPaint#a428c relayoutBoundary=up2
  parentData: offset=Offset(57.0, 298.0) (can use size)
  constraints: BoxConstraints(0.0<=w<=414.0, 0.0<=h<=896.0)
  size: Size(300.0, 300.0)
════════════════════════════════════════════════════════════════════════════════════════════════════

flutter doctor -v
[✓] Flutter (Channel master, 1.22.0-10.0.pre.356, on Mac OS X 10.15.6 19G2021 x86_64, locale en)
    • Flutter version 1.22.0-10.0.pre.356 at /Users/pedromassango/dev/SDKs/flutter_master
    • Framework revision c412fd9967 (4 hours ago), 2020-09-24 22:47:03 -0700
    • Engine revision 435db234e4
    • Dart version 2.11.0 (build 2.11.0-161.0.dev)

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.1)
    • Android SDK at /Users/pedromassango/Library/Android/sdk
    • Platform android-30, build-tools 30.0.1
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6222593)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 12.0)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 12.0, Build version 12A7209
    • CocoaPods version 1.9.3

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

[!] Android Studio (version 4.0)
    • Android Studio at /Applications/Android Studio.app/Contents
    ✗ Flutter plugin not installed; this adds Flutter specific functionality.
    ✗ Dart plugin not installed; this adds Dart specific functionality.
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6222593)

[✓] IntelliJ IDEA Community Edition (version 2020.2.2)
    • IntelliJ at /Applications/IntelliJ IDEA CE.app
    • Flutter plugin version 49.0.4
    • Dart plugin version 202.7319.5

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

[✓] Connected device (4 available)
    • iPhone 11 Pro Max (mobile) • 7A82F29E-E49E-4B3C-8609-1570361DBC17 • ios            • com.apple.CoreSimulator.SimRuntime.iOS-14-0 (simulator)
    • macOS (desktop)            • macos                                • darwin-x64     • Mac OS X 10.15.6 19G2021 x86_64
    • Web Server (web)           • web-server                           • web-javascript • Flutter Tools
    • Chrome (web)               • chrome                               • web-javascript • Google Chrome 85.0.4183.121

! Doctor found issues in 1 category.
Process finished with exit code 0

Is this going to be fixed at some point? I'm having this issue now trying to use a WidgetSpan inside a TextSpan.
Or at least, could you clarify how to workaround the issue by using setPlaceholderDimensions?
Thanks!

I was able to reproduce this issue on latest master channel.
A simple usage of the class WidgetSpan throws an exception. The cause of the issue is just:
WidgetSpan(child: Icon(Icons.timelapse))
Logs
flutter doctor -v

well it's a big problem and lasts for a long decade. do you have any solution to this problem, for now?

EDIT: Actually solved it by measuring individually each Text wrapped by the WidgetSpan and passing these sizes to the placeholder dimensions.

@lukaspili
May I ask you of how to do it? I don't know how to do both "how to wrap" and "how to pass the sizes
to the placeholder dimensions". Especially I want to know the latter. Thank you.

It looks like this hasn't been documented yet
https://master-api.flutter.dev/flutter/painting/TextPainter/setPlaceholderDimensions.html

hey, any workaround?

Hello, here is a workaround :
tl;dr you can find the two workarounds in this gist
In order for it to layout, the TextPainter needs to know the placeholder dimensions so that it leaves spaces in between the TextSpans.
For that, the setPlaceholderDimensions should be called with these dimensions.
How to get the dimensions ?
First of all, you need to get the RenderObject of the TextSpan / InlineSpan widget.
To do so, the simplest way is to assign a key to your widget and then get the corresponding RenderObject from its context

/// example

 final richTextWithWidgetSpanKey = GlobalKey();

class RichTextWithWidgetSpanCase extends StatelessWidget {
  const RichTextWithWidgetSpanCase({
    super.key,
  });

  @override
  Widget build(BuildContext context) {
    return const Text.rich(
      TextSpan(
        text: 'Case 3 - Rich text with Widget spans ',
        children: <InlineSpan>[
          WidgetSpan(
            child: Icon(Icons.star, size: 16),
          ),
          TextSpan(
            text: 'bold',
            style: TextStyle(
              fontWeight: FontWeight.bold,
            ),
          ),
          WidgetSpan(
            child: Icon(Icons.star, size: 16),
          ),
          TextSpan(text: ' world!'),
        ],
      ),
    );
  }
}

RichTextWithWidgetSpanCase(key: richTextWithWidgetSpanKey)

Then
RenderParagraph? _getRenderParagraphFromKey(GlobalKey key) {
    final keyContext = key.currentContext;
    if (keyContext == null) {
      return null;
    }
    final renderObject = keyContext.findRenderObject();
    if (renderObject is! RenderParagraph) {
      return null;
    }
    return renderObject;
  }

final renderParagraph = _getRenderParagraphFromKey(globalKey);

After getting the renderObject, you need to create the TextPainter normally
 final renderParagraph = _getRenderParagraphFromKey(globalKey);
      if (renderParagraph == null) {
        return;
      }
      final text = renderParagraph.text;
      final textPainter = TextPainter(
        text: text,
        textDirection: TextDirection.ltr,
        textAlign: renderParagraph.textAlign,
        textScaler: renderParagraph.textScaler,
        maxLines: renderParagraph.maxLines,
        strutStyle: renderParagraph.strutStyle,
        textWidthBasis: renderParagraph.textWidthBasis,
        textHeightBehavior: renderParagraph.textHeightBehavior,
      );

and right before calling  textPainter.setPlaceholderDimensions(placeholderDimensions) textPainter.layout()  you have two workaround
Option 1 : The simple way - Use the protected method : layoutInlineChildren
  List<PlaceholderDimensions>? _getPlaceHolderDimensions(
      RenderParagraph renderParagraph) {
    // this method is protected in the TextPainter class
    // ignore: invalid_use_of_protected_member
    return renderParagraph.layoutInlineChildren(
      renderParagraph.paintBounds.width,
      (RenderBox child, BoxConstraints constraints) =>
          Size(child.getMinIntrinsicWidth(double.infinity), 0.0),
      ChildLayoutHelper.getDryBaseline,
    );
  }

  // then you call this method to get the list and add it to the `textPainter` before layout

  final placeholderDimensions = _getPlaceHolderDimensions(renderParagraph);

  textPainter.setPlaceholderDimensions(placeholderDimensions);

  textPainter.layout(minWidth: 0, maxWidth: renderParagraph.paintBounds.width);

A safer solution would be to deport the logic inside that method to your own code.
Option 2 : reimplement the private internal methods your code
A simple naive solution would be to extend the RenderParagraph and copy the internal and private methods there

_layoutChild

extension on RenderParagraph {

  /// call this method to get the PlaceholderDimensions
  List<PlaceholderDimensions>? getPlaceHolderDimensions() {
    return _layoutInlineChildren(
      paintBounds.width,
      (RenderBox child, BoxConstraints constraints) =>
          Size(child.getMinIntrinsicWidth(double.infinity), 0.0),
      ChildLayoutHelper.getDryBaseline,
    );
  }
}

  PlaceholderDimensions _layoutChild(
      RenderBox child,
      BoxConstraints childConstraints,
      ChildLayouter layoutChild,
      ChildBaselineGetter getBaseline) {
    final TextParentData parentData = child.parentData! as TextParentData;
    final PlaceholderSpan? span = parentData.span;
    assert(span != null);
    return span == null
        ?
Note : While these workarounds provide a solution, they are somewhat involved. I plan to submit a pull request to make these methods more accessible and to propose a public API for retrieving placeholders. Since this would be my first contribution to the repository, it might take some time to finalize. In the meantime, I can develop a small package to encapsulate this functionality.
In the meantime, I can create a small package for that
@felipecastrosales @kodaira313ayahoo @PassionPenguin @josefrvaldes @pedromassangocode


MANAGE_EXTERNAL_STORAGE & Android 11

Is it necessary to use MANAGE_EXTERNAL_STORAGE permission in order to save files (image or video), because this permission is sensitive as Google said :  https://support.google.com/googleplay/android-developer/answer/9956427?hl=en

请见：https://github.com/getActivity/XXPermissions/issues/61

小伙子，还有其他问题不，没有的话我就关闭 issue 了


Arch-specific image support.

Some sort of mechanism to use different images for different architectures would be ideal. Amazee.io are working on multi-architecture images and I am prepared for the fact this might be shipped as many images - so I'd like to stay ahead of that curve.

My preference is to ship a single multi-arch image ref 😉, but good to have ability to configure image/tag easily

Good to know - thanks. I simply wanted to have something functionally ready and working if the ability is so needed.

Being able to override the images in config would make testing easier for sure!

Technically, you already can. ;)
Having some options around which image to use on which architecture though... that's the intent. If this even gets merged then cool - I've no real opinion either way but it's an idea I'd like to explore. Even if it's just for a bit of personal fun.


Images in card columns do not scale well

When using card-columns with images, the images do not seem to scale well. Here I attach a complete reproducing example which you can just open in your browser and see.
bad-cards.txt
(Change extension from txt to html because GitHub wouldn't allow me to put HTML doc here.)
The example is composed as per your v4 docs, as combination of the “starter example” and the example code for the card-columns feature. For image placeholders I used https://placehold.it service.
I checked with Firefox and Chromum, and got the same results:

With every zoom value imaginable images look wrong.
Maybe I don't understand something and the images are not supposed to scale and look well?

Yes, card images should take in the img-fluid class settings.

I'll take a look at this a bit more, but you can fix it by adding .img-fluid to the .card-img-* elements. I'll likely update the docs to include those classes rather than mixin/extend the class into the .card- component itself (to avoid duplication of code).
As for the corner, that's a rounding problem on our part. We need to subtract the 1px border from the border-radius: .25rem, which means pulling out calc.
All doable and fixable, but wanted to explain the problem ahead of me opening a PR to fix :).

Thanks!


Potential path parsing issue with Windows

Potential Windows path parsing issue report from community user with prefect-dbt
https://linen.prefect.io/t/2712145/

Also https://prefect-community.slack.com/archives/CL09KU1K7/p1664567323759169?thread_ts=1664418745.917639&cid=CL09KU1K7

Potentially related:
Running the following flow locally on Windows (from within a Poetry environment):
@flow
def dbt_flow(dbt_project_path):
    trigger_dbt_cli_command(command="dbt test", project_dir="""C:\Source\data\debut""")

gives the following error:
16:15:35.503 | INFO    | Task run 'trigger_dbt_cli_command-321ca940-0' - Running dbt command: dbt test --profiles-dir C:\Users\myusername\.dbt --project-dir C:\Source\data\debut
16:15:35.775 | ERROR   | Task run 'trigger_dbt_cli_command-321ca940-0' - Encountered exception during execution:
Traceback (most recent call last):
  File "C:\Users\myusername\AppData\Local\pypoetry\Cache\virtualenvs\prefect-etl-szksG6RR-py3.10\lib\site-packages\prefect\engine.py", line 1183, in orchestrate_task_run
    result = await task.fn(*args, **kwargs)
  File "C:\Users\myusername\AppData\Local\pypoetry\Cache\virtualenvs\prefect-etl-szksG6RR-py3.10\lib\site-packages\prefect_dbt\cli\commands.py", line 158, in trigger_dbt_cli_command
    result = await shell_run_command.fn(command=command, **shell_run_command_kwargs)
  File "C:\Users\myusername\AppData\Local\pypoetry\Cache\virtualenvs\prefect-etl-szksG6RR-py3.10\lib\site-packages\prefect_shell\commands.py", line 96, in shell_run_command
    raise RuntimeError(msg)
RuntimeError: Command failed with exit code 127:
/bin/bash: C:UsersmyusernameAppDataLocalTempprefect-atmv4tpr: No such file or directory

Looking at the last line, the path slashes have been removed.

Maybe can use this:
https://github.com/PrefectHQ/prefect/pull/7261

Closing, as I believe this was fixed by prefect-shell v0.1.2, based on the Slack/Linen thread referenced above.


fix displaying not found page in TaskAssigneeSelectorModal.js

Details

Fixed Issues

$ https://github.com/Expensify/App/issues/28026
PROPOSAL: https://github.com/Expensify/App/issues/28026#issuecomment-1731641955
Tests

Open the app.
Click fab icon > Assign task.
Enter a title and click "Next".
Select "share somewhere" and create the task.
After task creation, click on the assignee.
Copy the URL of the assignee modal and send it.
Proceed to cancel the task.
After canceling, click on the sent link.
Verify that the page "Hmm... it's not here" is displayed.

[x] Verify that no errors appear in the JS console

Offline tests
N/A.

QA Steps
Same as Tests step.

[x] Verify that no errors appear in the JS console

PR Author Checklist

[x] I linked the correct issue in the ### Fixed Issues section above
[x] I wrote clear testing steps that cover the changes made in this PR

[x] I added steps for local testing in the Tests section
[x] I added steps for the expected offline behavior in the Offline steps section
[x] I added steps for Staging and/or Production testing in the QA steps section
[x] I added steps to cover failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[x] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)
[x] I tested this PR with a High Traffic account against the staging or production API to ensure there are no regressions (e.g. long loading states that impact usability).

[x] I included screenshots or videos for tests on all platforms
[x] I ran the tests on all platforms & verified they passed on:

[x] Android / native
[x] Android / Chrome
[x] iOS / native
[x] iOS / Safari
[x] MacOS / Chrome / Safari
[x] MacOS / Desktop

[x] I verified there are no console errors (if there's a console error not related to the PR, report it or open an issue for it to be fixed)
[x] I followed proper code patterns (see Reviewing the code)

[x] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick)
[x] I verified that the left part of a conditional rendering a React component is a boolean and NOT a string, e.g. myBool && <MyComponent />.
[x] I verified that comments were added to code that is not self explanatory
[x] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[x] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method

[x] If any non-english text was added/modified, I verified the translation was requested/reviewed in #expensify-open-source and it was approved by an internal Expensify engineer. Link to Slack message:

[x] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[x] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is approved by marketing by adding the Waiting for Copy label for a copy review on the original GH to get the correct copy.
[x] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[x] I verified the JSDocs style guidelines (in STYLE.md) were followed

[x] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[x] I followed the guidelines as stated in the Review Guidelines
[x] I tested other components that can be impacted by my changes (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar are working as expected)
[x] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[x] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[x] I verified that if a function's arguments changed that all usages have also been updated correctly
[x] If a new component is created I verified that:

[x] A similar component doesn't exist in the codebase
[x] All props are defined accurately and each prop has a /** comment above it */
[x] The file is named correctly
[x] The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
[x] The only data being stored in the state is data necessary for rendering and nothing else
[x] If we are not using the full Onyx data that we loaded, I've added the proper selector in order to ensure the component only re-renders when the data it is using changes
[x] For Class Components, any internal methods passed to components event handlers are bound to this properly so there are no scoping issues (i.e. for onClick={this.submit} the method this.submit should be bound to this in the constructor)
[x] Any internal methods bound to this are necessary to be bound (i.e. avoid this.submit = this.submit.bind(this); if this.submit is never passed to a component event handler like onClick)
[x] All JSX used for rendering exists in the render method
[x] The component has the minimum amount of code necessary for its purpose, and it is broken down into smaller components in order to separate concerns and functions

[x] If any new file was added I verified that:

[x] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[x] If a new CSS style is added I verified that:

[x] A similar style doesn't already exist
[x] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(themeColors.componentBG))

[x] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[x] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[x] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[x] If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
[x] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[x] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.
[x] I have checked off every checkbox in the PR author checklist, including those that don't apply to this PR.

Screenshots/Videos

Web
https://github.com/Expensify/App/assets/41129870/6db3057e-eac5-4e94-b85d-259b86b886c4

Mobile Web - Chrome
https://github.com/Expensify/App/assets/41129870/a4c56679-86f8-4af0-a19e-63deb8238c6f

Mobile Web - Safari
https://github.com/Expensify/App/assets/41129870/bab031d1-a288-4f4d-8d2e-bbc4b4c10f5e

Desktop
https://github.com/Expensify/App/assets/41129870/3c7e108c-80e8-4c37-9c70-3f6f00ab4e6c

iOS
https://github.com/Expensify/App/assets/41129870/28d00912-813f-4193-8c40-c323f5242094

Android
https://github.com/Expensify/App/assets/41129870/e907b6d8-eada-4b59-9f30-e16d0c0b1d61

@robertKozik bump!

Reviewer Checklist

[X] I have verified the author checklist is complete (all boxes are checked off).
[X] I verified the correct issue is linked in the ### Fixed Issues section above
[X] I verified testing steps are clear and they cover the changes made in this PR

[X] I verified the steps for local testing are in the Tests section
[X] I verified the steps for Staging and/or Production testing are in the QA steps section
[X] I verified the steps cover any possible failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[X] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)

[X] I checked that screenshots or videos are included for tests on all platforms
[X] I included screenshots or videos for tests on all platforms
[X] I verified tests pass on all platforms & I tested again on:

[X] Android: Native
[X] Android: mWeb Chrome
[X] iOS: Native
[X] iOS: mWeb Safari
[X] MacOS: Chrome / Safari
[X] MacOS: Desktop

[X] If there are any errors in the console that are unrelated to this PR, I either fixed them (preferred) or linked to where I reported them in Slack
[X] I verified proper code patterns were followed (see Reviewing the code)

[X] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick).
[X] I verified that the left part of a conditional rendering a React component is a boolean and NOT a string, e.g. myBool && <MyComponent />.
[X] I verified that comments were added to code that is not self explanatory
[X] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[X] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method
[X] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[X] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is approved by marketing by adding the Waiting for Copy label for a copy review on the original GH to get the correct copy.
[X] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[X] I verified the JSDocs style guidelines (in STYLE.md) were followed

[X] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[X] I verified that this PR follows the guidelines as stated in the Review Guidelines
[X] I verified other components that can be impacted by these changes have been tested, and I retested again (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar have been tested & I retested again)
[X] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[X] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[X] If a new component is created I verified that:

[X] A similar component doesn't exist in the codebase
[X] All props are defined accurately and each prop has a /** comment above it */
[X] The file is named correctly
[X] The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
[X] The only data being stored in the state is data necessary for rendering and nothing else
[X] For Class Components, any internal methods passed to components event handlers are bound to this properly so there are no scoping issues (i.e. for onClick={this.submit} the method this.submit should be bound to this in the constructor)
[X] Any internal methods bound to this are necessary to be bound (i.e. avoid this.submit = this.submit.bind(this); if this.submit is never passed to a component event handler like onClick)
[X] All JSX used for rendering exists in the render method
[X] The component has the minimum amount of code necessary for its purpose, and it is broken down into smaller components in order to separate concerns and functions

[X] If any new file was added I verified that:

[X] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[X] If a new CSS style is added I verified that:

[X] A similar style doesn't already exist
[X] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(themeColors.componentBG)

[X] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[X] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[X] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[X] If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
[X] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[X] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.
[X] I have checked off every checkbox in the PR reviewer checklist, including those that don't apply to this PR.

Screenshots/Videos

Web
https://github.com/Expensify/App/assets/61146594/c7fc3a43-be04-4d78-a07e-621101b4c94f

Mobile Web - Chrome
https://github.com/Expensify/App/assets/61146594/fc29e8ef-476f-4542-9b7c-f80f800de49a

Mobile Web - Safari
https://github.com/Expensify/App/assets/61146594/fc29e8ef-476f-4542-9b7c-f80f800de49a

Desktop
https://github.com/Expensify/App/assets/61146594/682f27b4-4972-48b7-8b50-3b361271436a

iOS
https://github.com/Expensify/App/assets/61146594/8a752084-7bb0-436e-9cbf-dd107b6c04ce

Android
https://github.com/Expensify/App/assets/61146594/8a752084-7bb0-436e-9cbf-dd107b6c04ce

🚀 Deployed to production by https://github.com/jasperhuangg in version: 1.3.83-11 🚀

platform
result

🤖 android 🤖
skipped 🚫

🖥 desktop 🖥
skipped 🚫

🍎 iOS 🍎
skipped 🚫

🕸 web 🕸
skipped 🚫

🚀 Deployed to production by https://github.com/jasperhuangg in version: 1.3.83-11 🚀

platform
result

🤖 android 🤖
skipped 🚫

🖥 desktop 🖥
skipped 🚫

🍎 iOS 🍎
skipped 🚫

🕸 web 🕸
skipped 🚫

🚀 Deployed to production by https://github.com/jasperhuangg in version: 1.3.83-11 🚀

platform
result

🤖 android 🤖
skipped 🚫

🖥 desktop 🖥
skipped 🚫

🍎 iOS 🍎
skipped 🚫

🕸 web 🕸
skipped 🚫

🚀 Deployed to production by https://github.com/jasperhuangg in version: 1.3.83-11 🚀

platform
result

🤖 android 🤖
failure ❌

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
failure ❌

🕸 web 🕸
success ✅


New npm package

Hi
Is it possible to create a npm package with the newest version?
Or does someone have a fork package with the newest version?
best regards

Follow-up on this, would it be possible to update the package on npmjs (https://www.npmjs.com/package/esc-pos-encoder)? The code on the master branch has several new features which are essential, e.g. width(), height(), invert()

I created a package for me if you want you can use it
https://www.npmjs.com/package/enjox-esc-pos-encoder
i also fixed an encoding error i think but im not 100% sure but i use it in an app so its working

@Grentry just use
pnpm add https://github.com/NielsLeenheer/EscPosEncoder Or whatever package manager you're using
It will use the dist folder in the repo itself.

The release of EscPosEncoder 2 is coming very soon...

Will the new release include producing table-like structures?

Yes, it will.

EscPosEncoder 2 has been released!


New option: disable file limit regardless of --local

I added a command line option --no-file-limit to disable file limits without having to specify the --local option which may be insecure.
I plan to add an environment variable to set this flag without dealing with command line options which can be useful in Docker deployments.

The checks are failing because there's a missing secret in GitHub Actions. I think we should disable builds for pull_request event for now.


Improve form questions view and add option to add questions and sort form fields

1. Split form question in organiser view section “Proposal information” into two sections
a) Session Information: Title, Abstract, Description, Track, Language, Notes, Recording opt-out, Session image, Duration, Additional speakers, Availability
b) Speaker Profile, Name, Profile picture

2. Add the option to add questions same as on the “Questions” page in each area.
Ensure these "Added Questions" also show up in the respective place in the speaker's form view.
Compare to Questions area

a) These questions should show up in the speaker's form when a speaker submits a proposal for the first time.

b) These questions should show up in the respective proposal edit form and speaker's event profile after submission.

3. Also form questions cannot be sorted in different orders. Expected they should be sortable by drag and drop.

For point 1: Availability should also be moved to "Speaker Profile" area. Sorting should be 1. Profile picture, 2. Biography, 3. Availability.


Change position of elements on mobile

On mobile, elements appear too low on screen (see screenshot). Center elements within the text arc and move upward slightly.
Jobs:

Change arc coordinates
move all elements upward on mobile

Not seeing a screenshot here?

These comments are covered in sgogos1's mobile devices issue. Closing.


Test runner orchestrator

Added the test runner orchestrator, responsible for managing test runners. This still needs to change because i just added 3 properties to Mutant because i needed them:
  public timeSpentScopedTests: number;
  public scopedTestIds: number[];
  public specsRan: string[];

We will need to fill these properties or provide other ways of reaching them. That should not be the responsibility of the orchestrator, that's why i didn't include it in this PR

I just added a commit for the removal of the temp mutation api. It was still in there even though we discussed to not implement it in v1. Sorry :)

It looks good, well done!


Interactive report with checkbox column issue

add checkbox column to interactive report (select apex_item.checkbox(1), t.* from table t)
1.1 set checkbox column property Escape special characters - no
set interactive report attrubute Heading: Fixed To - Region, Maximum Report Height - 500 (whatever)
in interactive report scroll down to rows that not visible after page load
click on checkbox
after that all rows dissapear.

Hi.
Can you please let me know which APEX version and which Material APEX version?
A test case on a public URL would be ideal (like apex.oracle.com, although they've updated to 18.1, which is not supported yet).
Thanks.

Can you try adding this CSS to your page as a temporary fix:
.a-IRR-container .a-IRR .a-IRR-table td {
    position: relative;
}

ok, thanks for temp fix

Can you confirm it solved your problem? If so I will incorporate it in the code base.


fix setting lz4 compression levels

resolves #778

Thanks!

@twmb am i good to merge here?

I want to get this in the next patch release but can't figure out why #785 is failing (which is important to get in, probably the most important bug at the moment)

Typo, I mean #786. If you're able to figure out the CI problem, that'd be great :D

ok, i'll hold off. that pr looks like ci is passing to me though?

Wow, typo twice. I'm going to delete my prior comments. #787 is the one that's failing.

gotcha. not sure if i really have the bandwidth to debug that at the moment ;)
btw if i may ask, do these new race-y bugs affect the integration i just merged into cockroachdb? will we need to upgrade to fix this (once you fix it of course) before it makes it into a new release? we produce concurrently with max buffered records set, not bytes.

The data race is largely non impactful (it's actually existed for a really long time, it's really hard to trigger, and at the architecture level, you're not going to see a partial write).
The #787 is worrying, but it only affects people that use MaxBufferedBytes. I don't think you do, it's a fairly new option and I don't expect most people to use it.

(if you want to move this discussion to another venue that's fine, lmk)

at the architecture level, you're not going to see a partial write
can you expand on this? what would the result be both downstream and in the running process

The data race is a read/write problem on a boolean. The standard problem with read/write races is that the reader experiences a partial read -- e.g. I'm writing "foobar" and the underlying data says "hacked", the reader reads "fooked" (half of foobar, half of hacked). No CPU architecture actually does a partial write of a boolean sized field.
The other problem is that compilers and CPUs can reorder where the read happens, but Go uses seqcst for any atomic operation, and there are atomic operations before and after the reading of this bool. So, this bool isn't being reordered to a place that it really matters.
The last worry here is that what this field is for isn't working properly. This field is meant to guard failing records if we don't know it's safe. There's a related open issue about this (not the bug, but "why was this hanging") where you can see what safe is, here: https://github.com/twmb/franz-go/issues/769#issuecomment-2235707417
So, if a race happens and what the bool is guarding isn't effectively guarded, what you'll see in your application is OutOfOrderSequenceNumber errors and you'll need to restart your client. This chunk of code has existed for 3yr and so far nobody has reported unexpected OOOSN errors.

gotcha. thanks for the context and the responsiveness!


glog detected wrong gflags namespace.

Build System

Ubuntu 18.04
gcc 7.3.0
cmake 3.10.2
gflags 2.2.1
glog 0.3.5 2faa186

I compile gflags with cmake -DBUILD_SHARED_LIBS=ON -DGFLAGS_NAMESPACE=google -DCMAKE_INSTALL_PREFIX=/opt/gflags -DCMAKE_CXX_FLAGS=-fPIC .. and sudo make -j2 && sudo make install
I write a gflags demo file, and it works.

#include <iostream>
#include <gflags/gflags.h>

int main(int argc, char *argv[])
{
  google::ParseCommandLineFlags(&argc, &argv, true);

  return EXIT_SUCCESS;
}

compile it with g++ -Wall -Wextra -Werror -std=c++11 -Wl,-rpath=/opt/gflags/lib/ -o proc main.cc -L /opt/gflags/lib -lgflags, and it works fine.
However glog detected wrong gflags namespace when I compile it from source. I run cmake -DCMAKE_INSTALL_RPATH=/opt/gflags/lib -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=/opt/glog -DCMAKE_BUILD_TYPE=RELEASE -DWITH_GFLAGS=ON -DCMAKE_CXX_FLAGS=-fPIC .., but it show that

-- Looking for gflags namespace
-- Looking for gflags namespace - gflags

Then I run cmake -L .., it shows gflags_DIR is detected correctly.

gflags_DIR:PATH=/opt/gflags/lib/cmake/gflags

Then i write a glog demo

#include <iostream>
#include <glog/logging.h>

int main(int , char *argv[])
{
  google::InitGoogleLogging(argv[0]);

  LOG(INFO) << "Hello Glog!";

  return EXIT_SUCCESS;
}

compile it with g++ -Wall -Wextra -Werror -std=c++11 -Wl,-rpath=/opt/glog/lib -o proc main.cc -L /opt/glog/lib -lglog
./proc --logtostderr=1 doesn't work. It doesn't print message to stderr.
GLOG_logtostderr=1 ./proc works fine surely.
Thanks.

git diff DetermineGflagsNamespace.cmake
-        CMAKE_FLAGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+        CMAKE_FLAGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} "-DINCLUDE_DIRECTORIES:STRING=${gflags_INCLUDE_DIR}"

I recompile it with cmake -Dgflags_INCLUDE_DIR:STRING=/opt/gflag/include -DCMAKE_INSTALL_RPATH=/opt/gflags/lib -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=/opt/glog -DCMAKE_BUILD_TYPE=RELEASE -DWITH_GFLAGS=ON -DCMAKE_CXX_FLAGS=-fPIC .., but it still shows that.

-- Looking for gflags namespace
-- Looking for gflags namespace - gflags

So the prog program still doesn't work with --logtostderr=1.

Which commit did you use?

My issue looks like #286.

Please try the latest commit and report back.

I am sorry my English is not very good. Did you mean the lastest commit (#316) or the lastest commit (#209)of issue #193 you mentioned before.

The latest commit (2faa186 at the time of writing)  is the head of the master branch which you get after a fresh clone of the glog repository. Is that what you use?

I'm totally confused now. You mention two separate issues: incorrect gflags namespace detection (the title) and non-working --logtostderr=1. How are they related?

At first, glog detected wrong gflags namespace(gflags instead of google), I changed the order of _NAMESPACE from (gflags to google), it could get correct namespace (google), but when I set —logtostderr=1, my program is still not working.

It could detect correct gflags namespace google after I changed the order of _NAMESPACES from (gflags google) to (google gflags) in cmake/DetermineGflagsNamespace.cmake. But why DGFLAGS_IS_A_DLL was not true while I was using libgflags.so compiled by myself? Even more why gflags namespace could try compile passed in my machine (I don't have another libgflags)? I'm thinking it is the wrong detection that causes the command line not work.
CMakeFiles/CMakeOutput.log:643:/usr/bin/c++  -DGFLAGS_IS_A_DLL=0 -DGFLAGS_NAMESPACE=google -isystem /opt/gflags/include  -fPIC  -O3 -DNDEBUG   -o CMakeFiles/cmTC_bf483.dir/DetermineGflagsNamespace.cxx.o -c /home/fish/Workspace/Repos/glog/build/CMakeFiles/CMakeTmp/DetermineGflagsNamespace.cxx

Much appreciated for your patience.

@sergiud I succeeded in logging to stderr by add google::ParseCommandLineFlags(&argc, &argv, true); before google::InitGoogleLogging(argv[0]);. Perhaps you could add it in the wiki.
By the way, I found a small bug in the  try_compile of cmake/DetermineGflagsNamespace.cmake. It tried to compile _check_file by defining GFLAGS_NAMESPACE to each item in _NAMESPACES, but GFLAGS_NAMESPACE was hard coded in the gflags_declare.h, so try_compile always return true no matter which namespace was selected.


Errors with "tracerbench trace"

Currently I'm running version 3.0.1. I ran the following:
tracerbench trace --url http://localhost:4200/?tracerbench=true --harpath=bin/relationship-performance-tracking/src/trace.har --cookiespath tracerbench-cookies.json --insights

and I get this error:

Is there something I am missing?

@skaterdav85 any chance you could comment with the tracerbench record-har command too?
I'm assuming this was part of the work for https://github.com/emberjs/data/pull/6631.

I ran the following and it worked:
tracerbench record-har --url http://localhost:5000 --cookiespath scripts/perf/cookies.json

Where cookies.json is the snippet from #97.

Glad it worked! I've lost context around this since it has been a few months since I last looked at it, so I can't comment on this.


Add PrestoQueryRunner

@mbasmanova Hi Masha, I've resolved the comments and used the typeParse API.  I started a PrestoHiveRunner instance, enabled the PrestoRunnerTest, and ran, all passed locally. Could you please help to review PR? Thanks.

where should we add this .md file?

Perhaps, next to PrestoQueryRunner.h, i.e. PrestoQueryRunner.md.


After building app, EAS calls webhook repeatedly

Build/Submit details page URL
Summary
I implemented webhook server (AWS Lambda) which downloads build artifacts and upload it my AWS S3 bucket. After building app, EAS calls webhook and the server works correctly. After that, EAS calls webhook repeatedly so causing a infite loop between EAS and server.
Managed or bare?
managed
Environment
❯ npx expo-env-info
Need to install the following packages:
  expo-env-info
Ok to proceed? (y) y

  expo-env-info 1.0.5 environment info:
    System:
      OS: macOS 11.5.2
      Shell: 5.8 - /bin/zsh
    Binaries:
      Node: 14.17.0 - ~/.nvm/versions/node/v14.17.0/bin/node
      Yarn: 1.22.10 - ~/.nvm/versions/node/v14.17.0/bin/yarn
      npm: 8.6.0 - ~/.nvm/versions/node/v14.17.0/bin/npm
      Watchman: 2<IP_ADDRESS> - /usr/local/bin/watchman
    Managers:
      CocoaPods: 1.11.3 - /Users/***/.rbenv/shims/pod
    SDKs:
      iOS SDK:
        Platforms: DriverKit 21.0.1, iOS 15.0, macOS 12.0, tvOS 15.0, watchOS 8.0
    IDEs:
      Android Studio: 2021.2 AI-212.5712.43.2112.8609683
      Xcode: 13.1/13A1030d - /usr/bin/xcodebuild
    npmPackages:
      expo: ^45.0.0 => 45.0.5
      react: 17.0.2 => 17.0.2
      react-dom: 17.0.2 => 17.0.2
      react-native: 0.68.2 => 0.68.2
      react-native-web: 0.17.7 => 0.17.7
    npmGlobalPackages:
      eas-cli: 0.53.1
      expo-cli: 6.0.0
    Expo Workflow: managed

❯ expo doctor
┌─────────────────────────────────────────────────────────────────────────┐
│                                                                         │
│   There is a new version of expo-cli available (6.0.1).                 │
│   You are currently using expo-cli 6.0.0                                │
│   Install expo-cli globally using the package manager of your choice;   │
│   for example: `npm install -g expo-cli` to get the latest version      │
│                                                                         │
└─────────────────────────────────────────────────────────────────────────┘
Some dependencies are incompatible with the installed expo package version:
 - expo-dev-client - expected version: ~1.0.1 - actual version installed: 1.0.0
 - expo-updates - expected version: ~0.13.3 - actual version installed: 0.13.2
Your project may not work correctly until you install the correct versions of the packages.
To install the correct versions of these packages, please run: expo doctor --fix-dependencies,
or install individual packages by running expo install [package-name ...]

Error output
No response
Reproducible demo or steps to reproduce from a blank project
Webhook server
import * as express from "express";
import * as bodyParser from "body-parser";
import * as AWS from "aws-sdk";
import { ManagedUpload } from "aws-sdk/clients/s3";
import { S3 } from "aws-sdk";
import fetch from "node-fetch";

const app = express();
app.use(bodyParser.text({ type: "*/*" }));

app.post("/eas-build", async (req, res) => {
    console.log(JSON.stringify(req.body));
    const { status, artifacts } = JSON.parse(req.body);

    const { buildUrl } = artifacts;
    const extension = buildUrl?.slice(buildUrl.lastIndexOf("."));
    const fileKey = artifacts.logsS3KeyPrefix.slice(
        artifacts.logsS3KeyPrefix.lastIndexOf("/") + 1
    );
    const fileName = fileKey + extension;

    switch (status) {
        case "finished":
            {
                try {
                    const res = await fetch(buildUrl);
                    const bucket = new AWS.S3();
                    const params: S3.Types.PutObjectRequest = {
                        Bucket: process.env.S3_BUCKET ?? "",
                        Key: fileName,
                        Body: res.body,
                    };

                    await bucket
                        .upload(
                            params,
                            (err: Error, data: ManagedUpload.SendData) => {
                                console.log(err, data);
                                throw err;
                            }
                        )
                        .promise();
                } catch (e) {}
            }
            break;
    }
    res.send("OK!");
});

export default app;

As a result of my inspection, bucket.upload seems to cause EAS Webhook request. I want to know the reason.

You are blocking the request when you are uploading the archive to s3 bucket, as a result, the request times out, and the webhook is called again. If you send a response imiedieitlly and do the upload afterward, it should not happen.


Add resolving DID Document in VDR Registry when generating presentation by id.

Title:
Add resolving DID Document in VDR Registry.
Summary:
When generating a presentation by ID, DID Documents are searched only in local storage, so even though DID Documents are in the VDR Registry, the process of storing DID Documents in local storage should have been additionally performed.
So, I added the process of finding DID Document in VDR Registry.

@msjeong482 please squash your commits to one commit


Revert to 20170303-elevated

This is just to unblock until elevation issue on 20170531 is fixed

FYI @karajas


api: fix overly strict permissions on  edit PR

We can drop this overly strict permission requirement, as the more granular check (IsIssuePoster) is done in repo.EditPullRequest()
fixes #14025

Codecov Report

Merging #15900 (f4ae15f) into main (c3aaf5e) will increase coverage by 0.00%.
The diff coverage is 100.00%.

@@           Coverage Diff           @@
##             main   #15900   +/-   ##
=======================================
  Coverage   44.01%   44.02%
=======================================
  Files         681      681
  Lines       82336    82336
=======================================
+ Hits        36244    36251    +7
+ Misses      40189    40182    -7
  Partials     5903     5903

Impacted Files
Coverage Δ

routers/api/v1/api.go
78.15% <100.00%> (ø)

services/pull/pull.go
43.37% <0.00%> (-0.46%)
:arrow_down:

modules/queue/workerpool.go
54.96% <0.00%> (+1.14%)
:arrow_up:

modules/git/command.go
89.42% <0.00%> (+1.92%)
:arrow_up:

modules/charset/charset.go
75.75% <0.00%> (+4.04%)
: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 c3aaf5e...f4ae15f. Read the comment docs.

We can drop this overly strict permission requirement, as the more granular check (IsIssuePoster) is done in repo.EditPullRequest()
fixes #14025

I think we just missed Poster, but the original permission check should be also there.

@lunny I can't follow, how would you do it instead? :)
Adding a new middleware reqIssueEditor() in api.go implementing the same checks as EditPullRequest() would be loads of duplicated code, as well as duplicated work during each request 🤔

Just change reqIssueEditor since Poster should have permission to edit the issue or pull request.

The permission is checked in the func itselve again ...

Here is an alternative implementation, that does the additional permission check via middleware: https://github.com/go-gitea/gitea/compare/main...noerw:fix-14025-variant2
Running some local benchmarks, there is no significant cost induced by the duplicate checks (before 105ms, after 110ms avg request time). Though this request time seems quite high in general, but that's another story ;)

-> #16081


Add lsp_config support for rls

This is a first draft, based on how it was implemented for pyls. Still needs
tests. My first contribution to a vim project, so I'm still sorting things out.
Currently not working with clippy_preference, which is the main reason I'm interested in adding the feature.

Cheers! :beers:


Add list of apps that built with libgdx

Add list of apps that built with libgdx

There's a gallery on the libgdx website and a section on the forum. I'm not sure we want to clutter the project readme with them as well.

This is just blatant self-promotion.

This is just blatant self-promotion.

What is wrong? Anyone can add a reference not just us. This seems like a good way to help the community and build a stronger brand for the project. Popular open source projects like https://github.com/apache/incubator-superset have this list in their README page too.
If adding a reference to individual apps seem excessive, how about adding reference to company page?

I think of a list of best app build with gdx can be good for attractivity on readme.page
Not an full list, but just the best game/apps.

@fabiitch That's hard because you'll need a criteria for best game/apps that everyone agree on. Having an open list where developers can add to freely seem better.

Agree with this idea. At least a link back to organization list would be helpful. The gallery page on the libgdx website is kind of useless as it's not well optimized for visibility and it's not well maintained.

It's not to discuss any more if this is a good idea, @vminc spammed half the internet about his games yesterday. He opened a PR for such a list in at least 3 repos, spammed various messages to reddit, edited the wiki. That's to much to count as good-intended behaviour.

Thank you for your investigation, Mr/Mrs Detective. Such a childish behavior.
Yes, I am a colleague of @vminc.
It is fine if this or other repos don't want this idea.

Yes we should all protect our privacy when Internet Detective are all around :)

It's not to discuss any more if this is a good idea, @vminc spammed half the internet about his games yesterday. He opened a PR for such a list in at least 3 repos, spammed various messages to reddit, edited the wiki. That's to much to count as good-intended behaviour.

One should probably focus on the merit of this idea rather than what I did on the Internet.

It's not to discuss any more if this is a good idea, @vminc spammed half the internet about his games yesterday. He opened a PR for such a list in at least 3 repos, spammed various messages to reddit, edited the wiki. That's to much to count as good-intended behaviour.

Feel free to investigate more as this is what you're good at. What's my Twitter account? What's my Facebook account? Phone number? Street address?

There already exist places to list apps made with libgdx, let's use those or discuss in other community venues why they are not working for you.


[NETBEANS-54] Module Review api.visual

Change the Oracle license header to the Apache license.
Issue for this module: #11

This branch has conflicts that must be resolved

Oh, it seems somebody else pushed a fix for this :-(
Please select another issue.


feature/add-ghostty: Adds Kanagawa Wave theme for ghostty

This adds the kanagawa wave theme in a ghostty format.

I've also made a pull request to mbadolato/iTerm2-Color-Schemes which will eventually make it an official theme in ghostty.


[fix] changed url for ajax call to relative path

[refactoring] moved javascript and css to seperate files
[fix/spelling] changed "Tim" to "Team"

thank you, but I am still unsure, if I am going for the shirt or for a tree this year xD