sails.js fails if node_modules is not in same directory as the application

The node.js application supports loading node_modules from a different folder via the NODE_PATH environment variable.
That way, I can put node_modules for my application in  /usr/lib/node_modules (or wherever) and have my app in  /opt/myapp and then run it with NODE_PATH=/usr/lib/node_modules node whateverscript.
Why would anyone want to do this? Well... we run Macs, but have an Ubuntu VM with Sails inside, so we can have a reproducible development environment, isolation, mirror what we run in production, etc. etc.
We have a shared folder in the VM which shares our application folder between the Mac and the VM. Running Sails with a node_modules directory in this shared folder was very very slow; on a brand new MacBook Pro, it was taking about 1 minute and 40 seconds to evaluate require('sails').load({verbose: true}). We don't have a crazy Sails application; maybe ~100 routes and ~50 models. (Running strace on our test runner showed that there were ~33,000 calls to stat; node is doing a lot of something to run the tests.) Anyway as you might imagine, hopping in and out of the VM this many times is slow and we were able to speed up require('sails').load from 100 seconds to 7 seconds by moving the node_modules directory inside the VM and loading it via the NODE_PATH variable mentioned above.
However, sails hard codes the node_modules path all over the place. Here's an example in upgrade-datastore.js:
      // Before trying to actually require the adapter, make sure we know the real module path:
      var node_modules = path.resolve(sails.config.appPath, 'node_modules');
      var modulePath = path.join(node_modules, moduleName);

      // Then make sure the module exists
      if (!fs.existsSync(modulePath)) {

        // If adapter doesn't exist, log an error and exit
        return Err.fatal.__UnknownAdapter__(connectionObject.adapter, modelID, sails.majorVersion, sails.minorVersion);
      }

This means that, despite node being able to run sails, load deps, etc from my external node_modules file, sails lays an egg when it can't find anything in the local node_modules.
We can get around this by symlinking node_modules back into the application folder, but it's pretty annoying. Would appreciate if the node_modules path was configurable, or at least respected the NODE_PATH environment variable.
I'm still sort of getting up to speed with node.js, but maybe require.resolve will do what you want? http://stackoverflow.com/a/15303236/329700

Interesting.  The issue is that in the places where you see node_modules hard-coded in Sails core, it's because it needs to require a file from the project's set of modules, not from the core's set of modules.       So what's really required here is to be able to specify a different working directory for require, so that uses NODE_PATH as intended when it doesn't find a local node_modules folder.  This might be possible by setting process.env.NODE_PATH before calls to require, and resetting it after, since require is synchronous, but it still feels dangerous.  This requires some more thought (no pun intended... :P )

I had a similar problem, same root cause really, while trying to figure out a way to bring in Consolidate with ReactJS support without the need for the path modifications. If the local copy of Sails was a copy instead of a symlink, removing all the set paths worked for consolidate. I tested this with just the Consolidate by removing consolidate.js from lib/hooks/views/, modifying the configure to require('consolidate') without the path, then installed Consolidate and any template engine on the end project. By pushing Consolidate to the user project, it should allow Sails to use a specific version of EJS internally while a user can use a different version if they wish. I haven't dug into much code to know where ejs is used to know if that could be pushed upward as well, especially with it in the package.json by default.
Not sure if the copy vs symlink has been discussed before. My thoughts:

Any user who git/hg/svn clone's a repo is going to pull from npm anyway instead of symlinks, thus only the original creator benefits from the symlinks.
Makes it easier for different projects on a user's file system to use different versions of Sails
Removes the need for many of the coded paths
May lead to a future concept similar to Grunt with a CLI tool that uses the local copy
While it does remove ability to update /usr/lib/node_modules/sails and have all projects reference it, I feel each project still has to edit the local package.json file to make sure the versions are correct while also performing any necessary updates to their code.
Can just pull in Consolidate (maybe others?) from npm instead of needing edits while trying to merge changes in constantly.
Does consume more disk space, but we are only talking MBs per project and disks are too cheap.

Hi @sgress454, I just ran into this issue as well.
I'm working around the issue with a symlink but it still feels like a bit of a code-smell to me.
Can you help me understand why

it needs to require a file from the project's set of modules, not from the core's set of modules

I'm sure I'm missing something obvious here but shouldn't those be treated as the same thing?
Thanks!

@nrempel Thanks for the detailed response.  I totally agree.  This is the kind of thing that other folks have solved using peer dependencies.  The problem with that is that they're not really a proper part of NPM, and it violates NPM's philosophy.  Of course, what we're doing isn't much better-- it's just historically been more well-behaved... that is, of course, until NPM 3 came around.
A better solution would probably be to change the way we do dynamic loading throughout Sails.  Instead of running require from core, we could expect you to require the appropriate package from your config.  This is a little harder to work with for folks new to Sails, because it makes the error/troubleshooting messages harder to read, but I think at this point it's probably the best solution.  If anyone reading this has time to open a proposal as a starting point for gathering ideas on how folks would like to see this in Sails v1, I'd appreciate it.
Dynamically-required things to potentially address:

Waterline adapters
Connect session adapters
consolidate view engines
NPM-installed generators
NPM-installed hooks
Skipper adapters
various grunt-contrib plugins for the default asset pipeline
Socket.io adapters (this is really just Redis though, and in production, sails-hook-sockets  takes advantage of Redis directly to perform some stuff not supported by Socket.io, so this needs to stay the way it is for now.  Fortunately, I've never heard of this particular one causing anyone trouble)


Beautify images and bumb version

Replacement for https://github.com/bwesterb/pqspy/pull/6

Thanks for this.

Released in 0.1.2.


remove the need to specify the number OD entries

The number of entries in the OD was specified in CO_OD.h. This is fine as long
as the CO_OD.h and CO_OD.c files are generated automatically, but is very error
prone in cases where these files are maintained manually.
Here we remove the need to specify that count up front, while still staying
compatible with existing code.

I'm now just preparing to start with New Object Dictionary approach, as described in #106
So I try to make as little as possible changes to this part now. I don't like to pull your request at this moment, sorry.

No problem. Thanks for letting me know.


Tests

Would you like the codebase to be tested? If so, I'm happy to PR.

Yes, that would be great! I originally made the code base more modular in anticipation of testing. There is one concern I have which is that the input and output types of the various functions are unclear. Story Graph is inherently dynamic and flexible because it is rendering stories, but that does not mean that we can't keep the various internal APIs reasonably consistent.
It would be great if you would raise an issue if you find any functions where the inputs and outputs are so flexible that it is difficult to predict what they will be. Basically if you find anything confusing in the codebase let me know! We can see if improvements can be made and then testing will be easier.

Do you have a preference for testing framework? I would use mocha and istanbul for coverage if you don't have a preference.

No preference, Mocha and Istanbul would be fine.

Will do!
In cases where the returned values are randomized, we can still test that at least the proper type is returned and that it contains one of the possible outputs.


FF-76: add section about creating a factory

Add a brief section about the benefits of creating your own factory.
Signed-off-by: Tyler Baker<EMAIL_ADDRESS>

Docs for 405c5e35798d1d5eff292bfb23ced17510e5425f are browesable at: https://ci.foundries.io/projects/fio-docs/builds/307/docs/artifacts/html/index.html

Docs for 6632ee8a8647bb5447e19ad9c7e1c74352954481 are browesable at: https://ci.foundries.io/projects/fio-docs/builds/308/docs/artifacts/html/index.html

Docs for 95ff2497ad5d6f9a7c8ca251c95f3868153e121d are browesable at: https://ci.foundries.io/projects/fio-docs/builds/309/docs/artifacts/html/index.html

ci-retest

Docs for 333523351afac3f99afed75ed02ad3d4a611d429 are browesable at: https://ci.foundries.io/projects/fio-docs/builds/313/docs/artifacts/html/index.html


Bulma style is not applied to month select input and year number input

ScreenShot is taken when using FireFox.

@aaazzz Fixed!


Add clipboard hooks - first approach

Hey, I've added useClipboard hook. No tests yet as I wanted to see if that's good direction with the code. I had some problems with Permission API, as it's still working draft, and types from TS are not exactly valid, but I've managed to figure it out. Let me know what do you think.

Hey @kripod any chance you had some time to look into it?

Hey @kripod any chance you had some time to look into it?

I apologize for the radio silence, I've been working on a thesis for university, and most of the code I push or accept towards OSS are focused around that. I'll try my best to review and merge this over the weekend. Thank you for the patience!

Ok no worries, I thought you finished that :) don't worry about it now then. And good luck with your thesis :)

Thank, I appreciate you understand.


About Create

Sorry, I don't speak English.
我在装了这个Mod后，视线被放在饰品栏的Engineer's Goggles遮挡

Don't use the trinket slots, they are not supported(might work on Fabric, but not on forge).

the goggles interfering with view also happens with regular slots, so it's a bit annoying.
may I kindly ask for you to add a head rendering toggle on configuration, so we can disable the entire head being rendered, and thus remove this interference?
much thanks.

a screenshot just to show it.

also waiting for a workaround/fix for this. maybe an option to just disable rendering of everything in trinket slots would be a bandaid?

Trinkets dont render the normal way, thats why it doesn't work in the first place. Currently no short-term plans to fix Trinket stuff since there are just too many trinket mods all over the place and between versions(currently just don't have the time/interest in looking into it).

okay no problem, ill tinker around with setting the goggles model to nothing with a resource pack or maybe some kind of mod like cosmetic armor to hide it

It will probably require hooking each possible trinket mod for forge, fabric, all their iterations, and forks to get this right. Since they don't seem to use the mod loaders API, don't attach the thing to the actual body part and ignore it when the body part is invisible. It's just a massive pain.

@youfeng11 @sombrae so the bandaid fix i found for create goggles specifically is to make a resourcepack (or just add to one), create these directories: "RESOURCE PACK\assets\create\models\block", and in this folder create goggles.json which contains:
{
	"credit": "Made with Blockbench",
	"parent": "block/block",
	"textures": {
		"0": "create:block/brass_casing",
		"1": "block/black_stained_glass",
		"2": "create:item/goggles_model",
		"particle": "create:block/brass_casing"
	},
	"elements": []
}

Downside is you won't see your goggles on your skin even in third-person, but atleast you can wear them without getting in the way.

@909oce man youre a lifesaver. i love you.

also @909oce sorry to necro, but can i ask the logic of that bandaid, or how did you do it? because I found another trinket that interferes with this first person mod (vinery's straw hat), and would like to be able to make my own bandaids too.


routingBasePath not working on "redocly preview-docs"

I added a redocly preview-docs in .redocly.yaml, but not working and don't change base path. Start preview server  with  / path.
my script for run  is:
"start:docs": "redocly preview-docs --host=<IP_ADDRESS>"

my   .redocly.yaml is:
# See https://redocly.com/docs/cli/configuration/ for more information.
apis:
  sample@v1:
    root: api-docs/openapi/openapi.yaml
extends:
  - recommended
rules:
  no-unused-components: error
features.openapi:
  routingBasePath: "/vdoc"
  htmlTemplate: ./api-docs/docs/index.html
  theme:
    colors:
      primary:
        main: "#32329f"
  generateCodeSamples:
    languages: # Array of language config objects; indicates in which languages to generate code samples.
      - lang: curl
      - lang: Node.js
      - lang: JavaScript
      - lang: PHP
      - lang: Python

Redocly Version(s)
"@redocly/cli": "^1.0.0-beta.111"
Node.js Version(s)
16

Have you logged in (redocly login)? If not, you have to in order to be able to use this feature. Please check the docs:

The premium version of Redocly API docs can use all of the listed options. The Redoc Community Edition (free and open source version) can only use the options marked as supported.

Thank you for the help.
Unfortunately, I had not seen this description

I think we answered the question here, so I'll close. Please let us know if you need anything else!


20210926 - Add Jinja2 and create initial HTML templates

a55541a Add jinja2 to requirements
67012a0 Update ignore patterns
53db033 Build HTML Templates
ff77274 Add jinja2 for HTML rendering

Codecov Report

Merging #4 (a55541a) into main (9c4b549) will increase coverage by 0.00%.
The diff coverage is 100.00%.

@@           Coverage Diff           @@
##             main       #4   +/-   ##
=======================================
  Coverage   99.81%   99.82%
=======================================
  Files          26       26
  Lines         554      579   +25
  Branches       43       44    +1
=======================================
+ Hits          553      578   +25
  Partials        1        1

Flag
Coverage Δ

unittests
99.82% <100.00%> (+<0.01%)
:arrow_up:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

eqcharinfo/api.py
100.00% <100.00%> (ø)

eqcharinfo/controllers/characterclient.py
100.00% <100.00%> (ø)

eqcharinfo/route_handler.py
100.00% <100.00%> (ø)

tests/api_test.py
100.00% <100.00%> (ø)

tests/route_handler_test.py
100.00% <100.00%> (ø)

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 9c4b549...a55541a. Read the comment docs.


grid engine provider hangs when qstat output is large

Describe the bug
From Quentin Le Boulc'h;
I still have the issue with the qstat command from Parsl which is hitting the 60s timeout. When I have 1000 jobs running every qstat fails, I can see many processes accumulating and Parsl get completely stucked.
I checked I can reproduce the issue by myself running the subprocess command you are using. With several hundreds of jobs running the proc.wait() is waiting forever. However a manual qstat returns the output in less than a second. And after killing the proc.wait()  I can check that the stdout is actually here so the command has succeeded.
I can also reproduce the issue with a different command than `qstat`, like a simple script returning several hundreds of lines.
Could you check if there is some issue with your subprocess command?
See https://docs.python.org/3/library/subprocess.html#popen-objects for instance: “This will deadlock when using stdout=PIPE or stderr=PIPE and the child process generates enough output to a pipe such that it blocks waiting for the OS pipe buffer to accept more data. Use Popen.communicate() when using pipes to avoid that.”

Expected behavior
This should not hang
Environment
in2p3, parsl desc branch

I have a fix for this, I think, in the desc branch which will eventually turn into a PR for master.


Add TrieTermsDictionaryReader methods floor and ceiling

Fixes: https://github.com/riptano/VECTOR-SEARCH/issues/39
Changes:

Replace TrieRangeIterator with TrieTermsDictionaryReader#ceiling
Replace ReversedTrieRangeIterator with TrieTermsDictionaryReader#floor`

The primary motivation is simplicity. The new methods allocate fewer objects in most cases, as they traverse the tree without creating a stack of nodes.
I attempted to add all test cases that make sense. Please verify that the tests match your expectations for results.

@blambov - I wrote this PR based on your comment here https://github.com/datastax/cassandra/pull/787#discussion_r1354822809. Please let me know if this is what you were intending.

Looks like a test is failing because of a bug in vsearch. Based on https://github.com/datastax/cassandra/pull/787, this return should send back -1:
https://github.com/datastax/cassandra/blob/9cabec504d9f70ddfb345122dc4defed56a40f85/src/java/org/apache/cassandra/index/sai/disk/v2/sortedterms/ReversedTrieRangeIterator.java#L50
This PR replaces that return with the correct behavior the value is missing, so I'll need to investigate what is wrong. It appears that the firstPrimaryKey is greater than the lastPrimaryKey in VectorTypeTest.rangeSearchTest.

Looks like a test is failing because of a bug in vsearch. Based on #787, this return should send back -1:
https://github.com/datastax/cassandra/blob/9cabec504d9f70ddfb345122dc4defed56a40f85/src/java/org/apache/cassandra/index/sai/disk/v2/sortedterms/ReversedTrieRangeIterator.java#L50
This PR replaces that return with the correct behavior the value is missing, so I'll need to investigate what is wrong. It appears that the firstPrimaryKey is greater than the lastPrimaryKey in VectorTypeTest.rangeSearchTest.

Looks like it's a subtle bug we found by making the change in #787 (though that change was incomplete so we didn't find it there). I put my proposed fix in its own PR since it seems distinct.
https://github.com/datastax/cassandra/pull/802

With 802 closed, does that mean the problem is with the test?

With 802 closed, does that mean the problem is with the test?

I think the problem is in the V2VectorIndexSearcher#bitsOrPostingListForKeyRange implementation. It's not clear to me if the edge case is just needing to handle the minimum token as the right bound or if the right bound can be less than the left bound in other cases.

https://github.com/datastax/cassandra/pull/819 is the successor to #802. Once we get #819 merged, I will be ready to move forward with this PR.

@mike-tr-adamson this is ready for review

@blambov @mike-tr-adamson - this is ready for review again. Thank you for your help so far.

@blambov - I need the TrieRangeIterator for #804. I also managed to find a bug in its while testing today. In order to simplify the migration, I decided to remove the file's deletion from this PR. Let me know if that works.

Not a problem for me. If possible, try to switch to the implementation of the range iterator in the core in that other ticket, changing it if necessary.


Xarray updates

Pull Request Description
What issue does this change request address?
Closes #2226
What are the significant changes in functionality due to this change request?
Removes some deprecated features, and makes the error check more flexible in TestDataSet.

For Change Control Board: Change Request Review
The following review must be completed by an authorized member of the Change Control Board.

[ ] 1. Review all computer code.
[ ] 2. If any changes occur to the input syntax, there must be an accompanying change to the user manual and xsd schema. If the input syntax change deprecates existing input files, a conversion script needs to be added (see Conversion Scripts).
[ ] 3. Make sure the Python code and commenting standards are respected (camelBack, etc.) - See on the wiki for details.
[ ] 4. Automated Tests should pass, including run_tests, pylint, manual building and xsd tests. If there are changes to Simulation.py or JobHandler.py the qsub tests must pass.
[ ] 5. If significant functionality is added, there must  be tests added to check this. Tests should cover all possible options.  Multiple short tests are preferred over one large test. If new development on the internal JobHandler parallel system is performed, a cluster test must be added setting, in  XML block, the node <internalParallel> to True.
[ ] 6. If the change modifies or adds a requirement or a requirement based test case, the Change Control Board's Chair or designee also needs to approve the change.  The requirements and the requirements test shall be in sync.
[ ] 7. The merge request must reference an issue.  If the issue is closed, the issue close checklist shall be done.
[ ] 8. If an analytic test is changed/added is the the analytic documentation updated/added?
[ ] 9. If any test used as a basis for documentation examples (currently found in raven/tests/framework/user_guide and raven/docs/workshop) have been changed, the associated documentation must be reviewed and assured the text matches the example.

Job Test qsubs sawtooth on d9e1e17 : invalidated by @joshua-cogliati-inl
Failed with: DirectoryNotACondaEnvironmentError: The target directory exists, but it is not a conda environment.

Job Test qsubs sawtooth on d9e1e17 : invalidated by @joshua-cogliati-inl
Failed with: DirectoryNotACondaEnvironmentError: The target directory exists, but it is not a conda environment.

Job Test qsubs sawtooth on d9e1e17 : invalidated by @joshua-cogliati-inl
skipped (Incorrectly versioned python modules: required matplotlib-3.5, but found 3.8.2

Job Test qsubs sawtooth on d9e1e17 : invalidated by @joshua-cogliati-inl
Failed with: DirectoryNotACondaEnvironmentError: The target directory exists, but it is not a conda environment.

Job Test qsubs sawtooth on d9e1e17 : invalidated by @joshua-cogliati-inl
removed matplotlib from .local

Job Test qsubs sawtooth on d9e1e17 : invalidated by @joshua-cogliati-inl
Failed with: DirectoryNotACondaEnvironmentError: The target directory exists, but it is not a conda environment.

Job Test qsubs sawtooth on d9e1e17 : canceled by @joshua-cogliati-inl
FAILED: Diff tests/cluster_tests/test_mpiqsub_long

Job Test qsubs sawtooth on d9e1e17 : invalidated by @joshua-cogliati-inl
FAILED: Diff tests/cluster_tests/test_mpiqsub_long

Job Test qsubs sawtooth on d9e1e17 : invalidated by @joshua-cogliati-inl
Failed with: DirectoryNotACondaEnvironmentError: The target directory exists, but it is not a conda environment.

Tests are green and checklist is good.


Discussion: implement the platform-specific clients as a wrapper around surf?

It would need to be a wrapper - request and response configuration do not vary, and we want to link variables, queries and response shapes.
We would get:

an independently maintained http client stack
cross-platform support (web and native for now) out of the box

Cons:

As far as I am aware of, surf is async-first. We might still want to provide a sync client for convenience

@tomhoule Is the platform-specific client you are referring to now referring to the graphql_client_web?

So I think we could replace the web client we have now with something more robust and maintained by other people, and at the same time this would give us a native HTTP client. That way we only need to interface with a single library (surf).

and at the same time this would give us a native HTTP client.

At present, users can send requests using their favorite client library, but does that mean that we will provide a feature build that includes clients?

Yes it should definitely be a feature (on by default or opt-in, I'm not sure). Users should definitely have access to the current API too in my opinion.

I think that it is a good configuration that there is room for the current user to select the client library by himself.
If you do not add a new function with the client, I think that the built-in client can be opt-in.


Feature request: disable parsing node_modules

Thanks for making a great plugin! I've noticed that it seems to also analyze code in node_modules. Is this intended behaviour? If yes, it would be awesome if there were an option to disable this 🙂

Hey @mawkler, thanks for the feedback and issue! I'm considering adding support for this potentially via a configuration option. In the interim, you can update your tsconfig to ignore node_modules when tsc runs.
{
  "compilerOptions": {... },
  "exclude": ["node_modules"]
}

You should be able to do this now
require('tsc').setup({ flags: "--noEmit --excludeDirectories node_modules" })

This issue is resolved thanks to your PR #8. Anyone that stumbles onto this issue you can now configured tsc.nvim as follows to ignore node_modules.
require("tsc").setup({ flags = "--noEmit --ignoreDirectories node_modules" })

Hi, @dmmulroy the last solution doesn't seem to work. I get an error that there is not such a flag --ignoreDirectories.
Any other ways to make it ignore the node_modules folder?
I have the "exclude" in my config, but it stills keeps analysing the node_modules.
I guess I might be better off asking the official typescript compiler repo :P

@bezlant ah yeah you're right, --ignoreDirectories is in fact not a tsc option.
You'll want the following in your tsconfig:
{
  "compilerOptions": {
    "skipLibCheck": true
  },
}

Let me know if that doesn't work - happy to keep helping :)

I appreciate the quick reply and help. The project has the skipLibCheck set to true, but it is still checking the node_modules. I have checked the config with tsc --showConfig and it indeed has the skipLibCheck flag. It is a huge monorepo, so there might be some caveats that have to be investigated. I have tried setting the project implicitly too, but it still fails to exclude the node_modules. For some reason I only get errors from the packages, that are built by us, and all the external packages seem to be not typechecked as intended (or they really don't have any errors). The tsc command take up to 30-45 seconds, so it could be checking the whole node_modules folder.

If you run the tsc manually from the cli and point it at your tsconfig.json, do you experience the same issue?

Yeah, it follows the same pattern.

Yeah unfortunately if the typescript compiler is acting the same way on its own it's something with your project configuration and not the plug in then 😅 happy to try and help still if you can make a small repo where your issue is reproducible

just for reference the following worked for me, without modifying the tsConfig
require('tsc').setup({
  flags = {
    noEmit = true,
    skipLibCheck = true,
  }
})


Use new reCaptcha api

Google recently released an update to their reCaptcha service.
The old api remains working, but it would be nice to use the new api instead.
I already did some work on this (#164).
See: https://developers.google.com/recaptcha/docs/

Is there any solution to enable new recaptcha feature "I'm not a robot" in flask-wtf? Is it related to new api version?

Yes this is how recaptcha looks when used with the new api.
You can checkout the pull request I mentioned in my starting post which is using the new api.
Report back if everything still works for you.

released in https://pypi.python.org/pypi/Flask-WTF/0.11


Better Solver

Current Solver
The current solver always looks at a full chain of connected unrevealed fields and tries all possible combinations of mines. The complexity is the total number of unrevealed fields that have to be looked at in parallel. While this worked surprisingly well, it can lead to high complexity fairly quickly.
New Solver

For each revealed field:

Create a list of all sets of mines that are valid

I.e. if there is one more mine left, a list where each set contains exactly one of the remaining fields
Only one valid list -> reveal/flag all

As an optimization, already fully separate fields that do not have any overlap before going to the next step
For k := 2 to min(number of revealed fields with at least one unrevealed field next to it, max_complexity)

Find all combinations of k fields

Filter out combinations that do not have any overlapping fields
For k > 2 this overlap can go through multiple fields

i.e. [A, B] [B, C] [C, D] counts as overlap even though [A, B] and [C, D] do not overlap
but [A, B] [B, C] [D, E] does not, since [D, E] does not share any common fields with the rest
likewise [A, B] [B, C] [D, E] [E, F] does not either, since it results in two separate sets [A, B, C] and [D, E, F]

For all fields of the combination, construct the cartesian product between all their lists

Filter out those with mismatched mine-placements

E.g. if B is a mine in [A, B] but isn't a mine in [B, C], discard it.

If a field contains a mine in all possible configurations, flag it
If a field contains no mine in all possible configurations, reveal it
Ignore other fields

Similar approach with some major improvements:

While let Some(entry) = pop

Find one that overlaps
swap remove it
cartesian product between their k-combinations
pre-calculate the number of elements in this set using some basic math

if it's too big; mark the required complexity and continue

Filter out the ones where the overlap is not the same
There has to be at least one match
If it's just one, apply it; don't break though, continue on with the next step!
find another one that overlaps and check all of its k-combinations that match
multiple the number of k-combinations on top of the previous product

if it's too big; ...

If there's only one, apply it; don't break though, continue on
If there's multiple ones, find another one and check all of its k-combinations

etc...

If there's no more overlap but still more than one item, break

nothing we can do with this set of fields yet

More random thoughts:
1 1 1 0 0 = 2
0 1 1 1 0 = 2
0 0 1 1 1 = 2

Take the first row.
If the row is "= 0" (should never happen) all 1 can be marked as 0.
If the row is "= popcount" all 1 can be marked as 1.
If there is no other row with overlap, any column that is all 0 or 1 is solved and the row can be discarded.
If there is a row that is a subset of this row:

Remove all 1s in the subset from the superset and subtract count.

Find the row with the largest overlap (bitand + popcount).
Split it into three parts, only left, only right, overlap
Find list of possible k numbers
Generate all possible k combinations


Fix for custom curseforge modpacks that do not have mods dir

This is sort of a combo fix.
For one, it appears some modpacks have been generated without a 'mods' dir, so running the manifest download will fail without a 'mkdir'. This appears to just be a thing that happens with the newest modpacks.
There's also an issue with the jq expression where slurping and stdin syntax differ (the dollar sign shouldn't be used).

I started testing more servers by deleting the whole dir except for settings and ops, and saw that mod dir was broken and the jq path was spotty. Hopefully that's the only things I'll find. But if I see anything else, I'll be sure to open another PR. Apologies I didn't see this sooner.

This is now pushed to Hub.


Support for partial hydration

What problem does this feature solve?
"Partial hydration" means to hydrate specific components of a server-side-rendered page instead of the whole page. This increases the performance of pages, like ours, that have lots of static content as Vue does not have to hydrate all the content that does not change anyway during or after hydration.
Yet there is still no support for partial hydration but to build it completely manual while having major pain to do so due stuff that triggers hydration mismatches (e.g. marker comments like <!--[-->). Hydration in Vue 2 seems to be much more flexible, or robust. It just worked.
What does the proposed API look like?
I think about two approaches:
One is to mount a "shallow" app that spans above all components that will be hydrated. Every hydratable component must be marked. All other DOM nodes beside those in the hydrated components are left as they are and not touched in any way.
The other approach is to be able to mount apps on components directly just like it worked in Vue 2.

This is what petite vue seems to solve. If not, please open an RFC in the rfcs repo


Update default paths in README

Update both the README and the default client configuration to point to the continuous integration server.

Reviving this PR.   I've updated the IP addresses to be static so they don't change with every server restart.  PTAL


handlers.go imports net/http/httptest

When importing vestigo, it will implicitly import the "net/http/httptest" module.
This has the side-effect of adding "httptest.serve" command line argument, which is also printed to the usage description text (e.g. when using "--help").
Perhaps the functionality of httptest.ResponseRecorder can be implemented locally, to avoid this dependency on a testing module?

@antoooon: created a PR with the suggested change.  Thanks for catching this.  https://github.com/husobee/vestigo/pull/58  If you would, please code review this and I will get it merged in.

Tested it, seems to work fine.


ActionList.Item danger variant changes color on hover

Description
It looks like there are conflicting styles on ActionList.Items when using the danger variant. There are two that have the same specificity that change the color of the text on hover, and it seems like the behavior you get depends on which style sheet happens to load first.

Steps to reproduce
Create an ActionList with an ActionList.Item variant="danger"
Hover over the item
Check in the inspector that there are two styles that can possibly change the color if you don't see the color change to default.

Version
v36.9.0
Browser
Chrome

I'm not able to reproduce this in Storybook, can you link to the code for this specific menu? I see it in production but that item is disabled. Is it meant to be disabled in your screenshot?

The code is here, it's not doing anything special with the styles. It's not disabled in the screenshot, you can enable the button by sending a message to start a thread.

@langermank we moved this to in progress since you assigned it to yourself. Let us know if you have any concern with it 🙌


Does vllm support do_sample?

Hi,
For hugginface, it support various sample strategy: https://huggingface.co/docs/transformers/main/main_classes/text_generation
greedy decoding by calling greedy_search() if num_beams=1 and do_sample=False
contrastive search by calling contrastive_search() if penalty_alpha>0. and top_k>1
multinomial sampling by calling sample() if num_beams=1 and do_sample=True
beam-search decoding by calling beam_search() if num_beams>1 and do_sample=False
beam-search multinomial sampling by calling beam_sample() if num_beams>1 and do_sample=True
Since vllm already support beam search with best_of parameter, I wonder how do we support the do_sample together with best_of for the beam sample strategy?
Thx

Same

I need this support🥹🥹🥹🥹🥹🥹

Any update on this feature? @WoosukKwon

I am also interested on this feature.

Refer to vllm->model_executor->layers->sampler.py->_sample:
While the sampling type == SamplingType.RANDOM, the implementation is the same as sample() in huggingface transformers.
So you just need to set the sampling type to "SamplingType.RANDOM", and refer to vllm->sampling_params.py->sampling_type:
Set use_beam_search = false and temperature > 1e-5 while you initializing SamplingParams.

Hello, what is the difference between SamplingType.RANDOM and SamplingType.RANDOM_SEED? As far as I followed the code it seems the same. I was not able to find where the 'seed' argument in SamplingParams is used to set any seed.
Any comments on this?
Thank you in advance!

😳👁👁


Component create fails on OpenShift 4.0

[kind/bug]

What versions of software are you using?

Got an openshift-dev AWS accounts to run OpenShift 4.0 installer
odo project create testcomponent
odo app create myapp
odo create nodejs nodejs --git https://github.com/openshift/nodejs-ex

$ odo create nodejs nodejs --git https://github.com/openshift/nodejs-ex
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x8 pc=0x1daa8ed]

goroutine 1 [running]:
github.com/redhat-developer/odo/pkg/odo/cli/component.(*CreateOptions).setCmpName(0xc0001a7860, 0xc00033e600, 0x2, 0x4, 0x6, 0x104390c)
        /Users/amit/go/src/github.com/redhat-developer/odo/pkg/odo/cli/component/create.go:161 +0xed
github.com/redhat-developer/odo/pkg/odo/cli/component.(*CreateOptions).Complete(0xc0001a7860, 0xc000a922d0, 0x6, 0xc0006f1b00, 0xc00033e600, 0x2, 0x4, 0x2, 0x25595f7)
        /Users/amit/go/src/github.com/redhat-developer/odo/pkg/odo/cli/component/create.go:313 +0xd7c
github.com/redhat-developer/odo/pkg/odo/genericclioptions.GenericRun(0x281ca40, 0xc0001a7860, 0xc0006f1b00, 0xc00033e600, 0x2, 0x4)
        /Users/amit/go/src/github.com/redhat-developer/odo/pkg/odo/genericclioptions/runnable.go:15 +0x6e
github.com/redhat-developer/odo/pkg/odo/cli/component.NewCmdCreate.func1(0xc0006f1b00, 0xc00033e600, 0x2, 0x4)
        /Users/amit/go/src/github.com/redhat-developer/odo/pkg/odo/cli/component/create.go:436 +0x5e
github.com/redhat-developer/odo/vendor/github.com/spf13/cobra.(*Command).execute(0xc0006f1b00, 0xc00033e5c0, 0x4, 0x4, 0xc0006f1b00, 0xc00033e5c0)
        /Users/amit/go/src/github.com/redhat-developer/odo/vendor/github.com/spf13/cobra/command.go:702 +0x289
github.com/redhat-developer/odo/vendor/github.com/spf13/cobra.(*Command).ExecuteC(0xc000683200, 0x0, 0x0, 0x5)
        /Users/amit/go/src/github.com/redhat-developer/odo/vendor/github.com/spf13/cobra/command.go:783 +0x29f
github.com/redhat-developer/odo/vendor/github.com/spf13/cobra.(*Command).Execute(...)
        /Users/amit/go/src/github.com/redhat-developer/odo/vendor/github.com/spf13/cobra/command.go:736
main.main()
        /Users/amit/go/src/github.com/redhat-developer/odo/cmd/odo/odo.go:73 +0x489

Actual behavior
Fails as mentioned above
Expected behavior
Should create the component
Any logs, error output, etc?

@kadel Could you please set the priority

@amitkrout can you please run the command in verbose mode?

@kadel
$ odo create nodejs nodejs --git https://github.com/openshift/nodejs-ex -v 9
I0308 18:13:14.169407   92888 loader.go:359] Config loaded from file /Users/amit/installerOpenshiftAmit1/auth/kubeconfig
I0308 18:13:14.170556   92888 occlient.go:430] Trying to connect to server api.amit1.devcluster.openshift.com:6443
I0308 18:13:14.445938   92888 occlient.go:437] Server https://api.amit1.devcluster.openshift.com:6443 is up
I0308 18:13:14.446090   92888 round_trippers.go:386] curl -k -v -XGET  -H "Accept: application/json, */*" -H "User-Agent: odo/v0.0.0 (darwin/amd64) kubernetes/$Format" -H "Authorization: Bearer oVzq-z1BI-WzTvmFfGzBYEoy3QDX8Mc0K-sB6F9PdB4" 'https://api.amit1.devcluster.openshift.com:6443/apis/user.openshift.io/v1/users/~'
I0308 18:13:15.461560   92888 round_trippers.go:405] GET https://api.amit1.devcluster.openshift.com:6443/apis/user.openshift.io/v1/users/~ 200 OK in 1015 milliseconds
I0308 18:13:15.461589   92888 round_trippers.go:411] Response Headers:
I0308 18:13:15.461596   92888 round_trippers.go:414]     Audit-Id: 3e7a59df-520e-4c83-af0e-70aec2a250e8
I0308 18:13:15.461602   92888 round_trippers.go:414]     Cache-Control: no-store
I0308 18:13:15.461610   92888 round_trippers.go:414]     Cache-Control: no-store
I0308 18:13:15.461616   92888 round_trippers.go:414]     Content-Type: application/json
I0308 18:13:15.461623   92888 round_trippers.go:414]     Date: Fri, 08 Mar 2019 12:43:15 GMT
I0308 18:13:15.461628   92888 round_trippers.go:414]     Content-Length: 355
I0308 18:13:15.461666   92888 request.go:897] Response Body: {"kind":"User","apiVersion":"user.openshift.io/v1","metadata":{"name":"developer","selfLink":"/apis/user.openshift.io/v1/users/developer","uid":"c0741573-4193-11e9-9095-0a580a820029","resourceVersion":"130042","creationTimestamp":"2019-03-08T11:17:25Z"},"identities":["htpassidp:developer"],"groups":["system:authenticated","system:authenticated:oauth"]}
I0308 18:13:15.462405   92888 occlient.go:360] isLoggedIn err:  <nil>
 output: "developer"
I0308 18:13:15.462491   92888 round_trippers.go:386] curl -k -v -XGET  -H "User-Agent: odo/v0.0.0 (darwin/amd64) kubernetes/$Format" -H "Authorization: Bearer oVzq-z1BI-WzTvmFfGzBYEoy3QDX8Mc0K-sB6F9PdB4" -H "Accept: application/json, */*" 'https://api.amit1.devcluster.openshift.com:6443/apis/project.openshift.io/v1/projects'
I0308 18:13:15.735854   92888 round_trippers.go:405] GET https://api.amit1.devcluster.openshift.com:6443/apis/project.openshift.io/v1/projects 200 OK in 273 milliseconds
I0308 18:13:15.735878   92888 round_trippers.go:411] Response Headers:
I0308 18:13:15.735884   92888 round_trippers.go:414]     Date: Fri, 08 Mar 2019 12:43:15 GMT
I0308 18:13:15.735890   92888 round_trippers.go:414]     Content-Length: 685
I0308 18:13:15.735895   92888 round_trippers.go:414]     Audit-Id: f1724ea6-fb6e-40e1-a64b-54b5a38fb098
I0308 18:13:15.735901   92888 round_trippers.go:414]     Cache-Control: no-store
I0308 18:13:15.735906   92888 round_trippers.go:414]     Cache-Control: no-store
I0308 18:13:15.735912   92888 round_trippers.go:414]     Content-Type: application/json
I0308 18:13:15.735940   92888 request.go:897] Response Body: {"kind":"ProjectList","apiVersion":"project.openshift.io/v1","metadata":{"selfLink":"/apis/project.openshift.io/v1/projects"},"items":[{"metadata":{"name":"testcomponent","selfLink":"/apis/project.openshift.io/v1/projects/testcomponent","uid":"9b130b41-419f-11e9-836f-023253a632de","resourceVersion":"184184","creationTimestamp":"2019-03-08T12:42:16Z","annotations":{"openshift.io/description":"","openshift.io/display-name":"","openshift.io/requester":"developer","openshift.io/sa.scc.mcs":"s0:c22,c4","openshift.io/sa.scc.supplemental-groups":"1000470000/10000","openshift.io/sa.scc.uid-range":"1000470000/10000"}},"spec":{"finalizers":["kubernetes"]},"status":{"phase":"Active"}}]}
I0308 18:13:15.736854   92888 context.go:231] Ignoring error as it usually means flag wasn't set: flag accessed but not defined: component
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x8 pc=0x1daa8ed]

goroutine 1 [running]:
github.com/redhat-developer/odo/pkg/odo/cli/component.(*CreateOptions).setCmpName(0xc0001eb860, 0xc000b09920, 0x2, 0x6, 0x3, 0x104390c)
        /Users/amit/go/src/github.com/redhat-developer/odo/pkg/odo/cli/component/create.go:161 +0xed
github.com/redhat-developer/odo/pkg/odo/cli/component.(*CreateOptions).Complete(0xc0001eb860, 0xc0009ded20, 0x6, 0xc000540d80, 0xc000b09920, 0x2, 0x6, 0x2, 0x25595f7)
        /Users/amit/go/src/github.com/redhat-developer/odo/pkg/odo/cli/component/create.go:313 +0xd7c
github.com/redhat-developer/odo/pkg/odo/genericclioptions.GenericRun(0x281ca40, 0xc0001eb860, 0xc000540d80, 0xc000b09920, 0x2, 0x6)
        /Users/amit/go/src/github.com/redhat-developer/odo/pkg/odo/genericclioptions/runnable.go:15 +0x6e
github.com/redhat-developer/odo/pkg/odo/cli/component.NewCmdCreate.func1(0xc000540d80, 0xc000b09920, 0x2, 0x6)
        /Users/amit/go/src/github.com/redhat-developer/odo/pkg/odo/cli/component/create.go:436 +0x5e
github.com/redhat-developer/odo/vendor/github.com/spf13/cobra.(*Command).execute(0xc000540d80, 0xc000b098c0, 0x6, 0x6, 0xc000540d80, 0xc000b098c0)
        /Users/amit/go/src/github.com/redhat-developer/odo/vendor/github.com/spf13/cobra/command.go:702 +0x289
github.com/redhat-developer/odo/vendor/github.com/spf13/cobra.(*Command).ExecuteC(0xc00070e000, 0x0, 0x0, 0x7)
        /Users/amit/go/src/github.com/redhat-developer/odo/vendor/github.com/spf13/cobra/command.go:783 +0x29f
github.com/redhat-developer/odo/vendor/github.com/spf13/cobra.(*Command).Execute(...)
        /Users/amit/go/src/github.com/redhat-developer/odo/vendor/github.com/spf13/cobra/command.go:736
main.main()
        /Users/amit/go/src/github.com/redhat-developer/odo/cmd/odo/odo.go:73 +0x489

This is something that came up while we were investigating requirements for e2e tests on prow, using Opensift 4.0 cluster on AWS

Works fine with oc 4.0 (oc v4.0.0-0.139.0)

Works fine with oc 4.0 (oc v4.0.0-0.139.0)

Hmm ok that might solve that problem then :)

Works fine with oc 4.0 (oc v4.0.0-0.139.0)

I'm confused here.
oc versions shouldn't have any effect on odo behaviour

I've tried to reproduce this, but no luck.
 ▶ odo create nodejs nodejs --git https://github.com/openshift/nodejs-ex
 ✓  Checking component
 ✓  Checking component version
 ✓  Initializing 'nodejs' component
 ✓  Creating component nodejs
 ✓  Triggering build from git
 ✓  Component 'nodejs' was created and port 8080/TCP was opened
 ✓  Component 'nodejs' is now set as active component
This may take a few moments to be ready

▶ odo push
Pushing changes to component: nodejs
 ✓  Triggering build from git
 ✓  Waiting for build to finish

▶ odo url create
 ✓  URL created for component: nodejs

nodejs-8080 - nodejs-8080-spring-boot-qwel-default.apps.tkral.devcluster.openshift.com

▶ curl --head nodejs-8080-spring-boot-qwel-default.apps.tkral.devcluster.openshift.com
HTTP/1.1 200 OK
X-Powered-By: Express
Content-Type: text/html; charset=utf-8
Content-Length: 40430
ETag: W/"9dee-3nm2OJV/pDUlKWUTQSk1Z/pOG6E"
Date: Mon, 11 Mar 2019 09:25:14 GMT
Set-Cookie: ad2df6d0c82aaa4c306445b1ccdcc47d=5f23994a909806687f48b0f1e8d2a8bd; path=/; HttpOnly
Cache-control: private

▶ odo version
odo v0.0.20 (964874a3)

Server: https://api.tkral.devcluster.openshift.com:6443
Kubernetes: v1.12.4+0f8e04e

▶ oc version
Client Version: version.Info{Major:"4", Minor:"0+", GitVersion:"v4.0.0-0.185.0", GitCommit:"e883da29bc", GitTreeState:"", BuildDate:"2019-02-25T13:48:37Z", GoVersion:"", Compiler:"", Platform:""}
Server Version: version.Info{Major:"1", Minor:"11+", GitVersion:"v1.11.0+d4cacc0", GitCommit:"d4cacc0", GitTreeState:"clean", BuildDate:"2018-11-09T15:12:26Z", GoVersion:"go1.10.3", Compiler:"gc", Platform:"linux/amd64"}

I was trying a invalid scenario of Creating component using oc 3.11 on OpenShift cluster 4.0. So it was failing. When i try the same component creation with oc 4.0 on same OpenShift cluster 4.0, it works.
So closing the issue


Add selector for action based on tie

Possibly allow for || actions

Possibly allow for || actions

likely will make into a selector and reference capability based on percentage tie

See bottom left


GML format always returns 3d geometries

When i parse a WFS response with a GML2 format, the features geometries have always three dimensions, even if the WFS response had only 2.
Stackblitz Demo
Same happens for WFS 2.0.0 with GML 3.2. I would expect to get geometries with XY layout not XYZ with fake Z dimension.

what is your WFS server?put its parameters on;

In my example the response was from the MapServer. But I can produce the same behaviour with the GeoServer. It doesn't seem to have a relation with the WFS server or the WFS version. After parsing a response with the ol format WFS I always get geometries with a faked Z dimension with value 0.

I don't know the reasoning, but the GML2 parser always produces a z value for a coordinate see: https://github.com/openlayers/openlayers/blob/16e6f3716e5b78bf31db4affd7681944df1ae2e2/src/ol/format/GML2.js#L90-L99

I don't know the reasoning, but the GML2 parser always produces a z value for a coordinate see:
https://github.com/openlayers/openlayers/blob/16e6f3716e5b78bf31db4affd7681944df1ae2e2/src/ol/format/GML2.js#L90-L99

I think the format of (x,y) is diffrent of  (x,y,0);the first is 2d,another is 3d;z=0 does not mean 2d;so fix it just add push(x,y) case;

@jacklinna I think that makes sense. Would you be able to create a pull request?


EntitySkinIdComponent Class ID error

On the EntitySkinIdComponent Class, in the ID property it says this Id should always be "minecraft:variant"
This is wrong because its the skinid component

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

ID: 13f00ddc-54f7-bba6-0a36-9895fa1bd3cb
Version Independent ID: 13f00ddc-54f7-bba6-0a36-9895fa1bd3cb
Content: mojang-minecraft.EntitySkinIdComponent Class
Content Source: creator/ScriptAPI/mojang-minecraft/EntitySkinIdComponent.md
Product: gaming
GitHub Login: @JakeShirley
Microsoft Alias: jashir

This issue is fixed, u can close this issue

Hello, @smell-of-curry is this issue still current? It was fixed as far as i know? Do you have more information please? If not please close this issue, Thank you


_ Prechecks _

+1 :green_heart:
dupname
0m  0s
No case conflicting files found.

+1 :green_heart:
hbaseanti
0m  1s
Patch does not have any anti-patterns.

+1 :green_heart:
@author
0m  0s
The patch does not contain any @author tags.

_ master Compile Tests _

+1 :green_heart:
mvninstall
3m 55s
master passed

+1 :green_heart:
compile
0m 54s
master passed

+1 :green_heart:
checkstyle
0m 29s
master passed

+1 :green_heart:
spotless
1m 21s
branch has no errors when running spotless:check.

+1 :green_heart:
spotbugs
0m 49s
master passed

_ Patch Compile Tests _

+1 :green_heart:
mvninstall
3m 38s
the patch passed

+1 :green_heart:
compile
0m 49s
the patch passed

+1 :green_heart:
javac
0m 49s
hbase-http generated 0 new + 1 unchanged - 21 fixed = 1 total (was 22)

-0 :warning:
checkstyle
0m 27s
hbase-http: The patch generated 1 new + 2 unchanged - 0 fixed = 3 total (was 2)

+1 :green_heart:
whitespace
0m  0s
The patch has no whitespace issues.

+1 :green_heart:
hadoopcheck
18m  3s
Patch does not cause any errors with Hadoop 3.1.2 3.2.2 3.3.1.

+1 :green_heart:
spotless
1m 21s
patch has no errors when running spotless:check.

-1 :x:
spotbugs
1m  2s
hbase-http generated 2 new + 0 unchanged - 0 fixed = 2 total (was 0)

_ Other Tests _

+1 :green_heart:
asflicense
0m 26s
The patch does not generate ASF License warnings.

43m  0s

Reason
Tests

FindBugs
module:hbase-http

Impossible cast from org.apache.hadoop.hbase.http.lib.StaticUserWebFilter to org.apache.hadoop.hbase.http.lib.StaticUserWebFilter$User in org.apache.hadoop.hbase.http.lib.StaticUserWebFilter$User.equals(Object)  At StaticUserWebFilter.java:org.apache.hadoop.hbase.http.lib.StaticUserWebFilter$User in org.apache.hadoop.hbase.http.lib.StaticUserWebFilter$User.equals(Object)  At StaticUserWebFilter.java:[line 79]

org.apache.hadoop.hbase.http.lib.StaticUserWebFilter$User.equals(Object) checks for operand being a StaticUserWebFilter  At StaticUserWebFilter.java:a StaticUserWebFilter  At StaticUserWebFilter.java:[line 76]

Subsystem
Report/Notes

Docker
ClientAPI=1.41 ServerAPI=1.41 base: https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-4653/1/artifact/yetus-general-check/output/Dockerfile

GITHUB PR
https://github.com/apache/hbase/pull/4653

Optional Tests
dupname asflicense javac spotbugs hadoopcheck hbaseanti spotless checkstyle compile

uname
Linux b7ae7dfda418 5.4.0-1071-aws #76~18.04.1-Ubuntu SMP Mon Mar 28 17:49:57 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

Build tool
maven

Personality
dev-support/hbase-personality.sh

git revision
master / 80b366817e

Default Java
AdoptOpenJDK-1.8.0_282-b08

checkstyle
https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-4653/1/artifact/yetus-general-check/output/diff-checkstyle-hbase-http.txt

spotbugs
https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-4653/1/artifact/yetus-general-check/output/new-spotbugs-hbase-http.html

Max. process+thread count
64 (vs. ulimit of 30000)

modules
C: hbase-http U: hbase-http

Console output
https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-4653/1/console

versions
git=2.17.1 maven=3.6.3 spotbugs=4.2.2

Powered by
Apache Yetus 0.12.0 https://yetus.apache.org

This message was automatically generated.

Rebase.

_ Prechecks _

+1 :green_heart:
dupname
0m  0s
No case conflicting files found.

+1 :green_heart:
hbaseanti
0m  0s
Patch does not have any anti-patterns.

+1 :green_heart:
@author
0m  0s
The patch does not contain any @author tags.

_ master Compile Tests _

+1 :green_heart:
mvninstall
3m 41s
master passed

+1 :green_heart:
compile
0m 25s
master passed

+1 :green_heart:
checkstyle
0m  9s
master passed

+1 :green_heart:
spotless
0m 50s
branch has no errors when running spotless:check.

+1 :green_heart:
spotbugs
0m 27s
master passed

_ Patch Compile Tests _

+1 :green_heart:
mvninstall
2m 56s
the patch passed

+1 :green_heart:
compile
0m 22s
the patch passed

+1 :green_heart:
javac
0m 22s
hbase-http generated 0 new + 1 unchanged - 21 fixed = 1 total (was 22)

-0 :warning:
checkstyle
0m  7s
hbase-http: The patch generated 1 new + 2 unchanged - 0 fixed = 3 total (was 2)

+1 :green_heart:
whitespace
0m  0s
The patch has no whitespace issues.

+1 :green_heart:
hadoopcheck
13m 32s
Patch does not cause any errors with Hadoop 3.1.2 3.2.2 3.3.1.

+1 :green_heart:
spotless
0m 49s
patch has no errors when running spotless:check.

+1 :green_heart:
spotbugs
0m 27s
the patch passed

_ Other Tests _

+1 :green_heart:
asflicense
0m  8s
The patch does not generate ASF License warnings.

30m 53s

Subsystem
Report/Notes

Docker
ClientAPI=1.41 ServerAPI=1.41 base: https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-4653/3/artifact/yetus-general-check/output/Dockerfile

GITHUB PR
https://github.com/apache/hbase/pull/4653

Optional Tests
dupname asflicense javac spotbugs hadoopcheck hbaseanti spotless checkstyle compile

uname
Linux d1b2e5d3036d 5.4.0-1081-aws #88~18.04.1-Ubuntu SMP Thu Jun 23 16:29:17 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

Build tool
maven

Personality
dev-support/hbase-personality.sh

git revision
master / 486d19e99f

Default Java
AdoptOpenJDK-1.8.0_282-b08

checkstyle
https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-4653/3/artifact/yetus-general-check/output/diff-checkstyle-hbase-http.txt

Max. process+thread count
64 (vs. ulimit of 30000)

modules
C: hbase-http U: hbase-http

Console output
https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-4653/3/console

versions
git=2.17.1 maven=3.6.3 spotbugs=4.2.2

Powered by
Apache Yetus 0.12.0 https://yetus.apache.org

This message was automatically generated.


API capabilities

Currently the API is so simple essentially based on a middleware pluggable interface. I'd prefer keeping vinci API simple as possible with a useful but limited set of methods.
However, I think there should be provided additional method to perform recurrent actions, such as defining the server to forward or the URLs to replay traffic.
Also, vinci API could implicitely provide its own router in order to provide a simple and prebuilt way to declare routes in your server without explicitly importing new packages. Of course, you should be able to use you own router/muxer, but vinci should provide its own as optional.
I'm talking about adding the following methods:
Get(path)
Post(path)
Put(path)
Delete(path)
Patch(path)
Route(method, path)
Forward(url)
From the other side, this is purely convenience and not useful for everything, since encapsulation hides features thst might be useful for an API consumer, for instance, using the route-level middlaware chain,
There are tradeoff on this, and the decision should balance between API simplicity, versatility and convenience.

Trying to extend this a little bit, here is a code showcase:
With this proposal we will have:
proxy := vinci.NewServer(opts)

route := proxy.Get("/foo/:bar")
route.Use(someRouteMiddleware)
route.Use(anotherRouteMiddleware)

route := proxy.Post("/foo/:bar")
route.Use(someRouteMiddleware)
route.Use(anotherRouteMiddleware)

proxy.Listen()

Alternatively, we can have the same layer but importing the router third-party package which is
proxy := vinci.NewServer(opts)

route := proxy.Get("/foo/:bar")
route.Use(someRouteMiddleware)
route.Use(anotherRouteMiddleware)

route := proxy.Post("/foo/:bar")
route.Use(someRouteMiddleware)
route.Use(anotherRouteMiddleware)

proxy.Listen()

In essence, should we provide a default embedded router as part of vinci's core and it's API, or instead force the developer to import its custom router. Even with the first approach the developer is able to use its preferred router/mux layer. They only won't use the built-in router in vinci's core.

Update: refresh the page, the code above has been edited.

@vinci-proxy/core I would appreciate some opinions here.

The first version seems more convenient to me. If I use a library, I want it to be as convenient as possible.I think most people wouldn't want/need to define/import a custom router.

+1 for providing the router in the same library, honestly I can't see any use case of the library that doesn't need a router

This was already supported. Closing due to deprecation.


RBF support for Spend transactions

The biggest part is probably going to be the GUI's. Should we have a "bump fee" interface or a whole "replace by another Spend" interface?

I've made it part of the Minisafe v0 project and assigned the feature freeze milestone. But let's consider it a nice to have. If it slips to Minisafe v1 it's no big deal.

We won't have time to do this for v0.

I think this should take the form of:

A "bump fees" button
A "cancel" button

Also see the discussion in the duplicate #236.

Can't assign it to them using Github's feature for some reason but @jp1ac4 is going to take care of this. :rocket:

Hi @darosior, as well as the "bump fees" and "cancel" buttons, would we also want an "enable RBF" toggle when creating a transaction? I see in https://github.com/wizardsardine/liana/blob/master/src/commands/mod.rs#L371 that RBF is currently always enabled.

Let's not have the option for now, i don't see any reasonable scenario where a user would disable it.

OK yep that makes sense thanks.
Regarding bumping fees, do you think this should be done via the bitcoin-cli bumpfee command or should the replacement transaction be constructed manually as a new spend transaction?

Yep, I think calling createspend with a higher feerate should work to begin with and then we can add checks to handle any special cases, e.g. if additional inputs are needed for the increased fee.
I tested this out a bit by broadcasting two transactions that differed only in the feerate. The higher feerate replaced the lower feerate as expected and the replaced PSBT was labelled as deprecated. (Conversely, when I broadcast the lower feerate after the higher feerate, which wouldn't be possible with the "bump fee" button, I got an error that the replacement was rejected due to insufficient fees.)

We also need to make sure the transaction has more fees (as in absolute fees, not feerate). See https://github.com/bitcoin/bitcoin/blob/master/doc/policy/mempool-replacements.md#current-replace-by-fee-policy for the replacement policy we need to make sure we respect.
-------- Original Message --------
On Jun 10, 2023, 12:35 PM, jp1ac4 wrote:

Yep, I think calling createspend with a higher feerate should work to begin with and then we can add checks to handle any special cases, e.g. if additional inputs are needed for the increased fee.
I tested this out a bit by broadcasting two transactions that differed only in the feerate. The higher feerate replaced the lower feerate as expected and the replaced PSBT was labelled as deprecated. (Conversely, when I broadcast the lower feerate after the higher feerate, which wouldn't be possible with the "bump fee" button, I got an error that the replacement was rejected due to insufficient fees.)
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you were mentioned.Message ID: @.***>

I was just testing a simple CLI command to bump fees and I noticed that possibly the derivation_index_by_address method isn't correctly flagging change addresses. If I use .to_string() as follows then it gives the value that I'm expecting:
self.db_address(address).map(|db_addr| {
            (
                db_addr.derivation_index,
                address.to_string() == db_addr.change_address.to_string(),
            )
        })

But I may be overlooking something?

I think the problem was that the networks were different and these are also used in the comparison. I was testing on signet and had created an address using self.config.bitcoin_config.network as the network, which gave "signet", but the change address had network "testnet". I see this case is handled already in validate_address so I may have to do something similar although it's early days still.

Oh right the network serialization is the same for signet so PartialEq would fail between a signet and testnet address but no the serialization comparison.
By the way i think trying to work around bumpfee is a dead-end, it's pretty limited. For instance, iirc you can't change all outputs of a transaction to a single change output (to "Cancel").
------- Original Message -------
On Monday, June 12th, 2023 at 4:20 PM, jp1ac4 @.***> wrote:

I think the problem was that the networks were different and these are also used in the comparison. I was testing on signet and had created an address using self.config.bitcoin_config.network as the network, which gave "signet", but the change address had network "testnet". I see this case is handled already in validate_address so I may have to do something similar although it's early days still.
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you were mentioned.Message ID: @.***>

By the way i think trying to work around bumpfee is a dead-end, it's pretty limited. For instance, iirc you can't change all outputs of a transaction to a single change output (to "Cancel").

OK sure, I'll have a think about how best to approach it. My idea to begin with is to handle some simple cases via a CLI command and then see how to extend it to handle more complex cases. So far I'm using the transaction ID to recreate the original createspend arguments but with a higher fee rate.

Hi @darosior, I've pushed some changes to this branch here: https://github.com/wizardsardine/liana/compare/master...jp1ac4:liana:add-rbf-support.
It still needs a lot of work, but you can get an idea of the approach I've taken so far. The bumpfee command attempts to recreate the transaction with a higher fee rate. My idea is then to add checks to make sure the replacement transaction meets the required criteria in the link you shared, and also make any changes required to the transaction, such as using additional inputs to cover the higher fee and adding a cancel option.
Please let me know if you think a different approach would be better.

It just occured to me that this work is tightly related to coin selection (https://github.com/wizardsardine/liana/issues/51)..
The algorithm i had in mind was we'd basically call createspend with an increasing feerate until all the criterions for replacements (link from above) would be met. But since createspend still needs all the outpoints to be provided this implies the caller has to do a coin selection.
To be honest i'm afraid this work is dependent on solving #51 first.

How about instead of adding all those parameters to the createspend command, we had a rbfspend command in the same fashion as updatespend or broadcastspend? We should probably name it rbfpsbt though, to make it clear it can be used for recovery txs as well.
This new command would take a txid and a feerate. It would fetch the PSBT from db, failing if it's not there or not yet broadcast. Determine whether it's got a change output from it and if so reused the same change address. Finally it would run the coin selection algorithm with all current inputs marked as mandatory (that's important when there is more than 1 RBF). Failing if it doesn't have sufficient funds. Then it would return the created PSBT without storing in DB in the same fashion as createspend.
Regarding the ancestor feerate of the transaction, i think it's important but also non trivial. We need to take into account for instance ancestor which were dropped from the mempool, or the size of the chain of unconfirmed transactions. We are already doing a bunch in this release so i would opt for implementing a more naive RBF which assumes all inputs are confirmed for now, and work on making it accurate for unconfirmed inputs in a second time (which may well be soon!).

A new command for RBF makes sense. Do you think we'll need one command for bumping fees along the lines you describe and another for cancelling a transaction? The latter might need to remove all non-change outputs, for example, while the former would keep non-change outputs the same and possibly include additional inputs.
I think the new commands would need to reuse a lot of code from create_spend (such as creating the base transaction, fetching candidates from the DB and setting up the final PSBT), so we might want to extract some of that to a common utils function.
Using the terminlogy from https://github.com/bitcoin/bitcoin/blob/master/doc/policy/mempool-replacements.md#current-replace-by-fee-policy, my assumption for now is that the only directly conflicting transaction will be the txid we pass to the RBF command.
I think the getmempoolentry command calculates the descendant count (including descendants of descendants) and their total fees already, and from some quick tests it seemed to work this way. But for now I could assume that the transaction we are replacing has no descendants and in the worst case we would get an error when trying to broadcast it if the fees are not enough.
I haven't been considering any ancestors and their fees so far as I'm assuming any unconfirmed coins in the replacement spend would already be in the transaction we are replacing and any additional coins we include would be confirmed. From my understanding of the RBF policy, we only need to consider the fees of descendants when replacing a transaction.

@murchandamus pointed out to me something non-obvious about RBF. I already forgot it once, so gonna write it down here to keep a trace.
We need be careful if we ever allow adding new payments in a replacement transaction. There could be such a situation:

Transaction A is created with (only) payment x
Transaction A is RBF'd by transaction A' which includes an additional payment y
Transaction A gets mined before the miner saw A'
Transaction B is created to make payment y that the user is still willing to make
The block in which Transaction A was mined is reorg and the miner which by now saw the higher fee-paying A' includes it instead
The user made payment y twice :tada:

Mark's suggestion would be to always add a new input when a payment is added in a replacement, and use this input as a source of conflict in a latter transaction which would make the same payment.
We don't have this issue (yet?) since we don't allow new payments to be created in replacements. But it's well worth keeping in mind. It's also IMO a good lesson to be conservative in our changes and only enable functionalities we thought through fully to avoid users shooting themselves in the foot.

another for cancelling a transaction?

I think cancelling can be a parameter to rbfpsbt.

extract some of that to a common utils function

Yes.

I think the getmempoolentry command calculates the descendant count (including descendants of descendants) and their total fees already

Yes it does. For both ancestors and descendants. I think i replied assuming you were talking about unconfirmed ancestors, but this was already ruled out in https://github.com/wizardsardine/liana/pull/560#issuecomment-1784834125 right?
For descendants you are right using getmempoolentry seems like a low hanging fruit. If it's not found, we know it has no descendant. I think you should go for it.

From my understanding of the RBF policy, we only need to consider the fees of descendants when replacing a transaction.

True, but the "real" feerate of the transaction is the feerate of the transaction plus its ancestors. But yes let's set that aside for now.

No, to satisfy the RBF rules you need to make sure the individual transaction's feerate is 1sat/vb greater than the replaced one. The ancestor feerate is only considered by miners. It's important too as it may be lower than the individual tx feerate. Basically what we are interested in is max(individual feerate, ancestor feerate). I know it's confusing, that's because the RBF rules were implemented before ancestor-awareness in Bitcoin Core.

Regarding the implementation in the GUI, i'm thinking about the following.
In the transaction details, when clicking on an unconfirmed transaction.

Right below the fees and before the txid, have a new row with two buttons:

Bump fees
Cancel (with a tooltip "Best effort attempt at double spending an unconfirmed outgoing transaction")

Both buttons open a modal, with the same title in both cases: "Transaction replacement". The content itself depends on the chosen option:

For Cancel, have a small text and a "Confirm" button. "Replace the transaction with one sending the coins back to us. There is no guarantee the original transaction won't get mined first. New inputs may be used for the replacement transaction."
For Bump, have a small text, an input for the new feerate and a "Confirm" button. Any error may be shown right between the feerate input and the "Confirm" button. The text may be "Replace the transaction with one paying a higher feerate, to incentivize faster confirmation. New inputs may be used for the replacement transaction."

What do you think? @kloaec @jp1ac4
There is also the question of the labeling. This should be tackled separately. I'll open a separate issue to discuss this.

Seems good for the transaction screen. We also need it on the "payment" view from the home screen.
The modal text is pretty good like @darosior suggested.

For the cancel popup, i would add "with a higher fee rate" or a additional sentence with "It stills costs a Bitcoin transaction fee"
in both Bump and Cancel, if possible, I would like to clearly display if new inputs are added, or not. Can this be done without too much work? Replacing the "new inputs may be used" by "no new inputs are used" or "/!\ new inputs are used" depending on the selected fee.

It sounds good with the two buttons and modal on the transaction details screen. Would clicking "Confirm" then take the user to the PSBT screen?
If we keep track of the to-be-replaced txid while finalizing the replacement PSBT, I think we could check if the inputs have changed.

Would clicking "Confirm" then take the user to the PSBT screen?

Yes, for the user to sign the tx.

Regarding the placement of the buttons, another option would be on the same row where the date is shown. Currently, the date row is hidden if the transaction is unconfirmed, but nothing else on the page says the transaction is unconfirmed so perhaps the date could be shown as "Unconfirmed" and alongside it would be the two buttons.

Sounds good to display Unconfirmed. Kevin had pointed this out to me as well.


Latest version of Pillow breaks current implementation in postprocess_reactions

Bug:
Pillow 10.0.0 removed ANTIALIAS from PIL.Image. Current implementation requires 9.5.0, however the requirements.txt currently allows for 10.0.0 to be installed.
Logs:
Traceback (most recent call last):
  File "/home/user/rxnscribe-test/RxnScribe/predict.py", line 21, in <module>
    main()
  File "/home/user/rxnscribe-test/RxnScribe/predict.py", line 17, in main
    print(model.predict_image_file(args.image_path, molscribe=True, ocr=True))
  File "/home/user/rxnscribe-test/RxnScribe/rxnscribe/interface.py", line 123, in predict_image_file
    predictions = self.predict_image_files([image_file], **kwargs)
  File "/home/user/rxnscribe-test/RxnScribe/rxnscribe/interface.py", line 120, in predict_image_files
    return self.predict_images(input_images, **kwargs)
  File "/home/user/rxnscribe-test/RxnScribe/rxnscribe/interface.py", line 102, in predict_images
    reactions = postprocess_reactions(
  File "/home/user/rxnscribe-test/RxnScribe/rxnscribe/data.py", line 359, in postprocess_reactions
    text = ocr.readtext(bbox.image(), detail=0)
  File "/home/user/scratch/conda/envs/rxnscribe/lib/python3.9/site-packages/easyocr-1.7.0-py3.9.egg/easyocr/easyocr.py", line 464, in readtext
    result = self.recognize(img_cv_grey, horizontal_list, free_list,\
  File "/home/user/scratch/conda/envs/rxnscribe/lib/python3.9/site-packages/easyocr-1.7.0-py3.9.egg/easyocr/easyocr.py", line 383, in recognize
    image_list, max_width = get_image_list(h_list, f_list, img_cv_grey, model_height = imgH)
  File "/home/user/scratch/conda/envs/rxnscribe/lib/python3.9/site-packages/easyocr-1.7.0-py3.9.egg/easyocr/utils.py", line 613, in get_image_list
    crop_img,ratio = compute_ratio_and_resize(crop_img,width,height,model_height)
  File "/home/user/scratch/conda/envs/rxnscribe/lib/python3.9/site-packages/easyocr-1.7.0-py3.9.egg/easyocr/utils.py", line 576, in compute_ratio_and_resize
    img = cv2.resize(img,(int(model_height*ratio),model_height),interpolation=Image.ANTIALIAS)
AttributeError: module 'PIL.Image' has no attribute 'ANTIALIAS'

Solution:
Update requirements.txt to
torch
numpy>=1.19.5
pandas>=1.2.4
Pillow==9.5.0
matplotlib>=3.5.3
opencv-python>=<IP_ADDRESS>
pycocotools==2.0.4
pytorch-lightning>=1.8.6
transformers>=4.5.1
huggingface-hub>=0.11.0
MolScribe @ git+https://github.com/thomas0809/MolScribe.git@main#egg=MolScribe
easyocr>=1.6.2

Hi,
Thank you for pointing out this issue and providing a solution!
As the log suggests, the error was caused by the incompatibility between easyocr and Pillow 10.0.0. This issue has been fixed by the latest version of easyocr. https://github.com/JaidedAI/EasyOCR/commit/caf88774f673774079c681d77d2314c986431104


Firefox blank screen [Running in a Raspberry Pi 3]

After installing all the dependencies using the setup.py, I can't see the QR code when running the script, just a blank screen in the Firefox browser.
Note that I installed the ARM version of geckodriver and the "Iceweasel" Firefox.
Versions:
pi@raspberrypi:~/wabot $ geckodriver --version geckodriver 0.20.0
pi@raspberrypi:~/wabot $ firefox -v Mozilla Firefox 52.6.0
pi@raspberrypi:~/wabot $ python3  Python 3.5.3 (default, Jan 19 2017, 14:11:04)
Error (timeout):
Traceback (most recent call last):   File "main.py", line 18, in <module>     if not offline_mode: driver = WhatsAPIDriver()   File "/usr/local/lib/python3.5/dist-packages/webwhatsapi-2.0.2-py3.5.egg/webwhatsapi/__init__.py", line 196, in __init__     self.driver = webdriver.Firefox(capabilities=capabilities, options=options, **extra_params)   File "/usr/local/lib/python3.5/dist-packages/selenium-3.11.0-py3.5.egg/selenium/webdriver/firefox/webdriver.py", line 162, in __init__     keep_alive=True)   File "/usr/local/lib/python3.5/dist-packages/selenium-3.11.0-py3.5.egg/selenium/webdriver/remote/webdriver.py", line 154, in __init__     self.start_session(desired_capabilities, browser_profile)   File "/usr/local/lib/python3.5/dist-packages/selenium-3.11.0-py3.5.egg/selenium/webdriver/remote/webdriver.py", line 243, in start_session     response = self.execute(Command.NEW_SESSION, parameters)   File "/usr/local/lib/python3.5/dist-packages/selenium-3.11.0-py3.5.egg/selenium/webdriver/remote/webdriver.py", line 312, in execute     self.error_handler.check_response(response)   File "/usr/local/lib/python3.5/dist-packages/selenium-3.11.0-py3.5.egg/selenium/webdriver/remote/errorhandler.py", line 242, in check_response     raise exception_class(message, screen, stacktrace) selenium.common.exceptions.WebDriverException: Message: connection refused
How can I modify the code to allow selenium work properly?

Just check this solution, worked for me...
https://stackoverflow.com/questions/49208980/are-geckodriver-and-firefox-compatible-on-raspberry-pi-3

Thanks! It works like a charm


[DO NOT MERGE] Auto PR to update dependencies of pilot

This PR will be merged automatically once checks are successful.

@istio-testing: The following test failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/pilot-presubmit.sh
b5e689cab6e69499854adda5b6a8ecd563490223
link
/test pilot-presubmit

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.


Missing CONTRIBUTING.md File in Repository

The repository currently lacks a CONTRIBUTING.md file, which is an important resource for guiding potential contributors on how to engage with the project effectively. A CONTRIBUTING.md file outlines the contribution guidelines, coding standards, and procedures for submitting pull requests, thus streamlining the contribution process and ensuring consistency across contributions.
Could you please assign this issue to me under GSSOC 24.

Can you please assign me the issue I can fix the issue .

@suhanipaliwal go ahead

Could you please add the labels of GSSOC'24 and appropriate level like level 1, 2 or 3 on this issue.

Please add the required labels on this issue otherwise my contribution won't be considered for GSSOC.


PermissionsEx

Hi..
The error in the log is Here
Should i create new columns? It happens with "prefix" too, but when i created new column called "prefix" - this error came up too.. So.. But PEX are working normally, prefix, suffix is ok, they're saved in table "permissions" and it's allright..
So? What i can do to fix that? I don't like it! :o But it's working..
So - it's the answer to create columns (with some specific datatype?) ?

maybe post you're permissions yml file

Permissions.yml file? Are you sure? I'm using PEX on MySQL, that's why im getting this error, no?
But in my permissions.yml file is just this..
"groups:
default:
options:
default: 'true'
permissions:
- modifyworld.*
schema-version: 1
users:"

I think this is a matter of you having 2 "schema" version lines in your SQL.  schema-version: 1 is the correct one, I do believe.

Hmm.. What? 2x schema-version lines? Where? I see only one.

you'll have to update the schema-version's value to 1 more than what you currently have it set to. that should fix your issue.


There is an issue with CREATE USER with VS SQL Project...

Hi.
I am using the SSDT from Visual Studio to maintain a Synapse SQL DB. I noticed CREATE USER xxx FROM EXTERNAL PROVIDER at the Publish/Schema compare being converted to CREATE USER xxx NO LOGIN. I don't know what is the reason for this change, but it ends up with access issues.
Thanks.

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

ID: 787b8c68-0836-9a76-47f3-12937e9034f3
Version Independent ID: 4347cab2-83a2-f09b-c7a5-153d0fc54de3
Content: Install Visual Studio 2019 - Azure Synapse Analytics
Content Source: articles/synapse-analytics/sql-data-warehouse/sql-data-warehouse-install-visual-studio.md
Service: synapse-analytics
Sub-service: ****
GitHub Login: @kevinvngo
Microsoft Alias: kevin

@Kamyar5353  Since this issue is not related directly to the doc, I would recommend you to create a thread on the forums - Microsoft Q&A azure-synapse-analytics
Once you post your issue on forums, it will have visibility across the community which is a better suited audience for such types of issues.


Revert "Support session cache for client and server when using native…

… SSLEngine implementation (#10331)"
Motivation:
This reverts commit 825916c7f0c85e9df0516a7c0b3cbc994c6a4472 as it turns out it introduced a big performance regression.
Modifications:
Revert 825916c7f0c85e9df0516a7c0b3cbc994c6a4472
Result:
Performance of TLS is back to normal

Out of curiosity, tests have been failing a lot with connection timeout errors these days. Does the CI have network connectivity issues?
01:27:35 [ERROR]     Unresolveable build extension: Plugin kr.motd.maven:os-maven-plugin:1.6.2 or one of its dependencies could not be resolved: Could not transfer artifact org.apache.commons:commons-lang3:jar:3.5 from/to central (https://repo.maven.apache.org/maven2): Transfer failed for https://repo.maven.apache.org/maven2/org/apache/commons/commons-lang3/3.5/commons-lang3-3.5.jar: Connect to repo.maven.apache.org:443 [repo.maven.apache.org/<IP_ADDRESS>] failed: Connection timed out -> [Help 2]

@hyperxpro its running on AWS :/


fix uuid encoding

This change fixes a bug that made it impossible to use UUIDs as query arguments.

say I'm creating a web app. I receive a UUID via HTTP GET request in its text form (like "00010203-0405-0607-0809-0a0b0c0d0e0f"). How can I pass that as a query argument to EdgeDB?

This is the current API. MarshalText and UnmarshalText allow edgedb.UUID to play nice with json and other encodings in the standard library.
str := "00010203-0405-0607-0809-0a0b0c0d0e0f"

var id edgedb.UUID
err := id.UnmarshalText([]byte(str))
if err != nil {
    log.Fatal(err)
}

con.QueryOne(ctx, "SELECT User WHERE .id = <uuid>$0", &result, id)

This is the current API. MarshalText and UnmarshalText allow edgedb.UUID to play nice with json and other encodings in the standard library.

What's the downside of allowing UUID to encode/decode to/from Go string type directly (in addition to edgedb.UUID)?

What's the downside of allowing UUID to encode/decode to/from Go string type directly (in addition to edgedb.UUID)?

I don't have any objections. Google has that in their implementation.


Ability to use github secret for payload (with variables)

Description
Describe your issue here.
What type of issue is this? (place an x in one of the [ ])

[ ] bug
[x] enhancement (feature request)
[ ] question
[ ] documentation related
[ ] example code related
[ ] testing related
[ ] discussion

Requirements (place an x in each of the [ ])

[x] I've read and understood the Contributing guidelines and have done my best effort to follow them.
[x] I've read and agree to the Code of Conduct.
[x] I've searched for any related issues and avoided creating a duplicate issue.

Bug Report
I want to use something like this
    - name: Send notifications to Slack
        id: slack-notifications
        if: inputs.slack-notifications && always()
        uses<EMAIL_ADDRESS>        env:
          SLACK_BOT_TOKEN: ${{ secrets.SLACK_APP_TOKEN }}
        with:
          channel-id: ${{ inputs.slack-notifications-channel }}
          payload: ${{ secrets.SLACK_PAYLOAD}}

Payload
            {
             "blocks": [
               {
                 "type": "section",
                 "text": {
                   "type": "mrkdwn",
                   "text": "${{ env.ICON }} *${{ env.VALIDATION_RESULT }}* - ${{ github.event.action }}${{ github.event.head_commit.message }} on *${{ env.K8S_SERVICE }}* !"
                 }
               },
               {
                 "type": "section",
                 "text": {
                   "type": "mrkdwn",
                   "text": "*API-tests:* sucessfull *${{ env.TESTS_SUCESS }}*, failed *${{ env.FAILED_TESTS }}*"
                   }
               },
               {
                 "type": "actions",
                 "elements": [
                   {
                     "type": "button",
                     "text": {
                       "type": "plain_text",
                       "text": "Github Workflow",
                       "emoji": true
                   },
                    "url": "https://redacted.com/${{ github.run_id }}"
                   },
                   {
                    "type": "button",
                     "text": {
                       "type": "plain_text",
                       "text": "JIRA issues",
                       "emoji": true
                     },
                     "url": "https://redacted.com/${{ inputs.sde-version }}"
                   },
                   {
                    "type": "button",
                     "text": {
                       "type": "plain_text",
                       "text": "API report",
                       "emoji": true
                     },
                     "url": "${{ env.API_REPORT }}"
                   },
                   {
                    "type": "button",
                     "text": {
                       "type": "plain_text",
                       "text": "API logs",
                       "emoji": true
                     },
                     "url": "${{ env.API_TEST_LOGS }}"
                   }
                 ]
               }
             ]
           }

However if I put any of the json which I generate by Slack builder to github secrets it won't work by default and slack-github-action will end with error. Also it won't replace the variables mentioned in payload at all.
Would it be possible to somehow fix/enhance this? Or write some simple documentation to make this work?
Reproducible in:
package version:
node version:
OS version(s):
Steps to reproduce:

Create github action
Add secret to github secrets
Monitor logs

Expected result:
The notificationd str sent to Slack
Actual result:
Error thrown by github action

If I understand correctly, enabling to use env variables / inputs inside secrets.SLACK_PAYLOAD requires additional efforts on this GH action package side, which may cause issues if the GitHub Actions platform makes changes in the future. So, I don't think supporting your use case is a straight-forward thing.

Thanks @seratch
Would at least secrets.SLACK_PAYLOAD or env.SLACK_PAYLOAD be possible to implement? without variables support?
        with:
          channel-id: ${{ inputs.slack-notifications-channel }}
          payload: ${{ secrets.SLACK_PAYLOAD}}

Didn't it work? As long as the value is a string value, I am not sure why it cannot work.
Aside from that, my personal opition is that using payload-file-path instead should be easier to maintain for you: https://github.com/slackapi/slack-github-action/blob/main/example-workflows/Technique_1_Slack_Workflow_Builder/JSON_payload_from_file.yml Other maintainers may have different opinions, though.

At the end I used following which works properly. I've stored whole payload to Github variable and let another actions to store it properly to json file.. And those variables I want replaced are specified in env of this action.
      - name: Secret to JSON for Slack
        uses<EMAIL_ADDRESS>        if: inputs.slack-notifications && always()
        with:
          name: "payload-slack-content.json"
          json: ${{ vars.SLACK_PAYLOAD_JSON }}

      - name: Send notifications to Slack
        id: slack-notifications
        if: inputs.slack-notifications && always()
        uses<EMAIL_ADDRESS>        env:
          SLACK_BOT_TOKEN: ${{ secrets.SLACK_APP_TOKEN }}
          # Variables required for vars.SLACK_PAYLOAD_JSON usage
          ACTIONS_URL: "${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}"
        with:
          channel-id: ${{ inputs.slack-notifications-channel }}
          payload-file-path: payload-slack-content.json

I will close this issue because this meets criteria and works.


⚠ Bofrost.lu has degraded performance

In 2762251, Bofrost.lu (https://www.bofrost.lu) experienced degraded performance:

HTTP code: 200
Response time: 2370 ms

Resolved: Bofrost.lu performance has improved in 7f7bf13 after 7 minutes.


Using ReactNativify instead of rn-nodeify?

Using react-native-crypto requires rn-nodeify, but on that project README it describes itself as a hack and states:

If you're looking for a saner approach, check out ReactNativify. I haven't tested it myself, but I think philikon will be happy to help.

So my question is: Can we use react-native-crypto this way as well?
ReactNativify code uses crypto-browserify at the moment and in global.js does not offer an example of shimming getRandomValues for use in production.
Changing the crypto: 'crypto-browserify' in babelrc transformer.js crytpo: 'react-native-crypto' on its own doesn't cut it.
I see react-native-crypto generates a bunch of shim code. Maybe be some of that needs to added?
I have asked a similar question on the ReactNativify project: https://github.com/philikon/ReactNativify/issues/10
Thank you.
PS I have also posted this on stackoverflow: https://stackoverflow.com/q/45301900/8295283

@aschrijver sorry for the slow response. Yes, react-native-crypto requires rn-nodeify. It seems like your question is more about ReactNativify. I don't know enough about ReactNativify to comment on its compatibility with react-native-crypto...so I'm not sure how I can help :)

no problem. i am too busy myself building a non-profit movement for people who care :)
called innercircles
encryption plays an important role..
i found that for more complex nodejs projects both methods are not feasible. instead started researching nodejs on android:
https://stackoverflow.com/questions/45459909/viable-options-for-running-nodejs-on-android-aug-2017

@aschrijver thanks for the link, i haven't looked at this alternative!
just fyi, we're running a pretty complex crypto project with react-native. It's doable, though were hoops to jump through :) We've created and are using this asyncstorage backend which uses Facebook's Conceal for encryption (on Android), react-native-ecc for elliptic curve signing/verifying and a bunch of other native modules on android and ios (see here).

wow, this seems very cool. i'll not have time for some time to come, but i think @staltz of secure scuttlebot team might be interested as well.
thanks :+1:
i'll close this issue now..
ps. in case you find a good solution it would be great if you could add answer to https://stackoverflow.com/questions/45301900/howto-patch-shim-crypto-getrandomvalues-for-react-native, so I bump into it later :)


sudoers file is broken

Hi ,
My sudoers file is broken ,how can I repair the system ?
Does root account has default password ?
Best Regards,
huiwenhan

You're going to have to be a little more descriptive... What sudoers file? Which system? Root account on what machine?
The account on the base os image is vagrant/vagrant. But you can get into it with just vagrant ssh <machine> using the configured SSH key.

Closing from lack of feedback.


Add more metrics samples

Fixes https://github.com/Azure/azure-sdk-for-python/issues/23961

API change check
API changes are not detected in this pull request.


Add support for reading google health

It will be awesome!

i've seen some flutter lib to do it but I don't have a compatible phone to test unfortunately.

I think that there are Android emulators where you can work on, take a look at the following pages:
https://developer.android.com/codelabs/health-connect?hl=es-419#0
https://developer.android.com/studio?hl=es-419

It look like it needs a phone still but I have an old android phone that I could setup as a test platform.

I just release the version 0.5 of the native application on android in the release page that support health connect.
It's not possible to support google fit because it's deprecated and the dev acces for new app was closed last month.
This version was only tested on android 14 and you need the beta Health connect installed if on a lower version.
It will only sync in when the app is in the foreground and will display a heart with the status (no detail of the execution for now).
It may crash still and only import Heart, steps, weight and blood oxygen and only the last 30 days of data..

I installed the 0.7 version, allowed Health connect for all metrics, but nothing is being displayed yet on the app, even the heart is green.
Additionally, It will be great if the date sector have pre-built range like: week, month, 3 months, 6 months, 1 year, Year to date and it's permanent thru Settings.

You may need to change the range to see the data, the widget are not updated yet when new data are added to the app.
I need to add the refresh in a future update.

Also I need to add a better way to see the status of the importation

Nothing even changing date range and closing / reopening the app,

I'll add a popup with the result of the sync then. Do you have steps or heart rate data in the last 30 days ?
I used the toolbox to test: https://developer.android.com/health-and-fitness/guides/health-connect/test/health-connect-toolbox
You can use that to see what data your phone can support.

I made a popup when clicking on the heart to see the status and a button in the settings to reset the last run date so the sync will run again. (after a successful run, the app will only ask for new metric to the health connect sdk)
You can find that prerelease version here in the artifacts.zip: https://github.com/FSchiltz/Helse/actions/runs/9037728894

It won't work, I found a bug on my phone.
Next step would be to add unit tests on the Ui part.

It's working in version 0.10 but it can only get 30 days of data and I only import 4 metrics.


[Enhancement]: Alien_Invasion game doesn't work mismatch logic

Do you want to have the enhancement of existing game ? 😀 Describe yourself..

Alien_Invasion project cannot drawable this is something issue for the mismatch logic.
please see the below video..
please assign me..

Describe the solution you'd like
Screencast from 2024-07-03 06-40-55.webm
Select program in which you are contributing
GSSoC24
Code of Conduct

[X] I follow CONTRIBUTING GUIDELINE of this project.

Hey @sivaprasath2004 !
Thank you for raising an issue 💗
You can self assign the issue by commenting /assign in comment 😀
Make sure you follow CODE OF CONDUCT and CONTRIBUTING GUIDELINES 🚀
Don’t Forget to ⭐ our GameZone🎮
Make sure you join our Discord🕹

Hey @sivaprasath2004 ! Thank you so much for your raising the issue💗
It’s all yours, you can come anytime again and make some contributions! 🚀
Alone, we can do little, but together we can do so much! 😇


silence C++ warnings

No regressions on Linux for me, I think you can merge this and see if any nightly users complain.


When adding a new container (ie. doing docker pull) you must add :latest to the docker pull

When adding a container, if a user specifies an image with no tag, the image name sent in the pull to docker must include the ":latest".  If you do not include the ":latest", all images with any tags are pulled and this takes forever and a lot of disk space.

This bug no longer exists. Not sure when it did, but it is addressed. You can test your self, the code that ensures this is in DockerImage.java

This bug no longer exists. Not sure when it did, but it is addressed. You can test your self, the code that ensures this is in DockerImage.java <@ibuildthecloud>

Verified in v0.17.0


fix: reorder getLicense function's parameters

Summary
fix: reorder getLicense function's parameters
Motivation
Type definition is synchronized with the value returned by native. So I fixed it

https://github.com/react-native-video/react-native-video/blob/master/src/types/video.ts#L57-L62
https://github.com/react-native-video/react-native-video/blob/master/ios/Video/Features/RCTResourceLoaderDelegate.swift#L156-L160

Changes
Test plan

This change will introduce a breaking change, I think we can avoid it by changing declaration in ts ?

This change will introduce a breaking change, I think we can avoid it by changing declaration in ts ? BTW, if we agree to introduce a breaking change, it would be better to put all props in an object ! can be planned for V7 if you want

@freeboub
I don't want breaking change. so I revert previous commit and just fix type definition.
In my thoughts, If we need to change this function, getLicense function should take an object type argument as shown below.
{ spcBase64, contentId, licenseUrl, loadedLicenseUrl }

but it isn't neccesary.

Thank you, let's follow up here: https://github.com/react-native-video/react-native-video/issues/3615


docs: add troubleshooting note on VM_MEMORY_OVERHEAD_PERCENT

Fixes #N/A
Description
Adds a troubleshooting note on VM_MEMORY_OVERHEAD_PERCENT.
TODO: Add entries for remaining doc pages once consensus is reached on wording
How was this change tested?
N/A
Does this change impact docs?

[x] Yes, PR includes docs updates
[ ] Yes, issue opened: #
[ ] No

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

Pull Request Test Coverage Report for Build<PHONE_NUMBER>4
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 79.264%

Totals

Change from base Build<PHONE_NUMBER>6:
0.0%

Covered Lines:
5921

Relevant Lines:
7470

💛  - Coveralls


New python package, quick starter doc page

SNIPPET 1
from vedastro.calculators import VenusInPisces
from vedastro.objects import GeoLocation, Time, Person, Gender

# person who born on Tokyo Japan
geolocation = GeoLocation(location="Tokyo", latitude=35.6895, longitude=-139.6917)
date = "07/05/2010"
time = "06:42"
time_offset = "+09:00"
time_ob = Time(date, time, time_offset, geolocation)
id = "1234"
user_id = "123"
notes = " "
name = "Test Person"
gender = Gender.Male

test_person = Person(id=id, user_id=user_id, name=name, gender=gender, birth_time=time_ob, notes=notes)
status = VenusInPisces(time_ob, test_person)

print(status.occuring)
print(status.related_body)

quick starter with python nicely done by @TharakaUmayanga
https://github.com/VedAstro/VedAstro.Python


⚠ Bofrost.es has degraded performance

In c6f1cc5, Bofrost.es (https://www.bofrost.es) experienced degraded performance:

HTTP code: 200
Response time: 1579 ms

Resolved: Bofrost.es performance has improved in a4a19be after 6 minutes.


Contact

Hello, is there any way to contact with you? on discord for example if you have.

Hi, Discord is sd#1000


get all the way to boot then this

[] Disabling tweaks
[] Getting device info...
[] Pwning device
[] Booting device
[==================================================] 100.0%
ERROR: Unable to connect to device

Compile and install usbmuxd2

I'm on Mac m1 not linux

Make sure you're going to recovery then dfu