[Test][CI][gfx90a] enable tests for miopentensile

Fix to Issue #1094

@ce1adon all other CI tests have passed which is great, could you enable "MIOPENTENSILE_LATEST" stages for this PR? Thanks!

@atamazov  @ce1adon
Hi Artem, it seems that the latest tensile test has failed:
http://micimaster.amd.com/blue/organizations/jenkins/MLLibs%2FMIOpen/detail/miopentensile-gfx90a/10/pipeline

[2021-08-30T22:03:48.477Z] 	 11 - test_conv2d (Failed)
[2021-08-30T22:03:48.477Z] 	 13 - test_conv3d (Failed)
[2021-08-30T22:03:48.477Z] 	 26 - test_immed_conv3d (Failed)
could you help to analyze the log, and let me know what might be the cause? Thanks!

@atamazov @ce1adon
Hi Artem, it seems that the latest tensile test has failed:
http://micimaster.amd.com/blue/organizations/jenkins/MLLibs%2FMIOpen/detail/miopentensile-gfx90a/10/pipeline

[2021-08-30T22:03:48.477Z] 	 11 - test_conv2d (Failed)
[2021-08-30T22:03:48.477Z] 	 13 - test_conv3d (Failed)
[2021-08-30T22:03:48.477Z] 	 26 - test_immed_conv3d (Failed)
could you help to analyze the log, and let me know what might be the cause? Thanks!

Hey Artem, I noticed that all the rnn tests passed while all the convolution tests failed. It's less likely to be a gemm logic issue but could be some changes in the conv test logic in cmake lists. Please give us some direction.
Meanwhile, when I looked at the error log, I noticed all the error and max difference are actually ZERO. Not sure what triggered the failure.

Looking there...

@ce1adon

Hey Artem, I noticed that all the rnn tests passed while all the convolution tests failed. It's less likely to be a gemm logic issue but could be some changes in the conv test logic in cmake lists. Please give us some direction.

All 2D and 3D conv failures I see in the logs happen with the GemmWrw1x1_stride1 Solver. Note that there none errors with other Solvers, including GennWrWUniversal. You can try to globally disable GemmWrw1x1_stride1 and re-run the tests to make sure that this resolves the issue.
AFAICS the important prerequisite of the issue is missing find-db (which we do not have for gfx90a, right?) It would be nice if @DrizztDoUrden can investigate the issue in detail, but unfortunately there is no access.

Meanwhile, when I looked at the error log, I noticed all the error and max difference are actually ZERO. Not sure what triggered the failure.

The log shows all the cases, including passing ones (that reveal ZERO diff). But there are many non-zero differences. Please search for "FAILED" in the full log of Fp16 Hip Tensile-Latest All gfx90a, for example. Fp32 has similar problems (with the same Solver).
Excerpts from "Fp16 Hip Tensile-Latest All gfx90a"
test_conv3d:
/home/jenkins/workspace/Libs_MIOpen_miopentensile-gfx90a/build/bin/test_conv3d --half --cmode conv --pmode default --group-count 1 --batch_size 8 --input_channels 16 --output_channels 32 --spatial_dim_elements 4 9 9 --filter_dims 1 1 1 --pads_strides_dilations 0 0 0 1 1 1 1 1 1 --trans_output_pads 0 0 0 --in_layout NCDHW --fil_layout NCDHW --out_layout NCDHW
MIOpen(HIP): Info [BackwardWeightsGetWorkSpaceSize]
MIOpen(HIP): Info [GetWrwSolutions]
MIOpen(HIP): Info [FindConvBwdWeightsAlgorithm] requestAlgoCount = 1, workspace = 0
MIOpen(HIP): Info [GetWrwSolutions]
MIOpen(HIP): Info [TryLoad] Find-db regenerating.
MIOpen(HIP): Info [FindSolutionImpl] GemmWrw1x1_stride1 (not searchable)
MIOpen(HIP): Info [FindSolutionImpl] ConvDirectNaiveConvWrw (not searchable)
MIOpen(HIP): Info [EvaluateInvokers] GemmWrw1x1_stride1: : 0.071519 < 3.40282e+38
MIOpen(HIP): Info [EvaluateInvokers] Selected: GemmWrw1x1_stride1: : 0.071519, workspce_sz = 0
MIOpen(HIP): Info [EvaluateInvokers] ConvDirectNaiveConvWrw: naive_conv_wrw_ncdhw_fp16: 0.823836 < 3.40282e+38
MIOpen(HIP): Info [EvaluateInvokers] Selected: ConvDirectNaiveConvWrw: naive_conv_wrw_ncdhw_fp16: 0.823836, workspce_sz = 0
MIOpen(HIP): Info [FindConvBwdWeightsAlgorithm] miopenConvolutionBwdWeightsAlgoGEMM	0.071519	0
MIOpen(HIP): Info [FindConvBwdWeightsAlgorithm] miopenConvolutionBwdWeightsAlgoDirect	0.823836	0
MIOpen(HIP): Info [FindConvBwdWeightsAlgorithm] BWrW Chosen Algorithm: GemmWrw1x1_stride1 , 0, 0.071519
MIOpen(HIP): Info [ConvolutionBackwardWeights] algo = 0, workspace = 0
MIOpen(HIP): Info [GetWrwSolutions]
FAILED: 0.271657
Max diff: 704
Mismatch at 0: -71 != -72
Backward weights convolution: GemmWrw1x1_stride1
Input tensor: 8, 16, 4, 9, 9
Weights tensor: 32, 16, 1, 1, 1
Output tensor: 8, 32, 4, 9, 9
Filter: conv3d, miopenConvolution, miopenPaddingDefault, {0, 0, 0}, {1, 1, 1}, {1, 1, 1},
...
/home/jenkins/workspace/Libs_MIOpen_miopentensile-gfx90a/build/bin/test_conv3d --half --cmode conv --pmode valid --group-count 1 --batch_size 8 --input_channels 32 --output_channels 64 --spatial_dim_elements 4 9 9 --filter_dims 1 1 1 --pads_strides_dilations 1 1 1 1 1 1 1 1 1 --trans_output_pads 0 0 0 --in_layout NCDHW --fil_layout NCDHW --out_layout NCDHW
MIOpen(HIP): Info [BackwardWeightsGetWorkSpaceSize]
MIOpen(HIP): Info [GetWrwSolutions]
MIOpen(HIP): Info [FindConvBwdWeightsAlgorithm] requestAlgoCount = 1, workspace = 0
MIOpen(HIP): Info [GetWrwSolutions]
MIOpen(HIP): Info [CompileWrwSolution] solver_id = GemmWrw1x1_stride1
MIOpen(HIP): Info [FindConvBwdWeightsAlgorithm] miopenConvolutionBwdWeightsAlgoGEMM	0.08896	0
MIOpen(HIP): Info [FindConvBwdWeightsAlgorithm] BWrW Chosen Algorithm: GemmWrw1x1_stride1 , 0, 0.08896
MIOpen(HIP): Info [ConvolutionBackwardWeights] algo = 0, workspace = 0
MIOpen(HIP): Info [GetWrwSolutions]
FAILED: 0.29497
Max diff: 570
Mismatch at 0: 341 != 112
Backward weights convolution: GemmWrw1x1_stride1
Input tensor: 8, 32, 4, 9, 9
Weights tensor: 64, 32, 1, 1, 1
Output tensor: 8, 64, 4, 9, 9
Filter: conv3d, miopenConvolution, miopenPaddingValid, {0, 0, 0}, {1, 1, 1}, {1, 1, 1},

test_conv2d:
/home/jenkins/workspace/Libs_MIOpen_miopentensile-gfx90a/build/bin/test_conv2d --half --cmode conv --pmode default --group-count 1 --batch_size 8 --input_channels 16 --output_channels 32 --spatial_dim_elements 14 14 --filter_dims 1 1 --pads_strides_dilations 0 0 1 1 1 1 --trans_output_pads 0 0 --in_layout NCHW --fil_layout NCHW --out_layout NCHW
MIOpen(HIP): Info [BackwardWeightsGetWorkSpaceSize]
MIOpen(HIP): Info [GetWrwSolutions]
MIOpen(HIP): Info [FindConvBwdWeightsAlgorithm] requestAlgoCount = 1, workspace = 0
MIOpen(HIP): Info [GetWrwSolutions]
MIOpen(HIP): Info [TryLoad] Find-db regenerating.
MIOpen(HIP): Info [FindSolutionImpl] GemmWrw1x1_stride1 (not searchable)
MIOpen(HIP): Info [FindSolutionImpl] ConvDirectNaiveConvWrw (not searchable)
MIOpen(HIP): Info [EvaluateInvokers] GemmWrw1x1_stride1: : 0.084 < 3.40282e+38
MIOpen(HIP): Info [EvaluateInvokers] Selected: GemmWrw1x1_stride1: : 0.084, workspce_sz = 0
MIOpen(HIP): Info [EvaluateInvokers] ConvDirectNaiveConvWrw: naive_conv_wrw_nchw_fp16: 0.409918 < 3.40282e+38
MIOpen(HIP): Info [EvaluateInvokers] Selected: ConvDirectNaiveConvWrw: naive_conv_wrw_nchw_fp16: 0.409918, workspce_sz = 0
MIOpen(HIP): Info [FindConvBwdWeightsAlgorithm] miopenConvolutionBwdWeightsAlgoGEMM	0.084	0
MIOpen(HIP): Info [FindConvBwdWeightsAlgorithm] miopenConvolutionBwdWeightsAlgoDirect	0.409918	0
MIOpen(HIP): Info [FindConvBwdWeightsAlgorithm] BWrW Chosen Algorithm: GemmWrw1x1_stride1 , 0, 0.084
MIOpen(HIP): Info [ConvolutionBackwardWeights] algo = 0, workspace = 0
MIOpen(HIP): Info [GetWrwSolutions]
FAILED: 0.339097
Max diff: 404
Mismatch at 0: -47 != 59
Backward weights convolution: GemmWrw1x1_stride1
Input tensor: 8, 16, 14, 14
Weights tensor: 32, 16, 1, 1
Output tensor: 8, 32, 14, 14
Filter: conv2d, miopenConvolution, miopenPaddingDefault, {0, 0}, {1, 1}, {1, 1},
...
/home/jenkins/workspace/Libs_MIOpen_miopentensile-gfx90a/build/bin/test_conv2d --half --cmode conv --pmode valid --group-count 1 --batch_size 8 --input_channels 32 --output_channels 64 --spatial_dim_elements 14 14 --filter_dims 1 1 --pads_strides_dilations 1 1 1 1 1 1 --trans_output_pads 0 0 --in_layout NCHW --fil_layout NCHW --out_layout NCHW
MIOpen(HIP): Info [BackwardWeightsGetWorkSpaceSize]
MIOpen(HIP): Info [GetWrwSolutions]
MIOpen(HIP): Info [FindConvBwdWeightsAlgorithm] requestAlgoCount = 1, workspace = 0
MIOpen(HIP): Info [GetWrwSolutions]
MIOpen(HIP): Info [CompileWrwSolution] solver_id = GemmWrw1x1_stride1
MIOpen(HIP): Info [FindConvBwdWeightsAlgorithm] miopenConvolutionBwdWeightsAlgoGEMM	0.10432	0
MIOpen(HIP): Info [FindConvBwdWeightsAlgorithm] BWrW Chosen Algorithm: GemmWrw1x1_stride1 , 0, 0.10432
MIOpen(HIP): Info [ConvolutionBackwardWeights] algo = 0, workspace = 0
MIOpen(HIP): Info [GetWrwSolutions]
FAILED: 0.283379
Max diff: 454
Mismatch at 0: -143 != -73
Backward weights convolution: GemmWrw1x1_stride1
Input tensor: 8, 32, 14, 14
Weights tensor: 64, 32, 1, 1
Output tensor: 8, 64, 14, 14
Filter: conv2d, miopenConvolution, miopenPaddingValid, {0, 0}, {1, 1}, {1, 1},

test_immed_conv3d:
/home/jenkins/workspace/Libs_MIOpen_miopentensile-gfx90a/build/bin/test_immed_conv3d --half --cmode conv --pmode default --group-count 1 --enable-fdb 0 --batch_size 8 --input_channels 16 --output_channels 32 --spatial_dim_elements 3 4 4 --filter_dims 1 1 1 --pads_strides_dilations 0 0 0 1 1 1 1 1 1 --trans_output_pads 0 0 0 --in_layout NCDHW --fil_layout NCDHW --out_layout NCDHW
MIOpen(HIP): Info [BackwardWeightsGetWorkSpaceSize]
MIOpen(HIP): Info [GetWrwSolutions]
MIOpen(HIP): Info [GetWrwSolutionCount]
MIOpen(HIP): Info [GetWrwSolutions]
MIOpen(HIP): Info [CompileWrwSolution] solver_id = GemmWrw1x1_stride1
MIOpen(HIP): Info [FindSolutionImpl] GemmWrw1x1_stride1 (not searchable)
MIOpen(HIP): Info [ConvolutionWrwImmediate] solver_id = GemmWrw1x1_stride1, workspace = 0
FAILED: 0.28884
Max diff: 234
Mismatch at 0: 50 != 11
Backward weights convolution: GemmWrw1x1_stride1_fallback
Input tensor: 8, 16, 3, 4, 4
Weights tensor: 32, 16, 1, 1, 1
Output tensor: 8, 32, 3, 4, 4
Filter: conv3d, miopenConvolution, miopenPaddingDefault, {0, 0, 0}, {1, 1, 1}, {1, 1, 1},
...
/home/jenkins/workspace/Libs_MIOpen_miopentensile-gfx90a/build/bin/test_immed_conv3d --half --cmode conv --pmode valid --group-count 1 --enable-fdb 1 --batch_size 8 --input_channels 32 --output_channels 64 --spatial_dim_elements 4 9 9 --filter_dims 1 1 1 --pads_strides_dilations 1 1 1 1 1 1 1 1 1 --trans_output_pads 0 0 0 --in_layout NCDHW --fil_layout NCDHW --out_layout NCDHW
MIOpen(HIP): Info [BackwardWeightsGetWorkSpaceSize]
MIOpen(HIP): Info [GetWrwSolutions]
MIOpen(HIP): Info [FindConvBwdWeightsAlgorithm] requestAlgoCount = 1, workspace = 0
MIOpen(HIP): Info [GetWrwSolutions]
MIOpen(HIP): Info [CompileWrwSolution] solver_id = GemmWrw1x1_stride1
MIOpen(HIP): Info [FindConvBwdWeightsAlgorithm] miopenConvolutionBwdWeightsAlgoGEMM	0.08896	0
MIOpen(HIP): Info [FindConvBwdWeightsAlgorithm] BWrW Chosen Algorithm: GemmWrw1x1_stride1 , 0, 0.08896
MIOpen(HIP): Info [GetWrwSolutionCount]
MIOpen(HIP): Info [GetWrwSolutions]
MIOpen(HIP): Info [CompileWrwSolution] solver_id = GemmWrw1x1_stride1
MIOpen(HIP): Info [ConvolutionWrwImmediate] solver_id = GemmWrw1x1_stride1, workspace = 0
FAILED: 0.280742
Max diff: 607
Mismatch at 0: 341 != 110
Backward weights convolution: GemmWrw1x1_stride1
Input tensor: 8, 32, 4, 9, 9
Weights tensor: 64, 32, 1, 1, 1
Output tensor: 8, 64, 4, 9, 9
Filter: conv3d, miopenConvolution, miopenPaddingValid, {0, 0, 0}, {1, 1, 1}, {1, 1, 1},

Hey Paul, can you investigate these failures in tensile convolution?

I dont have access to a gfx90a machine. I suggest running the broken test cases with TENSILE_DB=0xff and then report these bugs to the tensile team.

Hey Paul, can you investigate these failures in tensile convolution?

I dont have access to a gfx90a machine. I suggest running the broken test cases with TENSILE_DB=0xff and then report these bugs to the tensile team.
Do the unit tests in MIOpenTensile pass on gfx90a?

I saw test_conv3d, test_immed_conv2d, and test_immed_conv3d failed on vega20. It's not a gfx90a issue.

@pfultz2 All the failed cases are through solver GemmWrw1x1_stride1, can you check if #783 is related with them?

@atamazov Hey Artem, do you know who checked in GemmWrw1x1_stride1 solver? Can they help review the impact of their changes to miopentensile path?

@junliume Hey Jun, I believe the errors detected in miopentensile's full tests is not a issue related in this PR. In fact, same errors were observed in vega20. It should be some previous commits that break the tests yet not being detected. Please evaluate how we are going to handle this PR.

@junliume Hey Jun, I believe the errors detected in miopentensile's full tests is not a issue related in this PR. In fact, same errors were observed in vega20. It should be some previous commits that break the tests yet not being detected. Please evaluate how we are going to handle this PR.

This PR changes MIOpenTensile commit hash from 94a9047741d16a8eccd290131b78fb1aa69cdcdf to 60b8404f813d73df106518f587efb7dbb28c79c3. I recommend reverting it and looking if the issue persists.
If it is still there, then I recommend bisecting commits in develop in order to find the faulty commit.

This PR changes MIOpenTensile commit hash from 94a9047741d16a8eccd290131b78fb1aa69cdcdf to 60b8404f813d73df106518f587efb7dbb28c79c3. I recommend reverting it and looking if the issue persists.

Does the tensile stage pass on develop? That is another data point.

Does the tensile stage pass on develop? That is another data point.
smoke test succeeded. full test passed at least in #556 .
And does 60b8404f813d73df106518f587efb7dbb28c79c3 pass with MIOpenTensile's unit tests?
Yes, but remember the first time we have the 1x1 problem, we also passed the unit tests while more complicated miopen tests failed, which leads us to set miopen's miopentensile stages.

Yes, but remember the first time we have the 1x1 problem, we also passed the unit tests while more complicated miopen tests failed

The tests failed when we had the 1x1 problem as well, I just disabled it as I thought it was a problem with tensile(which it wasn't). Since then the test coverage has been improve a lot, but the goal of the unit tests is to make sure we are calling the tensile API correctly not to test that tensile works correctly.
Its very likely this is a bug in tensile as this seem to pass previously on develop. Tensile's kernel generation is not always very robust(its written in a dynamic language with no unit tests) so it can be expected especially if we are calling new configurations they haven't tested before.

smoke test succeeded. full test passed at least in #556 .

They also passed in #783 which is even newer. We should probably kick off a full build of the latest on develop to check if it still passes.

Kicked off a build here:
http://micimaster.amd.com/job/MLLibs/job/MIOpen/job/develop/246/

Kicked off a build here:
http://micimaster.amd.com/job/MLLibs/job/MIOpen/job/develop/246/

Thanks!
Some comments for the failure:

As Artem mentioned, the full test based on rocblas passed. There are few questions here. First, which version of rocblas is used? Our docker file seems to always install the latest rocblas, which means the version is 4.3 at this point, while our tensile is also updated to 4.3, meaning our tensile and rocblas share the same tensile kernels. This means the bug is less likely from tensile. Second, gemm tests passing rocblas path doesn't mean there is no issue with tensile path. Theoretically every change related to gemm path should enable and test miopentensile stages.
The test is almost for sure breaking in develop, since it's found in vega20, very likely also in gfx908. It's probably worth to run an overall test before releasing in future. Currently we need some resource to locate the earliest failure.

Ok after some investigating, it seems that f525e845367b1be986eb71ee110c3ae52e247727 is the faulty commit, but only because it introduces new test cases to be tested as testing this on the previous commit shows it still fails. Here is one of the test cases that fails:
MIOPEN_DEBUG_CONV_FFT=0 MIOPEN_DEBUG_CONV_DIRECT=0 MIOPEN_DEBUG_CONV_WINOGRAD=0 MIOPEN_DEBUG_CONV_IMPLICIT_GEMM=0 ./bin/test_conv2d --half --cmode conv --pmode default --group-count 1 --input 8, 16, 14, 14 --weights 32, 16, 1, 1 --pads_strides_dilations 0 0 1 1 1 1 --trans_output_pads 0 0

I also tested this on #783 and #556 and they both fail this test case. So it looks like this has been there for awhile. Next step is to get the matrix sizes, check if we are calling MIOpenTensile correctly and also calling tensile correctly.

ping @ce1adon just for issue tracking :)

Ok after some investigating, it seems that f525e845367b1be986eb71ee110c3ae52e247727 is the faulty commit, but only because it introduces new test cases to be tested as testing this on the previous commit shows it still fails. Here is one of the test cases that fails:
MIOPEN_DEBUG_CONV_FFT=0 MIOPEN_DEBUG_CONV_DIRECT=0 MIOPEN_DEBUG_CONV_WINOGRAD=0 MIOPEN_DEBUG_CONV_IMPLICIT_GEMM=0 ./bin/test_conv2d --half --cmode conv --pmode default --group-count 1 --input 8, 16, 14, 14 --weights 32, 16, 1, 1 --pads_strides_dilations 0 0 1 1 1 1 --trans_output_pads 0 0

I also tested this on #783 and #556 and they both fail this test case. So it looks like this has been there for awhile. Next step is to get the matrix sizes, check if we are calling MIOpenTensile correctly and also calling tensile correctly.

Does the failure only happen in half?

Does the failure only happen in half?

Yes, fp32 does pass.

Does the failure only happen in half?

Yes, fp32 does pass.

Thank you, Paul!
Looks like a dedicated ticket has to be create for this issue.

Does the failure only happen in half?

Yes, fp32 does pass.

Thank you, Paul!
Looks like a dedicated ticket has to be create for this issue.

@ce1adon have you created a ticket for this issue please? Thanks!

Does the failure only happen in half?

Yes, fp32 does pass.

Thank you, Paul!
Looks like a dedicated ticket has to be create for this issue.

@ce1adon have you created a ticket for this issue please? Thanks!

Please see Issue #1144

Work on MIOpenTensile has been postponed indefinitely.


Growing dismissed table

I expect a quite fast growing dismissed table if a lot of users are using the system.
To prevent this, at least related entries should be deleted when deleting an announcement.

@atrol can you please test if PR #20 addresses the issue ?

Tested a bit PR #20
Looks good, tried upgrade (cleanup) and deleting announcements.

Thanks for testing !


[Question]: New type for context.req.query

@azure/functions version 1.2.3 has apparently changed the TypeScript type of context.req.query from Record<string, string> to Record<string, string | undefined>.
Basically, I just need to know why this was changed, because this change has created a ton of type errors in our app and I need to find the correct way of fixing them.
I can think of two reasons for this change:

Property values in context.req.query can be undefined. This doesn't seem likely, because I'm not able to reproduce this (using azure-functions-core-tools@3.0.3388). No matter what query string I pass all property values in context.req.query are strings.
The library wants to impose stricter null checks on consumers

Does anyone know which is the case (if any of them)?
Thanks!

Hi - the query parameter value can be undefined in the following cases:
http://localhost:7071/api/HttpTrigger?hello=
http://localhost:7071/api/HttpTrigger?hello
http://localhost:7071/api/HttpTrigger

where my code is this:
module.exports = async function (context, req) {
    context.log(context.req.query.hello);
};

Hi and thanks.
Yeah you got it, and no worries!
For the three URLs you mentioned, I get the following values for context.req.query using a function very similar to yours:

{ hello: "" }
{ hello: "" }
{}

In other words, I get empty strings and no undefined.

Ahh sorry - that's expected :) The case of undefined then is: http://localhost:7071/api/HttpTrigger
One thing you can do, if you know that your client will definitely always send the HTTP query of some name, is this:
declare module '@azure/functions' {
    export interface HttpRequestQuery {
      hello: string
    }
}

Unless I'm mistaken, the type { [key: string]: string | undefined } means that the object in question can contain the literal undefined: { something: "", hello: undefined }, which is different from { something: "" } if you have any logic that involves iterating over object properties (which we do). To me it still doesn't seem like the query object will ever contain undefined literals.
From what you're saying, it seems like undefined was included in the property type to express the fact that any specific property in query might not be defined. Could you confirm or deny? 😊

Seems like this is the commit that changed the types: https://github.com/Azure/azure-functions-nodejs-worker/commit/eb2845b31477d7f0b45a2b17de642d154944452c
I also can't produce any behavior in which the values are undefined.

Hi folks we will get rid of | undefined in the types. If people want the strict type checking, they can turn on noUncheckedIndexedAccess in their TypeScript config


Fix/update deps

Codecov Report

Merging #280 (f82177d) into master (a790d71) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master     #280   +/-   ##
=======================================
  Coverage   98.93%   98.93%
=======================================
  Files           2        2
  Lines          94       94
  Branches       25       25
=======================================
  Hits           93       93
  Misses          1        1

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 e2cd1ed...f82177d. Read the comment docs.

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

GitHub release
1.5.2
npm package (@latest dist-tag)

Your semantic-release bot :package::rocket:


Feature Request - Share Hunts

[x] Add the ability to share hunts between users:

Currently, a non-admin user can only view information, results, and rerun/repeat their own hunts. A hunt should be able to be exposed to non-admin users so that any user of a cluster can access a hunt. When shared, all users should be able to view the information for the hunt and view the results for the hunt.

[ ] Add the ability to share hunts between clusters:

Currently, hunts are stored per cluster and cannot be shared between clusters. A user may want to run hunts against multiple clusters.

I think we should not implement sharing hunts between clusters in favor of this option: #1011 (enabling hunts in multiviewer)
If we were to share hunts between clusters we would need to change the schema for hunts to store the data about a hunt per cluster. The Hunt UI would also have to look different per cluster. For example, if a user was viewing the hunt from the same cluster it was created and run on, the current actions would be permitted (opening a hunt's results, rerunning a hunt with its query, etc). However, if a user was viewing the hunt from a different cluster, there would need to be some indication that there are no results yet because it has not been run against that cluster's data. Then, a user should be able to run that hunt against that cluster's sessions.
This seems like an overly complicated workflow, when instead a user could just create one hunt on a multiviewer and apply it to many clusters.


The OpenSSL library reported an error: bad write retry

With the async branch, when POSTing a large body the following error is returned: The OpenSSL library reported an error: bad write retry
The exact amount of data that causes the error seems to be OS/hardware dependant (possibly related to the size of buffers). I've set up an example project at https://github.com/taheris/bad-write-retry-example which should trigger the error.
By patching the openssl library to set the SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER flag, the error goes away. Uncomment the [replace] line in the Cargo.toml file to verify this.
The patched line is https://github.com/taheris/rust-openssl/commit/7b7a2e2fef207786a74708b11624f02153e54c32. I've used a hardcoded value of 0x00000002 as the specific SSL_MODE flag is not available (see here for the relevant section).

@taheris wow, thanks for all the troubleshooting! If you file a PR to rust-openssl, can you update this issue?

@seanmonstar: no problem, PR created

Looks fixed, closing.


Development track

WAT
Development track for ominidi.org

Current coverage is 80.48% (diff: 80.48%)

Diff Coverage
File Path

0%
new .../java/org/ominidi/web/controller/HomeController.java

0%
new src/main/java/org/ominidi/web/Application.java

0%
new src/main/java/org/ominidi/facebook/config/Page.java

•••••      50%
new src/main/java/org/ominidi/facebook/config/App.java

•••••••••• 100%
new .../main/java/org/ominidi/facebook/repository/Feed.java

•••••••••• 100%
new ...main/java/org/ominidi/facebook/repository/Field.java

No coverage report found for master at 46244a7.

Powered by Codecov. Last update 46244a7...7ed7632


Generated file with prefix on include headers

Hi,
Recently i pass by a problem on include paths. Two files with the same name. One i control because if from my project, but the other is from djinni. See an example:
https://github.com/ezored/dependency-string-helper/blob/master/build/djinni/jni-output/ezored/helpers/EZRStringHelper.hpp
And
https://github.com/ezored/dependency-string-helper/blob/master/build/djinni/jni-output/ezored/helpers/EZRStringHelper.cpp
And
https://github.com/ezored/dependency-string-helper/blob/master/build/djinni/objc-output/ezored/helpers/EZRStringHelper%2BPrivate.h
Every file has:
#include "StringHelper.hpp"

That is the header generated by djinni.
I want suggest an option in cpp or individual (cpp, jni, objc), that add a prefix to this include path. Example:
#include "${cpp_prefix}StringHelper.hpp"

It give us more control about include paths.
What team think about? Possible?

I think you might be looking for the cpp-include-prefix cmd-line argument, which you can see here: https://github.com/dropbox/djinni/blob/master/src/source/Main.scala#L130
There are also other prefix args you can find in that same source file if I pointed to the wrong one.  You can also use the ident-cpp-file argument to change the C++ file names to not conflict.

Arrrghhh. Djinni has everything!!!   :p
Thanks man.


Patch taurus upper bound for sardana <3.2

Checklist

[X] Used a personal fork of the feedstock to propose changes
[ ] Bumped the build number (if the version is unchanged)
[ ] Reset the build number to 0 (if the version changed)
[ ] Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)
[ ] Ensured the license file is being packaged.

Taurus 5 broke sardana <3.2.
I pushed a new build to fix the latest version (3.1.3): https://github.com/conda-forge/sardana-feedstock/pull/8
But that doesn't seem to be the proper way to fix such issue. conda is still installing the previous build by default: https://github.com/conda/conda/issues/11140
Patching the repodata seems to be the way to fix all existing sardana packages.

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

Please use the gen diff script in the recipe to produce the repodata diff for this PR.

$ python show_diff.py --use-cache
noarch::sardana-3.0.3-pyhd8ed1ab_0.tar.bz2
-    "taurus >=4.7.0"
+    "taurus >=4.7.0,<5"
noarch::sardana-3.1.0-pyhd8ed1ab_0.tar.bz2
-    "taurus >=4.7.0"
+    "taurus >=4.7.0,<5"
noarch::sardana-3.1.1-pyhd8ed1ab_0.tar.bz2
-    "taurus >=4.7.0"
+    "taurus >=4.7.0,<5"
noarch::sardana-3.1.2-pyhd8ed1ab_0.tar.bz2
-    "taurus >=4.7.0"
+    "taurus >=4.7.0,<5"
noarch::sardana-3.1.3-pyhd8ed1ab_0.tar.bz2
-    "taurus >=4.7.0"
+    "taurus >=4.7.0,<5"

This looks good to me but it also generates a bunch of changes for clang constrains (for all arch).
It does the same on the master branch:
linux-64::clang-9.0.1-cling_v0.9_hf01e6bc_3.tar.bz2
-  "version": "9.0.1"
+  "version": "9.0.1",
+  "constrains": [
+    "clang-tools 9.0.1.*",
+    "llvm 9.0.1.*",
+    "llvm-tools 9.0.1.*",
+    "llvmdev 9.0.1.*"
+  ]
linux-64::clang-9.0.1-default_hbe8b877_3.tar.bz2
-  "version": "9.0.1"
+  "version": "9.0.1",
+  "constrains": [
+    "clang-tools 9.0.1.*",
+    "llvm 9.0.1.*",
+    "llvm-tools 9.0.1.*",
+    "llvmdev 9.0.1.*"
+  ]
...

Is that normal?

Yep. @isuruf Do you understand where these clang changes are coming from?

We cna merge even those those happen

I rebased on master and the extra changes disappeared. Those are the expected changes:
$ python show_diff.py --use-cache
noarch::sardana-3.0.3-pyhd8ed1ab_0.tar.bz2
-    "taurus >=4.7.0"
+    "taurus >=4.7.0,<5"
noarch::sardana-3.1.0-pyhd8ed1ab_0.tar.bz2
-    "taurus >=4.7.0"
+    "taurus >=4.7.0,<5"
noarch::sardana-3.1.1-pyhd8ed1ab_0.tar.bz2
-    "taurus >=4.7.0"
+    "taurus >=4.7.0,<5"
noarch::sardana-3.1.2-pyhd8ed1ab_0.tar.bz2
-    "taurus >=4.7.0"
+    "taurus >=4.7.0,<5"
noarch::sardana-3.1.3-pyhd8ed1ab_0.tar.bz2
-    "taurus >=4.7.0"
+    "taurus >=4.7.0,<5"


a couple of CSS minor fixes

PX should be before REM https://github.com/zurb/foundation/blob/master/public/src/stylesheets/globals.css#L95
a duplicate selector "blockquote cite a:visited" https://github.com/zurb/foundation/blob/master/public/src/stylesheets/globals.css#L114

Nice catch, thanks. Fixed and committed.


RAM resource sharing between accounts fails

When sharing TGW between two accounts in AWS GovCloud, terraform apply has to be executed multiple times before resource sharing is created successfully.
Versions
terraform = v0.13.5
aws provider = v3.2.0
transit-gateway module = 1.3.0
Module settings
Account A
create_tgw = true
share_tgw = true
ram_allow_external_principals = true
ram_principals = [<account_b>]

Account B
create_tgw = false
share_tgw = true

First terraform apply shows the following in the output;
module.usgce_tgw.aws_ram_resource_share.this[0]: Creation complete after 1s [id=arn:aws-us-gov:ram:us-gov-east-1:<acct_id>:resource-share/<id>]
module.usgce_tgw_poclab_peer.aws_ram_resource_share_accepter.this[0]: Creating...
module.usgce_tgw.aws_ram_principal_association.this[0]: Creation complete after 1s [id=arn:aws-us-gov:ram:us-gov-east-1:<account_id>:resource-share/<id>]
module.usgce_tgw.aws_ram_resource_association.this[0]: Creation complete after 2s [id=arn:aws-us-gov:ram:us-gov-east-1:<account_id>:resource-share/<id>,arn:aws-us-gov:ec2:us-gov-east-1:<account_id>:transit-gateway/tgw-<id>]

But the apply fails with the following error;
Error: No RAM Resource Share (arn:aws-us-gov:ram:us-gov-east-1:<account_id>:resource-share/<id>) invitation found

Running terraform plan again shows that the resource still needs to be created;
# module.usgce_tgw_poclab_peer.aws_ram_resource_share_accepter.this[0] will be created

Running terraform apply again successfully accepts the pending resources share in the second account but the apply fails with the following error;
Error: error retrieving resource shares: UnknownResourceException: ResourceShare arn:aws-us-gov:ram:us-gov-east-1:<account_id>:resource-share/<id> could not be found.

After running terraform apply two more times the existing share/invitation is deleted and accepted successfully.
First run;
Error: No RAM Resource Share (arn:aws-us-gov:ram:us-gov-east-1:<account_id>:resource-share/<id>) invitation found

Second run;
module.usgce_tgw_poclab_peer.aws_ram_resource_share_accepter.this[0]: Creating...
module.usgce_tgw_poclab_peer.aws_ram_resource_share_accepter.this[0]: Creation complete after 2s [id=arn:aws-us-gov:ram:us-gov-east-1:<account_id>:resource-share/<id>]

Apply complete! Resources: 1 added, 0 changed, 0 destroyed.

Possible solution found here - https://registry.terraform.io/providers/hashicorp/time/latest/docs/resources/sleep#triggers-usage  Will test and report back.

I was able to delay the creation of the aws_ram_resource_share_accepter resource by adding this to the second accounts'  transit-gateway module config.  I assumed that the resource share wouldn't complete without this arn.
depends_on = [module.account_a_tgw.this_ec2_transit_gateway_arn]

@2stacks thanks! I'm going to close this issue.


input should respond to change event

not sure if this should do something to prevent responding to two events, but I think it should also listen for change events.

This pull request is stale, I think it can be closed.


Setup script for boilerplate verification

Setup to ensure boilerplate is defined for specific files.
Signed-off-by: Arnaud Meukam<EMAIL_ADDRESS>

cc @kubernetes-sigs/ingate-maintainers

/lgtm
/approve
Thanks


[Help Wanted]: Not Getting Suggestions in JUCE C++ projects

Before Reporting

[X] I have checked FAQ, and there is no solution to my issue
[X] I have searched the existing issues, and there is no existing issue for my issue

Describe your issue
Hello, I have an active Plus license and the plugin is working well for me in Swift projects and even in openFrameworks C++ projects but for some reason I get no suggestions whatsoever in JUCE C++ projects. Chat works in those projects but not suggestions. I'm using Github Copilot and like I said, it works fine in Swift and even C++ Xcode projects generated by the openFrameworks Project Generator. But I get no suggestions in C++ Xcode projects generated by the JUCE Projucer. Any ideas what the issue might be?

Do you have an example project that I can try?

Sure, this is the default project from JUCE's Projucer: https://github.com/discohead/juceXcodePilotExample
It's not going compile as its linked to my local JUCE SDK path, but maybe doesn't matter for this purpose.

It looks like the project is using \r\n as line endings, which is not handled in the app. Supporting it will take some time since I am calling .split(separator: "\n") everywhere in the code.
In the meantime, if the line endings don't matter, you can turn this toggle on in Xcode settings - Text Editing - Editing to convert them into \n.

But the toggle is not working for me..

I see. Unfortunately, same here, that toggle doesn't seem to have any effect on the issue.

Just confirming that it's definitely the line endings. I wrote a bash script to convert them and now I'm getting suggestions.

Released in 0.29.0.


Far Cry 5 Arcade Editor shows a white screen instead of the game in the editor window

Software information
UPlay version of Far Cry 5 Arcade Editor.
System information

GPU: Nvidia GTX 1070
Driver: Nvidia driver version 390.59 installed via RPMFusion
Wine version: 3.9-staging
DXVK version: 0.53

Apitrace file(s)

ArcadeEditor64.trace

Log files

d3d11.log:  ArcadeEditor64_d3d11.log

dxgi.log: ArcadeEditor64_dxgi.log

You need to use at least driver version 396.24.02. You can get them here: https://developer.nvidia.com/vulkan-driver

Installed the driver version 396.24.02. The Arcade Editor still does the same above.
As a side-note; Far Cry 5 (base game) works on both Nvidia driver version 390.59 and 396.24.02.

The log is pretty clear about what's wrong:

err:   DxvkSurface::createSurface: Failed to create win32 surface

This is not something I can fix, sadly.


Marsellus crashed

now testing this locally using:
TESTNET_FRIENDS=http://localhost:8082/ PORT=8081 npm start
TESTNET_FRIENDS=http://localhost:8081/ PORT=8082 npm start
but getting a 404 when the (unpacked) browser extension wants to connect to one of those websockets, weird. will continue on wednesday

got the client-server-server demo working now, maybe I can make TESTNET_NEIGHBORS a JSON string.

i'll keep the testnet on localhost for a few more weeks.


allow to specify working directory

in the existing implementation, while installing pixi,
the action expects to find pixi.toml and pixi.lock in the root directory of the repo.
it is possible to have a pixi project in a sub folder (for example in a mono repo with multiple projects),
and at the moment it's not possible to use the action in that case.
in my case I'm getting the error

Error: Failed to generate cache key: Error: ENOENT: no such file or directory, open 'pixi.lock'

since the lock file is in a sub folder

Doesn't specifying manifest-path work in this case?

thanks @pavelzw, you are correct.
for some reason, when reading the docs I thought that option is only used to pick the name of the file and not the project root as a whole.


Add SUPERCOP harness

This would enable benchmarking rust-crypto in the context of a wider variety of implementations.
https://bench.cr.yp.to/supercop.html

supercop also has facilities for measuring timing variations, which would be a good start for showing rust-crypto's worthiness.


cowboy_req:read_urlencoded_body exit(timeout)

My cowboy http non-stream handler does the following:
cowboy_req:read_urlencoded_body(Req0)
Everyday the handler is called about 1 million times, and every day I get several exit:timeout from the above code:
{error_report,<0.8459.3>,
 {<0.13880.3>,crash_report,
  [[{initial_call,
     {cowboy_stream_h,proc_lib_hack,
      [Argument__1,Argument__2,Argument__3]}},
    {pid,<0.13880.3>},
    {registered_name,[]},
    {error_info,
     {exit,
      {timeout,
       [{cowboy_req,read_body,2,
         [{file,"src/cowboy_req.erl"},{line,438}]},
        {cowboy_req,read_urlencoded_body,2,
         [{file,"src/cowboy_req.erl"},{line,454}]},
        {nbserv_http_handler,handle_event_modify,2,
         [{file,"src/nbserv_http_handler.erl"},{line,144}]},
        {nbserv_http_handler,init,2,
         [{file,"src/nbserv_http_handler.erl"},{line,79}]},
        {cowboy_handler,execute,2,
         [{file,"src/cowboy_handler.erl"},{line,37}]},
        {cowboy_stream_h,execute,3,
         [{file,"src/cowboy_stream_h.erl"},{line,178}]},
        {cowboy_stream_h,proc_lib_hack,3,
         [{file,"src/cowboy_stream_h.erl"},{line,163}]},
        {proc_lib,init_p_do_apply,3,
         [{file,"proc_lib.erl"},{line,247}]}]},
      [{cowboy_stream_h,proc_lib_hack,3,
        [{file,"src/cowboy_stream_h.erl"},{line,168}]},
       {proc_lib,init_p_do_apply,3,
        [{file,"proc_lib.erl"},{line,247}]}]}},
    {ancestors,[<0.13879.3>,<0.11631.3>,<0.11630.3>,ranch_sup,<0.8460.3>]},
    {messages,[]},
    {links,[]},
    {dictionary,[]},
    {trap_exit,false},
    {status,running},
    {heap_size,987},
    {stack_size,27},
    {reductions,306}],
   []]}}

We also have this issue repeatedly - so we wrap the call in a catch handler to deal with it, and currently accept the request failure rate.
Our research into it, we find that  read_urlencoded_body/1 defaults to a 5000 ms period.  We've played with increasig that timeout by calling read_urlencoded_body/2 with appropriate options, however we find that increasing the timeout duration doesn't noticeably reduce the occurrence of the 'timeout'.  And since in our case the entire http request should fit into a single tcp frame, it isn't like the timeout is from waiting for the data to actually be sent by the client.   So something is a bottleneck/starving for a still unknown reason to us.

Can you try again? I fixed something in cad3e3f63d96559f16ee90e661a29063d0b3fc80 that might be related.

We aren't using http2, so I guess that commit would not affect us?

OK. Then it could be a bug, because that timeout is only triggered when something is going wrong. Slow rate would result in less or empty data being returned. A way to reproduce would be great though. :-)

Does this still occur? And can you post more recent error reports? Thanks.

I haven't been working on the project that uses this for a while.  At a quick glance, it doesn't look like the project has been updated to recent version of cowboy for a while.  But I'll poke our internal tracker on this issue and see if anyone responds.

Since the issue is old and there's been no new reports I'll close this for now. If someone still has the issue then please reopen or open a new ticket with as much details as possible. Thanks!


slow internet

for students who have slow  internet please provide course materials downlode option in .zip file lot's of student don't have fast internet  access. we need all course material offline please help us .(uplode in google drive ) edx dl not working

you can download stuff from edx courses from youtube. all videos from edx (all ive watched so far) are uploaded to youtube.

i tried with edx dl but its not working ..how can i downloade 17 hours of small segmented videos

sadly you cant. you would have to go one by one in the youtube link and download each one of them with some kind of youtube downloader

@nandu42 What about  Torrent links of the course?

Learn Programming . U will be alble to download All videos with single script

edx dl have  trouble with very long paths file name is too long..

@nandu42 in Coursera you can right click the video and save.
In edX you can go to YouTube and use a program to download the video, for example, this one.
We can't do much about this topic.


Bulk struct fixes

Scryfall updated their API to no longer have a permalink_uri

Add missing uri property
Update permalink_uri to the new download_uri

Pull Request Test Coverage Report for Build 91

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 58.747%

Totals

Change from base Build 90:
0.0%

Covered Lines:
225

Relevant Lines:
383

💛  - Coveralls

Thank you for helping keep things up to date!


Bot not leaving livechat after transfer to live agent.

Hi,
I'm having an issue where by hubot-natural chatbot does not leave a livechat session after it has handed off to a live agent.
Using the stock "rocketcat-en.yml" corpus, I have updated the file to include the proper Department hash.  When requesting to talk with a human, a live agent is assigned and joins the chat, but the bot is also still present and continues to try and answer as well.
Is there a setting I am missing?  It's hard to nail down the config since the images in the instructions are all broken.
Andrew

FYI, using RocketChat version 0.66.3.

Same issue for me. Any fix available for this?

Assuming this is the same issue we're talking about over at bBot...
https://github.com/Amazebot/bbot/issues/111
The bot will keep receiving as long as it's in the room. Need to call the leave room method through the SDK, which is part of the adapter. I don't remember the exact attributes.

Hi @timkinnane ,
Thanks for your response.
I understand we need to call leave chat room method. But not able to find from which node module i need to call this. Please help.
Thanks!

From the driver module, which is inside the adaptor. Should be something like bot.adaptor.driver.callMethod


CurvedLinearProgressIndicator Progress indicator misbehave.

In CurvedLinearProgressIndicator(), the loading progress indicator behaviour is not as per standard LinearProgressIndicator().

Fixed in version: 1.0.2


Jackson 2.12.0 causes infinite loop(read) in method BlobContainerClient.listBlobsByHierarchy

Just FYI, I experience this issue when upgrading from jackson-databind 2.11.4 (Dec 2020) to 2.12.0 (Nov 2020) c.f.

I've experienced this same issue upgrading to 2.12.0, the problem seems to be that the default behaviour in that version has changed (https://github.com/FasterXML/jackson-dataformat-xml/issues/411) and for an empty block, it now returns an empty string instead of null. I don't think there's a way to inject a custom SerializerAdapter. The fix should be fairly trivial to implement in JacksonAdapter#JacksonAdapter and configure the parser to behave as expected.
Please make this work with Jackson 2.12.0
Originally posted by @fcofdez in https://github.com/Azure/azure-sdk-for-java/issues/9465#issuecomment-775044143

Thank you for submitting this issue @biliboc, this should be resolved when #18884 is released.

This issue will be resolved once the 12.11.0-beta.2 azure-storage-blob library is released

Hi, we recently released azure-storage-blob 12.11.0-beta.2 that should fix this issue. Please try it out and let us know if you are still hitting the issue.
Feel free to close this once you've confirmed the latest release fixes your issue.


Remove calls to assign from django guardian

This is related to #5853

I imagine tests will be fixed after we merge #5853?

I imagine tests will be fixed after we merge #5853?

Hope so :eyes:, I'm going to see why tests are failing

ok, we are safe to remove guardian after this.


[SPARK-10669] [Docs] Link to each language's API in codetabs in ML docs: spark.mllib

my first PR, please let me know if more work is needed. Thanks a lot!

Can one of the admins verify this patch?

@keypointt I don't this is what the JIRA was getting at. See https://issues.apache.org/jira/browse/SPARK-10670 and https://github.com/apache/spark/pull/8901 instead. I think you'd want to start over and close this one though some of the extra links are nice here.

@srowen After checking the ticket you mentioned, now I know what is exactly expected. I'm closing this one and continue work on SPARK-10669. Thank you


These 2020 "Windows Desktop" Documentation Pages are Extremely Confusing

Setting aside the baffling terribleness of having two separate RDP clients called Windows Remote Desktop Connections client and Windows Remote Desktop client, respectively, the way the documentation for this section is now structured and worded is bizarre and nearly unusable.
Why aren't there separate sub-headings in the left-hand bar for the two different Win10"Desktop" clients, not just the one that only connects to Azure VD? How can you not have a sub-heading for the most frequently used Windows RDP client?
Why aren't there links on this particular page to wherever the info for the traditional in-box client got relocated to?
Why do some of the other pages in the documentation that apparently refer to the traditional, in-box client use the nomenclature "Windows Desktop" client?
Why are there sections of text that are apparently supposed to talk about the Azure VD client as if it can connect to on-prem machines when it can't do that right now?
Why are the important distinctions between the now-three different official MS RDP clients on Windows PCs noted in the last page of this section of documentation while the first page (that supposedly says it explains what clients exist) makes no mention of the traditional RDP client (the one most people are probably looking for documentation on!) whatsoever?
I'm honestly perplexed.

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

ID: 09ab98fc-fea2-a11a-e5ca-de1430211d97
Version Independent ID: 4d9943c3-fef7-ca86-bd03-1241a04b8135
Content: Get started with the Windows Desktop client
Content Source: WindowsServerDocs/remote/remote-desktop-services/clients/windowsdesktop.md
Product: windows-server
Technology: remote-desktop-services
GitHub Login: @Heidilohr
Microsoft Alias: helohr

#assign:xelu86

Hey arekfurt,
Thanks again for contacting Microsoft. We value your feedback.
Based on the length of time when this issue was generated, the page in question no longer exists, so edits to it cannot be made. Those who maintain the RDS technology documentation have made several changes over time since the app's release and there is more updated platform-specific documentation available.
Latest information about the Windows Desktop Client can be found at: https://learn.microsoft.com/en-us/azure/virtual-desktop/users/connect-windows?tabs=subscribe
We will now be closing this thread. Thank you and have a most pleasant day.
#please-close


Wrong return type in docker.compose.run?

The return type of compose.run is Union[str, python_on_whales.components.container.cli_wrapper.Container]
ma in case of stream it is returned stream_stdout_and_stderr... so the return type should be
Union[str, python_on_whales.components.container.cli_wrapper.Container, Iterable[Tuple[str, bytes]]], is it correct?

Yup! Seems you're right!


DbSet.Find method behavior not correct on table inheritance

Let's say we have Post as storage table.
We have two of child classes: NewsPost and AdPost
When you want to get the AdPost but you pass it with ID of NewsPost you will get the exception of "Cannot cast Post_xxx to AdPost"
Except:
Just return null, due to ID is not AdPost. In further, the result should not depend on ID value if ID is not AdPost.
Steps to reproduce

Create a table of Post
Create Post class, then AdPost and NewsPost that inheritance from Post
Create new NewsPost record, that have ID of 1.
Trying to filter with var ad = context.AdPosts.Find(1)

Except:
ad equals null.
Real:
Cast exception.
Further technical details
EF version: 6.2.0
Database Provider: EntityFramework.SqlServer
Operating system: Windows 10
IDE: Visual Studio 2017

@imzjy This was something that was discussed in-depth at the time Find was implemented (many years ago) and arguments for both throwing and returning null were put forward. From what I remember the arguments for returning null were basically what you are saying. On the other hand, the arguments for throwing were along the lines of:

Find should only be called with IDs that are valid for the entity type, and this is not a valid ID because it is being used for a different entity type.
It's hard to not throw and have the result be consistent and expected across different types in the hierarchy. For example, what should happen if Find is called for:

A base type, but the entity found is of a derived type?
A derived type, but the entity found is of a base type?
The case you present where the types have a common base but one is not derived from the other?

Ultimately, the decision was made to throw in this case. I don't know if in retrospect that was the correct decision, but it is not something we are going to change going forward.

@ajcvickers
Thanks for let me know the more deeper thinking on how Find be implemented, and what's other cases should take consideration based on implementing the Find.


Fixed requiring in Edit mode

When Knit got required from Edit Mode (E.g a plugin) it still decided to delete the KnitServer file. By adding a RunService check this problem is fixed!
This bug was really annoying when using for example Hoarcekat in my case. When one of my Roact Components where requiring Knit it deleted my KnitServer, making the game unplayable.

Overall looks good. My only concern, which is unrelated to your change, is that Knit can sometimes inherently introduce side-effects. This makes it very tricky to test. For instance, Knit might create RemoteEvents/RemoteFunctions. Doesn't negate your PR, but does point to some deeper issues with Knit & testing. Will probably need to address that in v2 of Knit!

That's true but in some cases Knit isn't even being used in the components, it just has a Knit require at the top of the script. And it's really annoying when it just removes the KnitServer because of that.

Knit has the potential to create runtime-long-living objects (e.g. RemoteEvents via Comm). Because of this, I have decided that Knit--in its current state--ought not be used during edit mode, and only used during actual runtime. Supporting this would require a major refactor internally with other dependencies.
That being said--and as mentioned in my previous comment--I hope to have this addressed in v2.


Dollar Sign is not aligned with dollar amount in Give Now

Acceptance Criteria

[ ] The dollar sign should align vertically with the dollar amount in the giving amount input on the give now tab.

I believe this is only affecting Android


Remove length argument from write method?

Why can't we just detect length from the buffer?
mpg.write(pointer, buf, buf.length, onend)
↓
mpg.write(pointer, buf, onend)

The buffers are pointers on C++ and pointers don't keep track of their size. We need to keep track of their size manually. I believe this will be changed on NAPI as buffers will be an object that has a method to get the data size.

Shouldn't we leave it open until it is patched?  I can make a commit on the NAPI branch that will close this when we merge it.


make gc interval configurable

Currently, the GC_INTERVAL is still hard-coded in the curp/src/server/gc.rs, like:
/// How often we should do gc
const GC_INTERVAL: Duration = Duration::from_secs(20);

/// Run background GC tasks for Curp server
pub(super) fn run_gc_tasks<C: Command + 'static>(cmd_board: CmdBoardRef<C>, spec: SpecPoolRef<C>) {
    let _spec_pool_gc = tokio::spawn(gc_spec_pool(spec, GC_INTERVAL));
    let _cmd_board_gc = tokio::spawn(gc_cmd_board(cmd_board, GC_INTERVAL));
}

In fact, since the gc interval may be changed in some situations, we should put it into the ServerTimeout in the config.rs file and make it configurable, as other configuration field does.

This issue is currently assigned to @myrfy001.

Welcome, this issue is currently assigned to you. Thanks for your contribution.

Hi, i'm interested in this issue. May I take this good first issue? thx.

Welcome, this issue is currently assigned to you. Thanks for your contribution.


WKWebView performance degradation and out of sync issue

I have an Ionic 2 (Cordova based) app and I'm using Leaflet in it. I recently upgraded from UIWebView to WKWebView and I noticed that when the map has lots of (100+) markers on it then pinch-zoom performance was much worse than before with the UIWebView. With only few markers on the map it worked perfectly as before. I also noticed that quite occasionally the map bugged out, basically map zoom level and marker layer zoom levels managed to get out of sync when pinch-zoom gesture was performed rapidly. Zooming using controls worked as expected. So I figured that with the WKWebView it must be using some newer technologies that is not available in UIWebView and that something new does not play well with WKWebView. So I tried out disabling hardware accelerated 3D CSS transformations and it helped. After disabling acceleration it performed the same way as in UIWebView and didn't bug out any more. So it's not a real issue for me since I can continue using it without the hardware acceleration on iOS but just letting you know that WKWebView does not play well with hardware acceleration and lots of markers.

Hi, and thanks for taking the time to open a bug report in Leaflet.
However, in this repository we only handle bugs in "vanilla" Leaflet. This means that we do not handle bugs which are specific to frameworks such as:

React
Ractive
AngularJS
Leaflet for R
Joomla
Wordpress
Ionic
Cordova
Vue
Electron
Polymer
...etc

Please understand that we only have the time and energy to test Leaflet in plain web browsers.
Please try to either reproduce the bug without using any frameworks, or submit a bug to the appropiate repo.


Sign Bank: Handshapes for finger spelled signs and compounds

When we talk next, could we discuss what should be shown with respect to handshapes for signs that are part of compounds?
It seems to me that the start and end handshapes should show up for the compound part that is being displayed, not for the whole compound...
Also, fingerspelled signs show up without any handshapes at all...

Fixed

Handshapes are not showing up properly for these examples

For compounds, the start should be the start of the whole compound (not the start of the last part).


Terminalizer should not automatically share recordings, or make it way more clear that it does.

Before using this, I read the entire readme. The impression I had afterwards was that I could share the recordings if I wanted to, since sharing is a separate command. I was annoyed to find out after using it the first time that I was incorrect in my understanding, and recordings are uploaded automatically. After re-reading the docs, it's still not clear from the readme that recordings will be automatically uploaded.
It appears things that are uploaded are not public by default, which is great. When I tried to create an account to confirm this, the site would not take my credentials, no matter how many times I reset them with different passwords. My initial test was nothing sensitive, but it was still something I did not want to upload anywhere.
With my limited experience, I like this product, especially because I can use it on Windows, Mac, and Linux, but that aspect really rubbed me the wrong way. I'll probably fork this and make a version that has no sharing functionality before I continue to test it further.

@bradwhitfield This is not accurate. The tool doesn't upload anything automatically and doesn't force you to upload your recordings to just render gif images. The tool renders your recording into a gif image then it asks you to upload it. Simply just press CTRL+C to terminate the tool and skip uploading your recording.

I apologize for this. I misunderstood the code when I was following it last night. I'm a privacy nut, and the https://terminalizer.com/token?token=<GUID> links spit out by the terminal scared me a bit.
I would still for the sharing to be a more deliberate second command to enter rather than the record command automatically calling share in the it's done function.

I totally agree with @bradwhitfield, the link along with the prompt scared me as well and made me go ahead on the official site to check for my recording if it got uploaded as I hit enter at the prompt.
@faressoft Would vote for a prompt like: Would you like to upload your recording to https://terminalizer.com? yes/no [yes] (And you can keep the default answer to yes if you would like to promote the sharing service, though I would argue for a no default answer.).

@bradwhitfield @dciancu
I've just published a new version to enhance the user experience.

Showing a prompt message to ask the user to share or not
Option to skip showing the prompt and skip sharing (for people who use the tool in an automated way)

This is great! Thank you for adding this prompt and flag! This is much more clear to me now.


Deprecate Dialog service

See the documentation for details. Use the same approach as for Relationship Extraction.

Complete with #408.


Add ENV flag for disabling File Uploads/RAG

Is your feature request related to a problem? Please describe.
Currently Open-WebUI allows users to upload files to a chat. This requires using RAG and also downloads a model in the background, and no limits to size.
When running Open-WebUI with multiple users there's a chance someone uploads a massive file affecting users or the host running Open-WebUI. For our use case we do not use the RAG feature and the uploads just sit spinning since the model required is not available.
Describe the solution you'd like
Add an ENV variable that allows disabling any kind of file uploads within a Chat.
Describe alternatives you've considered
Running a cronjob and deleting any files found in /data/docs.
Additional context
Add any other context or screenshots about the feature request here.

You can config it on:
Admin Panel / Settings / Documents / Files / Max Upload Size & Max Upload Count


Active Learning - Ability to change inference server path.

Description
Some users utilize the active learning code via the Python package. The inference server address is hardcoded to 'http://localhost:9001/'. These charges allow the user to pass in a different server address, other than localhost.
Type of change
Please delete options that are not relevant.

[ x] Bug fix (non-breaking change which fixes an issue)

How has this change been tested, please provide a testcase or example of how you tested the change?
Tested by using active learning function to upload images to Roboflow project using a local server not at localhost.
Docs
No changes.

lgtm


multi-mint

Noticed the multimint is removed. when do you guys plan on re-adding?

I plan to try to re-add it within next weeks. Can't give more details right now .

multi mint is not added yet. when are you updating it


MaterialXEditor: Query -- How should multiple material assignments work?

If you load in a file with multiple materials, then on load it shows the materials assigned to the geometry
properly. After you choose a specific material only that material shows up. This makes sense as that's
the material in focus.
There however does not seem to be anyway to see all the materials again.
I assume it's a slippery slope to deal with material assignments here as they are in looks, and materialassigns both of
which are not even considered "nodes". So leaving this as more of a query on what is appropriate here ?
Perhaps only 1 material should ever show up for now to avoid adding more complexity ?
Try the example brass example using looks.

Good points, @kwokcb, and I think your suggestion is a good one.
Making the Graph Editor distinct from the Viewer, we could impose the simplification that only a single material is ever rendered on the model in the viewport, and the user can switch between them (as is currently the case) by clicking on the corresponding nodes in the graph window.

This sounds good.
This can be raised as a separate issue:
Could I suggest the "flips-side" to this, in that it's a bit strange that there is a material being drawn when there is no node-graph. I see as a simplifying possibility to have an actual default surface+material on startup. and / or not draw anything at all
which could be the easiest logic.
Currently if you have no materials in a graph, the last graph is left to render -- this feels confusing. Even clearing using
"New Material" does not clear the rendering.
Example of graph created then cleared but still rendering (my GPU is pegged at 40% without a graph)

@jstone-lucasfilm This should be fixed now with the material update merge.

Great, and thanks for those improvements!


style(ci): replace node-version key with shorter node

Pull Request Test Coverage Report for Build 849249313

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 90.786%

Totals

Change from base Build 832506056:
0.0%

Covered Lines:
249

Relevant Lines:
275

💛  - Coveralls

Pull Request Test Coverage Report for Build 849249313

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 90.786%

Totals

Change from base Build 832506056:
0.0%

Covered Lines:
249

Relevant Lines:
275

💛  - Coveralls

Pull Request Test Coverage Report for Build 849249313
Warning: This coverage report may be inaccurate.
This pull request's base commit is no longer the HEAD commit of its target branch. This means it includes changes from outside the original pull request, including, potentially, unrelated coverage changes.

For more information on this, see Tracking coverage changes with pull request builds.
To avoid this issue with future PRs, see these Recommended CI Configurations.
For a quick fix, rebase this PR at GitHub. Your next report should be accurate.

Details

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 90.786%

Totals

Change from base Build 832506056:
0.0%

Covered Lines:
249

Relevant Lines:
275

💛  - Coveralls


Failing landscape tests due to screen dimensions

Expected behaviour
When comparing 2 screenshots in landscape mode the test should pass.
Actual behaviour
When comparing 2 screenshots in landscape mode the test fails with the following response.
 The size of the screenshot taken has changed for test:  [name of the screenshot]
 Original screenshot dimension: 2392x1440.
 New recorded screenshot dimension: 1440x2392.

Steps to reproduce

I am using API 30 for my screenshots
I have a tests rule to set the landscape mode using the following code

requestedOrientation = if (BaseCustomViewTestRule.forceLandscape) {
            ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE
        } else {
            ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
        }

Version of the library
5.14.1

@AbdelrahmanTalat
This is completely unrelated to Shot.
The rotation do happens, but asynchronously. Therefore, at the moment you take the screenshot, the rotation has not always finished.
The ugly fix for this is to add a Thread.sleep() before taking the screenshot.
The cleanest way is to implement a testRule that waits for the recreated Activity in the correpsonding orientation to resume.
I provided such a function in this library, which works with Shot and other on-device screenshot testing libraries:
https://github.com/sergio-sastre/AndroidUiTestingUtils/blob/master/README.md


NCESoftmaxLoss bug

The implementation of the InfoNCE loss NCESoftmaxLoss seems to have a bug in it. You seems to be setting the labels to all zeros where there is no indicator for positive pairs but instead everything is a negative pair. Is this a desired feature or a bug?
https://github.com/amazon-research/video-contrastive-learning/blob/9a8d0473fd938dd77dfa6db2762abbc567da040e/models/Contrast.py#L14-L23

I think the code is fine, it is a desired feature. You can refer to this issue to find out why this is set to zero. Simply speaking, positive sample is always on position 0 in the logits.

Close the issue for now, feel free to reopen it if you have further questions.


cannot import name '_normalize_score_results' from 'sklearn.model_selection._validation'

any idea about this?

What sklearn version are you using?

thank you for your response. it works


JumpToHeader should use avoid modifying search history and status

In a Vi and Vim Stack Exchange post, @romainl posted a function to jump to headers (for mapping to [[, ]], etc.):
function! CustomJump(motion) range
    let cnt = v:count1
    let save = @/
    mark '
    while cnt > 0
        silent! execute a:motion
        let cnt = cnt - 1
    endwhile
    call histdel('/', -1)
    let @/ = save
endfunction

While I prefer the current s:JumpToHeader(), I feel it could be improved to avoid modifying search history:
function! s:JumpToHeader(forward, visual)
  let save = @/
  let pattern = '\v^#{1,6}.*$|^.+\n%(\-+|\=+)$'
  " snip
  execute 'silent normal! ' . direction . pattern . "\n"
  call histdel('/', -1)
  let @/ = save
endfunction

Another useful bit would the while loop, which lets @romainl's mapping respect a count.

@murukeshm nice! What about a pull request?


Potential DB Connection Leak

There appears to be a DB connection leak - it seems the connection might not be cleaned up when a server error happens. I can reproduce this specifically when tile serving.
For example, take the following diff and open the detail view of any raster. Then pan around and zoom in and out for a min or so until the connection errors happen. You'll notice that every tile request errors (that's intentional from this diff).
diff --git a/django-rgd-imagery/rgd_imagery/templates/rgd_imagery/rastermeta_detail.html b/django-rgd-imagery/rgd_imagery/templates/rgd_imagery/rastermeta_detail.html
index 97c8d29..1f5612a 100644
--- a/django-rgd-imagery/rgd_imagery/templates/rgd_imagery/rastermeta_detail.html
+++ b/django-rgd-imagery/rgd_imagery/templates/rgd_imagery/rastermeta_detail.html
@@ -92,13 +92,13 @@
     // Make sure regions outside the extent of the raster do not load null tiles
     //   this relieves strain on the tile server
     const dataset_bb = extents.extent;
-    tileLayer.isValid = (index) => {
-      const tileBounds = tileLayer.gcsTileBounds(index);
-      return tileBounds.left <= dataset_bb.xmax &&
-        tileBounds.right >= dataset_bb.xmin &&
-        tileBounds.top >= dataset_bb.ymin &&
-        tileBounds.bottom <= dataset_bb.ymax;
-    }
+    // tileLayer.isValid = (index) => {
+    //   const tileBounds = tileLayer.gcsTileBounds(index);
+    //   return tileBounds.left <= dataset_bb.xmax &&
+    //     tileBounds.right >= dataset_bb.xmin &&
+    //     tileBounds.top >= dataset_bb.ymin &&
+    //     tileBounds.bottom <= dataset_bb.ymax;
+    // }
     tileLayer.idleAfter = 'all';

     function updateBandThumbnail () {
@@ -115,8 +115,8 @@
           band = 0
         }
         tileLayer.visible(true);
-        tileLayer.url(`${host}/api/image_process/imagery/${image_id}/tiles/{z}/{x}/{y}.png?projection=EPSG:3857&band=${band}`)
-        thumbnail.src = `${host}/api/image_process/imagery/${image_id}/thumbnail?band=${band}`
+        tileLayer.url(`${host}/api/image_process/imagery/${image_id}/tiles/{z}/{x}/{y}.png?projection=EPSG:3857&band=${band}&palette=bane`)
+        thumbnail.src = `${host}/api/image_process/imagery/${image_id}/thumbnail?band=1`
         thumbnail.hidden = false
       } else {
         tileLayer.visible(false);

Perhaps this is only an issue in a Development configuration? I'm not sure how django handles cleaning up the connections in a dev server which is multithreaded (?) vs prod which is multi-processes (?).
@mcovalt, would you help look into this and see if it is indeed an problem we should address?
django.db.utils.OperationalError: FATAL:  sorry, too many clients already

Stack trace

resonantgeodata-django-1     |            ERROR    Internal Server Error:                            log.py:224
resonantgeodata-django-1     |                     /api/image_process/imagery/11/tiles/5/13/10.png
resonantgeodata-django-1     |                     Traceback (most recent call last):
resonantgeodata-django-1     |                       File "/usr/local/lib/python3.8/site-packages/dj
resonantgeodata-django-1     |                     ango/contrib/sessions/backends/base.py", line
resonantgeodata-django-1     |                     233, in _get_session
resonantgeodata-django-1     |                         return self._session_cache
resonantgeodata-django-1     |                     AttributeError: 'SessionStore' object has no
resonantgeodata-django-1     |                     attribute '_session_cache'
resonantgeodata-django-1     |
resonantgeodata-django-1     |                     During handling of the above exception, another
resonantgeodata-django-1     |                     exception occurred:
resonantgeodata-django-1     |
resonantgeodata-django-1     |                     Traceback (most recent call last):
resonantgeodata-django-1     |                       File "/usr/local/lib/python3.8/site-packages/dj
resonantgeodata-django-1     |                     ango/db/backends/base/base.py", line 219, in
resonantgeodata-django-1     |                     ensure_connection
resonantgeodata-django-1     |                         self.connect()
resonantgeodata-django-1     |                       File "/usr/local/lib/python3.8/site-packages/dj
resonantgeodata-django-1     |                     ango/utils/asyncio.py", line 33, in inner
resonantgeodata-django-1     |                         return func(*args, **kwargs)
resonantgeodata-django-1     |                       File "/usr/local/lib/python3.8/site-packages/dj
resonantgeodata-django-1     |                     ango/db/backends/base/base.py", line 200, in
resonantgeodata-django-1     |                     connect
resonantgeodata-django-1     |                         self.connection =
resonantgeodata-django-1     |                     self.get_new_connection(conn_params)
resonantgeodata-django-1     |                       File "/usr/local/lib/python3.8/site-packages/dj
resonantgeodata-django-1     |                     ango/utils/asyncio.py", line 33, in inner
resonantgeodata-django-1     |                         return func(*args, **kwargs)
resonantgeodata-django-1     |                       File "/usr/local/lib/python3.8/site-packages/dj
resonantgeodata-django-1     |                     ango/db/backends/postgresql/base.py", line 187,
resonantgeodata-django-1     |                     in get_new_connection
resonantgeodata-django-1     |                         connection = Database.connect(**conn_params)
resonantgeodata-django-1     |                       File "/usr/local/lib/python3.8/site-packages/ps
resonantgeodata-django-1     |                     ycopg2/__init__.py", line 122, in connect
resonantgeodata-django-1     |                         conn = _connect(dsn,
resonantgeodata-django-1     |                     connection_factory=connection_factory, **kwasync)
resonantgeodata-django-1     |                     psycopg2.OperationalError: FATAL:  sorry, too
resonantgeodata-django-1     |                     many clients already
resonantgeodata-django-1     |
resonantgeodata-django-1     |
resonantgeodata-django-1     |                     The above exception was the direct cause of the
resonantgeodata-django-1     |                     following exception:
resonantgeodata-django-1     |
resonantgeodata-django-1     |                     Traceback (most recent call last):
resonantgeodata-django-1     |                       File "/usr/local/lib/python3.8/site-packages/dj
resonantgeodata-django-1     |                     ango/core/handlers/exception.py", line 47, in
resonantgeodata-django-1     |                     inner
resonantgeodata-django-1     |                         response = get_response(request)
resonantgeodata-django-1     |                       File "/usr/local/lib/python3.8/site-packages/dj
resonantgeodata-django-1     |                     ango/core/handlers/base.py", line 181, in
resonantgeodata-django-1     |                     _get_response
resonantgeodata-django-1     |                         response = wrapped_callback(request,
resonantgeodata-django-1     |                     *callback_args, **callback_kwargs)
resonantgeodata-postgres-1   | 2021-11-21 04:08:10.509 UTC [327] FATAL:  sorry, too many clients already
resonantgeodata-django-1     |                       File "/usr/local/lib/python3.8/site-packages/dj
resonantgeodata-django-1     |                     ango/views/decorators/csrf.py", line 54, in
resonantgeodata-django-1     |                     wrapped_view
resonantgeodata-django-1     |                         return view_func(*args, **kwargs)
resonantgeodata-django-1     |                       File "/usr/local/lib/python3.8/site-packages/dj
resonantgeodata-django-1     |                     ango/views/generic/base.py", line 70, in view
resonantgeodata-django-1     |                         return self.dispatch(request, *args,
resonantgeodata-django-1     |                     **kwargs)
resonantgeodata-django-1     |                       File "/usr/local/lib/python3.8/site-packages/re
resonantgeodata-django-1     |                     st_framework/views.py", line 509, in dispatch
resonantgeodata-django-1     |                         response = self.handle_exception(exc)
resonantgeodata-django-1     |                       File "/usr/local/lib/python3.8/site-packages/re
resonantgeodata-django-1     |                     st_framework/views.py", line 469, in
resonantgeodata-django-1     |                     handle_exception
resonantgeodata-django-1     |                         self.raise_uncaught_exception(exc)
resonantgeodata-django-1     |                       File "/usr/local/lib/python3.8/site-packages/re
resonantgeodata-django-1     |                     st_framework/views.py", line 480, in
resonantgeodata-django-1     |                     raise_uncaught_exception
resonantgeodata-django-1     |                         raise exc
resonantgeodata-django-1     |                       File "/usr/local/lib/python3.8/site-packages/re
resonantgeodata-django-1     |                     st_framework/views.py", line 497, in dispatch
resonantgeodata-django-1     |                         self.initial(request, *args, **kwargs)
resonantgeodata-django-1     |                       File "/usr/local/lib/python3.8/site-packages/re
resonantgeodata-django-1     |                     st_framework/views.py", line 414, in initial
resonantgeodata-django-1     |                         self.perform_authentication(request)
resonantgeodata-django-1     |                       File "/usr/local/lib/python3.8/site-packages/re
resonantgeodata-django-1     |                     st_framework/views.py", line 324, in
resonantgeodata-django-1     |                     perform_authentication
resonantgeodata-django-1     |                         request.user
resonantgeodata-django-1     |                       File "/usr/local/lib/python3.8/site-packages/re
resonantgeodata-django-1     |                     st_framework/request.py", line 227, in user
resonantgeodata-django-1     |                         self._authenticate()
resonantgeodata-django-1     |                       File "/usr/local/lib/python3.8/site-packages/re
resonantgeodata-django-1     |                     st_framework/request.py", line 380, in
resonantgeodata-django-1     |                     _authenticate
resonantgeodata-django-1     |                         user_auth_tuple =
resonantgeodata-django-1     |                     authenticator.authenticate(self)
resonantgeodata-django-1     |                       File "/usr/local/lib/python3.8/site-packages/re
resonantgeodata-django-1     |                     st_framework/authentication.py", line 127, in
resonantgeodata-django-1     |                     authenticate
resonantgeodata-django-1     |                         if not user or not user.is_active:
resonantgeodata-django-1     |                       File "/usr/local/lib/python3.8/site-packages/dj
resonantgeodata-django-1     |                     ango/utils/functional.py", line 246, in inner
resonantgeodata-django-1     |                         self._setup()
resonantgeodata-django-1     |                       File "/usr/local/lib/python3.8/site-packages/dj
resonantgeodata-django-1     |                     ango/utils/functional.py", line 382, in _setup
resonantgeodata-django-1     |                         self._wrapped = self._setupfunc()
resonantgeodata-django-1     |                       File "/usr/local/lib/python3.8/site-packages/dj
resonantgeodata-django-1     |                     ango/contrib/auth/middleware.py", line 23, in
resonantgeodata-django-1     |                     <lambda>
resonantgeodata-django-1     |                         request.user = SimpleLazyObject(lambda:
resonantgeodata-django-1     |                     get_user(request))
resonantgeodata-django-1     |                       File "/usr/local/lib/python3.8/site-packages/dj
resonantgeodata-django-1     |                     ango/contrib/auth/middleware.py", line 11, in
resonantgeodata-django-1     |                     get_user
resonantgeodata-django-1     |                         request._cached_user = auth.get_user(request)
resonantgeodata-django-1     |                       File "/usr/local/lib/python3.8/site-packages/dj
resonantgeodata-django-1     |                     ango/contrib/auth/__init__.py", line 177, in
resonantgeodata-django-1     |                     get_user
resonantgeodata-django-1     |                         user_id = _get_user_session_key(request)
resonantgeodata-django-1     |                       File "/usr/local/lib/python3.8/site-packages/dj
resonantgeodata-django-1     |                     ango/contrib/auth/__init__.py", line 60, in
resonantgeodata-django-1     |                     _get_user_session_key
resonantgeodata-django-1     |                         return get_user_model()._meta.pk.to_python(re
resonantgeodata-django-1     |                     quest.session[SESSION_KEY])
resonantgeodata-django-1     |                       File "/usr/local/lib/python3.8/site-packages/dj
resonantgeodata-django-1     |                     ango/contrib/sessions/backends/base.py", line 65,
resonantgeodata-django-1     |                     in __getitem__
resonantgeodata-django-1     |                         return self._session[key]
resonantgeodata-django-1     |                       File "/usr/local/lib/python3.8/site-packages/dj
resonantgeodata-django-1     |                     ango/contrib/sessions/backends/base.py", line
resonantgeodata-django-1     |                     238, in _get_session
resonantgeodata-django-1     |                         self._session_cache = self.load()
resonantgeodata-django-1     |                       File "/usr/local/lib/python3.8/site-packages/dj
resonantgeodata-django-1     |                     ango/contrib/sessions/backends/db.py", line 43,
resonantgeodata-django-1     |                     in load
resonantgeodata-django-1     |                         s = self._get_session_from_db()
resonantgeodata-django-1     |                       File "/usr/local/lib/python3.8/site-packages/dj
resonantgeodata-django-1     |                     ango/contrib/sessions/backends/db.py", line 32,
resonantgeodata-django-1     |                     in _get_session_from_db
resonantgeodata-django-1     |                         return self.model.objects.get(
resonantgeodata-django-1     |                       File "/usr/local/lib/python3.8/site-packages/dj
resonantgeodata-django-1     |                     ango/db/models/manager.py", line 85, in
resonantgeodata-django-1     |                     manager_method
resonantgeodata-django-1     |                         return getattr(self.get_queryset(),
resonantgeodata-django-1     |                     name)(*args, **kwargs)
resonantgeodata-django-1     |                       File "/usr/local/lib/python3.8/site-packages/dj
resonantgeodata-django-1     |                     ango/db/models/query.py", line 431, in get
resonantgeodata-django-1     |                         num = len(clone)
resonantgeodata-django-1     |                       File "/usr/local/lib/python3.8/site-packages/dj
resonantgeodata-django-1     |                     ango/db/models/query.py", line 262, in __len__
resonantgeodata-django-1     |                         self._fetch_all()
resonantgeodata-django-1     |                       File "/usr/local/lib/python3.8/site-packages/dj
resonantgeodata-django-1     |                     ango/db/models/query.py", line 1324, in
resonantgeodata-django-1     |                     _fetch_all
resonantgeodata-django-1     |                         self._result_cache =
resonantgeodata-django-1     |                     list(self._iterable_class(self))
resonantgeodata-django-1     |                       File "/usr/local/lib/python3.8/site-packages/dj
resonantgeodata-django-1     |                     ango/db/models/query.py", line 51, in __iter__
resonantgeodata-django-1     |                         results = compiler.execute_sql(chunked_fetch=
resonantgeodata-django-1     |                     self.chunked_fetch, chunk_size=self.chunk_size)
resonantgeodata-django-1     |                       File "/usr/local/lib/python3.8/site-packages/dj
resonantgeodata-django-1     |                     ango/db/models/sql/compiler.py", line 1173, in
resonantgeodata-django-1     |                     execute_sql
resonantgeodata-django-1     |                         cursor = self.connection.cursor()
resonantgeodata-django-1     |                       File "/usr/local/lib/python3.8/site-packages/de
resonantgeodata-django-1     |                     bug_toolbar/panels/sql/tracking.py", line 54, in
resonantgeodata-django-1     |                     cursor
resonantgeodata-django-1     |                         connection._djdt_cursor(*args, **kwargs),
resonantgeodata-django-1     |                     connection, panel
resonantgeodata-django-1     |                       File "/usr/local/lib/python3.8/site-packages/dj
resonantgeodata-django-1     |                     ango/utils/asyncio.py", line 33, in inner
resonantgeodata-django-1     |                         return func(*args, **kwargs)
resonantgeodata-django-1     |                       File "/usr/local/lib/python3.8/site-packages/dj
resonantgeodata-django-1     |                     ango/db/backends/base/base.py", line 259, in
resonantgeodata-django-1     |                     cursor
resonantgeodata-django-1     |                         return self._cursor()
resonantgeodata-django-1     |                       File "/usr/local/lib/python3.8/site-packages/dj
resonantgeodata-django-1     |                     ango/db/backends/base/base.py", line 235, in
resonantgeodata-django-1     |                     _cursor
resonantgeodata-django-1     |                         self.ensure_connection()
resonantgeodata-django-1     |                       File "/usr/local/lib/python3.8/site-packages/dj
resonantgeodata-django-1     |                     ango/utils/asyncio.py", line 33, in inner
resonantgeodata-django-1     |                         return func(*args, **kwargs)
resonantgeodata-django-1     |                       File "/usr/local/lib/python3.8/site-packages/dj
resonantgeodata-django-1     |                     ango/db/backends/base/base.py", line 219, in
resonantgeodata-django-1     |                     ensure_connection
resonantgeodata-django-1     |                         self.connect()
resonantgeodata-django-1     |                       File "/usr/local/lib/python3.8/site-packages/dj
resonantgeodata-django-1     |                     ango/db/utils.py", line 90, in __exit__
resonantgeodata-django-1     |                         raise dj_exc_value.with_traceback(traceback)
resonantgeodata-django-1     |                     from exc_value
resonantgeodata-django-1     |                       File "/usr/local/lib/python3.8/site-packages/dj
resonantgeodata-django-1     |                     ango/db/backends/base/base.py", line 219, in
resonantgeodata-django-1     |                     ensure_connection
resonantgeodata-django-1     |                         self.connect()
resonantgeodata-django-1     |                       File "/usr/local/lib/python3.8/site-packages/dj
resonantgeodata-django-1     |                     ango/utils/asyncio.py", line 33, in inner
resonantgeodata-django-1     |                         return func(*args, **kwargs)
resonantgeodata-django-1     |                       File "/usr/local/lib/python3.8/site-packages/dj
resonantgeodata-django-1     |                     ango/db/backends/base/base.py", line 200, in
resonantgeodata-django-1     |                     connect
resonantgeodata-django-1     |                         self.connection =
resonantgeodata-django-1     |                     self.get_new_connection(conn_params)
resonantgeodata-django-1     |                       File "/usr/local/lib/python3.8/site-packages/dj
resonantgeodata-django-1     |                     ango/utils/asyncio.py", line 33, in inner
resonantgeodata-django-1     |                         return func(*args, **kwargs)
resonantgeodata-django-1     |                       File "/usr/local/lib/python3.8/site-packages/dj
resonantgeodata-django-1     |                     ango/db/backends/postgresql/base.py", line 187,
resonantgeodata-django-1     |                     in get_new_connection
resonantgeodata-django-1     |                         connection = Database.connect(**conn_params)
resonantgeodata-django-1     |                       File "/usr/local/lib/python3.8/site-packages/ps
resonantgeodata-django-1     |                     ycopg2/__init__.py", line 122, in connect
resonantgeodata-django-1     |                         conn = _connect(dsn,
resonantgeodata-django-1     |                     connection_factory=connection_factory, **kwasync)
resonantgeodata-django-1     |                     django.db.utils.OperationalError: FATAL:  sorry,
resonantgeodata-django-1     |                     too many clients already
resonantgeodata-django-1     |

FWIW you can simulate the prod environment by running the server using gunicorn instead of manage.py runserver.

By default, Django opens a new connection to PostgreSQL for each request/response cycle. PostgreSQL handles each new connection by forking a new process. Therefore, there's strict limits are usually set on how many concurrent connections are allowed.
The tile server is going to handle the most amount of concurrent requests in our app for sure. Here we see that we are hitting that limit. It looks like that limit is being reached with the session middleware. We could bypass the session issue entirely by letting memcached handle the sessions as opposed to PostgreSQL (which we should do regardless), but we're also hitting the database in the tile view to get image metadata.
A few options:

try to cache everything we can in the tile views
deploy with a connection pooler (e.g. pgagroal, pgBouncer, odyssey, Pgpool-II, etc.)
try to use an alternative to psycopg2 with better connection pooling capabilities builtin (e.g. the newly released psycopg3, asyncpg, etc.)

Option 2 is the most popular solution, but can get annoying. It increases deployment complexity and has nuances that increase application complexity (transactions can get weird when multiplexed). I think we need to do number 1 regardless. That will likely fix the issue. I think we'll also need a better connection pooler and for that I like the idea of number 3 since it doesn't add a new service into the mix.

Looks like we can't upgrade to psycopg3 quite yet. We'll need to deploy with a connection pooler. I'll look into it.

I'm going to vote against deploying a connection pooler. It seems that leaning on memcached was sufficient (see #609). We can move to a connection pooler if that low-level caching proves hard to maintain.


[FEAT]Support Random question via GPT 3.5 API

Is your feature request related to a problem? Please describe.
Use case 1: https://psychology.ucsd.edu/undergraduate-program/undergraduate-resources/academic-writing-resources/effective-studying/spaced-practice.html
Use case 2: I want to do practice when do spaced repetition rather then only review note again.
Describe the solution you'd like
ChatGPT 3.5 API allows you add prompt when generate its answer. So, we could add prompt like this to make any content into Multi-Choice Question:

I want you to act as a teacher, you need to generate three multiple-choice questions based on content, with at least one answer option provided, and provide explanations for the answers.

Additional context

GPT 3.5 API: https://platform.openai.com/docs/api-reference/chat/create

Example:


pod containers local network

Considering a controller running 2 replicas for a pod using a rabbitmq container and a webservice container. Let's say replica 1 has containers mq1 and web1, and replica 2 uses mq2 & web2.
How can I make sure that web1 will connect to mq1 and mq1 only ? using the service POD_SERVICE_HOST could redirect web1 to either mq1 or mq2.
Shouldn't there be an environment variable for containers within the same pod to see each other ?

The "variable" you want is "localhost".  Containers in a pod share a network namespace.

got it, had forgotten about it. Thanks!

localhost isn't working for some reason.

connection error: http://sprunge.us/faeB
pod: http://sprunge.us/ZbBN
connection reset: http://sprunge.us/SBeb
docker ps: pause exists: http://sprunge.us/UPfd
rabbitmq log: http://sprunge.us/eOVh

cloud provider: AWS
OS: CoreOS 557.0.0
Kubernetes v0.8.0

Docker inspect everything.
Run netstat inside the container?
How "localhost" could not work is beyond me.
On Wed, Jan 21, 2015 at 10:57 PM, Adrien Lemaire<EMAIL_ADDRESS>wrote:

cloud provider: AWS
OS: CoreOS 557.0.0
Kubernetes v0.8.0
--
Reply to this email directly or view it on GitHub
https://github.com/GoogleCloudPlatform/kubernetes/issues/3708#issuecomment-70979212
.

I get the connection failure even from within the rabbitmq container:
$ sudo docker exec 92165e4093d6 curl localhost:5672
curl: (56) Recv failure: ConnectiAMQP   on reset by peer

netstat inside the rabbitmq container:
sudo docker exec cd08790de407 netstat
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 localhost:41080         localhost:epmd          ESTABLISHED
tcp6       0      0 localhost:epmd          localhost:41080         ESTABLISHED
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags       Type       State         I-Node   Path

sudo docker exec cd08790de407 netstat -l
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 *:15672                 *:*                     LISTEN
tcp        0      0 *:25672                 *:*                     LISTEN
tcp6       0      0 [::]:amqp               [::]:*                  LISTEN
tcp6       0      0 [::]:epmd               [::]:*                  LISTEN
Active UNIX domain sockets (only servers)
Proto RefCnt Flags       Type       State         I-Node   Path

curl localhost:15672 works. This container isn't listening on 5672.

The rabbitmq log says:
=INFO REPORT==== 22-Jan-2015::07:38:48 ===
started TCP Listener on [::]:5672

=INFO REPORT==== 22-Jan-2015::07:38:48 ===
Management plugin started. Port: 15672

Note that the ampq protocol isn't http, so I wouldn't expect curl to work on the message queue port.
Port 25672 is apparently RABBITMQ_DIST_PORT.
Not sure why rabbitmq is not listening on 5672 when its logs say it should be. Maybe the weird hostname we set?

It seems like my problem was unrelated. My script was doing a basic_ack to the wrong rabbitmq server, hence future messages couldn't be processed.
I think we can close this ticket again

Glad you figured it out.


Compile errors on iOS 11

Hello,
I'm using :
react-native-pdf-view : 0.3.2
react-native : 0.48.3
and by compiling in Xcode I get 26 issues like :
duplicate interface definition for class 'RCTBridge'
can anyone help?
Thx!

Changing your package.json to pull from the most recent version should fix this problem
    "react-native-pdf-view": "git+https://github.com/cnjon/react-native-pdf-view.git",

found the solution linked here

Please @cnjon can we have a new release in order to avoid pointing to the Git repo?


Fix login title position

Added indents so that the sentence "Зареєструватися як студент" now splits into two lines like this:

please note that you need at least 3 approvals to merge your PR, so one reviewer is not enough. usually, we add all our teammates, so they can check your work.

please note that you need at least 3 approvals to merge your PR, so one reviewer is not enough. usually, we add all our teammates, so they can check your work. PS. I've already added myself as a reviewer.

added a few more, thanks for your comment!
however, I was guided by this document:

1 reviewer: in case if you have small bug fix, less than 50 rows of code
3 reviewers: functional of medium complexity
1 expert and 2 devs from team:- in case when we implement complex integrated functionality

should I always add 3+ reviewers then?


P/L on futures only positions and total P/L by category

In case you have an active position on a futures contract but not on any of its options, it seems no P/L is displayed as I think it would be expected. Also, a total P/L by category (strategy) would also be great for active trades, as we already have for closed trades.

Thanks for your report - I will look into this and report back. 👍

I just uploaded new code to display the Futures position portfolio and market values. Hopefully it displays correctly for you.

Thanks, Paul. Do you provide nightly builds or development builds so I can test?
Unfortunately I don't have enough space in my Windows VM to install Visual Studio and compile the code myself.

I don't have a nightly build but I have created a preview release where I can attached the latest compiled binary.
Here is the link:   https://github.com/PaulSquires/TradeTracker/releases/tag/4.0.0-testing-latest

Thanks for the screenshots and report. I will look at this again. I only tested it as BTO. I will run some tests as STO to find out where the problem is. I expect that the same problem (selling Short) probably impacts SHARE positions as well as your FUTURES scenario.

I don't have enough space in my Windows VM to install Visual Studio and compile the code myself.

I am curious what your host system is..... Linux or Mac?

I don't have enough space in my Windows VM to install Visual Studio and compile the code myself.

I am curious what your host system is..... Linux or Mac?

Oh, it's a little more complicated than that 😄
I have a home lab server running on ESXi.

Yeah, more complicated than I anticipated. 😄
I did more work on the live data display and tested MES futures with trades consisting of LONG and SHORT contracts. The changes are reflected in the EXE with the ZIP at this link:  https://github.com/PaulSquires/TradeTracker/releases/tag/4.0.0-testing-latest

Looking good mate.

I'd say it's already solved 👍

That's great news! I am continuing to work on the live data updates for shares/futures/option legs. I'll post a new EXE later today with the latest code updates.


Lineage Graph - Add links to table name text for easy navigation

When on the Lineage Page, it would be great if you could navigate to an up/downstream table directly from the graph instead of having to go back to the up/downstream pages.
Expected Behavior or Use Case
While exploring the lineage graph, you find a table that you are interested in learning about.  You click the table name and it navigates you to the table details page for that table.
Service or Ingestion ETL
frontend
Possible Implementation
I have code in a fork we are using to extend Amundsen. I can PR it to this repo.
There is already a getLink() function in frontend/amundsen_application/static/js/components/ResourceListItem/TableListItem which is used, among other places, in the lineage up/downstream pages.  This code generates the link from a LineageItem so simply using it in frontend/amundsen_application/static/js/components/Lineage/Graph/chart.js in an href element does the trick.
We also would need to move the onclick event that expands/contracts the graph to the circle +/- instead of the entire node.
Example Screenshots (if appropriate):
The screen looks the same except now the label is a link.
Context
As we, and our clients, have been using Amundsen, they get frustrated with having to navigate out of the Lineage graph to the up/downstream pages to see table details for  dependent tables.

Just chiming in that this would also be useful for our deployment 👋


fix(swc/core): Stop doing require unnecessary packages (@swc/core-darwin-universal).

Description:
Removed the part that requires a package that does not exist.
(Previously, this was enclosed in a try-catch and did not manifest itself as a clear error, but was problematic in the situation described in the issue below.)

BREAKING CHANGE:
If process.platform === 'darwin' && (process.arch !== 'x64' && process.arch !== 'arm64'),
then Error "Unsupported architecture on macOS: (process.arch)" will be thrown.
Previously, however, the Error "Failed to load native binding" would have been thrown because @swc/core-darwin-arm64 does not exist. In this point of view, Probably I can argue that this changes make error easy-to-understand.

Related issue (if exists):

ref #6901

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