WSL blocked by Smart App Control

Version
Microsoft Windows [Version 10.0.22621.963]
WSL Version

[X] WSL 2
[ ] WSL 1

Kernel Version
<WSL terminal not accessible to check this, but was a fresh install from the store>
Distro Version
Ubuntu 22.04.1 LTS
Other Software
Smart App Control
Repro Steps
run WSL, e.g. click start -> enter "wsl" or "ubuntu" in the start search -> click / press enter
Expected Behavior
WSL terminal is started and ready for interaction
Actual Behavior

and when run from powershell:

copyable-text:

PS C:\Windows\system32> wsl
Program 'wsl.exe' failed to run: System Integrity policy has been violated.  Explicit denied fileAt line:1 char:1
+ wsl
+ ~~~.
At line:1 char:1
+ wsl
+ ~~~
    + CategoryInfo          : ResourceUnavailable: (:) [], ApplicationFailedException
    + FullyQualifiedErrorId : NativeCommandFailed

PS C:\Windows\system32>

Diagnostic Logs
No response
actions tried so far

repair & reset Ubuntu from Control Panel / Apps / Installed Apps

If i was dependend immediately on WSL I would have deactivated Smart App Control, which is my fallback solution. But I'd like to give it a try to resolve first.

@craigloewen-msft

Hi @Dr-Nuke , in talking with the Smart App Control (SAC) team we determined that this was caused by turning on SAC manually. You can resolve this by turning off SAC.
The recommendation from the team is to let evaluation mode control whether SAC gets turned on or off (as read here)

We are working with the SAC team to determine if WSL should be on the SAC default block list.
Since this is expected behavior, I will close out this issue as there isn't engineering work for us to resolve this. Please reopen this issue if you are still blocked from using WSL given the guidance above. Thank you for filing!

Hi craigloewen
thanks for the update.
One detail does not fit: I did not manually interfere with SAC up to that point. In fact, I cannot turn it on manually

This was a fresh windows 11 install  from a few days earlier with most of its default settings. Including SAC. I observed how it was on evaluation mode in the beginning and then turned itself on after several days. At that point, WSL stopped working and I posted the issue.
Anyway i turned it off as it would not allow me to use WSL, and possibly other applications,too, while not providing a whitelisting feature.
Best,
Dr Nuke

I am getting the same issue as Dr-Nuke on the post about making being unable to make changes to SCM after a reinstall. Although I installed windows some time ago and I've been using it since


Accessibility: Icon missing the alt attribute to compliant with IBM DAP a11y tool

IBM DAP plugin will report an a11y issue about missing alt on svg, even it already has an aria-label.
As our project must compliant with IBM A11y policy, so would you work on adding the alt attribute for Icon component?

We chose not to use alt because it is not a valid attribute for SVG

If you want to add alt yourself, you can. All of our components including Icon accept any user-provided props via ...other (see here)

@hellobrian -- Such as the icon in dropdown, there is no way to set alt on internal icon.

Unfortunately, the IBM DAP tool is out of date or not correct about it's understanding of inline <svg> accessibility.
The current spec says that inline <svg> should provide a <title> to properly describe the image
But as browsers are slow to implement the standard, the recommended technique for screen readers is to require the combination of role="img" and aria-label in order to be accessible.


redirect problem?

I build the service at the port of 9000(I just changed the port in docker-compose.prod.yml). Everything is ok before I wanna add some new users. When I input http://myip:9000/admin, the url in the browser turned into http://myip/admin automaticly. And I met 404 pages. What's the reason? How to solve it?
the operation can be seen at: https://i.loli.net/2019/11/25/Je6WCLRfTuFzQ4d.gif

In addition, there no more than exists search feature in the latest version, it is difficult to find sentence that annotators wanna find.


Add query_row_named

Hello!
It'd be nice to be able to use the convenience of query_row with the readability of using named parameters.
Additional clarification: as query is to query_named, query_row is to this function.
Thanks for your work on this project!

Add query_row_named for prepared Statement.

Thanks!!


LM deteriorated accuracy between versions 0.6.5 -> 0.6.6

🐛 Describe the bug
I experienced a severe deterioration in accuracy and number of iterations solving a small bundle adjustment problem with LM optimizer when moving from v0.6.5 to v0.6.6.
I wasn't able to pinpoint the cause and generate a minimal reproducer, but hopefully the code itself is short enough to look into.
The data is synthetic and is generated by the same forward method using ground-truth values, which are withheld from the solver.
I ran the exact same code on the exact same environment, only difference was pypose version.
v0.6.5 output: the problem is solved to numerical precision
StopOnPlateau on step 0 Loss 1.910105e+00 --> Loss 1.312729e+00 (reduction/loss: 3.1274e-01).
StopOnPlateau on step 1 Loss 1.312729e+00 --> Loss 3.240422e-01 (reduction/loss: 7.5315e-01).
StopOnPlateau on step 2 Loss 3.240422e-01 --> Loss 4.624002e-02 (reduction/loss: 8.5730e-01).
StopOnPlateau on step 3 Loss 4.624002e-02 --> Loss 2.900029e-03 (reduction/loss: 9.3728e-01).
StopOnPlateau on step 4 Loss 2.900029e-03 --> Loss 2.628294e-05 (reduction/loss: 9.9094e-01).
StopOnPlateau on step 5 Loss 2.628294e-05 --> Loss 3.116393e-09 (reduction/loss: 9.9988e-01).
StopOnPlateau on step 6 Loss 3.116393e-09 --> Loss 1.382084e-16 (reduction/loss: 1.0000e+00).
StopOnPlateau on step 7 Loss 1.382084e-16 --> Loss 1.942663e-24 (reduction/loss: 1.0000e+00).
StopOnPlateau on step 8 Loss 1.942663e-24 --> Loss 5.115759e-31 (reduction/loss: 1.0000e+00).
StopOnPlateau on step 9 Loss 5.115759e-31 --> Loss 4.304341e-31 (reduction/loss: 1.3268e-01).
StopOnPlateau: Maximum patience steps reached, Quiting..
Err Rot (deg):  0.000000000 | Err Trans (m):  0.000000000

v0.6.6 output: the optimizer makes different, suboptimal steps, and gives up eventually
StopOnPlateau on step 0 Loss 1.910105e+00 --> Loss 1.312729e+00 (reduction/loss: 3.1274e-01).
StopOnPlateau on step 1 Loss 1.312729e+00 --> Loss 7.613335e-01 (reduction/loss: 4.2004e-01).
StopOnPlateau on step 2 Loss 7.613335e-01 --> Loss 5.804327e-01 (reduction/loss: 2.3761e-01).
StopOnPlateau on step 3 Loss 5.804327e-01 --> Loss 3.535811e-01 (reduction/loss: 3.9083e-01).
StopOnPlateau on step 4 Loss 3.535811e-01 --> Loss 2.337226e-01 (reduction/loss: 3.3898e-01).
StopOnPlateau on step 5 Loss 2.337226e-01 --> Loss 1.754215e-01 (reduction/loss: 2.4945e-01).
StopOnPlateau on step 6 Loss 1.754215e-01 --> Loss 1.431928e-01 (reduction/loss: 1.8372e-01).
StopOnPlateau on step 7 Loss 1.431928e-01 --> Loss 1.145350e-01 (reduction/loss: 2.0013e-01).
StopOnPlateau on step 8 Loss 1.145350e-01 --> Loss 8.521404e-02 (reduction/loss: 2.5600e-01).
StopOnPlateau on step 9 Loss 8.521404e-02 --> Loss 5.671785e-02 (reduction/loss: 3.3441e-01).
StopOnPlateau on step 10 Loss 5.671785e-02 --> Loss 3.159629e-02 (reduction/loss: 4.4292e-01).
StopOnPlateau on step 11 Loss 3.159629e-02 --> Loss 1.359741e-02 (reduction/loss: 5.6965e-01).
StopOnPlateau on step 12 Loss 1.359741e-02 --> Loss 5.365757e-03 (reduction/loss: 6.0538e-01).
StopOnPlateau on step 13 Loss 5.365757e-03 --> Loss 3.296073e-03 (reduction/loss: 3.8572e-01).
StopOnPlateau on step 14 Loss 3.296073e-03 --> Loss 2.973364e-03 (reduction/loss: 9.7907e-02).
StopOnPlateau on step 15 Loss 2.973364e-03 --> Loss 2.541876e-03 (reduction/loss: 1.4512e-01).
StopOnPlateau on step 16 Loss 2.541876e-03 --> Loss 1.769571e-03 (reduction/loss: 3.0383e-01).
StopOnPlateau on step 17 Loss 1.769571e-03 --> Loss 9.846931e-04 (reduction/loss: 4.4354e-01).
StopOnPlateau on step 18 Loss 9.846931e-04 --> Loss 4.406246e-04 (reduction/loss: 5.5253e-01).
StopOnPlateau on step 19 Loss 4.406246e-04 --> Loss 1.681205e-04 (reduction/loss: 6.1845e-01).
StopOnPlateau on step 20 Loss 1.681205e-04 --> Loss 7.312793e-05 (reduction/loss: 5.6503e-01).
StopOnPlateau on step 21 Loss 7.312793e-05 --> Loss 5.315893e-05 (reduction/loss: 2.7307e-01).
StopOnPlateau on step 22 Loss 5.315893e-05 --> Loss 4.814676e-05 (reduction/loss: 9.4286e-02).
StopOnPlateau on step 23 Loss 4.814676e-05 --> Loss 3.847422e-05 (reduction/loss: 2.0090e-01).
StopOnPlateau on step 24 Loss 3.847422e-05 --> Loss 2.506154e-05 (reduction/loss: 3.4861e-01).
StopOnPlateau: Maximum steps reached, Quiting..
Err Rot (deg):  0.014075563 | Err Trans (m):  0.000058479

More steps lead to stopping on patience with large error, not to convergence.
Versions
PyTorch version: 2.1.2+cu121
Is debug build: False
CUDA used to build PyTorch: 12.1
ROCM used to build PyTorch: N/A

OS: Ubuntu 20.04.6 LTS (x86_64)
GCC version: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0
Clang version: Could not collect
CMake version: version 3.16.3
Libc version: glibc-2.31

Python version: 3.10.13 (main, Aug 25 2023, 13:20:03) [GCC 9.4.0] (64-bit runtime)
Python platform: Linux-6.2.0-39-generic-x86_64-with-glibc2.31
Is CUDA available: True
CUDA runtime version: Could not collect
GPU models and configuration: GPU 0: NVIDIA GeForce RTX 3090
Nvidia driver version: 525.147.05
cuDNN version: Probably one of the following:
/usr/lib/x86_64-linux-gnu/libcudnn.so.8.8.0
/usr/lib/x86_64-linux-gnu/libcudnn_adv_infer.so.8.8.0
/usr/lib/x86_64-linux-gnu/libcudnn_adv_train.so.8.8.0
/usr/lib/x86_64-linux-gnu/libcudnn_cnn_infer.so.8.8.0
/usr/lib/x86_64-linux-gnu/libcudnn_cnn_train.so.8.8.0
/usr/lib/x86_64-linux-gnu/libcudnn_ops_infer.so.8.8.0
/usr/lib/x86_64-linux-gnu/libcudnn_ops_train.so.8.8.0
HIP runtime version: N/A
MIOpen runtime version: N/A
Is XNNPACK available: True

Versions of relevant libraries:
[pip3] mypy-extensions==1.0.0
[pip3] numpy==1.26.2
[pip3] pytorch-ignite==0.4.11
[pip3] pytorch3d==0.7.5
[pip3] torch==2.1.2
[pip3] torchvision==0.16.2
[conda] Could not collect

Hi, @zitongzhan, It might be because of the new backward functions, can you have a look?

@gmedan v0.6.7 should have fixed your bug report. You may try pip install -U pypose


Reorder replacements to match osName+archName first

db7ff1addb3fdd975e63f7ce23fff57a703d3ece introduced a regression wrt. #12 (PR #13). This reordering ensures the combination of OS + Arch without delimiters is matched first.

@sirlatrom thx for this :pray: . Since we have a test for the sanitizeName function (it's the only test :joy:). Can we add a case for that?

@sirlatrom thx for this 🙏 . Since we have a test for the sanitizeName function (it's the only test 😂). Can we add a case for that? We should also rebase now since we merged #16

I'll rebase this and stand by to rebase #17 afterwards.

Actually come to think of it this one should just be closed as the fix was included as part of #16.

Actually come to think of it this one should just be closed as the fix was included as part of #16.

I didn't see that. You fooled me with the "refactoring" title :). Can we add a test case for this? Since we already have the Sanitize test case?

Actually come to think of it this one should just be closed as the fix was included as part of #16.

I didn't see that. You fooled me with the "refactoring" title :). Can we add a test case for this? Since we already have the Sanitize test case?

I think that case is handled in 1b6a7761ad06cc0bd2dc73aad087b1140a714732 with this test case:
https://github.com/marcosnils/bin/blob/1b6a7761ad06cc0bd2dc73aad087b1140a714732/pkg/assets/assets_test.go#L17


IPv6 Support to Lycoris

Does have any way to give IPv6 support to Lycoris? Is becoming quite hard to get an ISP who doesn't use CGNAT with public IPv6 but private IPv4
Idk if is just change the ipv4 (x.x.x.x:10080) to ipv6 under brackets ([xxxx : xxxx ::::: xxxx : xxxx]:10080), but i think that's a valid improvement to adonis

This project is currently suspended due to schedule, but will be resumed soon!
I will consider about that. Thank you for opening issue and suggestion!


allow fastq files to be specified in units.tsv

Make a units.tsv file of 3 columns, sample, read1, read2 which is automatically read into snakemake.
Optionally, allow either rigid (current) or flexible filenaming by using an input function

the fastq table has now been tested by @azurillandfriend and seems to be working


Disk rewrites same flash page multiple times.

While testing USB mass storage on nrf52 I noticed that the write performance was very bad. The reason for this is because disk flash uses a sector size of 512 byte but the erase size of flash is 4096 bytes. For each written sector the disk_access_flash driver reads 4096 bytes, updates 512 bytes, erases the flash pages and writes it. This is highly inefficient since writing multiple contiguous sectors is a common operation.
Changing sector size in disk to match the erase flash size is not an option since 512 byte it often needed for compatibility.
I propose to add a cache in disk_access_flash that stores last writes and flushes them when writes to another flash page is issued. USB mass storage class should use the DISK_IOCTL_CTRL_SYNC ioctl call to flush the cache.
I have retrofitted this as a PoC and it seems to work fine, owever it would be good if the whole driver was written with this intention.
I would also recommend to rewrite disk_access_flash so that it instead uses flash_map.h so that the disks can be described in devicetree instead of hardcoded configuration parameters. Doing that would take one step towards unifying the file system backend APIs.

This is highly inefficient since writing multiple contiguous sectors is a common operation.

... and is probably killing the flash 4 times faster.

This is highly inefficient since writing multiple contiguous sectors is a common operation.

... and is probably killing the flash 4 times faster.

I would also recommend to rewrite disk_access_flash so that it instead uses flash_map.h so that the disks can be described in devicetree instead of hardcoded configuration parameters. Doing that would take one step towards unifying the file system backend APIs.

This is done in #50856
I have also observed the erase inefficiency and I agree that the caching in flashdisk is the way to go. My idea is that there should be a simple timeout (e.g.1 second) after which the page is unconditionally flushed if no writes to other pages are done.

I have also observed the erase inefficiency and I agree that the caching in flashdisk is the way to go. My idea is that there should be a simple timeout (e.g.1 second) after which the page is unconditionally flushed if no writes to other pages are done.

Apparently the DISK_IOCTL_CTRL_SYNC would be the way to go. However, it would require the Mass Storage class to report the caching information to host so host can issue synchronize cache commands.

Apparently the DISK_IOCTL_CTRL_SYNC would be the way to go. However, it would require the Mass Storage class to report the caching information to host so host can issue synchronize cache commands.

Not necessarily. The cache, at least initially would be there to avoid the multiple flash page rewrites and therefore the DISK_IOCTL_CTRL_SYNC can be unconditionally issued on write transfer end. That way, the host would not need to be aware of the caching and would not need to issue synchronize cache commands.


Fix for 1.13 on /js refresh()

Another one of these "can't unambiguously select method for fixed arity signature" thing-o's.
Shout out to @jwulf !

Hi @triyuga, since this essentially reverts 34abca6 , which I tested on 1.13, I'm curious how I missed a case where the call was ambiguous. Removing such explicit overloads is useful for future compatibility since GraalJS does not support that syntax (see https://github.com/graalvm/graaljs/issues/37 ).
Note that for the call to be unambiguous, the org.bukkit.event.Listener interface needs to be removed from ScriptCraftPlugin, which I did a few commits before in 36bfc6a.
Could it be possible that you somehow ended up running a post- 34abca6 scriptcraft.js file against a pre- 36bfc6a ScriptCraftPlugin?
Any insight would be appreciated. Thanks!


rc_driver.py error

Hi @hamuchiwa ..
So I am at the final stages of making your project, so after running the rc_driver.py I got this error ,
Traceback (most recent call last):
  File "/Users/moha/Desktop/AutoRCCar/computer/rc_driver.py", line 145, in <module>
    class VideoStreamHandler(SocketServer.StreamRequestHandler):
  File "/Users/moha/Desktop/AutoRCCar/computer/rc_driver.py", line 153, in VideoStreamHandler
    model = NeuralNetwork()
  File "/Users/moha/Desktop/AutoRCCar/computer/rc_driver.py", line 17, in __init__
    self.model = cv2.ml.ANN_MLP()
AttributeError: 'module' object has no attribute 'ANN_MLP'

I am running it on opencv3 and python 2.7

Please refer to here. You need to reflect the changes relate to OpenCV3.


Run JDBC test framework in multi-db by default and add separate workflow for single-db mode

Description
This commit makes the following changes:

Modify the JDBC test workflow to run in multi-db migration mode by default
Add a new workflow to run the JDBC tests in single-db migration mode
Introduce a new flag single_db_mode_expected to indicate different expected output for single-db migration mode
Fixes test files having different output in multi-db and single-db migration mode by either adding separate expected output files with the single_db_mode_expected flag or making changes in test files itself to have same output.

Issues Resolved
Task: BABEL-5081
Check List

[x] Commits are signed per the DCO using --signoff

By submitting this pull request, I confirm that my contribution is under the terms of the Apache 2.0 and PostgreSQL licenses, and grant any person obtaining a copy of the contribution permission to relicense all or a portion of my contribution to the PostgreSQL License solely to contribute all or a portion of my contribution to the PostgreSQL open source project.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

Pull Request Test Coverage Report for Build<PHONE_NUMBER>2
Details

0 of 0   changed or added relevant lines in 0 files are covered.
45 unchanged lines in 3 files lost coverage.
Overall coverage decreased (-0.02%) to 73.651%

Files with Coverage Reduction
New Missed Lines
%

contrib/babelfishpg_tsql/src/dbcmds.c
3
74.03%

contrib/babelfishpg_tsql/src/multidb.c
18
80.12%

contrib/babelfishpg_tsql/src/catalog.c
24
87.08%

Totals

Change from base Build<PHONE_NUMBER>7:
-0.02%

Covered Lines:
44164

Relevant Lines:
59964

💛  - Coveralls


How to pass parameters to Repo

Hi there,
I need a helping hand with a problem I am facing.
I want to pass the parameters "skip_org_id: true" to the Repo like in an other query: Repo.all(User, skip_org_id: true). It's a security measure due to multitenancy.
How can I do this in Flop? I tried to to add it to the flop_opts, which worked in older versions of Flop:
...
    flop_opts = Keyword.merge(flop_opts, skip_org_id: true)
    Flop.validate_and_run(query, query_params, flop_opts)
...

I looked at the code and there are only a couple of options for use.
Any idea?
Your help is much appreciated and thank you @woylie for this package.
Kind regards,
Volker

Hey there,
try this:
flop_opts = Keyword.put(flop_opts, :query_opts, [skip_org_id: true])
Flop.validate_and_run(query, query_params, flop_opts)

Boom, it works! Thank you!


fix: readded check for primary to prevent providing erroneous metrix …

…for replicas. see #1814
See the issue here
For some reason in this commit here a check for primary was removed in one place, and left in the remainder.
The result is that the metrics query replicas for their replication lag, however replicas should not be providing this answer, only the primary. This resulted in replicas returning erroneous data and subsequent Prometheus rules failing despite the fact that replication was occuring correctly.
Re adding the primary check resolves the solution with the correct stats returned.

@B1ue-W01f hi! can you fix the DCO issue please?

@B1ue-W01f hi! can you fix the DCO issue please?

This solution has been replaced by others mentioned in the issue.


Add postgresql  plugin agent sql pararm show

Please answer these questions before submitting pull request

Why submit this pull request?

[ ] Bug fix

[X] New feature provided

[ ] Improve performance

Related issues

Bug fix

Bug description.

How to fix?

New feature or improvement

Describe the details and related test reports.

Add postgresql plugin agent sql pararm show

what is problem? @wu-sheng

can open it ?

BTW, the submodule UI update should not be committed in one pull request.

BTW, the submodule UI update should not be committed in one pull request.

why? don't understand this ?

@JaredTan95  I do not change submodule UI, its auto change the file time, how to repair this ?

If you don't know how to reset submodule to current, you have to recreate the branch from upstream master.
Also, as you are changing postgre plugin, we request you to submit another pr to move existing postgre plugin test into current one before we merge this. Like #3603 .
Than, you need to add this feature to plugin test case.(That is why I asked you you to do this)

Submodule is changed by yourself, there should be your local merge issue.

Why close this?

rebase master, find PR closed


Does not work on Windows 10

Describe the bug
It just hangs, no answer from mock
To Reproduce

Given this OpenAPI document 'https://gist.githubusercontent.com/vrialland/7031316121cb8e025dfca9dccfc226b1/raw/1258170203ee9c29ca968db1783a77d0cc519502/vehicles_openapi3.yaml'
Run this CLI command 'curl -v http://<IP_ADDRESS>:4010/vehicles/23'
See it hangs

Expected behavior
Prism answers
Screenshots

Environment (remove any that are not applicable):

OS: [e.g. Windows 10]
Browser: [e.g. Chrome 61, Curl]

Additional context
Add any other context about the problem here.

Solved .. Windows defender silently blocked the app


optimize: change pg driver scope to provide

Ⅰ. Describe what this PR did
The postgre driver would include in seata-all.jar when packaging
Ⅱ. Does this pull request fix one issue?
Ⅲ. Why don't you add test cases (unit test/integration test)?
Ⅳ. Describe how to verify it
Ⅴ. Special notes for reviews

Codecov Report

Merging #2734 into develop will decrease coverage by 0.13%.
The diff coverage is n/a.

@@              Coverage Diff              @@
##             develop    #2734      +/-   ##
=============================================
- Coverage      50.89%   50.76%   -0.14%
  Complexity      2849     2849
=============================================
  Files            567      567
  Lines          18173    18154      -19
  Branches        2166     2127      -39
=============================================
- Hits            9250     9215      -35
+ Misses          8029     8023       -6
- Partials         894      916      +22

Impacted Files
Coverage Δ
Complexity Δ

...obuf/convertor/BranchRegisterRequestConvertor.java
90.47% <0.00%> (-9.53%)
3.00% <0.00%> (ø%)

...otobuf/convertor/BranchReportRequestConvertor.java
90.90% <0.00%> (-9.10%)
3.00% <0.00%> (ø%)

...obuf/convertor/BranchRollbackRequestConvertor.java
92.00% <0.00%> (-8.00%)
3.00% <0.00%> (ø%)

...otobuf/convertor/GlobalBeginResponseConvertor.java
92.59% <0.00%> (-7.41%)
3.00% <0.00%> (ø%)

...otobuf/convertor/GlobalCommitRequestConvertor.java
93.75% <0.00%> (-6.25%)
3.00% <0.00%> (ø%)

...otobuf/convertor/GlobalStatusRequestConvertor.java
93.75% <0.00%> (-6.25%)
3.00% <0.00%> (ø%)

...obuf/convertor/GlobalRollbackRequestConvertor.java
93.75% <0.00%> (-6.25%)
3.00% <0.00%> (ø%)

...protobuf/convertor/RegisterTMRequestConvertor.java
94.73% <0.00%> (-5.27%)
3.00% <0.00%> (ø%)

...protobuf/convertor/RegisterRMRequestConvertor.java
90.47% <0.00%> (-4.77%)
3.00% <0.00%> (ø%)

...tobuf/convertor/BranchReportResponseConvertor.java
95.45% <0.00%> (-4.55%)
3.00% <0.00%> (ø%)

... and 19 more


Fix overflow in per_things::from_percent.

Small fix that I encountered in another work. Seems to not be used because you will only encounter it if you use the universal function call syntax, thus calling into the trait implementation of from_percent. The one in impl block is safe.

Please merge master :)


Can you have the explorer section get smaller

When I have the explorer section selected, the dog only uses the bottom part of the section it would be nice to be able to make the window smaller by moving down the top. This makes sense when there is no theme on.
Also, it would be cool if the dog slept more often. It would be cool to just look down and see my sleeping dog :)
Love the package! It is great!

This is as small as you can make it. You can also click+drag the window around


Circular Import error

Hi, I was hoping to experiment a bit with equinox as it seems to have some cool ideas, but I'm running into import issues right away!
Basically - if I make a file in src/packagename/linear.py with your linear implementation:
import equinox as eqx
import jax

class Linear(eqx.Module):
    weight: jax.numpy.ndarray
    bias: jax.numpy.ndarray

    def __init__(self, in_size, out_size, key):
        wkey, bkey = jax.random.split(key)
        self.weight = jax.random.normal(wkey, (out_size, in_size))
        self.bias = jax.random.normal(bkey, (out_size,))

    def __call__(self, x):
        return self.weight @ x + self.bias

when I try importing this class in another file I get
ImportError: cannot import name 'Linear' from partially initialized module 'packagename.linear' (most likely due to a circular import) (src/packagename/linear.py)
Working with the module in the same file works fine, and so does flax (i.e. it doesn't seem a setup error). Any ideas?
Python: 3.10.4
Jax: 0.3.21
Equinox: 0.8.0
EDIT: In fact, I can't seem to do anything with equinox - both when installing from pip and from the master I get an import error, even when running
import equinox
print(equinox.__version__) # throws import error.

Wow, that's a good reminder to drink enough coffee...
Thanks!


On demand downloading of SLRU segments

Problem
See https://github.com/neondatabase/cloud/issues/8673
Summary of changes
If SLRU segment is not found locally, then download it from PS
Checklist before requesting a review

[ ] I have performed a self-review of my code.
[ ] If it is a core feature, I have added thorough tests.
[ ] Do we need to implement analytics? if so did you add the relevant metrics to the dashboard?
[ ] If this PR requires public announcement, mark it with /release-notes label and add several sentences in this section.

Checklist before merging

[ ] Do not forget to reformat commit message to not include the above checklist

Replaced with https://github.com/neondatabase/neon/pull/6151

thanks! That one has a much better diff.


Revert "Common C integer types (#128)"

This reverts commit 5e801e857662819d9bdb15df7dbb49d9ed60bb66.
By bumping the version number we can let pub get automatically upgrade from the 1.2.0 dev release. We had already retracted 1.2.0 stable, but we don't want to retract the dev release because ffigen dev releases depend on it.
Also, this cleans up the main branch of the repo to reflect the latest stable release of the package.

So iiuc, this change means that package:ffi supports SDK versions down to 2.12.0, but if the user wants the ABI specific types, they have to use version 2.17.0 or higher? Maybe we should mention that in the readme or something?

There are no ABI-specific types in this package at all. Unless they were using the dev release, they won't have ever seen them. Maybe adding it to the readme will add more confusion than clarification for people.

The base branch restricts merging to authorized users.

cc @mit-mit


TypeError: callback is not a function

Hi, I'm trying to run an event every time the page is refreshed, but I'm getting this error.
Error in nextTick: "TypeError: callback is not a function
this is my component
<datatable :columns="columns" :data="getRows" :per-page="paginate" ref="myTable"></datatable>

getRows: function (info, callback) {
      console.log(info)
      callback([], 5);
    },

+1

Returning the following object works for me.
return {     rows: response.data,     totalRowCount: response.total, };
Reference: https://gerkindev.github.io/vuejs-datatable/globals.html#tdatafn


[Feature] Replace Newtonsoft.Json.Schema with NJsonSchema

Newtonsoft.Json.Schema is licensed under AGPL and can require a commercial license. We should replace it with NJsonSchema which has an MIT license.

Fixed by #3


Create Dockerfile

Creating a pull request with my new branch against master.

I'm not sure what I did wrong.


fix(tests): check before create new product type

There was an issue that more than 1000 product types were created. This is the limit of CTP: https://docs.commercetools.com/api/limits#product-types. So, we need to ensure that the product type is created only if it does not exist. This PR checks if the product type exists before creating a new one.

Hi @lojzatran, can we get a description of what this PR or maybe what it is trying to achieve? Thanks

Hi @lojzatran, can we get a description of what this PR or maybe what it is trying to achieve? Thanks

Hi @ajimae, I added the description.


Improve tests

In the project's code instances of NotSet class never used - only class object itself. Because of this in the tests also should be used only class objects and not it's instances.

Thanks!


minke-session get stuck on TimeLimitExceeded

Summary:
If an celery-task run into TimeLimitExceeded-exception, the corresponding minke-session will get stuck, because minke doesn't track those exceptions.
Steps to Reproduce:
Define and run a session that tooks longer than the time-limit the celery-deamon was started with.
Expected Results:
The session's proc-state was set to failed. An error-message was added.
Actual Results:
Nothing happens. The session is in running-state forever. The host kept locked.

The easiest workaround is to increase the time-limit for celery.


[AUTOMATIC BUMP] Updates purchases-hybrid-common to 10.5.1

This is an automatic bump.
Updates purchases-hybrid-common to 10.5.1

          1 Message

:book:
Size increase: 0.00 KB

  Generated by :no_entry_sign: Danger


DNS Issues

I'm trying to install Postal on google cloud with a single IP to test things out.
I am unable to setup DNS settings. I have been trying to do this for the last 3 days non stop.
Any help will be appreciated!

SPF Record
WARNING No SPF record exists for this domain
You need to add a TXT record at the apex/root of your domain (@) with the following content. If you already send mail from another service, you may just need to add include:spf.postal.example.com to your existing record.
v=spf1 a mx include:spf.postal.example.com ~all
DKIM Record
GOOD Your DKIM record looks good!
You need to add a new TXT record with the name postal-GprRIB._domainkey with the following content.
v=DKIM1; t=s; h=sha256; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDjLVm3i//VlMa2XOrmyjdDN8xgXRtDnhj0C65bvj18wCNzm8lop3g0uriL318Wz5Bk3RswrU7Zb74cgJavIlGLyHyJO7S7G3Txn7JZPVFbk8/k4FsF30z7CepnbxiOGokoXCUO5oNBlSYw85gvP1iNS2ygyr19oqwGOkUx6adHDQIDAQAB;
Return Path
OK There's no return path for this domain. This is OK but we recommend adding the record to improve deliverability and achieve DMARC alignment.
This is optional but we recommend adding this to improve deliverability. You should add a CNAME record at psrp.drspy.ml to point to the hostname below.
rp.postal.example.com
MX Records
OK None of the MX records for this domain point to us. Incoming mail won't be sent to us.
If you wish to receive incoming e-mail for this domain, you need to add the following MX records to the domain. You don't have to do this and we'll only tell you if they're set up or not. Both records should be priority 10.
mx.postal.example.com

===============================
Update :

SPF Record
WARNING No SPF record exists for this domain

You need to add a TXT record at the apex/root of your domain (@) with the following content. If
you already send mail from another service, you may just need to add
include:spf.postal.example.com to your existing record.

v=spf1 a mx include:spf.postal.example.com ~all

Domain: domain.ml ( I am not using subdomain )

DKIM Record
GOOD Your DKIM record looks good!

#Any remarks on this?
Return Path
OK There's no return path for this domain. This is OK but we recommend adding the record to
improve deliverability and achieve DMARC alignment.

#Any remarks on these?
MX Records
OK None of the MX records for this domain point to us. Incoming mail won't be sent to us.

Help me out with SPF ( no subdomain, plain root )

as a newbie and after 40+ hours, I made it this far =]

what's in your postal.yml file?
nano /opt/postal/config/postal.yml
Make sure you update it with your domain name. Then stop postal, initialize it, and start it.

nano /opt/postal/config/postal.yml

Thank you.
I tried initializing it and got error
root@newbie:~# nano /opt/postal/config/postal.yml
root@newbie:~# postal stop
Stopped web.1 (PID: 30062)
Stopped worker.1 (PID: 30064)
Stopped cron.1 (PID: 30066)
Stopped smtp.1 (PID: 30069)
Stopped requeuer.1 (PID: 30071)
Supervisor will be stopped when processes are stopped.
Waiting for supervisor to stop...
Supervisor has stopped
root@newbie:~# postal initialize
Initializing database
rake aborted!
ActiveRecord::ProtectedEnvironmentError: You are attempting to run a destructive action against your 'production' database.
If you are sure you want to continue, run the same command with the environment variable:
DISABLE_DATABASE_ENVIRONMENT_CHECK=1
/opt/postal/vendor/bundle/ruby/2.3.0/gems/activerecord-<IP_ADDRESS>/lib/active_record/tasks/database_tasks.rb:61:in check_protected_environments!' /opt/postal/vendor/bundle/ruby/2.3.0/gems/activerecord-<IP_ADDRESS>/lib/active_record/railties/databases.rake:13:in block (2 levels) in <top (required)>'
/opt/postal/vendor/bundle/ruby/2.3.0/gems/rake-12.3.2/exe/rake:27:in <top (required)>' Tasks: TOP => db:schema:load => db:check_protected_environments (See full trace by running task with --trace) root@newbie:~# postal initialize Initializing database rake aborted! ActiveRecord::ProtectedEnvironmentError: You are attempting to run a destructive action against your 'production' database. If you are sure you want to continue, run the same command with the environment variable: DISABLE_DATABASE_ENVIRONMENT_CHECK=1 /opt/postal/vendor/bundle/ruby/2.3.0/gems/activerecord-<IP_ADDRESS>/lib/active_record/tasks/database_tasks.rb:61:in check_protected_environments!'
/opt/postal/vendor/bundle/ruby/2.3.0/gems/activerecord-<IP_ADDRESS>/lib/active_record/railties/databases.rake:13:in block (2 levels) in <top (required)>' /opt/postal/vendor/bundle/ruby/2.3.0/gems/rake-12.3.2/exe/rake:27:in <top (required)>'
Tasks: TOP => db:schema:load => db:check_protected_environments
(See full trace by running task with --trace)

DISABLE_DATABASE_ENVIRONMENT_CHECK=1 postal initialize
didn't help.

what's in your postal.yml file? Use command below, and paste here
nano /opt/postal/config/postal.yml

example.com suggests your config file needed setting up fully first.
If your domain definitely has an SPF record, you can use whatsmydns.net to find out if that record is applying properly around the internet.
Lastly, do not run postal initialise if you are not installing as it can delete your data.


Move "Starter - Carbon Emissions" from "Advanced Tutorials" to "Getting Started" as CLI path

Migrated from GitLab: https://gitlab.com/meltano/meltano/-/issues/1001
Originally created by @DouweM on 2019-09-18 09:42:05

The Getting Started guide follows directly after the Installation guide, and takes first time users through setting up their first project and ELT pipeline, and briefly touches on the Orchestrate and Analyze steps. It suggests that people choose their own project name and extractor, loader, and transforms, but I think we can reasonably assume that most people who are trying Meltano out for the very first time will just end up using the "Fast Path" recommendations: tap-carbon-intensity, target-sqlite, and transform: skip, which are also the options picked in the screenshots.
At the end of the Getting Started guide, the user is then recommended to check out the Advanced Tutorials page to learn about more Meltano recipes and functionality, which takes them to the "Starter - Carbon Emissions" tutorial at the top of that page. This tutorial then again takes the new Meltano user through setting up a basic first project and ELT pipeline, also using tap-carbon-intensity and target-sqlite, but this time using the CLI as opposed to the UI. The result is that the user will feel like they're being asked to do the exact same thing two times in slightly different ways.
Instead of having our users go through both the UI and CLI tutorials in order, and framing the CLI approach as "Advanced", I think we could move the CLI tutorial to the Getting Started page as an alternative path to the default UI path, since both tutorials are already effectively equivalent and both paths are equally valid next steps after installation.
I think we can also explicitly instruct the user to use the tap-carbon-intensity and target-sqlite "Fast Path" options in the UI tutorial, like we already do in the CLI tutorial, in the interest of keeping it simple for a new user and to ensure the screenshots and instructions are accurate.
That means we wouldn't have a guide anymore that takes a user through setting up a Meltano project with a custom name, extractor, loader, etc, that they can use for the real-world problem they mean to solve, but they wouldn't be ready to do that anyway until they've gone through some of the other Advanced Tutorials, and learned some more about how Meltano works with different and custom extractors, loaders, transforms, models, etc. Once they've done that, the technical documentation on CLI and UI functionality will likely suffice to help them set up their own project.

View 11 previous comments from the original issue on GitLab


iOS: On Tile mode, swiping every other story is prevented (see video)

I'm using the same amount of force every time, but the story won't advance,
https://user-images.githubusercontent.com/44229/118561927-ccaf6e00-b739-11eb-8921-539701a8a3dd.MP4

That's a strange one. The paging mechanism is unchanged from how it's worked for years, but I do confirm that it seems a bit more finicky in portrait tile mode.
The way the paging works (as you implemented it) is it changes pages when scrolling at least halfway across the page.


Cached Data Corruption

Summary
Caching in whisper-burn becomes corrupted when the Whisper logits output is not cloned before computing log probabilities. This issue occurs on both CUDA and CPU when using burn-tch, but not with WGPU. The root cause seems to be a bug in burn-tch, tch, or libtorch in which a pointer mutates data pointed to by a different pointer.
Steps to Replicate

Check out project branch: https://github.com/Gadersd/whisper-burn/tree/cache_bug

Run whisper-burn with burn-tch backend

Observe corrupted outputs when cloning is disabled (line 272 of transcribe.rs)

Depth: 20
Diff = 43.029815673828125
Depth: 21
Diff = 43.029808044433594

No corruption occurs when cloning:

Depth: 20
Diff = 0.0002593994140625
Depth: 21
Diff = 0.00017833709716796875

Expected vs Actual Behavior

Expected: Cached data remains uncorrupted regardless of cloning
Actual: Corruption occurs without cloning

Root Cause Analysis

Issue only occurs with tch backend, not WGPU
Likely a bug in unsafe code in burn-tch, tch, or libtorch

Code Snippet Demonstrating Issue
// BUGGED! Should clone because SOMEONE used unsafe code somewhere
let log_probs = log_softmax(logits_tensor, 0).into_data().value;

//let log_probs = log_softmax(logits_tensor.clone(), 0).into_data().value;

I've been able to produce a cache bug on wgpu as well. See branch https://github.com/Gadersd/whisper-burn/tree/wgpu_cache_bug.
Running with wgpu with a modification of one line of code results in transcription failure.
Line 654 of model/mod.rs
Changing qkv_attention(q2, k2, v2, None, self.n_head) to qkv_attention(q, k2, v2, None, self.n_head) results in corrupted output but diff demonstrates that q is exactly equal to q2 in each iteration.
let diff = (q.clone() - q2.clone()).flatten::<1>(0, 2).abs().max().into_scalar().elem::<f64>();
println!("Diff = {}", diff);

let wv = qkv_attention(q, k2, v2, None, self.n_head);

This is surely a bug with an inplace operation, we should investigate which tensor is modified, but shouldn't.

For the latter example the query cache is modified when it shouldn't be. Replacing
let wv = qkv_attention(q, k2, v2, None, self.n_head); with
let wv = qkv_attention(q.clone(), k2, v2, None, self.n_head); still results in a corrupted cache. However, using let wv = qkv_attention(Tensor::from_data(q.clone().into_data()), k2, v2, None, self.n_head); works without issue.
Evidently cloning isn't actually producing a clone.

I have quite a hard time looking into the codebase and trying to see what may be causing the problem. Do you have an intuition for what kind of situation might create this bug (probably related to caching) and how to create a minimal example to reproduce? This would be a huge help!

It is not an easy bug to reproduce or create a minimal example for as it doesn't seem to occur in every case and behaves differently depending on the backend. My intuition tells me it smells like an unsafe code problem. I never write unsafe code so I think it probably originates in burn's tensor memory management code.
My previous example in which passing a cloned tensor to a function modifies the original tensor is a strong indication that there is memory violation in an unsafe code block somewhere. The caching code which I pulled from burn clones the tensors so the caches and tensors returned from forward_autoregressive should occupy different memory locations if one is modified but for whatever reason sometimes the memory separation does not happen properly and the modification of one leads to a modification of the other. I encountered the same kind of issue in both the burn-tch (GPU and CPU) and burn-wgpu backends so I don't think this is a backend specific problem.

I have isolated the bug further by eliminating the caching. The caching is apparently not the cause of the bug. Adding a single clone() to q at line 658 of model/mod.rs in the wgpu_cache_bug branch corrupts the results as shown below.
Running command cargo run --release --bin transcribe --features wgpu-backend tiny_en audio16k.wav en transcription.txt
Line 658 in model/mod.rs:
let wv = qkv_attention(q.clone(), k2, v2, None, self.n_head);
println!("Data: {:?}", wv.clone().slice([0..1, 0..1, 0..20]).into_data());

Result:
Data: Data { value: [0.22148757, 0.1708659, -0.20998125, -0.05612477, 0.2864229, -0.21298157, -0.38640028, 0.016380915, -0.04644726, 0.29196838, -0.005733948, -0.14728771, -0.1574831, -0.078477256, -0.3404586, 0.13537605, -0.20357189, 0.107251376, -0.052113228, 0.114457615], shape: Shape { dims: [1, 1, 20] } }
Depth: 3
Chunk 0:  10.

Transcription finished.

For
let wv = qkv_attention(q, k2, v2, None, self.n_head);
println!("Data: {:?}", wv.clone().slice([0..1, 0..1, 0..20]).into_data());

The result is correct:
Data: Data { value: [0.18244137, 0.08941843, -0.16000068, 0.03786571, 0.18850096, -0.19262771, -0.2876657, -0.0066655697, -0.068978235, 0.30545524, 0.017571663, -0.16025116, -0.18520899, -0.07191827, -0.29022524, 0.115666814, -0.1865571, 0.08898805, 0.061428268, 0.1264473], shape: Shape { dims: [1, 1, 20] } }
Depth: 22
Chunk 0:  Hello, I am the whisper machine learning model. If you see this as text then I am working properly.

Transcription finished.

What might be the cause of this? burn's reference counting going awry?

@Gadersd I don't think the reference counting is creating a problem, but I may be wrong. Perhaps a kernel is wrongly implemented for the inplace operation, or the readonly operation, which isn't verified by our test suite. Ultimately, what we need is a scenario with custom tensors where we can reproduce the bug:
fn test() {
    let input1 = Tensor::ones();
    let input2 = Tensor::ones();
    let input3 = Tensor::ones();

    let output_no_clone = a_function(input1, input2, input3);

    let input1 = Tensor::ones();
    let input2 = Tensor::ones();
    let input3 = Tensor::ones();

    let output_with_clone = a_function(input1.clone(), input2.clone(), input3.clone());

    output_no_clone.into_data().assert_approx_eq(&output_with_clone.into_data(), 3);
}

It would be extremely helpful to fix the current bug. I also think we should create such a test suite for all operations automatically for all backends.

@Gadersd Also, make sure you use the main version of wgpu, I remember a flaky test existing with wgpu that was related to data corruption.

Running cargo update fixed that specific example, but the data is still corrupted in other places. This is one of those tricky bugs that seems to pop up in random places and manifests in different ways as the code is modified. I could probably spend weeks on this so I'll have to call it quits for now. Hopefully someone will eventually find a minimal example of it that is easier to analyze.

I gave it one more go and found that the main line causing issue is
let wv = qkv_attention(q, k2, v2, None, self.n_head);. Simply using
let q = Tensor::from_data(self.query.forward(x).into_data());
rather than
let q = self.query.forward(x);
causes wv to be corrupted. This issue is highly contextual. Using Tensor::from_data for q doesn't lead to corruption when the exact same input tensor values are tested in the main function. Due to the contextual nature of this bug I don't think I will be able to find a minimal example. Unfortunately, this bug may exist in the wild for a while.

@Gadersd Could you check if the new fix is solving your problem? https://github.com/tracel-ai/burn/pull/1434 I believe it should.

Probably it's fixed via #1434


jsonpb: forward and backward compatible enums

if an invalid enum string is encountered in a received json object, the serialization of the whole object becomes default for every field after the offending enum, even when the rest of the fields are perfectly valid. Is there a reason for this behaviour ? Unmarshall has no field to disable this behavior.

I'm not sure I understand your statement, can you provide an example?

So if I have an enum in protobuf that has UNKNOWN=0, NY=1, NJ=2 , and I get a value for that enum I wasn't expecting call it CT=3, the json deserialization of the whole struct fails.

I get a value for that enum I wasn't expecting

You mean you are trying to unmarshal a message with "CT" in the JSON, but CT is not defined in the proto file? Then deserialization failure is expected. There is no mapping from the unknown name CT to some integer value.

Shouldn't it be UNKNOWN instead of giving up on the rest of the structure?
On Fri, Jun 22, 2018, 5:24 PM Joe Tsai<EMAIL_ADDRESS>wrote:

I get a value for that enum I wasn't expecting
You mean you are trying to unmarshal a message with "CT" in the JSON, but
CT is not defined in the proto file? Then deserialization failure is
expected. There is no mapping from the unknown name CT to some integer
value.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/golang/protobuf/issues/636#issuecomment-399586148,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AEz5-VLKyJRYuQosxGvyEGbERMmmvl6Zks5t_WBpgaJpZM4Um2Kh
.

Why? You only happened to name the first enum "UNKNOWN" such that it seems to make sense as the default for unknown enums. What you named enum 0 as "BURGERS"?

Ok but in the binary implementation if I get 3 won't it just default to 0

Also the whole rest of the structure is set to their default values after you return an error.

In the binary representation, if you get a 3, you will store 3 as the enum value, even though is 3 is a not a declared enum value.
In JSON, this behavior should also occur if the JSON input had a numeric value instead of a string.

Ok so why is a string different? And why does encountering an invalid string mean the rest of the members in the structure need to be set to their defaults just because one enum is invalid?

Ok so why is a string different?

The underlying kind for an enum is an int32, there is no place to store the unknown enum value in string form.

rest of the members in the structure need to be set to their defaults

That's not happening. A parsing error is a fail-fast operation, leaving the struct (likely) in it's zeroed state, which happens to be the default values for most fields.

Closing this as working as intended. Whether we support a form of "unknown fields by name" is beyond the scope of Go protobufs, and would have to be an issue raised up in the mainline implementation at github.com/google/protobuf since we follow their specifications.


Bump k8s envtest version

Description
Changes proposed in this pull request:

bump dependenies
bump envtest

Related issue(s)

/rerun-all


Add no-unnecessary-qualifier rule

PR checklist

[X] Addresses an existing issue: #1987
[X] New feature, bugfix, or enhancement

[X] Includes tests

[X] Documentation update
[X] Enable CircleCI for your fork (https://circleci.com/add-projects)

What changes did you make?
Added the no-unnecessary-qualifier rule, which warns for A.x if just x would have the same meaning.

@andy-hanson  @adidahiya how about naming this shortest-qualifier?

The rule is about notifying you that a certain node in your AST can be removed if it's unnecessary. It doesn't measure the length of anything.
If you had a rule that warned on !!x (where x is of type boolean), you wouldn't call it shortest-boolean-expression, you'd call it no-unnecessary-bang-bang, right?
Open to name changes, but shortest implies that it compares multiple possible qualifiers for length.

My concern is that no-unnecessary-qualifier sounds like a binary rule, like either have a qualifier or don't have a qualifier. For example, if you're in the a.b.c namespace, it would only warn if the qualifier exactly matches a.b.c. Maybe it's because I don't view a as a qualifier for b.c (but should?) I don't feel that strongly about changing the name either way.

In my case, I'm just trying to eliminate single qualifiers -- X.foo in namespace X.
But in #1987 there were multiple qualifiers and a few, but not all, could be removed.
I can see how no-unnecessary-qualifier sounds like it does nothing for the latter case. But shortest-qualifier sounds like it does nothing for the former case.
Will think about this later.

This should work for enum too. At least the name implies that. Don't know if it does already, but there is no test for it.
enum Foo {
    Bar,
    Baz = Foo.Bar // could be written as Baz = Bar
}

@andy-hanson thanks! name is ok


Refine usage of defer in config

[x] All tests passed. If this feature is not already covered by the tests, I added new tests.
[x] All static analysis checks passed.
[x] This pull request is on the dev branch.
[x] I used gofmt for formatting the code before submitting the pull request.

Refine atomic config command changes in common/commands/ConfigCommand.Run(), int https://github.com/jfrog/jfrog-cli-core/pull/367, and also mentioned in https://github.com/jfrog/jfrog-cli-core/pull/352.
Change Details

The unlock and debug logging are more clean (IMO) when performed in an anonymous function rather than stacking defer statements when possible. Note that I've accounted for defer executing in LIFO order.
The defer of the anonymous functon containing the lockFile.Unlock() gets executed after the return but before the function returns to the caller (https://go.dev/ref/spec#Defer_statements). This means the setting and check for e not being nil and setting err have no effect on what is returned as might be the intention. See below for more. This change refines the code while leaving the current behavior in place because I know a lot of work went into shoring up the file lock race conditions. If returning an error from lockFile.Unlock() is the intention, more invasive changes must be made, and this isn't the only usage of this pattern (again, see below).
My gofmt that's part of 1.17.11 really wants to reorganize the imports so I left those changes in since the README explicity states to use gofmt.
Fixed an extra / in the comment as mentioned in https://github.com/jfrog/jfrog-cli-core/pull/352#discussion_r872979948.

For bullet point number 2, I see this pattern scattered throughout the code base:
defer func() {
  e := funcThatCanReturnError()
  if err == nil {
    err = e
  }
}()

Where it is expected that when the surrounding function returns err, could contain the err value set in the defer. This is not correct. You can observe the true behavior by running the following code which I've also placed in the Go Playground at https://go.dev/play/p/gOQB-jPRu4B:
func deferTest() error {
  err := errors.New("top")
  defer func() { err = errors.New("defer") }()
  return err
}

func deferPatternTest() error {
  var err error = nil
  defer func() {
    e := func() error { return errors.New("defer") }()
    if err == nil {
      err = e
    }
  }()
  return err
}

func main() {
  fmt.Println(deferTest())
  fmt.Println(deferPatternTest())
}

which outputs
$ go run deferdemo.go
top
<nil>

I have read the CLA Document and I hereby sign the CLA

@arcanericky, thanks for your great investigation. It's much appreciated!.
Regarding your bullet point number 2, I believe the right fix will require naming the return value so that the error catch would work.
I've implemented it on the playground demo here.

Yes, your solution works great and is simpler than I thought it would be. I'm sure it was overlooked here because in at least a few locations I see where your solution is coded and avoids the problem, though I have found a few more "opportunities".
In the case of ConfigCommand.Run(), more changes were required because the results of function calls are immediately returned. This playground demo matches the code in ConfigCommand.Run() a bit more. My fix is to assign the result of the function calls to err and return at the end. For readability, I like removing err from the return statements. I've pushed my changes with these additions.

It's important when you review this to keep in mind the original intention may be to have the return values from the function calls in the switch override any error that may occur with the lockFile.Unlock(). Being an ourside observer, it's tough for me to tell with no comments here.
If this is the case, you should dismiss this PR or have me withdraw it.

I've reverted to allowing the function calls in the switch to override any setting of err in the defer. I refuse to be responsible for breaking current behavior (except the origin defer problem), intended or not.

Hi, @arcanericky.
Agree with the first bullet, adjacent defers should be indeed collected together inside an anonymous function.
Regarding the second bullet, the reason behind this order is to avoid deadlock issues.
If somehow the lock would be created and then some error would happen, we must add the unlock function to our defer calls before throwing the error.
Combining the previous order with the (error err) convention will achieve both goals here.
Here is the changed code:
func (cc *ConfigCommand) Run() (err error) {
	log.Debug("Locking config file to run config " + cc.cmdType + " command.")
	mutex.Lock()
	defer func() {
		mutex.Unlock()
		log.Debug("Config " + cc.cmdType + " command completed successfully. config file is released.")
	}()

	lockDirPath, err := coreutils.GetJfrogConfigLockDir()
	if err != nil {
		return
	}
	lockFile, err := lock.CreateLock(lockDirPath)
	defer func() {
		e := lockFile.Unlock()
		if err == nil {
			err = e
		}
	}()
	if err != nil {
		return
	}

	switch cc.cmdType {
	case AddOrEdit:
		err = cc.config()
	case Delete:
		err = cc.delete()
	case Use:
		err = cc.use()
	case Clear:
		err = cc.clear()
	default:
		err = fmt.Errorf("Not supported config command type: " + string(cc.cmdType))
	}
	return
}

Your PR looks good @sverdlov93.
Once my PR will be reviewed I will merge it and close that one.


Updated docs for dapr/components-contrib#2104

New metadata option for MQTT.
See dapr/components-contrib#2104

@ItalyPaleAle - One question. Do you think any part of the conversation from the issue, should be covered in the usage section, or is there enough info on the metadata table description. Just making sure that the use of the new Producer field is clear (given the backward compatibility)

@msfussell it seems to me there could be enough info, but WDYT? As someone who wasn't involved like I was, is this clear enough to you?


Rename execution::transform to execution::then and execution::detach to execution::start_detached

This is in line with https://wg21.link/p2300.

Performance test reportHPX PerformanceComparisonBENCHMARKNO-EXECUTORFuture Overhead - Create Thread Hierarchical - Latch?InfoPropertyBeforeAfterHPX Datetime2021-11-11T08:14:57+00:002021-11-12T09:42:37+00:00HPX Commit96a2e4bd1c76207dea8d5302784962c927882406846393ffacc2cd5a6cdc19b74710ea907273054dClusternamedaintdaintDatetime2021-11-11T09:28:13.071121+01:002021-11-12T10:58:47.819254+01:00EnvfileHostnamenid00006nid01607Compiler/apps/daint/SSL/HPX/packages/llvm-11.0.0/bin/clang++ 11.0.0/apps/daint/SSL/HPX/packages/llvm-11.0.0/bin/clang++ 11.0.0ComparisonBENCHMARKFORK_JOIN_EXECUTOR_DEFAULT_FORK_JOIN_POLICY_ALLOCATORPARALLEL_EXECUTOR_DEFAULT_PARALLEL_POLICY_ALLOCATORSCHEDULER_EXECUTOR_DEFAULT_SCHEDULER_EXECUTOR_ALLOCATORStream Benchmark - Add(=)(=)(=)Stream Benchmark - Scale(=)(=)(=)Stream Benchmark - Triad(=)(=)(=)Stream Benchmark - Copy(=)(=)(=)InfoPropertyBeforeAfterHPX Datetime2021-11-10T19:14:21+00:002021-11-12T09:42:37+00:00HPX Commit71d8dbe40b737be02ea734f9d98fcc0b1e21f01a846393ffacc2cd5a6cdc19b74710ea907273054dClusternamedaintdaintDatetime2021-11-10T20:28:18.266961+01:002021-11-12T10:59:03.058472+01:00EnvfileHostnamenid00120nid01607Compiler/apps/daint/SSL/HPX/packages/llvm-11.0.0/bin/clang++ 11.0.0/apps/daint/SSL/HPX/packages/llvm-11.0.0/bin/clang++ 11.0.0Explanation of SymbolsSymbolMEANING=No performance change (confidence interval within ±1%)(=)Probably no performance change (confidence interval within ±2%)(+)/(-)Very small performance improvement/degradation (≤1%)+/-Small performance improvement/degradation (≤5%)++/--Large performance improvement/degradation (≤10%)+++/---Very large performance improvement/degradation (>10%)?Probably no change, but quite large uncertainty (confidence interval with ±5%)??Unclear result, very large uncertainty (±10%)???Something unexpected…

bors merge


Removing unsupported proto files from the repo

Problem
A discussion on Discord brought to attention that some old proto files haven't been pulled out of the repo despite this not being supported by the network.
https://github.com/hashgraph/hedera-protobufs/blob/main/services/crypto_add_live_hash.proto
Solution

Remove old protos

Alternatives
No response

Duplicate of https://github.com/hashgraph/hedera-protobufs/issues/159

Stale.  Please reopen if still needed.


fixselect without from clause's result is wrong

Proposed changes
select 1 where false should return empty result set. The previous code lost where clause in LogicalPlanBuilder which would get wrong result. This pr fix it.
This is a 2.0 branch's bug, master don't have such problem.

Further comments
If this is a relatively large or complex change, kick off the discussion at<EMAIL_ADDRESS>by explaining why you chose the solution you did and what alternatives you considered, etc...

run buildall

run buildall

run buildall


Undefined variable issue in 0.77.6

With the latest release of #1213, this line raises a KeyError when a variable is used in a query, but not defined in the payload under the key variables.
This used to work, and, I guess, is ok when the variable/argument is optional.
I do not know what the specs are, meaning if variable definition should be enforced all the way. If it's the way to go, maybe there should be a validation step/graceful way to handle such a case.
If not, return info.variable_values.get(name) should do the trick.

@jkimbo do you know what the spec says?
I think I've seen other frameworks fail in this case, but I might be wrong

Hmm I'm not sure. I would have assumed validation would have failed if you were not passing a variable that was defined in the query but I could be wrong. Will check.

Can't find anything explicit about it in the spec but @g-as makes a good point that if variable/arguments are optional then you shouldn't have to pass them in the variable payload. So I'll make the change to .get(name)

@g-as should be fixed in the latest version. Thanks for reporting the bug!

Cheers.


Add nonroot user to base image

Feature request
Could you add nonroot user to base image?
Like this
FROM gcr.io/tekton-releases/github.com/tektoncd/pipeline/cmd/git-init:v0.18.1
RUN addgroup -S -g 65532 nonroot && adduser -S -u 65532 nonroot -G nonroot
ENV HOME=/home/nonroot

I'd like to run Task as nonroot user as much as possible. But there is no prefer user in the base image. For example, not in gcr.io/tekton-releases/github.com/tektoncd/pipeline/cmd/git-init
Use case
Run git-clone task as nonroot user.
https://github.com/tektoncd/catalog/tree/master/task/git-clone/0.2
I tested with following TaskRun.
apiVersion: tekton.dev/v1beta1
kind: TaskRun
metadata:
  generateName: git-clone-
spec:
  params:
  - name: revision
    value: main
  - name: url
    value: git@github.com:TakiTake/private.git
  serviceAccountName: default
  taskRef:
    kind: Task
    name: git-clone
  timeout: 1h0m0s
  workspaces:
  - emptyDir: {}
    name: output
  podTemplate:
    securityContext:
      runAsNonRoot: true
      runAsUser: 65532

Result
$ tkn tr logs
? Select taskrun: git-clone-tpqf7 started 23 seconds ago
task git-clone has failed: "step-clone" exited with code 1 (image: "gcr.io/tekton-releases/github.com/tektoncd/pipeline/cmd/git-init@sha256:406e9a4f9d10dbc59e141c1584d1d4dcff995012071eb425a3c117ec0dfe16af"); for logs run: kubectl -n default logs git-clone-tpqf7-pod-mpf4c -c step-clone

[clone] 2021/01/25 00:42:00 warning: unsuccessful cred copy: ".ssh" from "/tekton/creds" to "/": unable to create destination directory: mkdir /.ssh: permission denied
[clone] + CHECKOUT_DIR=/workspace/output/
[clone] + '[[' true '==' true ]]
[clone] + cleandir
[clone] + '[[' -d /workspace/output/ ]]
[clone] + rm -rf '/workspace/output//*'
[clone] + rm -rf '/workspace/output//.[!.]*'
[clone] + rm -rf '/workspace/output//..?*'
[clone] + test -z
[clone] + test -z
[clone] + test -z
[clone] + /ko-app/git-init -url git@github.com:TakiTake/private.git -revision main -refspec  -path /workspace/output/ '-sslVerify=true' '-submodules=true' -depth 1
[clone] {"level":"error","ts":1611535322.160029,"caller":"git/git.go:54","msg":"Error running git [config --global core.sshCommand ssh -o StrictHostKeyChecking=accept-new]: exit status 255\nerror: could not lock config file //.gitconfig: Permission denied\n","stacktrace":"github.com/tektoncd/pipeline/pkg/git.run\n\tgithub.com/tektoncd/pipeline/pkg/git/git.go:54\ngithub.com/tektoncd/pipeline/pkg/git.Fetch\n\tgithub.com/tektoncd/pipeline/pkg/git/git.go:101\nmain.main\n\tgithub.com/tektoncd/pipeline/cmd/git-init/main.go:52\nruntime.main\n\truntime/proc.go:204"}
[clone] {"level":"warn","ts":1611535322.1600974,"caller":"git/git.go:103","msg":"error disabling strict host key checking: exit status 255"}
[clone] {"level":"fatal","ts":1611535322.1601202,"caller":"git-init/main.go:53","msg":"Error fetching git repository: error disabling strict host key checking: exit status 255","stacktrace":"main.main\n\tgithub.com/tektoncd/pipeline/cmd/git-init/main.go:53\nruntime.main\n\truntime/proc.go:204"}

container step-clone has failed  : [{"key":"StartedAt","value":"2021-01-25T00:42:02.118Z","type":"InternalTektonResult"}]

/cc @sbwsg

/cc @sbwsg

Thank you so much!


Added 3 logo choices (for Light and Dark Mode)

Fulfilled Step-1 of Issue #11
Added:

3 logo choices with their variation in both Light and Dark Mode (In PNG format) - all files in the assets folder
Kindly review the same and select a logo so that I can proceed with Step 2 for updating the Readme banner

I like the 2nd logo. I would like to know your opinion as well!
Also do you think the name BlogSite should be changed to something better?

I like the 2nd logo. I would like to know your opinion as well!
Also do you think the name BlogSite should be changed to something better?

I like the 2nd logo. I would like to know your opinion as well!
Also do you think the name BlogSite should be changed to something better?

I would also prefer the 2nd logo! And we can surely change the name if you want, since you are the creator of the project, something that might suit the logo too.
Also, do I need to create a new pull request after updating the banner?

I like the 2nd logo. I would like to know your opinion as well!
Also do you think the name BlogSite should be changed to something better?

I would also prefer the 2nd logo! And we can surely change the name if you want, since you are the creator of the project, something that might suit the logo too.
Also, do I need to create a new pull request after updating the banner?

@Pranav016 Maybe we can go with the name "Scribble" for the blog site as it gives an insight of what the project is for.

@Pranav016 Maybe we can go with the name "Scribble" for the blog site as it gives an insight of what the project is for.

@Pranav016 Maybe we can go with the name "Scribble" for the blog site as it gives an insight of what the project is for.

I'll not be changing name rn, maybe sometime in the future. I'll merge your branch after my class gets over, you can work on the banner till then. 2nd logo👍

@Pranav016 Maybe we can go with the name "Scribble" for the blog site as it gives an insight of what the project is for.

I'll not be changing name rn, maybe sometime in the future. I'll merge your branch after my class gets over, you can work on the banner till then. 2nd logo👍

@Pranav016 Maybe we can go with the name "Scribble" for the blog site as it gives an insight of what the project is for.

I'll not be change name rn, maybe some time later. You can start working on the banner now with 2nd logo ( light ). When you commit the banner, I'll merge the PR

@Pranav016 Maybe we can go with the name "Scribble" for the blog site as it gives an insight of what the project is for.

I'll not be change name rn, maybe some time later. You can start working on the banner now with 2nd logo ( light ). When you commit the banner, I'll merge the PR

@anubhab1710 Issue closed?

@anubhab1710 Issue closed?

@anubhab1710 Issue closed?

I am making a new pull request right now

@anubhab1710 Issue closed?

I am making a new pull request right now

I have made a new Pull Request with the changes. Please check

I have made a new Pull Request with the changes. Please check


feat: Sync list with ai.robots.txt

This updates our list of bots using ai.robots.txt
I've opened issues for the couple of items in the list that don't seem actually provided via User-Agent and instead must be in the robots.txt as a signal to opt-out of AI training. This includes the Google-Extended mentioned in #13, which we need to make a larger opinion on.
Closes #3

@davidmytton I've removed the AI category from those three entries. Hopefully this is good to go.


No return trip info from BSO bot.

🐛 Bug Report
I have been woodcutting elders for q week now and have not been getting minion return notifications saying it was done woodcutting or repeat trip or buttons for Halloween events in last few days.

#4654


fix: Adhere to Checkov security recommendations

Description
I ran Checkov against this repository and got two errors shown below:
Check: CKV_AWS_9: "Ensure IAM password policy expires passwords within 90 days or less"
        FAILED for resource: aws_iam_account_password_policy.this
        File: /iam-account/main.tf:9-21
        Guide: https://docs.bridgecrew.io/docs/iam_11

                9  | resource "aws_iam_account_password_policy" "this" {
                10 |   count = var.create_account_password_policy ? 1 : 0
                11 |
                12 |   max_password_age               = var.max_password_age
                13 |   minimum_password_length        = var.minimum_password_length
                14 |   allow_users_to_change_password = var.allow_users_to_change_password
                15 |   hard_expiry                    = var.hard_expiry
                16 |   password_reuse_prevention      = var.password_reuse_prevention
                17 |   require_lowercase_characters   = var.require_lowercase_characters
                18 |   require_uppercase_characters   = var.require_uppercase_characters
                19 |   require_numbers                = var.require_numbers
                20 |   require_symbols                = var.require_symbols
                21 | }

        Variable create_account_password_policy (of /iam-account/variables.tf) evaluated to value "True" in expression: count = ${var.create_account_password_policy ? 1 : 0}
        Variable max_password_age (of /iam-account/variables.tf) evaluated to value "0" in expression: max_password_age = ${var.max_password_age}
        Variable minimum_password_length (of /iam-account/variables.tf) evaluated to value "8" in expression: minimum_password_length = ${var.minimum_password_length}
        Variable allow_users_to_change_password (of /iam-account/variables.tf) evaluated to value "True" in expression: allow_users_to_change_password = ${var.allow_users_to_change_password}
        Variable hard_expiry (of /iam-account/variables.tf) evaluated to value "False" in expression: hard_expiry = ${var.hard_expiry}
        Variable require_lowercase_characters (of /iam-account/variables.tf) evaluated to value "True" in expression: require_lowercase_characters = ${var.require_lowercase_characters}
        Variable require_uppercase_characters (of /iam-account/variables.tf) evaluated to value "True" in expression: require_uppercase_characters = ${var.require_uppercase_characters}
        Variable require_numbers (of /iam-account/variables.tf) evaluated to value "True" in expression: require_numbers = ${var.require_numbers}
        Variable require_symbols (of /iam-account/variables.tf) evaluated to value "True" in expression: require_symbols = ${var.require_symbols}

Check: CKV_AWS_10: "Ensure IAM password policy requires minimum length of 14 or greater"
        FAILED for resource: aws_iam_account_password_policy.this
        File: /iam-account/main.tf:9-21
        Guide: https://docs.bridgecrew.io/docs/iam_9-1

                9  | resource "aws_iam_account_password_policy" "this" {
                10 |   count = var.create_account_password_policy ? 1 : 0
                11 |
                12 |   max_password_age               = var.max_password_age
                13 |   minimum_password_length        = var.minimum_password_length
                14 |   allow_users_to_change_password = var.allow_users_to_change_password
                15 |   hard_expiry                    = var.hard_expiry
                16 |   password_reuse_prevention      = var.password_reuse_prevention
                17 |   require_lowercase_characters   = var.require_lowercase_characters
                18 |   require_uppercase_characters   = var.require_uppercase_characters
                19 |   require_numbers                = var.require_numbers
                20 |   require_symbols                = var.require_symbols
                21 | }

        Variable create_account_password_policy (of /iam-account/variables.tf) evaluated to value "True" in expression: count = ${var.create_account_password_policy ? 1 : 0}
        Variable max_password_age (of /iam-account/variables.tf) evaluated to value "0" in expression: max_password_age = ${var.max_password_age}
        Variable minimum_password_length (of /iam-account/variables.tf) evaluated to value "8" in expression: minimum_password_length = ${var.minimum_password_length}
        Variable allow_users_to_change_password (of /iam-account/variables.tf) evaluated to value "True" in expression: allow_users_to_change_password = ${var.allow_users_to_change_password}
        Variable hard_expiry (of /iam-account/variables.tf) evaluated to value "False" in expression: hard_expiry = ${var.hard_expiry}
        Variable require_lowercase_characters (of /iam-account/variables.tf) evaluated to value "True" in expression: require_lowercase_characters = ${var.require_lowercase_characters}
        Variable require_uppercase_characters (of /iam-account/variables.tf) evaluated to value "True" in expression: require_uppercase_characters = ${var.require_uppercase_characters}
        Variable require_numbers (of /iam-account/variables.tf) evaluated to value "True" in expression: require_numbers = ${var.require_numbers}
        Variable require_symbols (of /iam-account/variables.tf) evaluated to value "True" in expression: require_symbols = ${var.require_symbols}

Motivation and Context
I'm creating this PR to align with Checkov recommendations from a security perspective.
References:
max_password_age = 90 | https://docs.bridgecrew.io/docs/iam_11
minimum_password_length = 14 | https://docs.bridgecrew.io/docs/iam_9-1
Breaking Changes
It can affect users using the current module as their policies will change after applying this.
How Has This Been Tested?
I have tested in our environments.

Hi @amontalban !
This is a breaking change for everyone who don't specify values.
If users want to comply with Checkov they should run checks of their real infrastructure (and not on this module as-is).
Closing this issue (because it is a breaking change).


total_repositories in DoT must ignore archived repos

total_repositories in dimensions-of-terrain.rb must ignore archived repos, don't count them.

@yegor256 Method Fbe.unmask_repos already rejects archival repositories, based on https://github.com/zerocracy/fbe/issues/46
Or need to duplicate the check here?

@Yegorov it's better to do an additional check here

@yegor256 may I take this one?

@Yegorov go ahead


Picking a process ID for attaching with the GDB debugger is not possible anymore

VSCode Version: 1.15.1
OS Version: Windows 7 Enterprise 6.1 (Build 7601: Service Pack 1)

I use the following launch.json configuration:
{
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Attach",
"type": "cppdbg",
"request": "attach",
"program": "C:/02_tools/00_executables/BT_RTSIM.exe",
"args": [],
"stopAtEntry": false,
"processId": "${command.pickProcess}",
"cwd": "${workspaceRoot}",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"miDebuggerPath": "c:/MinGW/bin/gdb.exe",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}
With version 1.12.2 it works as expected and I can select the process for connecting with the Debugger.:

Since version 1.15.0 I get the following error message:

Reproduces without extensions: Yes

Please file this against the VSCode c++ extension https://github.com/Microsoft/vscode-cpptools


IFluidLoadable  or IProvideFluidHandle ?

I see two possible paths:

Get rid of IFluidLoadable in favor of IProvideFluidHandle:

IFluidLoadable.handle -> IFluidLoadable.IFluidHandle
IFluidLoadable -> IProvideFluidHandle, remove IFluidLoadable
Remove IProvideFluidLoadable: implementers of this interface should instead implement only IProvideFluidHandle

Get rid of IProvideFluidHandle in favor of IFluidLoadable:

Replace all usage of IProvideFluidHandle to FluidLoadable (implementers and consumers).

I think the picture at the end of # 2 is not nice: we would have
IProvideFluidLoadable -> IFluidLoadable -> IFluidHandle.
That's 3 levels deep, and naming is not consistent.
So I vote to implement # 1.

@wes-carlson, assigning to you for consideration if you do not have any other work or blocked and waiting for something. In such case, please take a look. Otherwise this is low-priority item, feel free to keep it on backlog for as long as needed :)

related to #8169

I've been poking around in this area, and while i initially agreed that normalizing on IFluidHandle was the right approach, i know come around to using IFluidLoadable. The reason is more around the usage ergonomics, and the point of the delegation pattern.
If we look at it from a non-anonymous perspective, it looks like as follows
1) obj.handle.get()
2) obj.IFluidHandle.get()

in this case, which seems to be the more common case, i prefer option 1. I also think this furthers the goal of reducing usage of the provider pattern, which i feel is currently overused in non-anonymous use cases throughout our code.

I'm find with trying to get rid of both IFluidLoadable & IProvideFluidLoadable :)
But I have a feeling that there will be places where someone needs to do QI to interrogate object if it supports handles.
And if so, "handle" keyword is too short and generic so interrogating object for implementing handle property is likely not great.

In general i'd really like to minimize our dependence on and kind of QI within the fluid framework itself. As it feel like an application concern we unnecessarily take on. I actually think this is achievable especially if we do something like #8169
In the non-QI case i think the right path is just .handle and i'm not sure we really need any enforcement of even that.


Event readystatechange should be used as attribute solely

As stated here:
http://www.w3.org/TR/XMLHttpRequest/#event-handlers
Event 'readystatechange' should be defined as attribute
on xhr object.
Current implementation does not play well with jasmine-ajax
library. This fix allow application using Backbone.NativeAjax
to be tested with jasmine and jasmine-ajax library.

I'm not seeing where in the spec it says the event listener has to be assigned as a property, in fact, I'm seeing the opposite. That sounds like a bug in jasmine-ajax. (see also https://bugs.webkit.org/show_bug.cgi?id=15102 where they also say the opposite).
Regardless, it isn't a huge deal. Merging.


Expose location, clustered_by to dbt-spark

Implemented Location and Clustered By options which were not exposed as options.
https://docs.databricks.com/spark/latest/spark-sql/language-manual/create-table.html

I have a question though, how can I add some tests to verify if the sql statements which are generated are correct?

@drewbanin I've added some unit-tests for the macros as well

@jtcohen6 I've implemented the changes, let me know if I can do anything else

@jtcohen6 done, fixed renamed location and fixed pep8

Fantastic!!! 🥇

Maybe would be good to document the persist_docs feature as well?

Its not specific to spark, bigquery has the same feature. Eg i guess it should be documented at the dbt level?

For BQ it is on the main dbt website indeed.
We might want to add the same info here https://docs.getdbt.com/docs/profile-spark

I suggested additions of persist_docs  to the spark-specific page.

Btw, this feature (root_location) is incredible useful for the work at our current client!


Wrong screenshot used

Hi,
The screenshot in the second "Note" box is completely off - doesn't even come close to showing what is described, it looks like a DC's NTDS settings object in ldp.exe - by no means "an example of configuring these user rights to block local Administrator accounts and a domain's Administrator account from performing logons that should not be needed for these accounts"
PS: kudos to the content team for acting on feedback SUPER fast!
Stefan

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

ID: 19620533-3f60-a1cb-a679-ff6ff5dde2bc
Version Independent ID: 54583dac-de23-b64c-3396-fac964724595
Content: Implementing Least-Privilege Administrative Models
Content Source: WindowsServerDocs/identity/ad-ds/plan/security-best-practices/Implementing-Least-Privilege-Administrative-Models.md
Service: windows-server-threshold
GitHub Login: @billmath
Microsoft Alias: billmath

Removing screenshot
Resolving in private repo branch GitHubIssues072018

#please-close