Get-WinEvent doesn't terminate

Prerequisites

[X] Write a descriptive title.
[X] Make sure you are able to repro it on the latest released version
[X] Search the existing issues.
[X] Refer to the FAQ.
[X] Refer to Differences between Windows PowerShell 5.1 and PowerShell.

Steps to reproduce
Add-Type -AssemblyName Microsoft.VisualBasic

$DCs = @()
$DCs += "DC-01"
$DCs += "DC-02"
$DCs += "DC-03"

$msg_StartTime = 'Enter Start Date with following format:
'YYYY-mm-DDTHH:MM:SS -->
e.g. 2022-04-19T13:10:32'
$title_StartTime = 'Start Time'
$StartTime = [Microsoft.VisualBasic.Interaction]::InputBox($msg_StartTime, $title_StartTime)

$msg_EndTime = 'Enter End Date with following format:
'YYYY-mm-DDTHH:MM:SS -->
e.g. 2022-04-19T13:10:32'
$title_EndTime = 'End Time'
$EndTime = [Microsoft.VisualBasic.Interaction]::InputBox($msg_EndTime, $title_EndTime)

$StartDate = Get-Date -Date $StartTime

if($EndTime -eq ''){
    $EndDate = Get-Date -ErrorAction Stop
    Foreach($DC in $DCs){
            Get-WinEvent -ComputerName $DC -ErrorAction Stop -FilterHashtable @{logname='security'; ID='4776';StartTime=$StartDate;EndTime=$EndDate} | Out-GridView -Title $DC
    }
}else{
    $EndDate = Get-Date -Date $EndTime -ErrorAction Stop
    Foreach($DC in $DCs){
        Get-WinEvent -ComputerName $DC -ErrorAction Stop -FilterHashtable @{logname='security'; ID='4776';StartTime=$StartDate;EndTime=$EndDate} | Out-GridView -Title $DC
    }
}

Expected behavior
Show GridView for all WinSecurity Events in given timeframe. Terminate as soon as no more Events are retrieved .

   ProviderName: Microsoft-Windows-Security-Auditing

TimeCreated                     Id LevelDisplayName Message
-----------                     -- ---------------- -------
20.04.2022 10:12:13           4776 Information      The computer attempted to validate the credentials for an account....
20.04.2022 10:12:13           4776 Information      The computer attempted to validate the credentials for an account....
20.04.2022 10:12:13           4776 Information      The computer attempted to validate the credentials for an account....
20.04.2022 10:12:13           4776 Information      The computer attempted to validate the credentials for an account....
20.04.2022 10:12:13           4776 Information      The computer attempted to validate the credentials for an account....
20.04.2022 10:12:13           4776 Information      The computer attempted to validate the credentials for an account....
20.04.2022 10:12:13           4776 Information      The computer attempted to validate the credentials for an account....
20.04.2022 10:12:12           4776 Information      The computer attempted to validate the credentials for an account....
20.04.2022 10:12:12           4776 Information      The computer attempted to validate the credentials for an account....
20.04.2022 10:12:12           4776 Information      The computer attempted to validate the credentials for an account....
20.04.2022 10:12:11           4776 Information      The computer attempted to validate the credentials for an account....
20.04.2022 10:12:11           4776 Information      The computer attempted to validate the credentials for an account....
20.04.2022 10:12:11           4776 Information      The computer attempted to validate the credentials for an account....
20.04.2022 10:12:11           4776 Information      The computer attempted to validate the credentials for an account....
20.04.2022 10:12:10           4776 Information      The computer attempted to validate the credentials for an account....
20.04.2022 10:12:10           4776 Information      The computer attempted to validate the credentials for an account....
20.04.2022 10:12:10           4776 Information      The computer attempted to validate the credentials for an account....
20.04.2022 10:12:10           4776 Information      The computer attempted to validate the credentials for an account....
20.04.2022 10:12:10           4776 Information      The computer attempted to validate the credentials for an account....
20.04.2022 10:12:10           4776 Information      The computer attempted to validate the credentials for an account....
20.04.2022 10:12:10           4776 Information      The computer attempted to validate the credentials for an account....
20.04.2022 10:12:10           4776 Information      The computer attempted to validate the credentials for an account....
20.04.2022 10:12:10           4776 Information      The computer attempted to validate the credentials for an account....

Actual behavior
Command is not terminating. Termination can be forced with -MaxEvents after a certain amount of Events is displayed but has the downside that the desired event might not be shown

Error details
No Error details

Environment data
Name                           Value
----                           -----
PSVersion                      5.1.17763.1490
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.17763.1490
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           <IP_ADDRESS>

Visuals

It would be helpful if you can narrow down the issue:

does the issue happen if you don't pipe to Out-GridView?
does the issue happen if you run Get-WinEvent targeting the local machine (not using -Computer)?
if it happens only if -Computer is used, does it happen when running against all your remote machines, or only a specific one?

Hi Daxian,

It happens if I don't pipe it to Out-GridView
It also happens if I target local machine as well as remote machines

I didn't try targeting remote machine, but I could not reproduce the issue when targeting the local machine.
Can you try PowerShell Core instead of Windows PowerShell?
This repo is for PowerShell core only, for Windows PowerShell, issues need to be reported through the Feedback Hub app, see https://github.com/PowerShell/PowerShell#windows-powershell-vs-powershell-core for details.


raise failing fmtCall example

https://github.com/NethermindEth/starknet.go/issues/501
approve(sender,amount) is called on StarkGate: ETH Token using a wallet (Bravos Cairo 0 account). However, the SDK computes the incorrect call data format.
The call data formatting logic is in FmtCallData()
// https://goerli.voyager.online/tx/0x6fdae8a037508ececc5684406cdd66101d56004bf461c9ee7a3b7f5cf5bb799
Expected call data :
[
0x1
0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7 0x219209e083275171774dab1df80982e9df2096516f06319c5c6d71ae0a8480c
0x0
0x3
0x3
0x43784df59268c02b716e20bf77797bd96c68c2f100b2a634e448c35e3ad363e
0x21
0x0
],

// See the new test
Computed call data :
[
0x1
0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7
0x219209e083275171774dab1df80982e9df2096516f06319c5c6d71ae0a8480c
0x0
0x2
0x2
0x43784df59268c02b716e20bf77797bd96c68c2f100b2a634e448c35e3ad363e
0x21]

It's not clear whether this is an issue with the SDK or not. Internal discussions suggest the formatting logic is correct. However, it seems that the approve(sender,amount) function needs an additional "0" passed to it.

isn't it because the approve method expects an u256: https://testnet.starkscan.co/contract/0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7#read-write-contract-sub-write ?
For u256 type, starknet seems to expect 2 felts, the first one containing the lowest 128 bits and the second containing the 128 highest bits.
That's why here you would need to add the extra 0x0, representing the 128 highest bits of the u256 (here it's 0).
What do you think ?


React Generator - api problem - authorization

https://api-platform.com/docs/create-client/react/
Request: https://demo.api-platform.com/admin/books
Error: Full authentication is required to access this resource.

How can I authorize a request? Is this in the documentation somewhere?

I guess the options are shown by the create-client program help:
    .option("--username [username]", "Username for basic auth (Hydra only)")
    .option("--password [password]", "Password for basic auth (Hydra only)")
    .option("--bearer [bearer]", "Token for bearer auth (Hydra only)")

code from https://github.com/api-platform/create-client/blob/main/src/index.js

Branch chapter9-react of My own tutorial Api Platform does include instructions to generate code from an api that requires authentication but that is the api from the api branches of the tutorial itself and it also assumes you already have completed chapter 7 (authentication) *,
I do not know if they will work with the demo. My tutorial does not use the demo so i do no longer follow its developments. Sorry!
* You are advised anyway to start with chapter 1 and work your way up, unless you are familiar with the knowledge explained in the earlyer chapters.


Adds navigation to docs

Fixes #525

[x] Adds breadcrumbs to docs articles and sections
[x] Fixes sections titles (e.g. Docs Code -> Code)
[x] Adds custom indexes for sections (see /docs/index.md)

@danrabbit Do we want to use breadcrumbs like this or would you prefer a list in a block like the previous ones?

@lewisgoddard Breadcrumbs can be useful.

Breadcrumbs are nice, but there's no real way right now to navigate to certain sections. For a large doc that gets annoying pretty quickly.

@danrabbit I think I added a sidebar to the docs with pull request #578. There's no content yet though when you click on any of the links at the moment. I'm still figuring out how to do that though.

[ ] Add a sidebar with sections links

@emersion Try checking my pull request #578. What do you think?

Closing this since #588 does it better

Note: This PR is still useful if you want breadcrumbs.


Added a working AdaptiveTrigger implementing ITriggerValue

Added a working AdaptiveTrigger implementing ITriggerValue so it can be used in with CompositeStateTrigger

@LocalJoost See code comments. Also how does this differ from the other adaptive trigger that was submitted?


[ID-521]Expose get services registration Admin API

resolved #521

Based on the latest codebase state, the current implementation of the PR and the priority of this issue I am closing it.


4655: [BUG] If you have an error on entering a partner group, the Item Categories changes to a yes/no! Obviously wrong!

Resolves #4655
Description

In partner_groups_controller.rb I created a method set_items_categories to set the value of @item_categories and added it to the create and update methods where it was missing.
Type of change

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

How Has This Been Tested?

Follow the same steps from the issue

Sign in as<EMAIL_ADDRESS>Left hand menu: Partner Agencies | All Partners.
Choose the "Groups" tab
Note the name of the existing group. (if there isn't one, create one first.)
Click "New Partner Group"
Enter the same name as the existing group
Click "Add Partner Group"

Now it should show all the available category items correctly
To test the update method you can start from the step:  'Choose the "Groups" tab' and then:
Create two partner groups (if there are already at least two, you can skip this part)
Click "Edit" on one of them
Enter the same name as the other group
Click "Update Partner Group"

@victorhwmn  FYI: We had an urgent fix that required all the senior contributors this week , so we didn't get to look at this.  Hopefully this week will go better.

All good here!


[Feature request, discussion] Uppercase schema in QR-encoded BIP21strings

Bitcoin Core 0.19 through 0.21 (at least) uppercases the bech32 address in BIP21 strings so that they will produce less complex QR codes that can sometimes take up less space or be quicker to scan accurately.

However, RFC3986 allows treating URI schemas as case insensitive, so it should be possible to also uppercase the leading BITCOIN (and the separator : is part of the QR code uppercase set).  RFC3986 says:

An implementation should accept uppercase letters as equivalent to lowercase in scheme names (e.g., allow "HTTP" as well as "http") for the sake of robustness but should only produce lowercase scheme names for consistency.

BIP21 agrees:

The scheme component ("bitcoin:") is case-insensitive, and implementations must accept any combination of uppercase and lowercase letters.

One important downside of this approach is that not all wallets currently implement RFC3986 according to specification.  See https://github.com/btcpayserver/btcpayserver/issues/2099 for at least one instance of this.  It's my hope that the recent attention the BTCPay team was able to bring to this issue will help get any other wallets with this issue to upgrade in the near future, allowing Bitcoin Core and others to use more efficient uppercase schema strings with bech32 addresses.

We're investigating the adoption and wallet support of the upper-cased Bech32 and community is reaching out to wallets that aren't supporting the uppercase. You can follow on the progress we've made in this issue.

@pavlenex that's awesome, thank you all!

For address with a label the bitcoin: to BITCOIN: would be quite marginal, and perhaps not worth the risk of incompatibility with some ancient wallet. On the other hand: why on earth would someone send coins from Bitcoin Core to an ancient wallet?

@Sjors I agree the benefit is fairly marginal (without checking specs, I think uppercase vs. alphanumeric saves like 3 bits per character plus up to 22 bits for mode change, so best case savings is like 46 bits = 3*8+22.  For BIP21 strings with a P2WPKH address and an amount of 1.00000000 BTC (no label or extension strings), that's best case savings of about 13.5%).
That said, I think interactions with "ancient" wallets are already going to require the user produce a non-default address type:

For many wallets last updated more than a year or two ago, bech32 isn't supported, so the Bitcoin Core user is going to need to generate a legacy address anyway.  We can keep the bitcoin: schema lowercase in that case since we already keep the base58check string case sensitive.

For any wallet released as of this writing, it won't support paying to the segwit v1+/taproot addresses that are likely to be deployed, so the Bitcoin Core user is going to need to generate an earlier address type in that case as well.

If users with old wallets are going to need to deal with address incompatibilities for other reasons, I think it's ok to risk asking them to deal with backwards incompatibility due to URI parsing problems too.

@ChristopherA BCR-2020-005 supports uppercase and lowercase, so should be compliant with RFC3986?

bcr-2020-05 is specifically designed to work with multiple transports, and is not case-significant.
We suggest lowercase for readability, but for use in QRs to take advantage of the QR-native compression, you need all uppercase. Both forms are completely URI compatible. See bcr-2020-003 for more details on meeting the requirements of RFC3986 and other requirements.
/cc @wolfmcnally


App Store latest build version detected new version

Good day,
App Store latest version build is detecting a new version build even it is in new version. (bug)
When i try to install this same build version from TestFlight, it is not detecting new version (expectation)
- (void)setup {
Harpy *harpy = Harpy.sharedInstance;
harpy.delegate = self;

  CTCarrier *carrier = [[CTTelephonyNetworkInfo new] subscriberCellularProvider];
  NSString *countryCode = carrier.isoCountryCode;
  harpy.countryCode = countryCode;

  harpy.alertType = HarpyAlertTypeNone;
  harpy.majorUpdateAlertType = HarpyAlertTypeNone;
  harpy.minorUpdateAlertType = HarpyAlertTypeNone;
  harpy.patchUpdateAlertType = HarpyAlertTypeNone;
  harpy.revisionUpdateAlertType = HarpyAlertTypeNone;

  [harpy checkVersion]
}

- harpyDidDetectNewVersionWithoutAlert:(NSString *)message {
// block user if current build is outdated
// show custom view if outdated.
}

P.S. I hope i can get an immediate reply since it is crucial on our app's UX. We don't let user use our app with outdated builds.

Hi,
Can you please provide me with your bundle ID? I need to verify this bug on my end.

com.meridian.wildlyyours

So for that bundleID, I see that v1.2 app was released on 2018-06-11T14:29:22Z. Since setShowAlertAfterCurrentVersionHasBeenReleasedForDays defaults 1, a prompt will not appear for 24 hours after launch, which is in about 9.5 hours.

I also have a question related to this, how can I modify time interval setShowAlertAfterCurrentVersionHasBeenReleasedForDays to let's say 3 hours?

you can't, without forking the code and making a change to how this value works.
It's an Int that represents days.
This is purposefully done to get around an issue where the JSON updates faster than the the binary becomes available to uses.

Closing this issue, but feel free to continue commenting and I'll follow up.

No problem! Good luck!


Update docs to reflect replacement of jinja by gyb

This is documentation update to reflect changes introduced in #9193.
The section on Using the Harness Generator could use more clarification, but I'll rewrite it (soon-ish) as part of changes related to #9310. This does more-or-less reflect the current state.

@lplarson @gottesmm Please review.

This LGTM.

@swift-ci smoke test and merge


Implement math.{degrees, radians} for the CUDA target.

As title.
Fixes #4335

#4626 passed on the farm, so by induction this passes.


Identify onion services with their respective (already yt-dlp supported) websites

Checklist

[X] I'm reporting a new site support request
[X] I've verified that I'm running yt-dlp version 2<IP_ADDRESS>. (update instructions)
[X] I've checked that all provided URLs are alive and playable in a browser
[X] I've checked that none of provided URLs violate any copyrights or contain any DRM to the best of my knowledge
[X] I've searched the bugtracker for similar issues including closed ones. DO NOT post duplicates
[X] I've read the guidelines for opening an issue
[X] I've read about sharing account credentials and am willing to share it if required

Region
Tor Network
Example URLs

[ ] Twitter has an onion service: https://twitter3e4tixl4xyajtrzo62zg5vztmjuricljdp2c5kshju4avyoid.onion/TwitterBlue/status/1484226494708662273 (source: https://en.wikipedia.org/wiki/Twitter#External_links )
[x] Facebook has an onion service: https://www.facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion/ (source: https://en.wikipedia.org/wiki/Facebook_onion_address )
[ ] BBC: https://www.bbcnewsd73hkzno2ini43t4gblxvycyac5aw4gnv7t2rccijh7745uqd.onion/

Description
Identify onion services with their respective (already yt-dlp supported) websites (for example twitter is already supported by yt-dlp but its onion service is dealt with by the fallback generic extractor instead of the twitter specific one)
Verbose log
Example for the Twitter onion service:

emily@emily:~/Videos$ yt-dlp https://twitter3e4tixl4xyajtrzo62zg5vztmjuricljdp2c5kshju4avyoid.onion/TwitterBlue/status/1484226494708662273
[generic]<PHONE_NUMBER>708662273: Requesting header
WARNING: [generic] Falling back on generic information extractor.
[generic]<PHONE_NUMBER>708662273: Downloading webpage
[generic]<PHONE_NUMBER>708662273: Extracting information
ERROR: Unsupported URL: https://twitter3e4tixl4xyajtrzo62zg5vztmjuricljdp2c5kshju4avyoid.onion/TwitterBlue/status/1484226494708662273

Related: https://github.com/ytdl-org/youtube-dl/issues/30731
Especially right now, this is a very significant issue.
There are two aspects here:

the extractor needs to recognise the onion URL pattern;
as I understand, it needs to use the same base domain when accessing resources from the service, such as APIs, or the extraction will potentially be subject to the same blocking or interception that the user is trying to avoid by using the Tor site.

As far as the listed sites are concerned, the Facebook yt-dlp and yt-dl extractors address point 1 but not point 2. For both yt-dlp and yt-dl, neither Twitter nor BBC Tor sites are handled at all, and although the YouTube extractors know about some Invidious Tor sites point 2 is not addressed.
Depending on how each extractor is structured, it may be possible to patch in support for the Tor site, or it may be easier to make a new or subclass extractor class (or classes).

It is easy enough to add the valid URLs to the extractors, but I don't think (2) is worth doing. After all, we don't do that for invidious, nitter or the other already supported onion sites

Surely any API used by site JS must be supported, or the Tor site would not successfully circumvent whatever the user needs to bypass? Confirmed at least for Twitter.

Surely any API used by site JS must be supported in the onion domain, or the Tor site would not successfully circumvent whatever the user needs to bypass?

The point of onion sites is not to bypass any restrictions (using tor on clearsites already covers that), but to avoid trusting exit-nodes. But I see your point
My initial thought was that the onion websites could be still using the normal API, and most end-users would be none-the-wiser. But on second thought, this would probably be a terrible PR move for the service

Since this work has to be done for each site separately, having a single issue to track multiple sites is a bad idea. For this issue, I will just add the onion links to valid URLs for the mentioned sites.
Once that is done, please open separate issues for adding "full onion support" for each site. Issues could also be opened for adding similar support to youtube/invidious (though I dont even know if invidious provides youtube-like API)

This List of Real-World Onion Sites might be consulted for other candidates, eg DW, NYT.

It is easy enough to add the valid URLs to the extractors, but I don't think (2) is worth doing. After all, we don't do that for invidious, nitter or the other already supported onion sites. It is also unlikely that the API endpoints exist in onion domains, making it even more complicated

That seems like a terrible idea. No one accidentally enters the .onion site when they want to use the standard site. If you can't support the .onion site, just give an "unsupported url" error. In fact, in my opinion, yt-dl/yt-dlp should probably remove .onion support from the facebook and invidious/nitter support from the Youtube extractor

My initial thought was that the onion websites could be still using the normal API, and most end-users would be none-the-wiser.

So deliberately doing something contrary to the user's intentions, because you don't think the user will realise? That's called malware.

@pukkandan

The point of onion sites is not to bypass any restrictions (using tor on clearsites already covers that), but to avoid trusting exit-nodes.

The main point is that onion sites don't use exit nodes so they're faster since exit bandwidth is limited (IF they're single onion services, i.e. 3 hops in the circuit instead of 6).

@resulin They are marketed as a way to avoid trusting exit nodes*, and to let people create accounts for free, anonymously. Also, clearnet sites only have 3 nodes in a circuit.
*As the hyperlinked article notes, using https achieves that already (it's slightly less secure, but it's probably good enough). However, python isn't as good at ssl verification as tor browser (https://revoked.badssl.com/ doesn't raise an ssl error, for example).
Actually, now that I think about it, I'm not sure whether yt-dlp would block exit nodes from performing MitM attacks on onion sites 👀


Changes so I can compile MonkeyCam

Two minor changes so I can get the latest version of the master to compile using the versions of GCC etc dependencies described in the readme.
I'm not suggesting you should accept these changes (I just commented out 3 lines in shapes.cpp!) but maybe you could update the readme with what you're using to compile MonkeyCam currently (I presume you're using more recent releases than referenced in the readme).
Cheers, Reg

Sorry about that. The info on Mac should be correct, but I haven't updated the Windows info in a while. I need to resurrect my VM to play with it.
I do recall seeing this issue last time I built with GCC: the compiler is complaining about a valid ambiguity. But I forgot to commit it. I'll accept this pull so we can unblock others. This is in the roughing code, which is indeed disabled.


Fix build for multiple versions of php

This pull requests allows multiple change in build process. The main change is to chose the php version you want to use to build the extension. Actually I have php5 and php7.0 installed on the same system and build.sh can only build against the main version (the one defined with update-alternatives).
With this you can chose the php-config and the phpize binaries with this syntax:
./build.sh --phpize=/usr/bin/phpize7.0 --php-config=/usr/bin/phpize7.0 or ./build.sh --phpize /usr/bin/phpize7.0 --php-config /usr/bin/phpize7.0
The other changes allows to preserve environment when doing the wget, to keep proxy variables from current env.

Hi, can we merge it ?


HY090 -  Invalid string or buffer length (0)

Please first make sure you have looked at:

Documentation: https://github.com/mkleehammer/pyodbc/wiki
Other issues

Environment
To diagnose, we usually need to know the following, including version numbers.  On Windows, be
sure to specify 32-bit Python or 64-bit:

Python: 3
pyodbc: 4.0.17
OS: Windows 10
DB: Microsoft SQL Server
driver:
['SQL Server',
'SQL Server Native Client 11.0',
'ODBC Driver 13 for SQL Server',
'ODBC Driver 17 for SQL Server']

Issue
I am trying to insert data to a table by using .sql file with many insert statements.
Each statement is executed individually and committed after that by reading the file.
But after completing around 240 insert statements, I get the following error:
pyodbc.Error: ('HY090', '[HY090] [Microsoft][ODBC Driver Manager] Invalid string or buffer length (0) (SQLExecDirectW)')
When I started reading about this issue, I found documents under Microsoft which states:
https://docs.microsoft.com/en-us/sql/odbc/reference/syntax/sqlbindparameter-function?view=sql-server-2017
HY090 | Invalid string or buffer length | (DM) The value in BufferLength was less than 0. (See the description of the SQL_DESC_DATA_PTR field in SQLSetDescField.)
https://docs.microsoft.com/en-us/sql/odbc/reference/syntax/sqlsetdescfield-function?view=sql-server-2017
Some Binding parameter needs to be set to clear the buffer but I am not seeing any information available related to that in documentation.
Kindly assist me with this issue.
Thanks in advance.

Please post an ODBC trace to allow this to be investigated in more detail.

Any Solution for this ?

Please post an ODBC trace to allow this to be investigated in more detail.

Hello,
I ran into this today. I was looping through a list replacing a variable in the sql file. For example "select * from customers where name = '<>'"  i would replace the name with something like Billy bob. Then i would export the result to a excel under the persons name.
During my loop i was referencing the object then editing it, so the it was causing a error on the second pass. Since i didn't want to read the file each loop i am now using a copy which fixed the issue.

A few more updates on this issue. My patch above "solved" the issue for the HY090 error on my Linux machine. I've now tried this on my Windows machine and I get the following error, with and without my patch:
pyodbc.Error: ('HY004', '[HY004] [Microsoft][ODBC Driver 17 for SQL Server]Invalid SQL data type (0) (SQLBindParameter)')
Im trying to insert these sample data:
param_array = [[1337, '12345-1', '4', 86246, 'Rotation', 'Rotation', 0.0, None, 0.0, 0.0, '', '', '', '', ''],
[1337, '12345-1', '4', 86246, 'Rotation', 'Rotation', -0.02, None, 0.0, 0.0, '', '', '', '', ''],
[1338, '12345-1', '4', 86246, 'Rotation', 'Rotation', -0.03, None, 0.0, 0.0, '', '', '', '', '']]
To explain the part that matters: where it says None, 0, 0: those 3 fields are nullable float entries, and the first "None" is causing my issues. Here is the weird part: if I remove the None from the first line, but leave it in the other two I get no errors. It only fails if I have a None input on my first row of the TVP.
I've tested to see if the other two lines are working too just in case and they are - if I put an invalid input on the second or third line, I get an error message as expected.
I've found a way to make it work, but I'm fairly sure it only works on my particular table. It seems the HY004 issue is being caused by ParameterType being evaluated, even when StrLen_or_Ind is SQL_NULL_DATA. If I set ParameterType to SQL_FLOAT (which matches my field) everything works! If I set to anything else (CHAR, SMALLINT, NUMERIC, etc) it fails.
Now it seems to me ParameterType should not be evaluated when your input is NULL - otherwise there's no way to set ParameterType correctly when the user gives you a None entry. I may be completely off, but this is all I could figure out with a few days of investigating the issue.

@v-chojas @v-makouz any insights on this particular issue and my proposed fix?

@v-makouz sorry for the delay, I missed the reply for some reason! I tried running the tests in sqlservertests.py, but they fail - they seem to be written for python 2.7? If it's vital, I can install python 2.7 environment and try it again, but I was hoping the CI would take care of running those tests. I remember when I originally committed it failed because of some issue with CI?
That's a very question that I don't quite have an answer for. I looked up all of Microsoft's documentation on this, and there's not type for NULL that's a valid SQL Type. For some reason, SQL_VARCHAR is accepted. If we don't set a type we get:
The value specified for the argument ParameterType was neither a valid ODBC SQL data type identifier nor a driver-specific SQL data type identifier supported by the driver.
As I explained before, when StrLen_or_Ind is set to SQL_NULL_DATA, the ParameterType shouldn't matter. But the SQL Server adapter on Windows, for some reason, checks for it anyway. So essentially we just need to set it to something that will pass the ParameterType check, since it won't be used for anything else.
Some more information for reference:
This page describes the procedure for inserting TVP data:
https://docs.microsoft.com/en-us/sql/relational-databases/native-client-odbc-table-valued-parameters/binding-and-data-transfer-of-table-valued-parameters-and-column-values?view=sql-server-ver15#fixed-table-valued-parameter-row-binding
The error happens in params.cpp:1487:
ret = SQLBindParameter(cur->hstmt, (SQLUSMALLINT)(i + 1), SQL_PARAM_INPUT,                     info.nested[i].ValueType, info.nested[i].ParameterType,                     info.nested[i].ColumnSize, info.nested[i].DecimalDigits,                     info.nested + i, info.nested[i].BufferLength, &info.nested[i].StrLen_or_Ind);
The SQLBindParameter link is already posted on the first post. There is no mention about ParameterType when StrLen_or_IndPtr is NULL, but I did find this on ParameterValuePtr:
ParameterValuePtr Argument

The ParameterValuePtr argument points to a buffer that, when SQLExecute or SQLExecDirect is called, contains the actual data for the parameter. The data must be in the form specified by the ValueType argument. This argument sets the SQL_DESC_DATA_PTR field of the APD. An application can set the ParameterValuePtr argument to a null pointer, as long as *StrLen_or_IndPtr is SQL_NULL_DATA or SQL_DATA_AT_EXEC. (This applies only to input or input/output parameters.)

If the above is true, then ParameterType shouldn't matter, since ParameterValuePtr is NULL right?

Python3 tests are in tests3/ . The SQL type needs to be specified because even if the value is null, it still has a type. Varchar is convertible to all the other types except binary.

Thanks, I followed the instructions on the site and it never occured to me that's what the 2 and 3 stands for :)
So a lot happened after running the test and I think I understand what's really going on now, but not sure how to actually fix it.
When I ran the test, I got an error on test_none_param. After reading this test, it explicitly mentions that SQL_VARCHAR can be converted to everything BUT binary/varbinary, so that's what the test caught.
This made me look closer at how GetParameterType works. I realized that when I ran the test, I saw the correct parameter type for VARBINARY (-3), but when I ran my TVP, I got a random integer.
Here is the issue: during the TVP parameter processing, GetNullInfo gets called, which in turn calls GetParameterType (to try to figure out what's the type of this parameter, since all it got was NULL).
The problem here is that parameter is the SP parameter, not the TVP parameter. This was made obvious to me when I noticed the cur->paramcount = 1, when I had over 10 parameters. So this line here (params.cpp):
memset(cur->paramtypes, 0, sizeof(SQLSMALLINT) * cur->paramcount);
only resetted the first element (cur->paramtypes[0]) to 0. When I check parameter type of the only parameter, I saw it was SQL_SS_TABLE (-153). So instead of us iterating over the TVP parameters, we are trying to iterate over the SP parameters. This causes GetParamType to return cur->paramtypes[index], which is non-initialized memory area - thus the random numbers for parameter type I was getting in GetNullInfo.
I kept trying to read on how to get the TVP parameter type, but this is where my knowledge is coming up short and I need help.
I found this link, which seems to describe how to get metadta for TVP columns. It seems like we neet to do set the attribute SQL_SOPT_SS_NAME_SCOPE  to SQL_SS_NAME_SCOPE_TABLE_TYPE first. But this is where it gets fuzzy to me - SQLColumns seems to be the way to get this metadata, but first we need to give it a schema, table name, column name, and catalog name. This link says we should use SQL_CA_SS_TYPE_NAME, SQL_CA_SS_CATALOG_NAME, and SQL_CA_SS_SCHEMA_NAME somehow, but I don't really know how to get this information. SQLGetFieldDesc maybe? I got lost here. Maybe I'm completely off, but this is all I could find.
A simple solution to this mess would simply use SQL_VARCHAR, like I proposed. The downside is if there is  TVP with a varbinary column, this will fail. So we would go from "All null values in TVPs fail" to "varbinary/binary TVP column null values fail". Is that better? :)
@v-chojas @v-makouz I hope someone can take it from here - I'm giving up on TVP and probably going to use JSON with a regular SP. I'll cancel my pull request since I now realize the issue is something else.


[SDP-1353] fix the checks enforced when calculating the success payments percentage

What
Fix the checks enforced when calculating the success payments percentage
Why
Address https://stellarorg.atlassian.net/browse/SDP-1353

stellar-disbursement-platform-frontend-preview is available here:http://sdp-frontend-pr167.previews.kube001.services.stellar-ops.com/

stellar-disbursement-platform-frontend-preview is available here:http://sdp-frontend-pr167.previews.kube001.services.stellar-ops.com/


Release v0.18.0

Changelog
v0.18.0
This release is a major one as we've added new features, fixed many of the old problems, improved the performance and code base and overhauled the documentation. OrbitDB is now more robust, easier to use, faster and comes with much awaited write-permissions feature.
This release contains API breaking changes with no backward compatibility! Read further and see the API documentation, examples and Getting Started Guide to learn more about the changes. Note that we don't use semver for the npm module, so be sure to lock your orbit-db dependency to the previous release if you don't want to upgrade.
Write-permissions
OrbitDB now has write-permissioned databases! \o/ This gives us verifiable, distributed databases and data structures enabling tons of new use cases and possibilities. User-owned data collections, feeds and lists, State and Payment Channels, and many more!
Permissions are defined by public keys and databases in OrbitDB support one or multiple write keys per database. Each database update is signed with a write-access key and the signature is verified by the clients against access control information. Next step is to extend the access control functionality to include read permissions. Read more about Access Control and Keys.
Addresses
OrbitDB databases, their name and ID, are now addressed through a naming scheme:
/orbitdb/Qmd8TmZrWASypEp4Er9tgWP4kCNQnW4ncSnvjvyHQ3EVSU/my/database/hello

Read more about Addresses.
Replication
The previous versions of OrbitDB had a flaky replication implementation which has been completely re-written for this release. We've made performance improvements and more importantly, peers now start syncing the database automatically and reliably.
Performance
Several performance improvements made throughout OrbitDB's code base together with latest IPFS we're seeing much better throughput numbers in benchmarks. There are still many improvements to be made!
Documentation and Examples
We've written a brand new Getting Started Guide to work as a tutorial and a place to understand OrbitDB's features and usage. The API documentation was also updated to reflect latest features and changes.
All examples were updated along with an updated UI for the browser demo. Another small browser demo was added and there's a TodoMVC with Orbitdb example in the works.
Code Base Improvements
Due to legacy reasons, OrbitDB previously used a wrapper module for IPFS called ipfs-daemon. We have removed and deprecated ipfs-daemon and are now using js-ipfs directly!
We've switched to using async/await in the code base throughout the modules. This means the minimum required version of Node.js is now 8.0.0. To use with older versions of Node.js, we provide an ES5-compatible build. We've also added support for logging, which can be turned on with LOG=[debug|warn|error] environment variable.
Source: https://github.com/orbitdb/orbit-db/blob/master/CHANGELOG.md#v0180

v0.18.0 was published to npm

Closes #57

Closes #237


Not working with Act-As-Taggable-On

Guys,
I rely heavly on https://github.com/mbleigh/acts-as-taggable-on . There was no way I could make it work.
Issues:

When an acts-as-taggable-on tag is used outside "only" it does not bypasses it
When an acts-as-taggable-on tag is used inside "only" it does not publish tags correctly

Update: self solved. Please check my PR.

Is this still an issue?


Bugfix: SectionFooterView AutoDimension Support

Problem:

I noticed our app was manually laying out subviews in our sectionFooters when I didn't see the need to. (Given auto-layout/intrinsic size support)

eg.. (Unnecessarily maintaining and calculation including insets/frame)
    override func layoutSubviews() {
        super.layoutSubviews()
        var frame = self.frame
        frame.size = CGSize(width: frame.size.width, height: signUpInstructionsLabel.systemLayoutSizeFitting(UILayoutFittingCompressedSize).height + textInsets.top + textInsets.bottom)
        self.frame = frame
    }

After recent changes, Group tableView's which had nil section extremity defaulted to zero, which drops the standard spacing between sections. (Using current master)

Notable info:
Statics currently has deploy target of iOS8, which did not yet support automatic sectionFooterView dimensioning.
Solution:

Offer autosizing option which uses UITableViewAutomaticDimension rather than view's original bounds height. Retain original .view(_) case in the event some clients were already sizing beforehand limiting integration breaks.
Bump deploy target to iOS9 for clean integration.
Revert 2 previous PRs focused on same issue

Testing:
Tested with simulators

[x]  iOS11 beta5 on iPhone 7  (Friendly)
[ ] iOS 10.3 on iPhone 6. (Just noticed I might have a maxLayoutWidth issue with this implementation)

Did not test on iOS 9

Hi Neal, is this change friendly to your issue you saw? Care to test with this branch?

@hyperspacemark @eliperkins @rhaining for further review

@rhaining @hyperspacemark Finally found my error.
This PR works in supporting Autolayout FooterViews in iOS10/11.
BUT:
in order for it to function in iOS 10, estimatedHeights must be set > 0. I unfortunately was setting to UITableViewAutomaticDimension == -1 🤦♂
Example Working:
tableView.estimatedSectionFooterHeight = 20
tableView.estimatedSectionHeaderHeight = 20

Followed up with a change for default heights.
By returning autodimension height by default, plain tableViews were taking non-standard heights with nil extremities. Update to use a default height between styles which performs equivalent to default handling if nil vs filled extremities
Also updated Example code with example of how to create an autosized extremity


VLC media player component filling recorder

**Home Assistant release (hass --version): 0.35.3
the VLC media player component is filling the recorder while it is doing nothing
this is a extract of a event in mysql :
506062 | state_changed    | {"entity_id": "media_player.vlc", "old_state": {"entity_id": "media_player.vlc", "last_changed": "2016-12-29T14:05:40.792106+00:00", "attributes": {"is_volume_muted": false, "friendly_name": "vlc", "volume_level": 1.0, "media_duration": -0.001, "media_position": 0.001, "media_content_type": "music", "media_position_updated_at": "2016-12-29T14:20:00.522113+00:00", "supported_media_commands": 525}, "last_updated": "2016-12-29T14:20:00.618756+00:00", "state": "idle"}, "new_state": {"entity_id": "media_player.vlc", "last_changed": "2016-12-29T14:05:40.792106+00:00", "attributes": {"is_volume_muted": false, "friendly_name": "vlc", "volume_level": 1.0, "media_duration": -0.001, "media_position": 0.001, "media_content_type": "music", "media_position_updated_at": "2016-12-29T14:20:10.515090+00:00", "supported_media_commands": 525}, "last_updated": "2016-12-29T14:20:10.531783+00:00", "state": "idle"}} | LOCAL  | 2016-12-29 14:20:10 | 2016-12-29 14:20:10 |

Yep, I just noticed this too. I think the problem is those "last updated" timestamps keep changing, so HASS recognises it as a new state each time.
This makes VLC unusable IMHO. It will fill up the database. My logbook is now extremely slow to load!

Yep, I just noticed this too. I think the problem is those "last updated" timestamps keep changing, so HASS recognises it as a new state each time.
This makes VLC unusable IMHO. It will fill up the database. My logbook is now extremely slow to load!

Of you just exclude the VLC component in both, it pretty much fixes the problem till the component is fixed!

Of you just exclude the VLC component in both, it pretty much fixes the problem till the component is fixed!

You mean we can exclude the VLC component from the the log/history?

You mean we can exclude the VLC component from the the log/history?

Yes, you can exclude them:
https://home-assistant.io/components/logbook/
https://home-assistant.io/components/history/
Maybe try:
media_player.vlc or something like that

Yes, you can exclude them:
https://home-assistant.io/components/logbook/
https://home-assistant.io/components/history/
Maybe try:
media_player.vlc or something like that

Cool, that works - though it's still triggering an event on the eventbus every 1-2 seconds, so the issue with the VLC component needs to be resolved. But at least it won't fill up my DB now.

Cool, that works - though it's still triggering an event on the eventbus every 1-2 seconds, so the issue with the VLC component needs to be resolved. But at least it won't fill up my DB now.

Could any of you try this fix:
https://github.com/home-assistant/home-assistant/compare/dev...issue_%235101?quick_pull=1

the fix seems to work for me; thank you


Publish a helm chart

See https://github.com/dask/helm-chart / https://github.com/jupyterhub/helm-chart for how to do this to gh-pages.

This is at https://kbatch-dev.github.io/helm-chart now (source: https://github.com/kbatch-dev/helm-chart)


Add tutorial of LOJ 1023 - Discovering Permutations(en)

Merged. Thank you for your contribution. :cheese:


Bind column_titles_visible as property

Spotted it randomly today. I don't see any reason why it wasn't a property.

Thanks!

Cherry-picked for 3.5.


⚠ Chatwoot has degraded performance

In 4c72a8c, Chatwoot (https://app.chatwoot.com) experienced degraded performance:

HTTP code: 200
Response time: 10968 ms

Resolved: Chatwoot performance has improved in cae2761.


Add rustfmt.toml configuration and re-format everything + fix basic warnings

So that contributions from multiple people are more consistent w.r.t. code style and formatting 🙂
Note, that this one does not include all of the cargo clippy fixes since there are quite a few of them that require manual intervention. I did not want to make them part of this PR (since unlike the rest of the changes these would not be automated, hence would require a more rigorous review of whether the user-written code changes anything).
Also, cargo check still produces 3 warnings that I did not fix as they would need some minor changes:

RemoteTrackPublication::on_subscription_status_changed and RemoteTrackPublication::on_permission_status_changed are pub(crate) and never used within a crate. I was not sure if I'm allowed to remove them (since we don't use them) or if I need to make them pub (that would require making the rest of the things pub as well, for consistency).
RtcSession::publisher() is pub, but never used (not sure why it complains about it given that it is pub, perhaps it's never exported or something).

Also I added a tiny simple job to check the formatting so that we can keep it consistent.

Thanks 🙏
I’ll try to address the other warnings


Investigate Using BlockHound

https://github.com/reactor/BlockHound
Would be nice if there was a spring-boot-starter that we could use so the install call is added to all tests for us.  Or maybe some kind of junit runner
cc: @bsideup

I will talk with Spring Boot team about adding an "auto-install" option when BlockHound is on the classpath.
Also, I think it at least with JUnit 5 it is possible to use the extension mechanism (unfortunately, on per-class basis) to install it.
And, if JUnit 5 will add support for global hooks (aka "before all tests in this JVM"), we could also use it.
/cc @sbrannen

How does block hound compare with reactive audit? https://github.com/octo-online/reactive-audit

@tony-clarke-amdocs
The main difference is that they are using AspectJ for it, and they instrument the call-sites, from user's code, and if there is a nested blocking call inside some JVM's method, they have to detect the top method, not the actual blocking call.
While we're instrumenting the native calls (Like Thread.sleep, not possible with AspectJ) and the original methods (like onSpinWait). It works even if you do some shady things with reflection.

Also, I think it at least with JUnit 5 it is possible to use the extension mechanism (unfortunately, on per-class basis) to install it.
And, if JUnit 5 will add support for global hooks (aka "before all tests in this JVM"), we could also use it.

That's actually already possible in JUnit Jupiter. You'd want to write an extension that implements BeforeAllCallback and register that globally. If you want to ensure that the code in extension only executes once, you'd then need to store a flag in the root ExtensionContext.Store.
The only drawback with such an approach is that globally registered Jupiter extensions are only actually registered if the user explicitly enables their discovery.

If users will always use the Spring TestContext Framework, another option is to implement a Spring TestExecutionListener and register that automatically.
The benefit of this approach over the Jupiter extension is that the Spring TestExecutionListener will be registered automatically just because of the presence of the containing JAR in the classpath.
The only downside is that there is no global TestContext store. So you'd have to implement your own "do only once" mechanism if necessary.

FYI there is a PR to add the Spring Boot integration, starter-style (add dependency => see the result, no code changes):
https://github.com/reactor/BlockHound/pull/8


Remove traefik.containo.us CRDs

What does this PR do?

Motivation

More

[ ] Yes, I updated the tests accordingly
[ ] Yes, I ran make test and all the tests passed

Accidentally opened this PR against upstream, please remove


发生了异常: 不支持给定的数据源种类。数据源种类: Lakehouse。

[Enter feedback here]

链接到目标数据时总是出现：发生了异常: 不支持给定的数据源种类。数据源种类: Lakehouse。

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

ID: c55d0f50-08ee-2361-fe1f-8a1e6df76dca
Version Independent ID: c55d0f50-08ee-2361-fe1f-8a1e6df76dca
Content: Tutorial: Microsoft Fabric for Power BI users - Power BI
Content Source: powerbi-docs/fundamentals/fabric-get-started.md
Service: powerbi
Sub-service: pbi-fundamentals
GitHub Login: @itsnotaboutthecell
Microsoft Alias: alpowers

Thanks for your comment, @liliwen365. This issue has been assigned to the doc author for review.

@itsnotaboutthecell, here's a translation of the title and body. Does it ring any bells?
Title: An exception occurred: The given data source kind is not supported. Data source type: Lakehouse
Body: When linking to the target data always occurs: An exception has occurred: The given data source type is not supported. Data source type: Lakehouse.

Unfortunately, we have been unable to review this issue in a timely manner. We sincerely apologize for the delayed response. Both the product and documentation has changed since this issue was opened. Therefore, we are closing this issue. If you feel that the problem persists, please respond to this issue with additional information.
Please continue to provide feedback about the documentation. We appreciate your contributions to our community.


Experiment on Cora

Hi,
Sorry to bother you, I am wondering if there is any experiment using GCN on Cora dataset in your code? I am still not finding that yet.

Hi,
Sorry for the late reply! Do you still need that code?

Thanks for your reply! I've already solved my problems now. Just forgetting about my requirement is OK.😊

Thank you! Hope experiments go smoothly.


feat: allow for setting the max size of n grams in bleu calculations

In some uses for seq2seq such as for predicting slot values in a DST task it is possible that your outputs will always has < 4 tokens. 4 is the default
size of n grams used in Bleu. When all of your outputs are < 4 then the precision for 4 grams is always zero which causes the whole bleu score to be
zero. This changes lets you set the max size of n-grams so we can use the bleu scores that pop out of baseline on these sort of datasets.
Tested on:
Pytorch
Tf 2 eager mode
Tf 1 graph mode
What is SOP for testing distributed training?

distributed training should work on single machine, you should be able to test by changing the --fit_func


Author is lame

please upgrade to non-lame author

Agree. Unfortunately we're stuck and I don't foresee the author's lameness subsiding anytime in the future.


Style: Run prettier

Reformats the code with Prettier, which makes code feel the same across the site.
Note: HTML files with front matter did not get reformatted due to parsing errors.

While I’m generally not a fan of automated changes like this for the possible breakage they can induce, I agree with the changes and it seems fine – except for the small comments. :)
Also a note that this removes the "Activity" section from the frontpage which used to show some Github activity from the organization. As that is not the main focus of Open Source Design and it actually did not work since some time anyway, it’s fine to remove this.
Good stuff as usual @RDIL! :)

Fixed everything @jancborchardt :)

Hey @jancborchardt while you are online, I fixed all the issues here.

Hey @jancborchardt while you are online, I fixed all the issues here.

Looks good! Only shows a conflict in _layouts/jobs.html

@Yashank18 can you approve once more so we can merge? 😄

Ready to merge :)


The links for photoshopAction and photoshopCore go to blank pages.

In /src/pages/ps_reference/classes/index.md, the links for photoshopAction and photoshopCore go to blank pages. At the very least, it should be a "Documentation TBD" page, but really it should have some, you know, documentation.

Maybe @pklaschka can take a look...

I'm sorry: I'd love to help, but currently can't find these links. Could you please elaborate where you can see these links (as far as I can see, the links within the main branch, at least, are all working when deployed to https://www.adobe.io/photoshop/uxp/ps_reference/classes/, but also don't include photoshopAction and photoshopCore: https://github.com/AdobeDocs/uxp-photoshop/blob/56eb7bb027ab610af2ac713d0fc314f8108d49ea/src/pages/ps_reference/classes/index.md).


[ClickAwayListener] Triggers on "Inspect Code" and navigation in DOM tree

ClickAwayListener

[x] The issue is present in the latest release.
[x] I have searched the issues of this repository and believe that this is not a duplicate.

Current Behavior 😯
ClickAwayListener triggers on any click in scope of browser
Expected Behavior 🤔
ClickAwayListener should be triggered on clicks in scope of document only
Steps to Reproduce 🕹
Steps:

Create Autocomplete
Type something in input field to make popover open
Rightclick on any option and select "Inspect Element"

Context 🔦
Trying to see what's happening in my autocomplete list to adjust styles.
Your Environment 🌎
Chrome 91.0.4472.124, same on Firefox
  System:
    OS: Linux 5.4 Ubuntu 20.04.2 LTS (Focal Fossa)
  Binaries:
    Node: 12.22.1 - ~/.nvm/versions/node/v12.22.1/bin/node
    Yarn: 1.22.5 - /usr/bin/yarn
    npm: 7.17.0 - ~/.nvm/versions/node/v12.22.1/bin/npm
  Browsers:
    Chrome: Not Found
    Firefox: Not Found
  npmPackages:
    @material-ui/core: ^4.11.4 => 4.11.4
    @material-ui/icons: ^4.11.2 => 4.11.2
    @material-ui/lab: ^4.0.0-alpha.58 => 4.0.0-alpha.58
    @material-ui/styles:  4.11.4
    @material-ui/system:  4.11.3
    @material-ui/types:  5.1.0
    @material-ui/utils:  4.11.2
    @types/react: ^17.0.11 => 17.0.11
    react: ^17.0.2 => 17.0.2
    react-dom: ^17.0.2 => 17.0.2
    typescript: ^4.3.2 => 4.3.2

ClickAwayListener isn't triggered on clicks outside the document, but Autocomplete doesn't use ClickAwayListener, it uses the blur event on the input.
For debugging, you can use the open prop to force the popover to be open.
https://codesandbox.io/s/combobox-material-demo-forked-gc61c?file=/demo.tsx


Some tests use env::args() and abort the test suite if -q or --ignored are passed

create_positional() in tests/positional.rs:
create_app() in tests/tests.rs
add_multiple() in tests/tests.rs

Are they intended to test with `env::args()?
They all accept an empty vec.

Nope, that's a great catch!

@tormol changing to get_matches_from(vec![""]) should work

Confirmed: those are the only uses of get_matches()


Show attendees on event popover if event has it

Firstly, thank you so much for this app, such a nice quality of life thing. 💙
One disclaimer, I never wrote objective C before (nor anything for MacOS {nor have used Xcode before haha}) so let me know if this is not the right approach.

Does what the title says:

I also tried to make it configurable here, not sure if it is something that we want so let me know if you want me to open a PR so we can discuss.

Thank you for taking the initiative. This feature has since been added to Itsycal (0.15.0).


I didn't host anyone

Subject: I didn't host anyone
Description:
Wants me to leave a review on a coucher, but his plans changed and he didn't come (yet?). No option to state that occurred.
Results:
I need a way to not review and say why.
Backend version: develop-b3cee755
Frontend version: d5976f07e36d2b578615fff0b4c9b964e1d4352a
User Agent: Mozilla/5.0 (Linux; Android 7.1.1; Z899VL) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.61 Mobile Safari/537.36
Page: https://couchers.org/leave-reference/hosted/9816/6202
User: germanbini (314)

not enough info or can't reproduce


[WIP] parser: support select into syntax

What problem does this PR solve?
support select into syntax
related PR: https://github.com/pingcap/tidb/pull/13603
What is changed and how it works?
Most of the code are written during the Hackathon, so it may be messy.
We have implemented:

select ... into variables
select ... into outfile
select ... into dumpfile

The parser handled some cases of the usage of the select-into with union and subquery statements, it's not completed.  sorry, but, fix me please.
Check List
Tests

Unit test

DONE as https://github.com/pingcap/parser/pull/745


Create  ZippedTextFileReader.java

This is to read from a zip file

Thanks for contributing, nice idea!
Seems like the build has failed due to missing symbols in ZippedTextFileReader.java:
https://travis-ci.org/apache/storm/jobs/199168284
Unit (and possibly integration) tests would be really beneficial so that we can ensure quality in a long run.
It is a protocol that first a JIRA issue is created for the feature/fix, then a PR is posted including the JIRA Issue ID in the commit message.
Could you please address these issues?

Sure will do that :)


Don't override monospaced font with localized body text font variant

Bug/issue #, if applicable: 110021706
Summary
This is a slight update to #677 to fix an issue where localized variants of normal body text fonts are mistakenly overriding the monospaced font variant, as we don't support localized monospaced variants (yet).
Testing
Steps:

Configure a localized font for body text
View a page with both body text and code-voice text
Verify that only the body text gets the localized font and not the code-voice text

Checklist
Make sure you check off the following items. If they cannot be completed, provide a reason.

[ ] Added tests (sass-only change, no unit infrastructure for sass code)
[X] Ran npm test, and it succeeded
[x] Updated documentation if necessary

@swift-ci test


code_transformer: Encoding of _AssetBasedSource files always results in relative URI

What steps will reproduce the problem?
Encoding an _AssetBasedSource invokes:
String get encoding =>
      "${uriKind.encoding}${assetId.package}/${assetId.path}";
which returns something like "102your/path".
In the analysis phase SourceFactory.forUri is called, where only absolute URIs are accepted. But this kind of encoding never results in an absolute URI
What is the expected output? What do you see instead?
Absolute URI with prefix 'dart:', 'file:' or 'package:'
What version of the product are you using?
bleeding_edge r42660

This issue has been moved to dart-lang/code_transformers#22.


Is eq. 23 implemented correctly?

In eq. 23 in the paper, derivative w.r.t x_i is
[(1 - p_zi)(1 + alpha) + lambda] Sigma^-1 (x - myu_zi) - ... ,
but the implementation (class_distance_layer.cu, line 227) looks like
[(1 - p_zi)(1 + alpha) Sigma^-1 + lambda] (x - myu_zi).
I wonder either the writing or the implementation is incorrect, though it is highly likely that it is I who is wrong (I am not very good at math).

Thanks for asking.
Both are correct.
Let's denote the two formulations your wrote as (1) and (2).
For (1), which is exactly what Eq.23 says, it considers the Variance when computing the likelihood.
For (2), it does not consider the Variance when computing the likelihood, which is sometimes easier to converge.
We have tested both ways. Both are okay. You can move the 'divide sigma' from inside the bracket to outside the bracket to try (1). This suits for line 178, 200, 227, 252.
Thanks.

Thanks a lot for the clarification!


Upcoming Release Changes

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to master, this PR will be updated.
Releases
<EMAIL_ADDRESS>Patch Changes

#35
f0c1bf9
Thanks @ardatan! - New helpers and DX improvements

<EMAIL_ADDRESS>Patch Changes

Updated dependencies []:

<EMAIL_ADDRESS>

<EMAIL_ADDRESS>Patch Changes

Updated dependencies
[f0c1bf9]:

<EMAIL_ADDRESS>

<EMAIL_ADDRESS>Patch Changes

Updated dependencies []:

<EMAIL_ADDRESS>

<EMAIL_ADDRESS>Patch Changes

Updated dependencies
[f0c1bf9]:

<EMAIL_ADDRESS>

<EMAIL_ADDRESS>Patch Changes

Updated dependencies
[f0c1bf9]:

<EMAIL_ADDRESS>

<EMAIL_ADDRESS>Patch Changes

Updated dependencies
[f0c1bf9]:

<EMAIL_ADDRESS>

🚀 Snapshot Release (rc)
The latest changes of this PR are available as rc on npm (based on the declared changesets):

Package
Version
Info

fets
0.0.10-rc-20230315174213-98ea417
npm ↗ unpkg ↗

💻 Website Preview
The latest changes are available as preview in: https://e3c282b3.fets.pages.dev


Added Modular Exponentiation [JAVA]

Fixes #135

By submitting this pull request I confirm I've read and complied with the below declarations.

[x] I have read the Contribution guidelines and I am confident that my PR reflects them.
[x] I have followed the coding guidelines for this project.
[x] My code follows the skeleton code structure.
[x] This pull request has a descriptive title. For example, Added {Algorithm/DS name} [{Language}], not Update README.md or Added new code.
[x] This pull request will be closed if I fail to update it even once in a continuous timespan of 7 days.

@aviaryan added BigInteger take a look


upgrade elasticsearch storage to support 7.0.0+

Current version 6.4.1, target 7.0.0-rc1.
changes

types are being deprecated

fixes

move collection to index name, "database.collection" instead, collection is optional.
allow RemoteStorages to be configured with 'secure', uses https instead of http.

Fixed on master.


IE stability issue - Webdriver error

Node version: 7.4.0
Protractor version: 5.1.1
Operating system: Windows 7
Browser: Internet Explorer 11
I recently upgraded to Protractor 5.1.1 and started to seeing this error show up occasionally:
WebDriverError: JavaScript error (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 49 milliseconds
It seems to be coming from the following code under *\lib\browser.ts
return this.driver.wait(() => {
            return this.executeScriptWithDescription('return window.location.href;', msg('get url'))
                .then(
                    (url: any) => {
                      return url !== this.resetUrl;
                    },
                    (err: IError) => {
                      if (err.code == 13 || err.name === 'JavascriptError') {
                        // Ignore the error, and continue trying. This is
                        // because IE driver sometimes (~1%) will throw an
                        // unknown error from this execution. See
                        // https://github.com/angular/protractor/issues/841
                        // This shouldn't mask errors because it will fail
                        // with the timeout anyway.
                        return false;
                      } else {
                        throw err;
                      }
                    });

If I change the the line above from
 if (err.code == 13 || err.name === 'JavascriptError')
to
 if (err.code == 13 || err.name === 'JavascriptError' || err.name === WebDriverError)
then the problem goes away.

This was fixed by https://github.com/angular/protractor/pull/4149. It'll go out in the next release.


No README.md provided.

I am looking to use this but I still couldn't figure it out. There is no information about it. Can you provide some info about the project?
Thanks for now.
Kappa.

I made this just yesterday, I'll provide the readme as soon as I can

Thank you.


F5 LoadBalancer

I'm looking to see what the effort would be to write an F5 integration. Currently my enterprise uses RHEL Atomic hosts with an F5 load balancer. We can access the F5 API to programmatically create virtual servers.
On AWS, I can specify the "LoadBalancer" service type, and it auto creates the ELB + configures. I'm looking for a way to do exactly the same thing. I am 100% cool with doing the effort, just looking for some strategy around how / where / and integration.
Is this pluggable where I could mirror how it works on AWS? Or do I need to change approaches. It's probably important to be pluggable as I"m not building k8s myself, rather, using the RHEL packages from Atomic upgrades.

Nice!
So you have 3 options:

Write a sham cloud provider that implements a TCPLoadBalancer interface (https://github.com/kubernetes/kubernetes/blob/48184026f16fd5a1af6cb8d754fc175115949a87/pkg/cloudprovider/cloud.go#L78). I would recommend this if you wanted something working now and you're running outside a cloud. This approach has its limitations.
Write a stand alone F5 loadbalancer controller pod. Here's an example of the same thing with haproxy: https://github.com/kubernetes/contrib/tree/master/service-loadbalancer. This is better in the long term, because we're moving toward a plugin model (https://github.com/kubernetes/kubernetes/pull/12827) and once we're there you will just have to drop your pod in as a plugin with some minor changes.
Wait for openshift's f5 plugin. They already have a wip which they'll probably check into kubernetes when we have the api ironed out.

Thanks for the quick feedback!
For option 1, I would need to build a customer k8s binary right? Seems like option 2 is the easiest to get running right now for me. I may play around with the HAProxy one to get a feel and then dive into the F5 specifically.
Also, I've only contributed docs back, so I'm pumped to be able to start doing some "real coding". Thanks again for the feedback, I may update with some additional questions if this issue is appropriate.

2 is the least invasive, though you might have to write more code. Sounds like that's a positive in your case.
A couple of things:

This is how you subscribe to services and endpoint changes: https://github.com/kubernetes/contrib/blob/master/service-loadbalancer/service_loadbalancer.go#L358. You basically just want to dynamically configure your f5 upon each change.
Haproxy is running on a node in your cluster, so it can route to the endpoint ips. This probably isn't the case for the f5. The easiest way to overcome this is to have f5 -> haproxy(in your cluster) -> endpoints. the haproxies have real ips (see the README) which you plug into the f5.

There are better ways to solve 2 that bypass the haproxy layer (setup a tunnel from f5 -> to a node in your cluster) but I haven't thought them through.

I'm thinking if I can get notified when the service is created then all I need to do it write config to F5 with the NodePort assigned (or requested by user), but that seems too simple.
For the first approach where I implement the sham cloud provider, is that an API server change? I'm not completely clear on where that fits.

I'm thinking if I can get notified when the service is created then all I need to do it write config to F5 with the NodePort assigned (or requested by user), but that seems too simple.

That's right, if you don't want to route to the endpoints directly you can send traffic to service with nodeport.

For the first approach where I implement the sham cloud provider, is that an API server change? I'm not completely clear on where that fits.

You will have add your new provider into pkg/cloudprovider/providers and restart the cluster with the right settings.

So to be a total noob, where is the path of this "pkg/cloudprovider/providers" in the cluster? I'm assuming this needs compiled into binary first? Would I just need to push new API server and not kubelet to each node?

Yeah you can't just drop a binary into your cluster for a cloudprovier, that's the pod option. For cloud provider you will need to do: http://kubernetes.io/v1.0/docs/getting-started-guides/scratch.html#cloud-providers

I'm having some issues with simple dev on the code running in my pod and these are most certainly around my newness to developing k8s.
I have my dev environment setup and am running k8s locally via "hack/local-up-cluster.sh". When I run the pod in my env, I get an issue trying to auth to the https endpoint (when I only have http) which makes sense.
So I then spun up an environment via the docker version. When I run that I get this error:
service_loadbalancer.go:436] Failed to create client: open /var/run/secrets/kubernetes.io/serviceaccount/token: no such file or directory
How do you folks typically do dev? Do you have a cluster running in GCE and just use kubectl proxy somehow? Should I be using a Vagrant command? I realize there are probably a bunch of ways to solve, I just am looking for a nice path.

To be honest, we mostly use GCE.  I think that the Red Hat folks use
vagrant.
--brendan
On Thu, Aug 20, 2015 at 10:29 AM, Steve Sloka<EMAIL_ADDRESS>wrote:

I'm having some issues with simple dev on the code running in my pod and
these are most certainly around my newness to developing k8s.
I have my dev environment setup and am running k8s locally via
"hack/local-up-cluster.sh". When I run the pod in my env, I get an issue
trying to auth to the https endpoint (when I only have http) which makes
sense.
So I then spun up an environment via the docker version. When I run that I
get this error:
service_loadbalancer.go:436] Failed to create client: open
/var/run/secrets/kubernetes.io/serviceaccount/token: no such file or
directory
How do you folks typically do dev? Do you have a cluster running in GCE
and just use kubectl proxy somehow? Should I be using a Vagrant command? I
realize there are probably a bunch of ways to solve, I just am looking for
a nice path.
—
Reply to this email directly or view it on GitHub
https://github.com/kubernetes/contrib/issues/12#issuecomment-133084190.

I'm building a pod that will listen for events when services are created / deleted to support my F5 needs. Do you have any thoughts around a faster dev cycle other than: 1. Build binary 2. Make image 3. Deploy image 4. Update RC 5. Deploy pod?

You can hack around by using "docker run -v ..." to mount the secret
yourself on your dev workstation without using Kubernetes.
Essentially simulate what it would be like in the kubernetes cluster.
Or you can build the image out on the Kubernetes nodes, but that basic
workflow is what is generally needed...
--brendan
On Thu, Aug 20, 2015 at 10:36 AM, Steve Sloka<EMAIL_ADDRESS>wrote:

I'm building a pod that will listen for events when services are created /
deleted to support my F5 needs. Do you have any thoughts around a faster
dev cycle other than: 1. Build binary 2. Make image 3. Deploy image 4.
Update RC 5. Deploy pod?
—
Reply to this email directly or view it on GitHub
https://github.com/kubernetes/contrib/issues/12#issuecomment-133088898.

You should be able to use localcluster. Don't start with the pod, just make a go program that runs your control loop. You can actually point your localhost go program at a remote cluster using the kubectl proxy.

run kubectl proxy (it'll start up on 8001 or somthing)
you should be able to curl http://localhost:8001 and hit your remote apiserver
You can now create a kubernetes client like so:

kubeClient := client.NewOrDie(&client.Config{Host: "http://<IP_ADDRESS>:8001", Version: testapi.Version()})

Get this controller wroking, then swap out the client creation logic for NewInCluster
Run this in a pod on local cluster
Push to remote cluster

Ahh ok sweet. That's what I was looking for, a way to run and I thought kubectl proxy would help. Awesome, let me give that a go. =)

Is there any way to print out the requests that "kubectl proxy" is making? Where I'm going is, I can get the services created when everything initially loads. I put logs in the "eventHandlers" section to basically print "got add", "got delete", etc. Once the app is running, I'll try and add a service, but doesn't seem like events are firing.
Here's my logs code:
eventHandlers := framework.ResourceEventHandlerFuncs{
AddFunc:    func(cur interface{}) {
fmt.Println("-----------> got an add!")
enqueue(cur)
},
DeleteFunc: func(cur interface{}) {
fmt.Println("-----------> got a delete!")
enqueue(cur)
},
UpdateFunc: func(old, cur interface{}) {
fmt.Println("-----------> got an update!")
if !reflect.DeepEqual(old, cur) {
enqueue(cur)
}
},
}

kubectl proxy --v=10
Just try running the serviceloadbalancer control loop with --dry=true and the proxy to make sure you have that working. https://github.com/kubernetes/contrib/blob/master/service-loadbalancer/service_loadbalancer.go#L65

OK sweet I'm in a much better state now, I can get events and see what's going on now when services are registered and deleted, etc.
Quick design question, do you want me to extend the current code to have a flag to handle the F5? Or would you rather have a separate project?

Personally, having a general purpose service watcher, with multiple plugins
(ha proxy, f5, etc) seems to be best.  Share as much code as we can.
Brendan
On Aug 22, 2015 6:57 PM, "Steve Sloka"<EMAIL_ADDRESS>wrote:

OK sweet I'm in a much better state now, I can get events and see what's
going on now when services are registered and deleted, etc.
Quick design question, do you want me to extend the current code to have a
flag to handle the F5? Or would you rather have a separate project?
—
Reply to this email directly or view it on GitHub
https://github.com/kubernetes/contrib/issues/12#issuecomment-133770120.

Agreed. That's why I split loadbalancer config (https://github.com/kubernetes/contrib/blob/master/service-loadbalancer/service_loadbalancer.go#L127) and loadbalancer controller (https://github.com/kubernetes/contrib/blob/master/service-loadbalancer/service_loadbalancer.go#L229). You should be able to start up the loadbalancer controller with forward-services=true (https://github.com/kubernetes/contrib/blob/master/service-loadbalancer/service_loadbalancer.go#L103) to get the behavior you want.
The loadbalancer config is currently a really simple interface consisting of 2 methods: write and reload. The write method will get called with some service structs (https://github.com/kubernetes/contrib/blob/master/service-loadbalancer/service_loadbalancer.go#L115) and your loadbalancer can do with it what it likes. You can extend the loadbalancer config interface, If you need to.
If you add unittests (https://github.com/kubernetes/contrib/blob/master/service-loadbalancer/service_loadbalancer_test.go) I promise to preserve them when i extend the service loadbalancer to watch any new resources we add (eg: l7 ingress points)

Small API question: I want to get a list of all the nodes in the cluster to be able to update F5 accordingly. I'm new to the api, would this be somewhat the right syntax?
lbc.nodeLister.Store, lbc.nodeController = framework.NewInformer(
		cache.NewListWatchFromClient(
			lbc.client, "nodes", namespace, fields.Everything()),
		&api.NodeList{}, resyncPeriod, eventHandlers)

I get an error on &api.NodeList{} saysing that the server couldn't find the requested resource. I know I'm missing something small with the API. I was using this for reference: https://github.com/kubernetes/kubernetes/blob/264a658afab60fb858cfc5886b86ed2a77779cd9/pkg/client/unversioned/cache/listers.go#L103

What you're trying to do is setup a watcher. This is more complicated than simply getting a list of nodes, it will call you eventHandlers every time a node changes (add, update, delete) and if you list the nodeLister.Store, you're listing from memory not etcd or the apiserver.
To do a simple onetime nodelist:
nodes := []api.Node{}
nodeList, err := client.Nodes().List(labels.Everything(), fields.Everything())
if err != nil {
    return
}
for i := range nodeList.Items {
    nodes = append(nodes, nodeList.Items[i])
}
return nodes

To answer your real question:
The problem is nodes are not namespaced and NewListWatchFromClient tries to apply a namespace. So if you want a watcher on nodes you can do something like:
	lbc.nodeLister.Store, lbc.nodeController = framework.NewInformer(
		&cache.ListWatch{
			ListFunc: func() (runtime.Object, error) {
				return lbc.client.Get().
					Resource("nodes").
					FieldsSelectorParam(fields.Everything()).
					Do().
					Get()
			},
			WatchFunc: func(resourceVersion string) (watch.Interface, error) {
				return lbc.client.Get().
					Prefix("watch").
					Resource("nodes").
					FieldsSelectorParam(fields.Everything()).
					Param("resourceVersion", resourceVersion).Watch()
			},
		},
		&api.Node{}, resyncPeriod, nodeHandlers)

@ramr

I've been waiting to get access to my internal F5 instance to start working on the integration. We also use Infoblox to manage our DNS. I was thinking that potentially that should be a different container? My goal with our integration is to 1. create the service 2. create the VIP on the F5 + config 3. create the dns automatically to point to the vip created in step 3.
Any thoughts on that approach or if I should split out the dns component?

Yeah, that seems reasonable. You could separate out the 2 components so that someone who is using Infoblox, but not an F5 could re-use your DNS component, but that's not strictly necessary.
--brendan

I noticed @stensonb and Chris Snell working on a similar effort on irc, so perhaps you guys can share notes

Thanks for steering me here, @bprashanth.  So, yes, we are indeed working on such an effort.  We wanted to avoid having to use HAproxy instances running within the cluster to proxy the traffic in from the (external) F5.  So, we decided to use NodePorts instead.
We're building a RESTful service called *lbaasd that watches Nodes and Services events and updates F5 VIPs accordingly.  It works like this:

You'll create a new VIP in lbaasd and supply a service name along with a port name (from the service spec), as well as some frontend VIP configuration (what protocol, what port, SSL, etc.) and a "class" of IP (e.g. public, private, etc.) that you would like to use for the VIP.

lbaasd talks to a companion service, called cidrd to obtain a "lease" on an IP for your VIP.  Within cidrd, your ops team defines classes of IP space (e.g. public, private, etc.) and allocates blocks of IPs to these classes, which then get handed out to lbaasd.

lbaasd pulls down the NodePort for your service from the Kubernetes API, along with a selection of nodes to serve as backends.  With the algorithm that we use for node selection, your VIPs are evenly spread across the backend nodes to minimize network traffic hot spots.

lbaasd then creates a VIP on the F5, pointing it at the NodePort on the nodes it chose

lbaasd sets up a watch of your service and a watch of all nodes and updates the VIP if nodes fall off, or NodePorts change, etc.

There will be a command line util (lbaasctl) to create/list/update/delete VIP objects, but it's all RESTful so you could also integrate the lbaasd API into your workflow.
We're working like mad to get this to a functional state.  I'm going to submit to the KubeCon CFP this week and hope to have this thing functional in time for the conference, regardless of whether we present.

I also want to add that we abstracted the load balancer functionality using a Go interface so that any type of load balancer could conceivably be supported.  We're going to be building the F5 implementation of that interface because that's what we run on but someone could implement this for Nginx Plus, or any other programmable load balancer.

@chrissnell Awesome! That's exactly what I was going to attempt to do with another addition. I've been blocked trying to get access to our internal F5 to do development. I'm glad to help out and contribute since it seems you are much further ahead than I am.
The only other addition I had planned on making was creating DNS tied to the VIP used for the F5 so that we could get a nice "dynamic" name that went with the service.
Do you have your code up somewhere? Again, would love to help collaborate, but am stuck on no F5 access at the moment so working on dns piece (with Infoblox).

@stevesloka I don't know if you've seen https://github.com/openshift/origin/tree/master/plugins/router/f5, but when Ingress lands we should have the conversion code so you can just run the image (https://hub.docker.com/r/openshift/origin-f5-router/ which is currently not being pushed, should be by end of day) against a Kube server with Ingress points.

Right now the router pulls Routes (the seed for Ingress), once Ingress is possible the router will consume Ingress as well.

@smarterclayton Sweet! Looks like I could potentially use the f5 integration as-is. My thought was to do what @chrissnell was going to do and just wire up to NodePorts, which potentially could be an intermediate step.
Could you give me the quick story behind Ingress? Just a type of routing?
I am going to try and get the NodePort routing pieces working now then can swap out later.

Hey, I recommended the openshift f5 way back :) (https://github.com/kubernetes/contrib/issues/12#issuecomment-132414808)
Ingress: https://github.com/kubernetes/kubernetes/pull/12827

Ingress is building out an agreed on pattern in Kube.  We learned a lot doing Routes (and in comparison with existing LB systems) and so Ingress is the broadening to support other use cases and deal with the evolution of network designs in Kube as well (to deal with cloud LB, on demand provisioned LB, or shared LB).

another approach is to use confd to rewrite bigip.conf. I did similar approach with consul + consul-template. (http://nethero.org)
elaborating:
create a new F5 partition - this will create a new bigip.conf included on the main one. (if you break this partition, it dont break the entire box config)
install confd on F5.
write up a template to render /config/partition/YOUR_PARTITION/bigip.conf
reload the partition config via: tmsh load sys config partitions { YOUR_PARTITION }
this way you don't need to interact via REST API, as well don't need to worry about gargabe collection, since the config is always synced with the service catalog from etcd.

Is service-loadbalancer concept already integrated into the main tree. Can we rely on it to work or is it just a new type of pod defined which uses ha_proxy to create divert traffic to services based on configuration and doesnt require any other additional support from Kubernetes

@softwaredefinedworld didn't see your question. There is a resource called Ingress in main tree that embodies the concepts in service loadbalancer. See: https://github.com/kubernetes/kubernetes/blob/release-1.1/docs/user-guide/ingress.md

Just an update on my F5 integration (it's been a while since I last was able to pick this up). I'm going to work to finally make this a thing. Since my branch is super old, just going to grab latest and go from there.

@stevesloka great! would be great to see an ingress controller for f5 (https://github.com/kubernetes/contrib/blob/master/Ingress/controllers/README.md). Those instructions should be up-to-date but you can always ask back if something at HEAD is out of sync and doesn't work.

@bprashanth Maybe I'm missing something here but it seems that the big missing piece for the F5 is participation in the overlay/container network.  I don't know if @stevesloka is doing something differently but our F5s live outside of Kubernetes and the overlay network (for us, Flannel) and don't have direct access to services unless they are exposed via NodePort.   Is NodePort configuration available through the Ingress interface?
I hear it's possible to get F5s to participate in the overlay network--they are just Linux servers, more or less--but I'm not sure if we risk rendering our devices unsupported if we do that.

doing something differently but our F5s live outside of Kubernetes and the overlay network (for us, Flannel) and don't have direct access to services unless they are exposed via NodePort. Is NodePort configuration available through the Ingress interface?

That's the same for any cloud, Services are a different plane from Ingress. A service can exist as nodeport and/or type=l4-loadbalancer, and still be part of an ingress. In fact having nodeport services is a requirement for gce ingress controller to work. Employing the Ingress as a metaphor makes sense if you need fanout (1ip -> multiple hostnames -> each with multiple urls going to different kubernetes service:ports) or tls termination, sni, re-encrypt etc.
You can, for example, deploy an nginx per node as a daemon set, just like node port, listening on :80, but proxying traffic to all services specified in an Ingress at L7 using different hostnames and urls.

@chiradeep

@chrissnell you are correct. Here's something I've put together for Netscaler and K8s (+ Mesos/Swarm)
https://github.com/chiradeep/nitrox
Adapting it for other HW LB is as simple as writing an implementation for configure_app:
https://github.com/chiradeep/nitrox/blob/master/netscaler.py#L188

@chiradeep @chrissnell @stevesloka I would really like to get something that connects HW lbs and Kubernetes into contrib, so we can work on extending it to support more loadbalancers. This has been asked by enough people that I get the feeling we'll get contributors if we get the ball rolling. I don't care if it's Ingress or Service or just straight to endpoints :)

I've been trying to get access to my corp F5 instance and yet have not been able to. The problem is that our version of F5 won't restrict my access to just my stuff, so they need to give me root access which my IT team doesn't want to do. So I'm stuck at the moment on integrating to that piece and testing it out.
I do have the InfoBlox integration complete which gave us DNS. I can give back that piece now which you can see here if that's of interest: https://github.com/upmc-enterprises/contrib/tree/f5-2/service-loadbalancer

Does it have to be in Go? Go clients are usually not available for HW LB (but can be done).

@chiradeep no it does not. Go is preferred because a lot of the Kubernetes community is familiar with it, so they'd probably be more willing to jump in and fix issues.

The F5 REST API is straightforward and easy enough to implement in Go.   The block that we ran into is building the state machines to watch the K8S API and handle services and nodes coming and going.   We made good progress and then got pulled away on other projects.  We still want this and if it's not implemented elsewhere, I hope to pick up the project again.

@stevesloka Have you thought about using one of F5's virtual editions to test against? You can get a 90-day trial or an request an eval version here

Thanks @Lucius-, let me check that out and see if I can get it running.

Just another update, I am working on it. F5 team has been awesome to help support me and I've got my own instance running. I'm looking at what RedHat did with Origin, looks like they have it all mostly worked out, so will keep chugging from here. Thanks!

@stevesloka Hey looking forward to seeing F5 support.  Curious if you're planning on doing this with an IngressController.
We are also looking at adding support for F5 in K8, and would like to collaborate on this with you, if you're at that point.

Hey @vipulsabhaya! Right now I'm working on NodePorts implementation since it's the simplest for my company to get rolling. But I've talked with @bprashanth a bit about wanting an Ingress version as well.
I've been trying to get heads down on this to get something up to look at and play with.

We initially started service-loadbalancer as a Service centric thing (https://github.com/kubernetes/contrib/tree/master/service-loadbalancer), but got a lot of feedback about centralized policy and security configuration, the need for a cross-platform lb api etc. I think the ingress controller is the desired goal, but we can get there incrementally. If annotations on a Service is the easiest thing lets start with that.
Fyi the gce ingress controller mandates nodeport services (https://github.com/kubernetes/contrib/tree/master/ingress/controllers/gce).

I'm not very much familiar with F5 LB, but is making the F5 LB part of the VXLAN/flannel network as described in [1] an option ? Anyone have any experience with such kind of a setup ?
[1] https://f5.com/resources/white-papers/vxlan-and-the-big-ip-platform

Not directly equivalent, but routing_from_edge_b.html
https://docs.openshift.org/latest/install_config/routing_from_edge_lb.html#establishing-a-tunnel-using-a-ramp-node
describes
what you can do if you want to ramp from an F5 if you can't make it part
of VXLAN.  I know F5 was looking at updating to be compatible with the
kernel and version of OVS we used but haven't looked recently to see if it
happened.
On Fri, Aug 5, 2016 at 10:23 AM, Pradipta Banerjee<EMAIL_ADDRESS>
wrote:

I'm not very much familiar with F5 LB, but is making the F5 LB part of the
VXLAN/flannel network as described in [1] an option ? Anyone have any
experience with such kind of a setup ?
[1] https://f5.com/resources/white-papers/vxlan-and-the-big-ip-platform
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/kubernetes/contrib/issues/12#issuecomment-237863790,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ABG_pzLJBqrtBcg8i1E_78Se1LJcODnbks5qc0dLgaJpZM4FuCJ4
.

@bpradipt I've used the F5 Python SDK to populate the FDB table and ARP entries following the documentation from: https://support.f5.com/kb/en-us/products/big-ip_ltm/manuals/product/tmos-implementations-12-1-0/8.html
I did this in my spare time as an example, but I cannot vouch for whether this is the "correct" way to network with flannel network.  Here's the example: https://github.com/f5devcentral/f5-icontrol-codeshare-python/tree/master/kubernetes-example  In my lab environment it allows the BIG-IP to route to the host via VXLAN.

We've added support for an F5 backend to a new service loadbalancer implementation https://github.com/kubernetes/contrib/pull/1343 -- we plan to update this and consume Ingress as Ingress evolves to support TCP load balancing

F5 plug-in for Openshift has moved to https://github.com/openshift/origin/tree/master/pkg/router/f5.


Descriptive constraint violation messages

This pull requests attempts to return user friendly error messages when constraints are violated either in the response or the request.
So instead of error messages of
{"errors":["blazer.arg0.name may not be empty"]}

and
{"errors":["blaze.<return value> length must be between 0 and 3"]}

more user friendly error messages are returned
{"errors":["query param name may not be empty"]}

{"errors":["server response length must be between 0 and 3"]}

This pull request isn't done, so don't merge (hardly any documentation and I didn't completely mull over edge cases). As it happens, I'll be off the grid for the next couple weeks, but I wanted to get some eyes on the code (hence the pull request), but if someone is extremely enthusiastic they can carry this pull request the rest of the way, else I'll pick off where I left off and incorporate any suggestions in the pull request.
The code isn't fast, concise, documented, or complete -- but it passes all the test cases I wrote for it :smile:
Opinions wanted!

I hacked a little on your first versoin of ConstraintViolationExceptionMapper
@Provider
public class ConstraintViolationExceptionMapper implements ExceptionMapper<ConstraintViolationException> {

    @Override
    public Response toResponse(ConstraintViolationException exception) {
        final ImmutableList<String> errors = FluentIterable.from(exception.getConstraintViolations())
                .transform(new Function<ConstraintViolation<?>, String>() {
                    @Override
                    public String apply(ConstraintViolation<?> v) {
                        return constraintMessage(v);
                    }
                }).toList();
        return Response.status(ConstraintViolations.determineStatus(exception.getConstraintViolations()))
                .entity(new ValidationErrorMessage(errors))
                .build();
    }

    private String constraintMessage(ConstraintViolation<?> v) {
        final Optional<String> returnValueName = getMethodReturnValueName(v);
        if (returnValueName.isPresent()) {
            final String name = isValidationMethod(v) ?
                    StringUtils.substringBeforeLast(returnValueName.get(), ".") : returnValueName.get();
            return name + " " + v.getMessage();
        } else {
            if (isValidationMethod(v)) {
                return ConstraintViolations.validationMethodFormatted(v);
            } else {
                final String name = getMemberName(v).or(v.getPropertyPath().toString());
                return name + " " + v.getMessage();
            }
        }
    }

    /**
     * Gets the method return value name, if the violation is raised in it
     */
    private Optional<String> getMethodReturnValueName(ConstraintViolation<?> violation) {
        int returnValueNames = -1;

        final StringBuilder result = new StringBuilder("server response");
        for (Path.Node node : violation.getPropertyPath()) {
            if (node.getKind().equals(ElementKind.RETURN_VALUE)) {
                returnValueNames = 0;
            } else if (returnValueNames >= 0) {
                result.append(returnValueNames++ == 0 ? " " : ".").append(node);
            }
        }

        return returnValueNames >= 0 ? Optional.of(result.toString()) : Optional.<String>absent();
    }

    /**
     * Gets a method parameter (or a parameter field) name, if the violation raised in it.
     */
    private Optional<String> getMemberName(ConstraintViolation<?> violation) {
        final Path propertyPath = violation.getPropertyPath();
        final int size = Iterables.size(propertyPath);
        if (size < 2) {
            return Optional.absent();
        }

        final NodeImpl parent = (NodeImpl) Iterables.get(propertyPath, size - 2);
        final NodeImpl member = (NodeImpl) Iterables.get(propertyPath, size - 1);

        final Class<?> resourceClass = violation.getLeafBean().getClass();
        switch (parent.getKind()) {
            case PARAMETER:
                final Field field = FieldUtils.getDeclaredField(resourceClass, member.getName(), true);
                return getMemberName(field.getDeclaredAnnotations());
            case METHOD:
                final Method method = MethodUtils.getAccessibleMethod(
                        resourceClass, parent.getName(), asArray(parent.getParameterTypes()));
                return getMemberName(method.getParameterAnnotations()[member.getParameterIndex()]);
            default:
                return Optional.absent();
        }
    }

    /**
     * Derives member's name and type from it's annotations
     */
    private Optional<String> getMemberName(Annotation[] memberAnnotations) {
        for (Annotation a : memberAnnotations) {
            if (a instanceof QueryParam) {
                return Optional.of("query param " + ((QueryParam) a).value());
            } else if (a instanceof PathParam) {
                return Optional.of("path param " + ((PathParam) a).value());
            } else if (a instanceof HeaderParam) {
                return Optional.of("header " + ((HeaderParam) a).value());
            } else if (a instanceof CookieParam) {
                return Optional.of("cookie " + ((CookieParam) a).value());
            } else if (a instanceof FormParam) {
                return Optional.of("form field " + ((FormParam) a).value());
            }
        }

        return Optional.absent();
    }

    private static Class<?>[] asArray(List<Class<?>> list) {
        return list.toArray(new Class<?>[list.size()]);
    }

    private static boolean isValidationMethod(ConstraintViolation<?> v) {
        return v.getConstraintDescriptor().getAnnotation() instanceof ValidationMethod;
    }
}

I think, it's a little more concise and readable. If you like it, you can derive your work from this
version. Or just borrow some concepts.
I didn't touch the tests. Will try to review them in a short time and give some feedback also.

Awesome, thanks for the alternative implementation while I was away, I'll start basing work on it and reply back once I'm satisfied.

Largely adapted @arteam's implementation
Added benchmarks so someone can come along and optimize if needed

If everything looks good, I can start writing up some prose documentation.

Looks good to me! Apart from some remarks for benchmarks and one micro optimization, I think this change can be prepared for merging.
By the way, I guess it's the first PR where we try to use dropwizard-benchmarks for improving an implementation :)

Suggestions taken, thanks for the review.

Coverage increased (+1.14%) to 72.57% when pulling 18d1187185665eae487c5459131519e18c38b311 on nickbabcock:constraint-messages into 5d0dd61fb50f70cd6e813d2fcb6b086e8345923c on dropwizard:master.

Maybe it is inappropriate for this pull request but I couldn't resist adding in a simple caching mechanism that increases performance by up to 250x when there is a hit.
Benchmark                                    Mode  Cnt     Score     Error  Units
ConstraintViolationBenchmark.objViolation    avgt    5  3416.563 ± 214.989  ns/op
ConstraintViolationBenchmark.paramViolation  avgt    5  5605.761 ±  90.774  ns/op

Benchmark                                    Mode  Cnt   Score   Error  Units
ConstraintViolationBenchmark.objViolation    avgt    5  22.430 ± 0.359  ns/op
ConstraintViolationBenchmark.paramViolation  avgt    5  22.643 ± 1.384  ns/op

Coverage increased (+0.27%) to 72.65% when pulling 67fd54f4973fa4ed3b1de4e5ee78798a7621e8fe on nickbabcock:constraint-messages into 150bac9213fabaeb1d85649f4ba53a3808cd7926 on dropwizard:master.

Coverage increased (+0.27%) to 72.65% when pulling 67fd54f4973fa4ed3b1de4e5ee78798a7621e8fe on nickbabcock:constraint-messages into 150bac9213fabaeb1d85649f4ba53a3808cd7926 on dropwizard:master.

Coverage increased (+0.27%) to 72.65% when pulling 67fd54f4973fa4ed3b1de4e5ee78798a7621e8fe on nickbabcock:constraint-messages into 150bac9213fabaeb1d85649f4ba53a3808cd7926 on dropwizard:master.

Coverage increased (+0.27%) to 72.65% when pulling 67fd54f4973fa4ed3b1de4e5ee78798a7621e8fe on nickbabcock:constraint-messages into 150bac9213fabaeb1d85649f4ba53a3808cd7926 on dropwizard:master.

Thanks! Merged to master.
UPD. I missed your comment about caching and merged this too early. Fixed up this a little in a21ce52