Run-AlValidation: App could not be found in the baseline package cache folder

Not able to get Run-AlValidation to work with main and library app
I tried to validate a new release against latest 18 and current 17 builds for some hours now. I always get the following error for library and the main app:
AppSourceCop.json(1,1): error AS0003: The version '<IP_ADDRESS>' of the extension with publisher 'EvilCompany' and name 'Evil Library App' could not be found in the baseline package cache folder. If you do not want to validate breaking changes, remove the property 'version' from the AppSourceCop.json.
I have confirmed, that the previous apps are in the folder /packagecachepath and also confirmed, that the path is accessible from host and container.
I am lost now. Any idea or suggestions?
Scripts used to create container and cause the issue
Run-AlValidation `
    -containerName 'myApp' `
    -licenseFile "$licenseFile `
    -credential $containerCredential `
    -validateCurrent `
    -sasToken "***" `
    -affixes "EVL" `
    -countries 'de' `
    -previousApps $previousApps `
    -apps $apps;

Full output of scripts
PARAMETERS
Container name               myApp
Image name
Credential                   Specified
License file                 Specified
MemoryLimit                  8G
validateVersion
validateCurrent              True
validateNextMinor            False
validateNextMajor            False
SasToken                     Specified
countries                    de
validateCountries            de
affixes                      EVL
supportedCountries
vsixFile
Install Apps
- None
Previous Apps
- C:\Temp\AlPipeline\previousApps\EvilCompany_Evil Main App_<IP_ADDRESS>.app
- C:\Temp\AlPipeline\previousApps\EvilCompany_Evil Library App_<IP_ADDRESS>.app
Apps
- C:\Temp\AlPipeline\apps\EvilCompany_Evil Main App_17.0.21032301.0.app
- C:\Temp\AlPipeline\apps\EvilCompany Evil Library App 17.0.21030301.21032301.app

PULLING GENERIC IMAGE
Pulling mcr.microsoft.com/businesscentral:10.0.19042.867

Pulling generic image took 1 seconds

DETERMINE ARTIFACTS
Found https://bcartifacts.azureedge.net/sandbox/17.5.22499.23535/de
Using https://bcartifacts.azureedge.net/sandbox/17.5.22499.23535/de

CREATING CONTAINER
Creating container for country de
BcContainerHelper is version 2.0.7
BcContainerHelper is running as administrator
Host is Microsoft Windows 10 Enterprise - 20H2
Docker Client Version is 19.03.14
Docker Server Version is 19.03.14
Downloading application artifact /sandbox/17.5.22499.23535/de
Downloading C:\Temp\User\6f397036-3805-4514-984d-cef1603ff420.zip
Unpacking application artifact to tmp folder using 7zip
Downloading platform artifact /sandbox/17.5.22499.23535/platform
Downloading C:\Temp\User\bfcd0331-23c6-4f6e-a629-eb9cb4b51467.zip
Unpacking platform artifact to tmp folder using 7zip
Downloading Prerequisite Components
Downloading c:\bcartifacts.cache\sandbox\17.5.22499.23535\platform\Prerequisite Components\Open XML SDK 2.5 for Microsoft Office\OpenXMLSDKv25.msi
Downloading c:\bcartifacts.cache\sandbox\17.5.22499.23535\platform\Prerequisite Components\IIS URL Rewrite Module\rewrite_2.0_rtw_x64.msi
Downloading c:\bcartifacts.cache\sandbox\17.5.22499.23535\platform\Prerequisite Components\DotNetCore\DotNetCore.1.0.4_1.1.1-WindowsHosting.exe
Fetching all docker images
Fetching all docker volumes
Using image mcr.microsoft.com/businesscentral:10.0.19042.867
Creating Container myApp
Version: 17.5.22499.23535-DE
Style: sandbox
Multitenant: No
Platform: 17.0.22463.23443
Generic Tag: <IP_ADDRESS>
Container OS Version: 10.0.19042.867 (20H2)
Host OS Version: 10.0.19042.867 (20H2)
Using process isolation
Using locale de-DE
Disabling the standard eventlog dump to container log every 2 seconds (use -dumpEventLog to enable)
Using license file C:\EvilCompany\License\DemoDev_BC17.flf
Additional Parameters:
--env customNavSettings=EnableTaskScheduler=True
Files in C:\ProgramData\BcContainerHelper\Extensions\myApp\my:
- AdditionalOutput.ps1
- license.flf
- MainLoop.ps1
- SetupVariables.ps1
- updatehosts.ps1
Creating container myApp from image mcr.microsoft.com/businesscentral:10.0.19042.867
d310ad3b0917e7d97587881e51a70b8514c2370a9e524d0bb9cda3de7f5d8868
Waiting for container myApp to be ready
Using artifactUrl https://bcartifacts.azureedge.net/sandbox/17.5.22499.23535/de
Using installer from C:\Run\150-new
Installing Business Central
Installing from artifacts
Starting Local SQL Server
Starting Internet Information Server
Copying Service Tier Files
Copying PowerShell Scripts
Copying dependencies
Copying ReportBuilder
Importing PowerShell Modules
Determining Database Collation from c:\dl\sandbox\17.5.22499.23535\de\BusinessCentral-DE.bak
Restoring CRONUS Demo Database
Setting CompatibilityLevel for CRONUS on localhost\SQLEXPRESS
Modifying Business Central Service Tier Config File for Docker
Creating Business Central Service Tier
Installing SIP crypto provider: 'C:\Windows\System32\NavSip.dll'
Copying Web Client Files
Copying Client Files
Copying ModernDev Files
Copying additional files
Copying ConfigurationPackages
Copying Test Assemblies
Copying Extensions
Copying Applications
Copying Applications.DE
Starting Business Central Service Tier
Importing license file
Stopping Business Central Service Tier
Installation took 118 seconds
Installation complete
Initializing...
Setting host.containerhelper.internal to <IP_ADDRESS> in container hosts file
Starting Container
Hostname is myApp
PublicDnsName is myApp
Using NavUserPassword Authentication
Creating Self Signed Certificate
Self Signed Certificate Thumbprint 2EFC433733E6F03E0B29D12D57CB7908C24262FC
Modifying Service Tier Config File with Instance Specific Settings
Modifying Service Tier Config File with settings from environment variable
Setting EnableTaskScheduler to True
Starting Service Tier
Registering event sources
Creating DotNetCore Web Server Instance
Enabling Financials User Experience
Using license file 'c:\run\my\license.flf'
Import License
Creating http download site
Setting SA Password and enabling SA
Creating admin as SQL User and add to sysadmin
Creating SUPER user
WARNING: The password that you entered does not meet the minimum requirements.
It should be at least 8 characters long and contain at least one uppercase
letter, one lowercase letter, and one number.
Container IP Address: <IP_ADDRESS>
Container Hostname  : myApp
Container Dns Name  : myApp
Web Client          : http://myApp/BC/
Dev. Server         : http://myApp
Dev. ServerInstance : BC
Setting myApp to <IP_ADDRESS> in host hosts file

Files:
http://myApp:8080/ALLanguage.vsix

Container Total Physical Memory is 31.8Gb
Container Free Physical Memory is 13.5Gb

Initialization took 50 seconds
Ready for connections!
Reading CustomSettings.config from myApp
Creating Desktop Shortcuts for myApp
Container myApp successfully created

Use:
Get-BcContainerEventLog -containerName myApp to retrieve a snapshot of the event log from the container
Get-BcContainerDebugInfo -containerName myApp to get debug information about the container
Enter-BcContainer -containerName myApp to open a PowerShell prompt inside the container
Remove-BcContainer -containerName myApp to remove the container again
docker logs myApp to retrieve information about URL's again

Creating container took 301 seconds

RUNNING APPSOURCECOP
Copying previous apps to packages folder
Extracting C:\ProgramData\BcContainerHelper\c5d9cf28-3539-4146-8ec9-217aed54fb2d\EvilCompany_Evil Library App_<IP_ADDRESS>.app
EvilCompany_Evil Library App = <IP_ADDRESS>
Extracting C:\ProgramData\BcContainerHelper\c5d9cf28-3539-4146-8ec9-217aed54fb2d\EvilCompany_Evil Main App_<IP_ADDRESS>.app
EvilCompany_Evil Main App = <IP_ADDRESS>
Extracting C:\ProgramData\BcContainerHelper\a66e332c-18fd-42d4-a80d-7159c20828af\EvilCompany Evil Library App 17.0.21030301.21032301.app
Analyzing: EvilCompany Evil Library App 17.0.21030301.21032301.app
Using affixes: EVL
Using previous app: EvilCompany_Evil Library App_<IP_ADDRESS>.app
Downloading C:\ProgramData\BcContainerHelper\e4c03860-c30c-45f3-8fd2-3e3ac351a8c1\appsource.default.ruleset.json
AppSourceCop.json content:
{
    "Publisher":  "EvilCompany",
    "Name":  "Evil Library App",
    "mandatoryAffixes":  [
                             "EVL"
                         ],
    "Version":  "<IP_ADDRESS>"
}
Ruleset.json content:
{
    "name":  "Run-AlCops RuleSet",
    "description":  "Generated by Run-AlCops",
    "includedRuleSets":  [
                             {
                                 "path":  "C:\\ProgramData\\BcContainerHelper\\e4c03860-c30c-45f3-8fd2-3e3ac351a8c1\\appsource.default.ruleset.json",
                                 "action":  "Default"
                             }
                         ]
}
Using Symbols Folder: C:\ProgramData\BcContainerHelper\c5d9cf28-3539-4146-8ec9-217aed54fb2d
Copying System.app from Container
Copying Microsoft_Application_17.5.22499.23535.app from Container
Copying Microsoft_Base Application_17.5.22499.23535.app from Container
Copying Microsoft_System Application_17.5.22499.23535.app from Container
Compiling...
.\alc.exe /project:"C:\ProgramData\BcContainerHelper\e4c03860-c30c-45f3-8fd2-3e3ac351a8c1" /packagecachepath:"C:\ProgramData\BcContainerHelper\c5d9cf28-3539-4146-8ec9-217aed54fb2d" /out:"C:\ProgramData\BcContainerHelper\e4c03860-c30c-45f3-8fd2-3e3ac3
51a8c1\EvilCompany_Evil Library App_17.0.21030301.21032301.app" /analyzer:C:\build\vsix\extension\bin\Analyzers\Microsoft.Dynamics.Nav.AppSourceCop.dll /ruleset:C:\ProgramData\BcContainerHelper\e4c03860-c30c-45f3-8fd2-3e3ac351a8c1\ruleset
.json /assemblyprobingpaths:"C:\Program Files (x86)\Microsoft Dynamics NAV\170\RoleTailored Client","C:\Program Files\Microsoft Dynamics NAV\170\Service","C:\Program Files (x86)\Open XML SDK\V2.5\lib","c:\Windows\Microsoft.NET\Assembly","C:\Test Assemblies\Mock Assemblies"

Microsoft (R) AL Compiler version <IP_ADDRESS>494
Copyright (C) Microsoft Corporation. All rights reserved

Compilation started for project 'Evil Library App' containing '59' files at '13:43:19.283'.

[WARNINGS REMOVED]
C:\ProgramData\BcContainerHelper\e4c03860-c30c-45f3-8fd2-3e3ac351a8c1\AppSourceCop.json(1,1): error AS0003: The version '<IP_ADDRESS>' of the extension with publisher 'EvilCompany' and name 'Evil Library App' could not be found in the baseline package cache folder. If you do not want to validate breaking changes, remove the property 'version' from the AppSourceCop.json.

Additional context
This happens independent of the BC build. Never tested it before.

Looks like a bug
could you create a .zip file with the files (C:\Temp\AlPipeline), and email me a secure URL where I can download the zip file.
Then I can run a repro and find the issue and either fix it.

I have a repro of this that I have given to the moderndev team - I don't think this is a docker issue.
Stay tuned.

This was also my impression, as the paths passed to alc seem to be correct. Let's see.

We have found that this was a bug in the compiler when creating the baseline apps.
More precisely, the version number in the manifest and the symbolreference inside the .app file doesn't match.
This code will extract the app, fix the issue and write the app in a new name.
$path = "C:\ProgramData\BcContainerHelper\previousApps\appname.app"
Invoke-ScriptInBCContainer -containerName $containerName -scriptBlock { Param($path, $destination)
    add-type -path (Get-Item "C:\Program Files\Microsoft Dynamics NAV\*\Service\system.io.packaging.dll").FullName
    $memoryStream = $null
    $fs = $null
    try {
        $fs = [System.IO.File]::OpenRead($Path)
        $binaryReader = [System.IO.BinaryReader]::new($fs)
        $magicNumber1 = $binaryReader.ReadUInt32()
        $metadataSize = $binaryReader.ReadUInt32()
        $metadataVersion = $binaryReader.ReadUInt32()
        $packageId = [Guid]::new($binaryReader.ReadBytes(16))
        $contentLength = $binaryReader.ReadInt64()
        $magicNumber2 = $binaryReader.ReadUInt32()
        if ($magicNumber1 -ne 0x5856414E -or
            $magicNumber2 -ne 0x5856414E -or
            $metadataVersion -gt 2 -or
            $fs.Position + $contentLength -gt $fs.Length)
        {
            throw "Unsupported package format"
        }
        $memoryStream = [System.IO.MemoryStream]::new()
        $fs.Seek($metadataSize, [System.IO.SeekOrigin]::Begin) | Out-Null
        $fs.CopyTo($memoryStream)
        $memoryStream.Seek(0, [System.IO.SeekOrigin]::Begin) | Out-Null
        $memoryStream.SetLength($contentLength)
        $fs.Close()
        $fs.Dispose()
        $fs = $null

        $changes = $false
        $package = [System.IO.Packaging.Package]::Open($memoryStream, [System.IO.FileMode]::Open, [System.IO.FileAccess]::ReadWrite)
        $manifestPart = $package.GetPart('/NavxManifest.xml')
        $manifest = [xml]([System.IO.StreamReader]::new($manifestPart.GetStream())).ReadToEnd()

        $symbolReferencePart = $package.GetPart('/SymbolReference.json')
        $symbolReference = ([System.IO.StreamReader]::new($symbolReferencePart.GetStream())).ReadToEnd() | ConvertFrom-Json

        if ($symbolReference.Version -ne $manifest.package.app.version) {
            $symbolReference.version = $manifest.package.app.version
            $changes = $true
        }

        if ($changes) {
            $partStream = $symbolReferencePart.GetStream([System.IO.FileMode]::Create)
            $sw = New-Object System.IO.StreamWriter -argumentList $partStream
            $sw.Write(($symbolReference | ConvertTo-Json -Depth 99))
            $partStream.Flush()
            $package.Close()
            $fs = [System.IO.FileStream]::new($Destination, [System.IO.FileMode]::Create)
            $binaryWriter = [System.IO.BinaryWriter]::new($fs)
            $binaryWriter.Write([UInt32](0x5856414E))
            $binaryWriter.Write([UInt32](40))
            $binaryWriter.Write([UInt32](2))
            $binaryWriter.Write($packageId.ToByteArray())
            $binaryWriter.Write([UInt64]($memoryStream.Length))
            $binaryWriter.Write([UInt32](0x5856414E))
            $memoryStream.Seek(0, [System.IO.SeekOrigin]::Begin) | Out-Null
            $memoryStream.CopyTo($fs)
            $fs.Close()
            $fs.Dispose()
            $fs = $null
        }
        else {
            if ($Path -ne $Destination) {
                Copy-Item -Path $Path -Destination $Destination -Force
            }
        }
    }
    finally {
        if ($fs) {
            $fs.Close()
        }
    }
} -argumentList (Get-BCContainerPath -containerName $containerName -path $path -throw), (Get-BCContainerPath -containerName $containerName -path $path.Replace('.app','.new.app') -throw)

It works like a charm. I needed to update the script to work outside of a container, because of a "docker inspect" issue. Attaching my version.
`
function Invoke-BcSymbolVersionFix
{
param
(
[Parameter(Mandatory = $true)]
[System.IO.FileInfo]$path,
[System.IO.FileInfo]$destination = $path.FullName.Replace('.app','.fixed.app')
)
begin
{
    $systemIoPackagingDll = Get-Item -Path "$($env:USERPROFILE)\.vscode\extensions\ms-dynamics-smb.al-*\bin\System.IO.Packaging.dll";

    if (!$systemIoPackagingDll)
    {
        throw "VSCode AL Language Extension and/or System.IO.Packaging.dll not found.";
    }

    $memoryStream = $null
    $fs = $null

    Add-Type -Path $systemIoPackagingDll.FullName;

    try
    {
        $fs = [System.IO.File]::OpenRead($path);
        $binaryReader = [System.IO.BinaryReader]::new($fs);

        $magicNumber1 = $binaryReader.ReadUInt32();
        $metadataSize = $binaryReader.ReadUInt32();
        $metadataVersion = $binaryReader.ReadUInt32();
        $packageId = [Guid]::new($binaryReader.ReadBytes(16));
        $contentLength = $binaryReader.ReadInt64();
        $magicNumber2 = $binaryReader.ReadUInt32();

        if (($magicNumber1 -ne 0x5856414e) -or ($magicNumber2 -ne 0x5856414e) -or ($metadataVersion -gt 2) -or (($fs.Position + $contentLength) -gt $fs.Length))
        {
            throw "File $($path) has an unsopported package format.";
        }

        $memoryStream = [System.IO.MemoryStream]::new();
        $fs.Seek($metadataSize, [System.IO.SeekOrigin]::Begin) | Out-Null;
        $fs.CopyTo($memoryStream);
        $memoryStream.Seek(0, [System.IO.SeekOrigin]::Begin) | Out-Null;
        $memoryStream.SetLength($contentLength);
    }

    finally
    {
        if ($fs)
        {
            $fs.Close();
            $fs.Dispose();
            $fs = $null;
        }
    }
}

process
{
    try
    {
        $package = [System.IO.Packaging.Package]::Open($memoryStream, [System.IO.FileMode]::Open, [System.IO.FileAccess]::ReadWrite);
        $manifestPart = $package.GetPart('/NavxManifest.xml');
        $manifest = [xml]([System.IO.StreamReader]::new($manifestPart.GetStream())).ReadToEnd();

        $symbolReferencePart = $package.GetPart('/SymbolReference.json');
        $symbolReference = ([System.IO.StreamReader]::new($symbolReferencePart.GetStream())).ReadToEnd() | ConvertFrom-Json;

        if ($symbolReference.Version -ne $manifest.package.app.version) {
            $symbolReference.version = $manifest.package.app.version;

            $partStream = $symbolReferencePart.GetStream([System.IO.FileMode]::Create);
            $sw = New-Object System.IO.StreamWriter -argumentList $partStream;
            $sw.Write(($symbolReference | ConvertTo-Json -Depth 99));

            $partStream.Flush();
            $package.Close();

            $fs = [System.IO.FileStream]::new($destination, [System.IO.FileMode]::Create);
            $binaryWriter = [System.IO.BinaryWriter]::new($fs);

            $binaryWriter.Write([UInt32](0x5856414e));
            $binaryWriter.Write([UInt32](40));
            $binaryWriter.Write([UInt32](2));
            $binaryWriter.Write($packageId.ToByteArray());
            $binaryWriter.Write([UInt64]($memoryStream.Length));
            $binaryWriter.Write([UInt32](0x5856414e));

            $memoryStream.Seek(0, [System.IO.SeekOrigin]::Begin) | Out-Null;
            $memoryStream.CopyTo($fs);
        }
        else
        {
            if ($path -ne $destination)
            {
                Copy-Item -Path $path -Destination $destination -Force;
            }
        }
    }

    finally
    {
        if ($fs)
        {
            $fs.Close();
            $fs.Dispose();
            $fs = $null;
        }
    }
}

}
`
Tak Freddy for din perfekte og hurtige hjælp!


Remove unnecessary String variable "outputString" in generated Java code

Brief Description
When Umple Online generates the toString() method for Java code, it is often creating a unnecessary extra variable, outputString, as shown in the example below:
public String toString()
{
String outputString = "";
return super.toString() + "["+
"z" + ":" + getZ()+ "]"
+ outputString;
}

We should fix this issue, and check if it is occuring in other contexts (e.g. in other generated languages, outside of Umple Online).
Minimum Steps to Reproduce
Look at the toString() method in the generated Java code associated with this example from the Umple manual.
Expected Result
outputString should not be created nor used.
Actual Result
outputSting is being created and used.
Omitting the build log output as this issue is occurring when using Umple Online.
Assignees
I would like to look into this issue during the code sprint this coming weekend (January 20th-22nd).

@vahdat-ab I've got a fix for this in my local repo. The problem is that there are about 200 template test cases that need to be changed to remove references to the extra string. I know Tim said to be careful when changing test cases, but I think in this case it should be ok?

yup. I would say check each one before deleting to see if you can find an exception :-)


Use libraries provided by framework

Description
I want System.Text.Encoding.CodePages  to only be included as a dependency when the framework doesn't provide it
Background
I want to reduce my surface area for CVE's and an efficent way of doing this is by reducing the amount of manually managed dependencies.
Specification
No response

It's a standard NuGet from Microsoft and not provided by the "framework".

@FlorianRappl i just double checked and System.Text.Encodings.Web is actually included in atleast net6 framework and possibly earlier, hence this issue has not been completed.

It was discussed a while ago. Search is your friend #1124.


wordChoice

wordChoice needs to work in more situations:
It currently only works in text mode, but doesn't work within \begin{quote}...\end{quote}

Should be fixed.


Updated Readme

Proposed update to readme indicating recommended dotnet framework version with link to download the offline installer.

Thanks!


Get seller information on list page

Use case
When you go on Customize in the right corner of the list page you can check to see quick seller information with name, starts and positive feedback in the list page. It is a setting that is set in the cookies of ebay.
Possible problems
Since the cookies are not really readable, its required to check which property triggers the seller information in the list. Another question will be how we can set the cookies in Java, so our http client can read the values. Maybe it is also stored in some JavaScript and the cookie is not really required at all.

Updated description


Refactor class Brain

Class Brain is growing bigger and bigger with quite long methods and duplicated code.
It should be broken down in more components and maybe made imutable.
Idea: Brain might work with Knowledges or Understandings. These would be responsible for returning the Steps to be executed. In other words:  "the agent (brain) has knowledge of how to index a site, index a page, delete an index etc"

This is postponed to version 1.2.0, since we should publish the release soon and do not have time to keep going back and refactor code.

Hi @amihaiemil! I can help you index your Github-hosted website, provided that the repository name respects the format owner.github.io (or has a gh-pages branch) and the command is given by the repo's owner.
More on commands here.

The Command and Logger should be passed as params in the perform(...) method to:

make the building of the Steps pyramid easier and more readable
make sure all the steps in the pyramid work on the same command and with the same logger (right now, you can add any steps on top of eachother, and each step may work with a different command)


how to pass other parameter in forward

For example in the forward path, I define as
def forward(self, input, path1=True):
I realize that when I want to pass summary(model, [(3, 32,32),(True)])
or
summary(model, [(3, 32,32),(True)]
or
summary(model, [(3, 32,32),True])
or
summary(model, ((3, 32,32),True))
It either reported as argument must be an iterate or size must be tuple of ints.
How could I resolve this to pass other parameters?
Thank you

you may refer to the original code and adjust it if you want to let this package could pass other parameter.
batch_size of 2 for batchnorm
x = [torch.rand(2, *in_size).type(dtype).to(device=device)
for in_size, dtype in zip(input_size, dtypes)]
model(*x)


runtime: sloppy struct field arrangement could be re-arranged for more compact structs and save RAM

Coming here from tip ecc3f5112ebaf23c4b1ac4c5eedfa406d82ecc9a, with one of the static analysis tools, we have developed at Orijtech, Inc., we've found a bunch of fields in the Go standard library that could consume less space
for example, given
https://github.com/golang/go/blob/ecc3f5112ebaf23c4b1ac4c5eedfa406d82ecc9a/src/runtime/trace.go#L760-L769
the size on 64-bit machines is 40 bytes, but it could really be 32 bytes by re-arranging it to
type traceStack struct {
	stk  [0]uintptr
	link traceStackPtr
	hash uintptr
	n    int
	id   uint32
}

and here is the exhibit https://play.golang.org/p/bG4u6hqXZvv or inlined below
package main

import "unsafe"

type traceStack1 struct {
	link traceStackPtr
	hash uintptr
	id   uint32
	n    int
	stk  [0]uintptr // real type [n]uintptr
}

type traceStackPtr uintptr

type traceStack2 struct {
	stk  [0]uintptr
	link traceStackPtr
	hash uintptr
	n    int
	id   uint32
}

func main() {
	println(unsafe.Sizeof(traceStack1{}))
	println(unsafe.Sizeof(traceStack2{}))
}

which when run shows
40
32

which is a 20% reduction in RAM that'll be used in traceStack
There are about 8 reported optimal changes like
/Users/emmanuelodeke/go/src/go.googlesource.com/go/src/runtime/mfixalloc.go:27:15: struct has size 72 (size class 80), could be 64 (size class 64), rearrange to struct{size uintptr; first func(arg unsafe.Pointer, p unsafe.Pointer); arg unsafe.Pointer; list *mlink; chunk uintptr; inuse uintptr; stat *sysMemStat; nchunk uint32; zero bool} for optimal size (20.00% savings)
/Users/emmanuelodeke/go/src/go.googlesource.com/go/src/runtime/mgc.go:1009:10: struct has size 400 (size class 416), could be 376 (size class 384), rearrange to struct{wbufSpans struct{lock mutex; free mSpanList; busy mSpanList}; assistQueue struct{lock mutex; q gQueue}; sweepWaiters struct{lock mutex; list gList}; heap2 uint64; heap1 uint64; bytesMarked uint64; heap0 uint64; pauseStart int64; pauseNS int64; tstart int64; tEnd int64; nFlushCacheRoots int; empty lfstack; nBSSRoots int; nSpanRoots int; nStackRoots int; tMarkTerm int64; tMark int64; bgMarkReady note; full lfstack; mode gcMode; tSweepTerm int64; totaltime int64; initialHeapLive uint64; nDataRoots int; heapGoal uint64; cycles uint32; stwprocs int32; maxprocs int32; _ uint32; markDoneSema uint32; startSema uint32; nwait uint32; nproc uint32; markrootJobs uint32; markrootNext uint32; bgMarkDone uint32; pad0 cpu.CacheLinePad; userForced bool} for optimal size (7.69% savings)
/Users/emmanuelodeke/go/src/go.googlesource.com/go/src/runtime/mgcscavenge.go:161:14: struct has size 40 (size class 48), could be 32 (size class 32), rearrange to struct{lock mutex; g *g; timer *timer; sysmonWake uint32; parked bool} for optimal size (33.33% savings)
/Users/emmanuelodeke/go/src/go.googlesource.com/go/src/runtime/proc.go:1977:17: struct has size 40 (size class 48), could be 32 (size class 32), rearrange to struct{lock mutex; newm muintptr; wake note; haveTemplateThread uint32; waiting bool} for optimal size (33.33% savings)
/Users/emmanuelodeke/go/src/go.googlesource.com/go/src/runtime/proc.go:5159:17: struct has size 32 (size class 32), could be 24 (size class 24), rearrange to struct{schedwhen int64; syscallwhen int64; schedtick uint32; syscalltick uint32} for optimal size (25.00% savings)
/Users/emmanuelodeke/go/src/go.googlesource.com/go/src/runtime/runtime2.go:753:10: struct has size 32 (size class 32), could be 24 (size class 24), rearrange to struct{runnable gQueue; n int32; user bool} for optimal size (25.00% savings)
/Users/emmanuelodeke/go/src/go.googlesource.com/go/src/runtime/trace.go:761:17: struct has size 40 (size class 48), could be 32 (size class 32), rearrange to struct{stk [0]uintptr; link traceStackPtr; hash uintptr; n int; id uint32} for optimal size (33.33% savings)
/Users/emmanuelodeke/go/src/go.googlesource.com/go/src/runtime/runtime_test.go:265:10: struct has size 16 (size class 16), could be 8 (size class 8), rearrange to struct{z struct{}; n int64} for optimal size (50.00% savings)

We plan on releasing the tool as open source code with a permissive license, and it is already an x/tools/go/analysis/pass that can be plugged into IDEs or into cmd/vet if needed later on.
Cheers to @cuonglm our core developer at Orijtech, whom we tasked with writing it!
EDIT: now accounts for size classes!

How does this interact with size classes? I’m sure there is a 32byte size class, but if 40 bytes is rounded up to 48 the saving could be even larger.

Great question @davecheney, and thank you!
@josharian also independently raised this to me offline. We don't yet have that baked in and
hadn't thought about, but I've filed an issue internal issue after @josharian's same question :)

Thanks @davecheney @josharian, we now account for size classes and also show the percentage savings too #GEICOLizardSavings for example now
/Users/emmanuelodeke/go/src/go.googlesource.com/go/src/runtime/mfixalloc.go:27:15: struct has size 72 (size class 80), could be 64 (size class 64), rearrange to struct{size uintptr; first func(arg unsafe.Pointer, p unsafe.Pointer); arg unsafe.Pointer; list *mlink; chunk uintptr; inuse uintptr; stat *sysMemStat; nchunk uint32; zero bool} for optimal size (20.00% savings)
/Users/emmanuelodeke/go/src/go.googlesource.com/go/src/runtime/mgc.go:1009:10: struct has size 400 (size class 416), could be 376 (size class 384), rearrange to struct{wbufSpans struct{lock mutex; free mSpanList; busy mSpanList}; assistQueue struct{lock mutex; q gQueue}; sweepWaiters struct{lock mutex; list gList}; heap2 uint64; heap1 uint64; bytesMarked uint64; heap0 uint64; pauseStart int64; pauseNS int64; tstart int64; tEnd int64; nFlushCacheRoots int; empty lfstack; nBSSRoots int; nSpanRoots int; nStackRoots int; tMarkTerm int64; tMark int64; bgMarkReady note; full lfstack; mode gcMode; tSweepTerm int64; totaltime int64; initialHeapLive uint64; nDataRoots int; heapGoal uint64; cycles uint32; stwprocs int32; maxprocs int32; _ uint32; markDoneSema uint32; startSema uint32; nwait uint32; nproc uint32; markrootJobs uint32; markrootNext uint32; bgMarkDone uint32; pad0 cpu.CacheLinePad; userForced bool} for optimal size (7.69% savings)
/Users/emmanuelodeke/go/src/go.googlesource.com/go/src/runtime/mgcscavenge.go:161:14: struct has size 40 (size class 48), could be 32 (size class 32), rearrange to struct{lock mutex; g *g; timer *timer; sysmonWake uint32; parked bool} for optimal size (33.33% savings)
/Users/emmanuelodeke/go/src/go.googlesource.com/go/src/runtime/proc.go:1977:17: struct has size 40 (size class 48), could be 32 (size class 32), rearrange to struct{lock mutex; newm muintptr; wake note; haveTemplateThread uint32; waiting bool} for optimal size (33.33% savings)
/Users/emmanuelodeke/go/src/go.googlesource.com/go/src/runtime/proc.go:5159:17: struct has size 32 (size class 32), could be 24 (size class 24), rearrange to struct{schedwhen int64; syscallwhen int64; schedtick uint32; syscalltick uint32} for optimal size (25.00% savings)
/Users/emmanuelodeke/go/src/go.googlesource.com/go/src/runtime/runtime2.go:753:10: struct has size 32 (size class 32), could be 24 (size class 24), rearrange to struct{runnable gQueue; n int32; user bool} for optimal size (25.00% savings)
/Users/emmanuelodeke/go/src/go.googlesource.com/go/src/runtime/trace.go:761:17: struct has size 40 (size class 48), could be 32 (size class 32), rearrange to struct{stk [0]uintptr; link traceStackPtr; hash uintptr; n int; id uint32} for optimal size (33.33% savings)
/Users/emmanuelodeke/go/src/go.googlesource.com/go/src/runtime/runtime_test.go:265:10: struct has size 16 (size class 16), could be 8 (size class 8), rearrange to struct{z struct{}; n int64} for optimal size (50.00% savings)

Note that there are other reasons why a different struct layout is wanted:

alignment of some fields might be better not packing everything together
fields that are accessed together should be in the same cache line
frequently accessed fields at the beginning
adding a frequently accessed field (e.g. len) of a map at the beginning so the instruction constructing the pointer to the field is short which affects binary size
ordering pointers at the beginning of the struct so the garbage collector only needs to scan the beginning of the struct (this is likely not incompatible with packing but should be taken into account)

If the [0]uintptr field is moved from the end of the struct, it would need to be statically sized rather than dynamically sized.

/cc @aclements @randall77 @mknyszek @prattmic

In general, we've already analyzed this tradeoff for a lot of the popular runtime structures (e.g. mspan), though I'm sure there are some we missed. Patches are welcome of course to fix those up; I don't think we recently ran an automated tool against the source.
Broadly-speaking, I do think a lot of the big low-hanging fruit has already been found, just based on my own familiarity with the runtime and my discussions with other people who work on the runtime. For instance, we already track the sizes of some of these structures explicitly in tests to avoid accidental growth (e.g. the g struct). @martisch gave a very good list of reasons that we explicitly don't do this. For a real-world example of one of these, the first few fields g struct I think might not be optimally ordered, but these fields are accessed quite often so we'd like to keep them together, in the same cache line ideally.
As @BenLubar notes in this particular case we can't actually move the [0]uinptr because it's one of those borrowed-from-C variable-sized-struct tricks. The size of this type isn't actually 40 bytes. A smaller "header" on this type is still probably useful, though I'm not even sure if this type gets heap allocated. Someone would need to take a closer look, but feel free to send a CL and we can figure it out.

Rearranging fields for struct packing is like writing code in assembly - there may be a performance win but it also makes code harder to maintain, and not all struct can be reordered. The cost here is only worth paying if there is a benefit. So just like an assembly function needs to be a CPU time hot spot, careful struct packing needs to be a memory hotspot - a struct there are many of in a typical program, so that it is a significant source of memory usage.
Looking at the ones you identified:

src/runtime/mfixalloc.go:27 (type fixalloc) - Only 5 of these in the entire runtime.
src/runtime/mgc.go:1009 (var work) - Only 1 of these (it's a var not a type).
src/runtime/mgcscavenge.go:161 (var scavenge) - Only 1.
src/runtime/proc.go:1977 (var newmHandoff) - Only 1.
src/runtime/proc.go:5159 (type sysmontick) - One per p, so size classes don't matter, and the p is big anyway and there are relatively few.
src/runtime/runtime2.go:753 (struct inside type schedt) - Only 1 schedt in program, and this is a struct inside a struct, so size class doesn't directly matter.
src/runtime/trace.go:761 (type traceStack) - As noted, this is not allocated using the usual allocator and can't be rearranged.
src/runtime/runtime_test.go:265 (type T2 inside TestTrailingZero) - This is in a test.

I would strongly suggest trying to combine your tool with memory profiling results, so that it can focus on the cases that matter most.

Given that none of these would be a significant savings, closing this issue.


Support for custom exchanges

Add support to be able to declare exchanges and bind queues to them. Reference.

Two things are needed.

A way to bin the queue to the exchange when creating the queue. Perhaps we need to modify the AddHandler function?
A way to publish to another exchange. Note that some exchanges does not look at the routing key.

I'll take a look at this.

Yeah I think we need som rewriting of the queue binding mechanism for this to be handled easy without adding complexity.
Regarding 2, I think we could just add a field for Exchange to the Request.
req := client.NewRequest("").WithExchange("SomeExchange").WithResponse(false)
client.Send(req)

The public field Exchange on the Client should probably be removed.

I've pushed custom-exchange which contains a new version of client and request which will handle custom exchanges according to my comment above.
Still need something to handle the server side.

I pushed som more regarding the server so I'll just assign this to me!

I wrote a comment in the PR, there's a bit more to do. I want to add something like AddExchangeHandler instead of AddFanoutHandler so we can bind a queue to any type of exchange.


Update support information for v0.12

Description of changes: Added support information for release v0.12 to the Version Support page.

/cherry-pick release-0.12


DNS lookup broken on OpenBSD installer.

Stuck on console:
$ packer build -only=virtualbox-iso openbsd-6.0-amd64.json
virtualbox-iso output will be in this color.

==> virtualbox-iso: Downloading or copying ISO
    virtualbox-iso: Downloading or copying: http://ftp.openbsd.org/pub/OpenBSD/6.0/amd64/cd60.iso
==> virtualbox-iso: Starting HTTP server on port 8193
==> virtualbox-iso: Creating virtual machine...
==> virtualbox-iso: Creating hard drive...
==> virtualbox-iso: Creating forwarded port mapping for communicator (SSH, WinRM, etc) (host port 2402)
==> virtualbox-iso: Executing custom VBoxManage commands...
    virtualbox-iso: Executing: modifyvm packer-openbsd-6.0-amd64 --memory 512
    virtualbox-iso: Executing: modifyvm packer-openbsd-6.0-amd64 --cpus 1
==> virtualbox-iso: Starting the virtual machine...
==> virtualbox-iso: Waiting 15s for boot...
==> virtualbox-iso: Typing the boot command...
==> virtualbox-iso: Waiting for SSH to become available...

Error in OpenBSD (after a timeout):
ftp2.eu.openbsd.org: no address associated with name

Hi @develCuy, thank you for sending the PR. On VirtualBox, The DHCP server of the NAT engine offers a list of DNS servers that are configured on the host by default, so you may need to point host's DNS servers to those that are also usable within the guest machine.

I used these templates to build OpenBSD 6.0 via VirtualBox and I did not experience any problems regarding this. Possibly this is somehow related to insufficient VirtualBox configuration on your machine? It possible you do not have proper networking working with VirtualBox. Make sure you have VirtualBox Host modules installed and loaded. The NAT that is setup by default should be sufficient enough for this. Make sure you use proper DNS server on your host machine too.

Hey @ek9, not sure what you mean by modules. I'm on an ubuntu box, there are only a couple packages: virtualbox and virtualbox-dkms, things always worked out of the box this way. I can even run the GNU/Hurd, Android and ReactOS, which are as uncommon as OpenBSD for VirtualBox, yet they work. So I get a big question mark here.

It's not about running different OSs, it's about OpenBSD guest being able to setup correct networking. As networking is working in general, the modules must be loaded and installed (that's what virtualbox-dkms package is for).
Can you provide information on what version of VirtualBox are you running?
Also which ubuntu version?
Also what DNS servers are set on your Ubuntu host?
Just before your added patch, in the scripts, the command dhclient em0 runs. The dhclient should pickup the correct DNS settings (it does pickup the IP addresses but not DNS). There is something preventing that from working and it would be helpful if you would boot the iso and provide the verbose output of that command.
I've just rerun the openbsd builder and it all went fine. It picked up DNS servers from my network config without any problem.


FileExistsError, first time assembly testing was ok but not on 2nd time onward

hi, this is log,
C:\Users\user0\riscv-assembler\tests\assembly>python
Python 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 21:26:53) [MSC v.1916 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from riscv_assembler.convert import AssemblyConverter
>>> cnv = AssemblyConverter()
>>> cnv.convert("test0.s")
-----Writing to binary file-----
Output file: test0.bin
Number of instructions: 1
>>> #outputs to binary file simple.bin
...
>>> from riscv_assembler.convert import AssemblyConverter
>>> cnv = AssemblyConverter()
>>> cnv.convert("test0.s")
-----Writing to binary file-----
Output file: test0.bin
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Users\user0\AppData\Local\Programs\Python\Python37-32\lib\site-packages\riscv_assembler\convert.py", line 589, in convert
    return self.__post()
  File "C:\Users\user0\AppData\Local\Programs\Python\Python37-32\lib\site-packages\riscv_assembler\convert.py", line 533, in __post
    os.mkdir(f"{fname[:-2]}/bin")
FileExistsError: [WinError 183] File/Folder existed, could not create the file or folder: 'test0/bin'
>>> #outputs to binary file simple.bin

Given that this versioning is deprecated and the issue is solved in the new version, I will close this comment.
Note: I won't be updating this repository anymore as it has been moved to celebi-pkg/riscv-assembler. The Python deployments and latest code are being updated there.


[Botgame]: Boardstate not updated if Bot wins

The board state doesn't get updated correctly if the bot wins, basically it appears as he didn't do his last move, although the board state is correctly updated. Even after refreshing it is not resolved.

Closing, as @Rabyss just tested this again and it appears to be working fine.


Enhancement: add GH action to test examples/hello_world.py on minimal install

We need to have the full set of extras available to run the test suite, but this can hide bugs for apps running without a subset of extras, or the minimal set of dependencies.
The task is to add a step to our GH actions workflow that installs starlite with no extras and ensures that the example in examples/hello_world.py runs without error.

Reverted in 33d9c65ec73ba622ba9329cb0f0713fece905213


[WIP] Add wrapper around imagecorruptions

Codecov Report

Merging #530 into master will decrease coverage by 0.15%.
The diff coverage is 97.54%.

@@            Coverage Diff            @@
##           master    #530      +/-   ##
=========================================
- Coverage   96.34%   96.2%   -0.15%
=========================================
  Files          37      38       +1
  Lines       13366   13487     +121
=========================================
+ Hits        12877   12974      +97
- Misses        489     513      +24


Not able to add namespace from kubectl

Rancher Version: v1.1.0-dev1-rc2
Steps to reproduce the problem:
Create a kubernetes environment with 2 hosts.
From kubectl , try to create namespace.
Following error seen when creating namespace:
kubectl create namespace hello1
error: Unexpected args: [namespace hello1]
see 'kubectl create -h' for help.
>

Note:
Able to add namespace from UI.
Also able to create other resources like service , rc and pods

This issue exists only when testing with kubectl version - v1.1.7 which is the kubectl version used by the  kubectl shell in UI.
Able to create namespace using kubectl version - v1.2 with out any issues.
Sangeethas-MacBook-Pro:kubectl21 sangeethahariharan1$ ./kubectl version
Client Version: version.Info{Major:"1", Minor:"2", GitVersion:"v1.2.0", GitCommit:"5cb86ee022267586db386f62781338b0483733b3", GitTreeState:"clean"}
Server Version: version.Info{Major:"1", Minor:"2+", GitVersion:"v1.2.0-rancher-1", GitCommit:"ed6532f975cff184196dbe214de8fa0198b415ef", GitTreeState:"clean"}
Sangeethas-MacBook-Pro:kubectl21 sangeethahariharan1$ ./kubectl create namespace hello1
namespace "hello1" created

This issue exists in rancher-server version - v1.0.1 as well

Tested with rancher-server version - v1.1.0-dev2-rc4
Create a kubernetes environment with 2 hosts.
From UI , using kubectl shell , try to create namespace.
Able to create namespace successfully.
Kubectl shell now uses 1.2 version now.


Fix a couple of minor issues in the Node library

I thought I'd get a couple of easy fixes in before the release. This fixes #4048 and #4401.

LGTM. Please rebuild the tests before merging.

Jenkins appears to be forcing the job to start on the single offline worker for some reason.


Update AboutUs.md

Re-opening this as everyone needs to complete their portion. Let's close this once all of us have done and decided on the roles 🎉


Link-error-test plugin finds unfulfilled links

Link data is saved when parsing sources
Target anchors created during rendering are saved
LET compares link data and target data, and reports on mismatch
The plugin was broken
The format of the errors is converted into an HTML table and is better than the grid styling.
A link to the error-report is placed in the About page.

The test deployment at new-raku/error-report is live


[feature] Shortcut/Link from view diagram elements to views

When creating views I found that I wanted to link elements to views. For example, if I have

I want to be able to double click on "Network" and have the detailed network view displayed. Currently I think I would have to do this:

But it would be cleaner to have something like this:

The code to actually do the linking already exists in DiagramModelReferenceEditPart, so the only real change is making the "Network Diagram" element look different. My initial proposal (given that I've only looked through the code for an hour or so) would be to create a new MiniDiagramModelReference class that has basically the same functionality but is represented by a new shortcut icon, doesn't display its name label, and is location pinned to the bottom right corner of its parent object. This would allow the current method of view shortcuts to remain in place, but also allow the more minimal linking view.

Hi, not sure if you are interested in having this feature at some point, but I've implemented it. I actually just made the ArchimateDNDEditPolicy call a new AddMiniDiagramModelReferenceCommand class - which is exactly the same as the current class other than setting the object dimensions to 20x20 and inheriting the parents background color. Less than 10 lines of code changed. This way it uses all of the same canvas objects, just changes the default formatting when you DND. Example:
Works as previous behavior if you drag to base diagram container:

Work as previous if you DND from diagram to parent:

But, iff you DND a single diagram object directly to a container then the mini-formatiing is used and the object is placed at right-bottom.pos - (20,20):

As the only change is the default formatting what a diagram is dragged to a container there should be minimal risk of this creating bugs:

Perhaps a I should add a checkbox in the preferences to enable/disable this feature, unless you don't think this is useful, in which case I'll just use it in my own build.

Hi,
Thank you for this idea and contribution. Could you make it available in your local fork of Archi (I've you have one) inside a new branch. This would allow me to have a look.
@Phillipus : A first step on the autolayout journey ;-)
JB

Hi, commit is here:
https://github.com/archimatetool/archi/compare/master...Andy-Turner:small_corner_diagram_refs?expand=1#diff-980afe7ab105d61cdcad898486eb0d58
Unfortunately it's showing the entire files as being replaced. Are you guys developing in Windows or Linux (I used windows)? I'm wondering if it's a CRLF issue, unless you know something else it could be?

The CRLF issue is strange. I use Eclipse on Windows and it's always defaulted to CRLF.

I've put a similar request on the forum at http://forum.archimatetool.com/index.php?topic=312.0 and was told that this feature request is on the list for future enhancements. Will this be implemented as part of one of the next (beta) version 4 releases?
BTW my proposal was a bit different than the above one which I like also and is perhaps more user-friendly than mine :+1:

Will this be implemented as part of one of the next (beta) version 4 releases?

No.

An issue as I see: the ArchiMate Exchange File Format might not allow linking to both a ArchiMate-view (for the actual link) and an ArchiMate-element (for the shape).


gui: tweak interface to be less cramped

Include moving the "Find" button next to the search field.
~I've only gone through the "Settings" pane for now, but I can do the same with the "Channel" pane.~
Before:

After:

Updated to include the "Channel" pane too.
And thanks for the invite to collaborate, but Perl is really not my forte (making those changes as been a PITA).


Fixes #27 - allow loading of external fact hashes

previously there was no way to supply facterdb with
external facts that contain sensitive information.  This
fixes that by allowing the user to set an environment variable
that take precedence over the facts from this gem.

Coverage increased (+6.5%) to 80.0% when pulling f56468c54acee67106fbb806ecf6f856fbc472da on nwops:external_facts into 369c1ec40fa3761f3229f01431edec416645907d on camptocamp:master.

Coverage increased (+6.5%) to 80.0% when pulling f56468c54acee67106fbb806ecf6f856fbc472da on nwops:external_facts into 369c1ec40fa3761f3229f01431edec416645907d on camptocamp:master.

Coverage increased (+6.5%) to 80.0% when pulling f56468c54acee67106fbb806ecf6f856fbc472da on nwops:external_facts into 369c1ec40fa3761f3229f01431edec416645907d on camptocamp:master.

Coverage increased (+6.5%) to 80.0% when pulling fd30a031111362ee1b307cee41018d128a2c9532 on nwops:external_facts into 369c1ec40fa3761f3229f01431edec416645907d on camptocamp:master.

Coverage increased (+6.5%) to 80.0% when pulling c3b14c31c0bb65a4fe9b5840e8a117a42da5e840 on nwops:external_facts into 369c1ec40fa3761f3229f01431edec416645907d on camptocamp:master.

Coverage increased (+6.5%) to 80.0% when pulling c3b14c31c0bb65a4fe9b5840e8a117a42da5e840 on nwops:external_facts into 369c1ec40fa3761f3229f01431edec416645907d on camptocamp:master.

Coverage increased (+6.5%) to 80.0% when pulling c3b14c31c0bb65a4fe9b5840e8a117a42da5e840 on nwops:external_facts into 369c1ec40fa3761f3229f01431edec416645907d on camptocamp:master.

Coverage increased (+4.02%) to 77.551% when pulling 22d0c11e7b63e3c03313738068cfd9739fd52d52 on nwops:external_facts into 369c1ec40fa3761f3229f01431edec416645907d on camptocamp:master.

LGTM. @DavidS @rodjek what do you think about this PR?

Coverage increased (+4.5%) to 78.0% when pulling e95cb339b81bdd51793e58c4a950298dcb751086 on nwops:external_facts into 369c1ec40fa3761f3229f01431edec416645907d on camptocamp:master.

Coverage increased (+4.5%) to 78.0% when pulling e95cb339b81bdd51793e58c4a950298dcb751086 on nwops:external_facts into 369c1ec40fa3761f3229f01431edec416645907d on camptocamp:master.

This is ready to go after adding the suggested fixes. @rodjek

I like the idea, and given that there is already https://github.com/mcanevet/rspec-puppet-facts#set-global-custom-facts there is surely a need for it, too. In the light of #61 , I wonder if it wouldn't make sense to extend this even further and make the first/default entry of FACTERDB_SEARCH_PATH a special value, like BUILTIN, so that folks can override the DB contents completely, if they want?

@DavidS we can do something like this:
# @return [Array[String]] -  list of all files found in the default facterdb facts path
  def self.default_fact_files
    proj_root = File.join(File.dirname(File.dirname(__FILE__)))
    facts_dir = ENV['FACTERDB_DEFAULT_SEARCH_PATH'] || File.expand_path(File.join(proj_root, 'facts'))
    Dir.glob(File.join(facts_dir, "**", '*.facts'))
  end

Also now that I look at this.  I am going to change FACTERDB_SEARCH_PATH to FACTERDB_SEARCH_PATHS since we can supply multiple paths.

*_PATH sounds fine to me.
Re the default search path, I've spent some more time on that, and I think we should optimize strongly for the default case of folks using the built-in facts. What about return [] if ENV['FACTERDB_SKIP_DEFAULTDB'] == 'yes', adding "Set FACTERDB_SKIP_DEFAULTDB=yes to instruct facterdb to look at its built-in facts, if you want to completely replace which facts are used." to the README.

Coverage increased (+5.7%) to 79.245% when pulling 695e1032f66f1773b233b6a9a24c476ddd95cc40 on nwops:external_facts into 369c1ec40fa3761f3229f01431edec416645907d on camptocamp:master.

Coverage increased (+5.7%) to 79.245% when pulling 695e1032f66f1773b233b6a9a24c476ddd95cc40 on nwops:external_facts into 369c1ec40fa3761f3229f01431edec416645907d on camptocamp:master.

Coverage increased (+5.7%) to 79.245% when pulling 695e1032f66f1773b233b6a9a24c476ddd95cc40 on nwops:external_facts into 369c1ec40fa3761f3229f01431edec416645907d on camptocamp:master.

Coverage increased (+5.7%) to 79.245% when pulling 695e1032f66f1773b233b6a9a24c476ddd95cc40 on nwops:external_facts into 369c1ec40fa3761f3229f01431edec416645907d on camptocamp:master.

I have added @DavidS suggestions and updated the readme to include this additional info on how to skip the default database.  I think this feature will be a big hit.


How to use Google Light?

I want to use Google Light
{
  "plugins": ["prism", "-highlight"]
}

"pluginsConfig": {
  "prism": {
    "css": [
      "syntax-highlighting/assets/css/prism/prism-base16-google.light.css"
    ]
  }
}

But I get the error:
Error: Cannot find module 'syntax-highlighting/assets/css/prism/prism-base16-google.light.css'

Did you npm i atelierbram/syntax-highlighting -D?

I installed atelierbram/syntax-highlighting from GitHub and it works, thank you!
npm install https://github.com/atelierbram/syntax-highlighting/tarball/master


Fixed #33212 -- Use first cookie value rather than last cookie value

This might fix this issue. https://code.djangoproject.com/ticket/33212#comment:6

closing for now. needs django-developers discussion.


FZF gets unloaded from ZSH

Category

[x] fzf binary
[ ] fzf-tmux script
[x] Key bindings
[ ] Completion
[ ] Vim
[ ] Neovim
[ ] Etc.

OS

[ ] Linux
[x] Mac OS X
[ ] Windows
[ ] Etc.

Shell

[ ] bash
[x] zsh
[ ] fish

For some reason my fzf-keybindings stop working in the shell at some point. Of course, I have no idea until I try using one, and then I just get a bell. I don't know what to do to troubleshoot this, but I run the normal fzf-bindings.zsh and fzf-completions.zsh, though come to think of it I don't actually use the completions...
Anyway, when I run bindkey |grep fzf while fzf is working, I get the result you would expect:
"^R" fzf-history-widget
"^T" fzf-file-widget
"^[c" fzf-cd-widget

But then it stops working, and the same command, in the same zsh session, returns no hits.
I also use other plugins, but they shouldn't matter, since the loading happens at launch, and everything works fine until it doesn't.
Anyway. The full list of my zplug packages is at the end.
FZF vars:
$fzf_default_completion = expand-or-complete
$FZF_COMPLETION_TRIGGER = ; # though not used
$FZF_DEFAULT_COMMAND = ag -g ""

zplug packages:
zplug "zsh-users/zsh-history-substring-search"
zplug "willghatch/zsh-saneopt" # Supposed sane options
zplug "plugins/osx", from:oh-my-zsh, if:"[[ $OSTYPE == *darwin* ]]" # Aliases and functions
zplug "plugins/brew", from:oh-my-zsh, if:"[[ $OSTYPE == *darwin* ]]" # Completion
zplug "plugins/brew-cask", from:oh-my-zsh, if:"[[ $OSTYPE == *darwin* ]]" # Completion
zplug "plugins/gem",   from:oh-my-zsh, if:"(( $+commands[gem] ))" # Completion
zplug "plugins/tmuxinator", from:oh-my-zsh, if:"(( $+commands[tmuxinator] ))" # Completion
zplug "zsh-users/zsh-syntax-highlighting", nice:10 # Syntax highlighting on CLI
zplug "dbkaplun/smart-cd" # automatic ls in dirs, git status in repos
zplug "zlsun/solarized-man" # Solarized man-pages
zplug "djui/alias-tips" # Let's you know there was an alias you could ahve used
zplug "powerline/powerline", use:"/powerline/bindings/zsh" # Power in a line
zplug "voronkovich/gitignore.plugin.zsh" # gitignore.io gi() and gii()
zplug "akoenig/gulp.plugin.zsh" # Gulp completion in dev dirs
zplug "chrissicool/zsh-256color" # Color autoset
zplug "zsh-users/zsh-autosuggestions" # Type some chars from a previous command and hit arrow-up to sort through matching commands from history
zplug "zsh-users/zsh-completions", use:src # Completions
zplug "supercrabtree/k" # Quick ls-replacement with git status
zplug "oz/safe-paste" # Don't execute lines when pasting
zplug "plugins/node", from:oh-my-zsh
zplug "joel-porquet/zsh-dircolors-solarized", if:"[[ $OSTYPE == *darwin* || $OSTYPE == *linux* ]]" # Solarized LS_COLOR
zplug "Tarrasch/zsh-autoenv", use:autoenv.zsh
zplug "uvaes/fzf-marks"

Looking for help in debugging this. I don't expect it to be a problem in fzf itself, but in my setup. The problem is my ZSH dotfiles are kind of sprawling, and I have no idea how to look for the problem...

But then it stops working, and the same command, in the same zsh session, returns no hits.

So what are those keys mapped to? I mean, what do you see on bindkey | grep '"^[RT]"'?

Nothing. Unmapped. At least as far as I remember. I'll have a look the next time it happens.

By the way, when I press alt-c I only get subfolders from my working directory to choose from. Any way to make it search from / instead?

"^R" history-incremental-search-backward
"^T" transpose-chars```

Alt-C I can't grep for, but it looks empty from the full listing.

Probably one of your zsh plugins is restoring the default key bindings at some point. You'll have to figure out which one is doing that.

Any idea what kind of syntax I should be looking for with ack or ag? Bindkey isn't returning anything interesting...

You're asking a bash user here :)
bindkey -d and bindkey -e is something I would look for.

Sharp intake of breath
Dude... You should really try it...
Although if I were to start from scratch I might try Fish instead, my ZSH settings are a mess, and ZSH makes it quite easy to get into such a mess...

OK, after two days I'm ready to pronounce oz/safe-paste as the guilty plugin. It plays fast and dirty with bindkey.


adding "host" to config.json

scales has already implemented the "host" option. Now it will be provided by PP and can be changed if you want to bind scales to certain ip

At this point, we are only accepting bug fixes for Scales, not enhancements. Scales is legacy, and will only get things if it's to resolve crippling issues. (impacts Scales)

In addition I think this would only further confuse people since they would see host: <IP_ADDRESS> while the FQDN we ask for in the panel would be something else. Having them be the same would not work for hosts such as AWS, Azure, or Google Cloud.
Thank you for the pull request however. I would also like to invite you to join us on IRC where most of our development discussions take place. That way you can stay in the loop about what we're up to.


Use resourceVersion to rotate OSCs and Secrets

What this PR does / why we need it:
Currently we rely on the machinedeployment.clusters.k8s.io/revision annotation in order to trigger an update and rotate the OperatingSystemConfigs and Secrets, unfortunately this would fail in different cases, such as scaling the machines down and up again. Using the resourceVersion would make sure that any changes to the machine deployment would lead to the rotation.
Which issue(s) this PR fixes (optional, in fixes #<issue number>(, fixes #<issue_number>, ...) format, will close the issue(s) when PR gets merged):
Fixes #
Special notes for your reviewer:
Does this PR introduce a user-facing change?:

None

unfortunately this would fail in different cases, such as scaling the machines down and up again

Why do we want to "rotate" OSC and secrets when we are scaling the machines down or up? Also, if I change the labels or annotations on machine deployments then this will trigger rotation for OSC and secrets. But in general, nothing changes for the user-data if some label or annotation is added to the Machine Deployments.
Just FYI we'll have to make changes in machine controller as well for this.

unfortunately this would fail in different cases, such as scaling the machines down and up again

Why do we want to "rotate" OSC and secrets when we are scaling the machines down or up? Also, if I change the labels or annotations on machine deployments then this will trigger rotation for OSC and secrets. But in general, nothing changes for the user-data if some label or annotation is added to the Machine Deployments.
Just FYI we'll have to make changes in machine controller as well for this.

Because this is not working as expected the old resources are not being cleaned up @xmudrii and I tested it.

Because this is not working as expected the old resources are not being cleaned up @xmudrii and I tested it.

There is not enough context for me to perceive anything here tbh.

By no means I'm saying that you guys are wrong. But I'd like to understand the issue that we have right now first before we proceed.

Because this is not working as expected the old resources are not being cleaned up @xmudrii and I tested it.

There is not enough context for me to perceive anything here tbh.

I updated the comment, sorry, thought that I am on slack for a bit :D

What would changing the annotation of the MD didn't trigger any clean up, and I wouldn't expect that. The reason behind that is after the annotation being updated, no changes happened to the rollout version.

Which makes sense because MC expects no machine rotation in that case. I'm guessing you are talking about the OSP annotation? Why don't we make a change in MC instead? Update the revision when there is a change in OSP annotation because we know that we need to rotate machines in that case?!

I updated the comment, sorry, thought that I am on slack for a bit :D

No problemo ;) Let's discuss this tomorrow and solve this.

What would changing the annotation of the MD didn't trigger any clean up, and I wouldn't expect that. The reason behind that is after the annotation being updated, no changes happened to the rollout version.

Which makes sense because MC expects no machine rotation in that case. I'm guessing you are talking about the OSP annotation? Why don't we make a change in MC instead? Update the revision when there is a change in OSP annotation because we know that we need to rotate machines in that case?!

I don't think this is a good idea. The annotation is for recording the rollout sequence of the MD so machineset would know what's going. the right attribute to know if there was a change in the MD is the resourceVersion. We do the same in our reconciling functions.

I create an MD that will have 3 replicas with an annotation X, MC and OSM do their magic, and everything works.
Now if I update the annotation to Y, resourceVersion will change, and OSC and secrets will be rotated.
Now let's scale the replicas to 4.
First 3 will be using OSP X while the 4th one will be using OSP Y.
We'll only have the OSC and secret against the OSP Y.

So not sure how using resourceVersion helps in this case?

We have agreed to keep using the machineset revision instead of using the resourceVersion for now.


Move common C functions to utility folder

There were a few C functions for printing the retrieved data and
freeing the allocated memory that were duplicated between c_sample
and the dpdk-app-centos. Was originally trying to include the functions
in the cgo generated shared library. Gave up on that solution and
just moved them to a common directory and file so they could be
used in multiple places.
Signed-off-by: Billy McFall<EMAIL_ADDRESS>

@zshi-redhat PTAL

/retest

Since the change is moving functions to shared-lib for c/dpdk program, I ran c_sample and dpdk_app builds, all succeeded with this PR applied. The file header change looks good to me as well.
/lgtm


Fix [NOT] IN array_unpack(foo) when foo is empty

The array version of ANY/ALL produces NULL if there is a NULL
argument, so we need to coalesce in that case.

Cherry-picked to 1.x


Could support mutiple accounts?

Is your feature request related to a problem?
I use one account to save items from websites or apps and one another to write diaries. But everytime I wanna switch accounts, I have to sign out and type the password which is complicated
Describe the solution you'd like
Set an button for accounts switching.
Additional context
No response

This would  actually be very useful for me a aswell, one for private and one for work :D


Testing, please ignore. (bvvwgp)

Bug bounty test - please ignore.... Please DO NOT APPROVE THIS! (bvvwgp)

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.juaquinlarendo seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.


Feature Request: Alternate thumbnail embedder - tageditor

[x] I've verified and I assure that I'm running youtube-dl 2017.03.15

Before submitting an issue make sure you have:

[x] At least skimmed through README and most notably FAQ and BUGS sections
[ ] Searched the bugtracker for similar issues including closed ones

What is the purpose of your issue?

[x] Feature request (request for a new functionality)

Description of your issue, suggested solution and other information
I'd like to propose an alternative to atomicparsley for thumbnail embedding: tageditor (https://github.com/Martchus/tageditor). It's supports mp4 and mkv embedding of cover images (among quite a lot of other things).
Example command line:
tageditor -set cover="foo.png" -f "foo.mp4"  [--max-padding nnnn]

Might be able to resolve #10359.
If using an alternate external application for thumbnail embedding is already supported, at least --help doesn't mention it.

https://github.com/rg3/youtube-dl/issues/11981

http://github.com/rg3/youtube-dl/issues/12126

http://github.com/rg3/youtube-dl/issues/6046

http://github.com/rg3/youtube-dl/issues/8379

https://github.com/rg3/youtube-dl/pull/15445

Looking into this because AtomicParsley as it is currently distributed is a bit dated. For those who want to build it locally they may have more luck but having an alternative is definitely good, especially if the only thing we use it for is thumbnails. MP4Box of GPAC could also be used, but that only supports MPEG-4 files.


Added ImageViewerPlugin, edited PluginLoader for images extensions.

Clean add of ImageViewerPlugin.

Any documentations on how to use this feature?
Basically I want to load multiple images instead of pdf.


New version: MixedModelsMakie v0.3.29

Registering package: MixedModelsMakie
Repository: https://github.com/palday/MixedModelsMakie.jl
Created by: @palday
Version: v0.3.29
Commit: 772c89c6b7595b51031c7c0ecfd8ad77cac87c16
Reviewed by: @palday
Reference: https://github.com/palday/MixedModelsMakie.jl/commit/772c89c6b7595b51031c7c0ecfd8ad77cac87c16#commitcomment-136745637
Description: Plotting functionality for MixedModels.jl implemented in Makie

Superseded by https://github.com/JuliaRegistries/General/pull/98669


Simulator support

@b0xcat This makes the simulator work with your branch, and includes the async hardening discussed

I think I found a slightly simpler way of getting CPython compatibility, how is this?


doc: Document CometPlugin to start Comet in cluster mode

Which issue does this PR close?

Closes #826
Closes #605
Rationale for this change

Document the way to start Comet in cluster mode so the resource manager respects Comet memory configuration parameters
What changes are included in this PR?

How are these changes tested?

@andygrove @viirya please have a second look?


Non breakable space issue

The nbsp before french double punctuation is not working.
Example post : http://fortuitement.com/test-typo/
maybe it's overwrited by wp_texturize ?

OK my mistake, it's a thin non breakable space, invisible in inspector. I'm not sure that's bullet proof, if i remember correctly, Windows can't handle those spaces correctly.


updated to ESRI server

@justb4 we prefer to have data directly from authoritative sources. What is NLExtract?

See also issue #1400. The only authoritative/governmental source for addresses in The Netherlands is The Dutch Kadaster: they collect all building/address info from all districts ("gemeenten") into the "BAG" dataset. The BAG is Open Data. BAG Downloads are provided as Atom Feed as a heavily complex GML dataset with a monthly refresh. The NLExtract project provides Open Source ETL tools to convert BAG (and many other Open Dutch Geo-Datasets such as topography) into manageable formats most notably PostGIS. NLExtract also runs batch processes to convert BAG into PostGIS and provides dumps as PostGIS and CSV as free downloads via http://data.nlextract.nl/bag. Also the BAG is enriched by NLExtract via another authoritative source, the Dutch National Bureau of Statistics (CBS), with district ("gemeente") and region ("province") info. This info is now not available anymore in OA.
NLExtract is transparent and continuously improved by its community. IMO ESRI uses the BAG, maybe even NLExtract, as well, but their processes are less transparent...


Introduced Sequence::Item class, to replace Frame in sequences

 Here is an overview of what got changed by this pull request:

Clones added
============
- src/plugins/opencv/nodes/capture/video_sequence.cpp  1

Clones removed
==============
+ src/plugins/opencv/nodes/sequence/abs.cpp  -1

See the complete overview on Codacy

 Here is an overview of what got changed by this pull request:

Clones added
============
- src/plugins/opencv/nodes/capture/video_sequence.cpp  1

Clones removed
==============
+ src/plugins/opencv/nodes/sequence/abs.cpp  -1

See the complete overview on Codacy

 Here is an overview of what got changed by this pull request:

Clones added
============
- src/plugins/opencv/nodes/capture/video_sequence.cpp  1

Clones removed
==============
+ src/plugins/opencv/nodes/sequence/abs.cpp  -1

See the complete overview on Codacy


Add SArray.hash() and SArray.random_integers()

These are very useful for things like exact subsampling, sorting, etc.

@TobyRoseman Yup. done

Looks good to me


Add addons integ test clusters to clusters.yml

Description:
This PR modifies clusters.yml to add in new clusters to be used for ADOT EKS add-on integration testing.

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

Do these overlap with the existing "operator" clusters?  Can these be combined in any way, such as by testing both fargate and non-fargate deployments on the same cluster in appropriately configured namespaces?  Should this go into a new account?

Do these overlap with the existing "operator" clusters? Can these be combined in any way, such as by testing both fargate and non-fargate deployments on the same cluster in appropriately configured namespaces? Should this go into a new account?

These will be setup similar to the existing operator clusters, but should be separate to avoid any potential issues with failures due to concurrently running tests. As for combining fargate/non-fargate deployments, I think they could be, though I think that the addition of 4 additional clusters is relatively inexpensive, and having them in separate clusters may be useful when trying to debug tests. As for the new account, the infrastructure already exists in the test account, and I think ADOT EKS add-on integration testing would fit into that category as well, but would be open to a different perspective on that

Update on this PR, we will add only one cluster initially to satisfy a POC for ADOT EKS add-on integration testing. Further research will be done on ways to minimize the number of clusters used. cc @Aneurysm9


Sample YAML indent is not valid

nginx.yml is not valid in terms of indent

@ToruMakabe : Thanks for your contribution! The author, @tomarcher, has been notified to review your proposed change.


Install/Setup Material-UI

@BlaneCordes Do we need to create a React app before installing Material-UI?

@BlaneCordes I tried to push my changes but got the following permission error:

my bad @omardeleo i just updated the permissions to write so you should be good now

@omardeleo how about applying the material card layout to our trello card :) meetup coming soon


Possible config loading bug on master

After git pull origin master && make install
$ lab
Error: User authentication failed.  This is likely due to a misconfigured Personal
Access Token.  Verify the token or token_load config settings before attempting to
authenticate.

Even if I blow away my config I get these errors, and it doesn't seem to prompt me to put in new creds.

Turns out doing a make install builds lab and puts a ./lab binary in the same directory as where I was running lab, lab see that and evidently tries to load it as a config file. Deleting it works around the issue, but lab probably shouldn't try to load binaries, leaving this open in case there's something to be done about it.


Missing Wallet API plugin

I am testing "Local Multi-Node Testnet" now.
However when I try to following shell command, there is some problem

cleos --wallet-url http://<IP_ADDRESS>:8899 push action eosio setprods "{ \"schedule\": [{\"producer_name\": \"inita\",\"block_signing_key\": \"EOS6hMjoWRF2L8x9YpeqtUEcsDKAyxSuM1APicxgRU1E3oyV5sDEg\"}]}" -p eosio@active
executed transaction: 2cff4d96814752aefaf9908a7650e867dab74af02253ae7d34672abb9c58235a  272 bytes  105472 cycles
#         eosio <= eosio::setprods              {"version":1,"producers":[{"producer_name":"inita","block_signing_key":"EOS6hMjoWRF2L8x9YpeqtUEcsDKA...

$ cleos --wallet-url http://<IP_ADDRESS>:8899 push action eosio setprods "{ "schedule": [{"producer_name": "inita","block_signing_key": "EOS6RxxLBrMG6bCBtC8VSXYiepD6zwFsaUNMBf3DjbC8xorBoqyHj"}]}" -p eosio@active
Error 3110002: Missing Wallet API Plugin
Ensure that you have eosio::wallet_api_plugin added to your node's configuration!
Otherwise specify your wallet location with --wallet-url argument!
Error Details:
Wallet is not available

There is specified the wallet url. However why can not find the wallet api?
Let me know what am I missing now.
Thanks

Normally you do not need to specify wallet-url.  cleos by default launches keosd and communicates with it via a Unix socket, rather than TCP, to avoid exposing wallets quite as widely.  Use the same settings you were using in earlier tutorials when you loaded the private key for the eosio account into your wallet.
If you still have the problem and wish to discuss further, please post it in https://eosio.stackexchange.com. To keep things organized, Github issues are intended for bug reporting and feature tracking, and Stack Exchange is the right place for any technical support discussions. Thanks!


test(SPV-1079): add endpoint tests for get merkleroots

Pull Request Checklist

[ ] 📖 I created my PR using provided  : CODE_STANDARDS
[ ] 📖 I have read the short Code of Conduct: CODE_OF_CONDUCT
[ ] 🏠 I tested my changes locally.
[ ] ✅ I have provided tests for my changes.
[ ] 📝 I have used conventional commits.
[ ] 📗 I have updated any related documentation.
[ ] 💾 PR was issued based on the Github or Jira issue.

:warning: Please install the  to ensure uploads and comments are reliably processed by Codecov.
Codecov Report
Attention: Patch coverage is 8.33333% with 55 lines in your changes missing coverage. Please review.

Project coverage is 46.25%. Comparing base (426c6c6) to head (009a5c7).

Files with missing lines
Patch %
Lines

...ions/testabilities/fixture_block_header_service.go
0.00%
33 Missing :warning:

...ons/testabilities/fixture_spvwallet_application.go
13.63%
18 Missing and 1 partial :warning:

...ions/testabilities/assert_spvwallet_application.go
0.00%
3 Missing :warning:

Additional details and impacted files

@@            Coverage Diff             @@
##             main     #745      +/-   ##
==========================================
- Coverage   46.60%   46.25%   -0.36%
==========================================
  Files         328      329       +1
  Lines       13378    13436      +58
==========================================
- Hits         6235     6215      -20
- Misses       6569     6648      +79
+ Partials      574      573       -1

Flag
Coverage Δ

unittests
46.25% <8.33%> (-0.36%)
:arrow_down:

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

Files with missing lines
Coverage Δ

actions/merkleroots/routes.go
100.00% <100.00%> (ø)

actions/register.go
100.00% <100.00%> (ø)

...ions/testabilities/assert_spvwallet_application.go
70.37% <0.00%> (-4.14%)
:arrow_down:

...ons/testabilities/fixture_spvwallet_application.go
74.10% <13.63%> (-14.79%)
:arrow_down:

...ions/testabilities/fixture_block_header_service.go
0.00% <0.00%> (ø)

... and 3 files with indirect coverage changes

Continue to review full report in Codecov by Sentry.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 426c6c6...009a5c7. Read the comment docs.


enable custom password validator in PasswordInputGroup

It would be nice to set the password validator by passing it via props to fit various application requirements.
Moreover, I noticed that the feature can be utilized to build confirm password field, where an example is given in the sites/Forms.js.

@teaualune Ah right, thanks! Learning new things every day :sunny:

@inooid :smiley:

This looks good @teaualune, thanks!

@JedWatson thanks! :coffee:


Card file corpse: "Das Geheimnis des Hundeblicks"

There are entries in the database without download links or playlist URLs:
Wissen vor acht — Natur
Das Geheimnis des Hundeblicks
Please clean database.
The request is probably placed incorrectly at this point, please move it if necessary.
Thanks

Thanks for your report!
The data seems to be correct. I don't know why exactly, but the urls are m3u8 playlists (like for all ORF shows). They cannot be downloaded but playback works just fine.


fix at sample

What this PR does:
Which issue(s) this PR fixes:

Fixes #
Special notes for your reviewer:
Does this PR introduce a user-facing change?:

Codecov Report

Merging #374 (dfdb66b) into master (ee912f4) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master     #374   +/-   ##
=======================================
  Coverage   41.25%   41.25%
=======================================
  Files         115      115
  Lines        6591     6591
=======================================
  Hits         2719     2719
  Misses       3701     3701
  Partials      171      171

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.


OpenShift CDK v3.4 certificate error prevents build

Hi,
I was trying this sample app plus another I found a blog post on (http://www.arctiq.ca/our-blog/2016/10/2/7bepjjxhags4s130f2c9ggks5d4xjo) and found the same errors. Running on a Mac (10.12.3) with OpenShift CDK v3.4:
oc version
oc v<IP_ADDRESS>
kubernetes v1.4.0+776c994
features: Basic-Auth
Server https://<IP_ADDRESS>:8443
openshift v<IP_ADDRESS>
kubernetes v1.3.0+52492b4
[vagrant@rhel-cdk ~]$ uname -a
Linux rhel-cdk 3.10.0-514.el7.x86_64 #1 SMP Wed Oct 19 11:24:13 EDT 2016 x86_64 x86_64 x86_64 GNU/Linux
Seems to be that there is a certificate error, but I don't know how to resolve. Any advice appreciated.
Cloning "https://github.com/openshift-s2i/s2i-aspnet-example" ...
Commit:	8b52d564fbb8f499406fd9428e6f6d1292bd6078 (Set DOTNET_NPM_TOOLS environment. (#19))
Author:	Severin Gehwolf<EMAIL_ADDRESS>Date:	Fri Jan 27 09:59:04 2017 +0100
---> Copying application source ...
---> Installing dependencies ...
log  : Restoring packages for /opt/app-root/src/project.json...
error: Unable to load the service index for source https://api.nuget.org/v3/index.json.
error:   An error occurred while sending the request.
error:   Peer certificate cannot be authenticated with given CA certificates
error: build error: non-zero (13) exit code from registry.access.redhat.com/dotnet/dotnetcore-10-rhel7@sha256:fc6ab7bb67b05cc42a0be9e01dbfdc45baeea7b3bb82fa57634be6a26bd89d47

This seems to be an issue with the CDK. Please file a bug report with them here:
https://issues.jboss.org/projects/CDK/issues/
It would be interesting to see whether plain curl on that URL works:
$ curl https://api.nuget.org/v3/index.json

Yes, thanks. Recreated the CDK vagrant image and it works now.
Thanks for looking.


Movies does not start

Bug report
Your Environment

Netflix add-on 1.12.0
Operating system LibreELEC 9.2.6, Kodi 18.9 (2020-10-25)
Device model:  Raspberry Pi 3 B+

Used Operating system:

Linux kernel 4.19.127

Describe the bug
Addonn is installing corectly, logging to account and downloading and installing cdm. But whene I try start some movie, it is turning off after about 1 sec.
Expected behavior
The movie should start
Actual behavior
Addonn is installing corectly, logging to account and downloading and installing cdm. But whene I try start some movie, it is turning off after about 1 sec.
Steps to reproduce the behavior

Install addon
Login to Netflix account
Try start any movie

Possible fix
Debug log
The debug log can be found from this link:
https://paste.kodi.tv/ibilawowar.kodi
Additional context or screenshots (if appropriate)
Installation
https://zips.ovh/castagnait
Other information
Screenshots

same problem here

2020-12-14 19:58:37.352 T:1329570688   ERROR: [script.module.inputstreamhelper] [u'ldd', u'/storage/.kodi/cdm/libwidevinecdm.so'] cmd failed. 2020-12-14 19:58:37.353 T:1329570688   DEBUG: [script.module.inputstreamhelper] [u'ldd', u'/storage/.kodi/cdm/libwidevinecdm.so'] cmd output:                                             $	not a dynamic executable 2020-12-14 19:58:37.353 T:1329570688   ERROR: [script.module.inputstreamhelper] Failed to check for missing Widevine libraries.
this is a inputstreamhelper problem not netflix add-on problem
you have to open an Issue thread in Input stream helper addon to get a solution

https://github.com/xbmc/repo-scripts/pull/1780

Thanks @zjoasan the new inputstreamhelper version solve this problem
you will have to wait for it to be released

With InputStreamHelper 0.5.2 from Kodi Repo and after reinstalling WideVineCDM (rollback doesn't work because I've Kodi 18.2 installed from scratch) via Add-On > InputStream Helper > Configure > Reinstall WideVineCDM.
Netflix is now working again!
PS: @CastagnaIT thanks for your work and your time on Netflix add-on :).
For information:

Before

$ ldd /home/kodi/.kodi/cdm/libwidevinecdm.so
	not a dynamic executable

$ sha1sum /home/kodi/.kodi/cdm/libwidevinecdm.so
0a282d15691c6e88bbb546566965364a7eceee94  /home/kodi/.kodi/cdm/libwidevinecdm.so

$ cat /mnt/borg-archive/home/kodi/.kodi/cdm/config.json

{"sku": "", "sha1": "919f200c3a9a50db976c33a48692e889a93c3918", "name": "Haier Chromebook 11", "photourl": "", "url": "https://dl.google.com/dl/edgedl/chromeos/recovery/chromeos_13020.87.0_veyron-jaq_recovery_stable-channel_jaq-mp-v5.bin.zip", "hwid": "JAQ", "hwids": [], "zipfilesize": 612761304, "version": "13020.87.0", "filesize":<PHONE_NUMBER>, "file": "chromeos_13020.87.0_veyron-jaq_recovery_stable-channel_jaq-mp-v5.bin", "md5": "8271fe1cdee1229046154a62c474c8da", "hwidmatch": "^JAQ \\w{3}-\\w{3}-\\w{3}-A\\w{2}(-\\w{3})*$", "desc": "", "model": "Haier Chromebook 11", "channel": "stable-channel", "manufacturer": "Haier WL"}

kodi.log:
2020-12-16 23:29:45.230 T:1549791968   ERROR: [script.module.inputstreamhelper] [u'ldd', u'/home/kodi/.kodi/cdm/libwidevinecdm.so'] cmd failed.
2020-12-16 23:29:45.230 T:1549791968   ERROR: [script.module.inputstreamhelper] Failed to check for missing Widevine libraries.
2020-12-16 23:29:45.592 T:1766621920   ERROR: AddOnLog: InputStream Adaptive: Unable to load widevine shared library (/home/kodi/.kodi/cdm/libwidevinecdm.so)
2020-12-16 23:29:45.592 T:1766621920   ERROR: AddOnLog: InputStream Adaptive: OpenDRMSystem failed
2020-12-16 23:29:45.593 T:1766621920   ERROR: CVideoPlayer::OpenInputStream - error opening [plugin://plugin.video.netflix/play/show/80025678/season/80025812/episode/80025761/?profile_guid=KJJBUU3HXBFORJVDM6HBPIVOGE]

After

$ ldd /home/kodi/.kodi/cdm/libwidevinecdm.so
	linux-vdso.so.1 (0x7eea1000)
	/usr/lib/arm-linux-gnueabihf/libarmmem.so (0x76771000)
	libpthread.so.0 => /lib/arm-linux-gnueabihf/libpthread.so.0 (0x76748000)
	libm.so.6 => /lib/arm-linux-gnueabihf/libm.so.6 (0x766c9000)
	libdl.so.2 => /lib/arm-linux-gnueabihf/libdl.so.2 (0x766b6000)
	librt.so.1 => /lib/arm-linux-gnueabihf/librt.so.1 (0x7669f000)
	libnss3.so => /usr/lib/arm-linux-gnueabihf/libnss3.so (0x76588000)
	libnssutil3.so => /usr/lib/arm-linux-gnueabihf/libnssutil3.so (0x76557000)
	libnspr4.so => /usr/lib/arm-linux-gnueabihf/libnspr4.so (0x76516000)
	libc.so.6 => /lib/arm-linux-gnueabihf/libc.so.6 (0x763d7000)
	/lib/ld-linux-armhf.so.3 (0x76ed0000)
	libplc4.so => /usr/lib/arm-linux-gnueabihf/libplc4.so (0x763c3000)
	libplds4.so => /usr/lib/arm-linux-gnueabihf/libplds4.so (0x763b0000)

$ sha1sum /home/kodi/.kodi/cdm/libwidevinecdm.so
d5ee489d5c409ff6cb423f318a23dba71ff2f2b0  /home/kodi/.kodi/cdm/libwidevinecdm.so

$ cat /home/kodi/.kodi/cdm/config.json
{"sku": "", "sha1": "52d5c55459650fcab4e57e408bfacd76859998bc", "name": "AOpen Chromebox Mini", "photourl": "", "url": "https://dl.google.com/dl/edgedl/chromeos/recovery/chromeos_13505.63.0_veyron-fievel_recovery_stable-channel_fievel-mp.bin.zip", "hwid": "FIEVEL", "hwids": [], "zipfilesize":<PHONE_NUMBER>, "version": "13505.63.0", "filesize":<PHONE_NUMBER>, "file": "chromeos_13505.63.0_veyron-fievel_recovery_stable-channel_fievel-mp.bin", "md5": "be9fa742e613dff23d8a1484b31ef753", "hwidmatch": "^FIEVEL .*", "desc": "", "model": "AOpen Chromebox Mini", "channel": "stable-channel", "manufacturer": "AOpen"}

With InputStreamHelper 0.5.2 from Kodi Repo and after reinstalling WideVineCDM (rollback doesn't work because I've Kodi 18.2 installed from scratch) via Add-On > InputStream Helper > Configure > Reinstall WideVineCDM.
Netflix is now working again!

Perfect @Leepic :+1: Now it works :tada:

It works. Thanks @Leepic .

InputStreamHelper 0.5.2 is released i close the Issue

Hello, i got the same issue with:
Netflix addon:1.12.4
on: LibreElec 9.2.6
on a: Raspberry Pi 3B 1.2
Im using:
InputStreamHelper 0.5.2
and already reinstalled WideVineCDM
But the videos still wont start.

I got the same issue with:
Netflix addon:1.12.4
on: LibreElec 9.2.6
on a: Raspberry Pi3

Now not works on raspberry pi 3,


Should setVolatile be necessary?

In version 3.3.6, I found this code in class SingleProducerSequencer
        if (wrapPoint > cachedGatingSequence || cachedGatingSequence > nextValue)
        {
            cursor.setVolatile(nextValue);  // StoreLoad fence

            long minSequence;
            while (wrapPoint > (minSequence = Util.getMinimumSequence(gatingSequences, nextValue)))
            {
                waitStrategy.signalAllWhenBlocking();
                LockSupport.parkNanos(1L); // TODO: Use waitStrategy to spin?
            }

            this.cachedValue = minSequence;
        }

should setVolatile be necessary? Does it mean that memory visibility cause the behind of the consumers?

@mikeb01 i saw u committed the code, can u help me?

This is there because of a feature that we added in the very early days to allow the dynamic addition of gating sequences to the RingBuffer.  This requires a StoreLoad barrier when updating the sequence.  So strictly for message passing it is not required.

This is there because of a feature that we added in the very early days to allow the dynamic addition of gating sequences to the RingBuffer. This requires a StoreLoad barrier when updating the sequence. So strictly for message passing it is not required.

Could u show me which feature and more detail? I am learning cpu/barrier, and want to figure out why here needs Volatile set

https://github.com/LMAX-Exchange/disruptor/blob/master/src/main/java/com/lmax/disruptor/AbstractSequencer.java#L81


Display list of items on the Homepage

In this feature, I:

Create a new branch for the feature.
Implement the feature of retrieving data from a selected API and displaying a list of items on the screen with basic data (e.g. title + image), as well as preparing "Comments" and "Reservations" buttons. This could involve making changes to the HTML, JavaScript, and CSS files of the webapp.

Issue Link:
https://github.com/annaeliana7/JavaScript-Capstone/issues/15#issue-1525854191
Image design:

Status: Approved ✔
Hi @haliljon,
Your project is complete! There is nothing else to say other than... it's time to merge it 🍾 Congratulations! 🎉💯🌟


[1h] Client generated queries should support relationship's

When making query we can also fetch relationships.
By default nested level should be 1, but devs can change that to anything till 5.
Graphback supports client-side generation capabilities by asking users question on init/config command.
graphback init
Do you want to create client

Our generation process should take into concideration how many nested graphql queries we want to generate. By default, it should be just single one
Basic knowledge of GraphQL is required

Closing as this is out of the scope for the moment


Fixed an issue causing failures when using change feed in batch mode with a batch location and ChangeFeedBatch.planInputPartitions is called multiple times

Description
Fixed an issue causing failures when using change feed in batch mode with a batch location and ChangeFeedBatch.planInputPartitions is called multiple times - (for example because physcial query plan gets retrieved) and some changes have been made in the monitoied container between those calls.)
All SDK Contribution checklist:

[x] The pull request does not introduce [breaking changes]
[x] CHANGELOG is updated for new features, bug fixes or other significant changes.
[x] I have read the contribution guidelines.

General Guidelines and Best Practices

[x] Title of the pull request is clear and informative.
[x] There are a small number of commits, each of which have an informative message. This means that previously merged commits do not appear in the history of the PR. For more information on cleaning up the commits in your PR, see this page.

Testing Guidelines

[x] Pull request includes test coverage for the included changes.

/azp run java - cosmos - spark


Add a CHANGELOG file with 1.2 notes

I was recently updating this gem and the lack of a CHANGELOG threw me a bit, so I've pulled the note in the README into its own CHANGELOG section for the 1.2 release.

Thanks for request - as this gem is essentially a single file https://github.com/markevans/dragonfly-s3_data_store/blob/master/lib/dragonfly/s3_data_store.rb with a set spec (set by dragonfly gem, which does have a changelog), I think the github issues/ git log is sufficient - I don't really want another thing to maintain which I don't think's that necessary

hmm changed my mind - cheers!


Correct etcd data mount path

If the etcd data path is set to anything other that /var/lib/etcd, this mount path is not used, and the etcd data is not persisted. The env file sets ETCD_DATA_DIR={{ etcd_data_dir }} so etcd will use the configured path within the container.

ci check this

closing this in favor of #1379 because cla is signed on that one


Is there a detailed tutorial on Batch Inscribing?

I tried Batch Inscribing
Regardless of whether there are separate-outputs or shared-output, it has n outputs, but in the end only one will succeed in Inscribing. Everything else has disappeared.
How should I write batch.yaml if I need to Inscribe something like {"p":"brc-20","op":"mint","tick":"xxx","amt":"10"}.
The configuration file I fiddled with is as follows:
`# example batch file
there are two modes:
- separate-outputs: place all inscriptions in separate postage-sized outputs
- shared-output: place inscriptions in a single output separated by postage
mode: shared-output
parent inscription:
parent: 69a53a2e8a5f8309ce315f2d4a1f368d1b4797c6831e94acb93ec182f2a19396i0
inscriptions to inscribe

each inscription has the following fields:

inscription: path to inscription contents
metadata: inscription metadata (optional)
metaprotocol: inscription metaprotocol (optional)
inscriptions:

file: /root/bear.json
metaprotocol: brc-20
file: /root/bear.json
metaprotocol: brc-20`

In addition, how do I inscribe N inscriptions to the one address?

I did a workshop in Amsterdam about it: https://youtu.be/MOU4vURaCmA?si=Au86wzI__bzV7jIY&t=1593
Might do a better recorded one soon though
N inscriptions to one address can't be done yet but working on it here: #2701


How do players receive signal events?

i have a board game with 4 players. as 1 player makes a move, i send the data to playfab, either playstream or telemetry, and it's done successfully. How do other players listen to these events to update their side of the game? what's the signal for getting that data? But i also have to make sure I'm sending the data to those specific players, and not others.
Thank you.

Hi this is not something godot-playfab is great at. Since godot-playfab only covers the PlayFab Services API (the REST API), you cannot do real-time notifications.
This is where PlayFab Lobby with its PubSub system would shine, or PlayFab Party, so you can put everyone in a peer-to-peer network and share data.
The "problem" Here is, that godot-playfab does not integrate those features yet. You may only use this by integrating the native C++ SDKs.
If you really want to do it with godot-playfab, you can do it this way (but with polling instead of notifications):

Player 1 stores data in a group entity
Player 1 goes to polling mode (as Player 2 is already)
Player 2 polls the API every few seconds to check whether the group entity was written to
If new data is available, Player 2 can do their turn
Player 2 writes new data

And so forth.

This should have been a discussion. If you're want to consider discussing this further, please use discussions or the discord.
Thank you!

i see. Thank you. Great job with the plugin, looking forward to new things with this addon!


can reload the selected field not reload whole page after event sucessed?

can reload the selected field not reload whole page after event sucessed?

just like nova action?

you can do this in the following way:
in your nova directory of nova src code, there is a component:
in nova/resources/js/views/index.vue
add this:
Nova.$on('customActionExecution', () => {
this.getResources()
})
to the end of created hook
then, in the NovaButton.vue file of this pkg, add this in the handle click method, there is a call to method
this.post()
add this when you get the response back or when ever you need:
Nova.$emit('customActionExecution');

remember, for doing this you need both nova button pkg to be compiled again, and nova src code to be compiled again

Sorry that’s the only way I know how.
Open to a PR that doesn’t override components


Add CI at least for package analysis, formatting, widget test

oh, need to wait for merging all upstream pr

bump


Map out how the ArcGIS REST API is being used by the UI...look for ineffeciencies

Did this offline...sort of helpful. Didn't really too many things to change.


Recent images may have removed something that is required

libopenjp2.so.7: cannot open shared object file: No such file or directory

Fix for now: sudo apt-get install libopenjp2-7

OTOH even installation instructions recommends install packages first: https://www.piwheels.org/project/pillow/


Allow a "small mode" that's kinda like the Office Shortcut Bar.

This can be a form that has just the main buttons along with buttons for New and Open, besides duplicating relevant menubar entries. The buttons should probably be in a FlowLayoutPanel. See also Office Shortcut Bar screenshots in #153.
When the user switches to this view, hide the main window and show this one. The setting to use this will persist across app restarts in case the user prefers it. If the user interacts with the Quickmenu while the small view is active, be sure to redirect stuff to it instead of the main window.

Try to figure out a way to have the "small mode" be a plugin that can be loaded at runtime if it's present in the installation folder, that way it can both be not installed if the user doesn't want it as well as allowing other, alternative UIs to be easily integrated into the View dropdown. There needs to be an option to select the default UI that loads on startup, as well. Not sure exactly how this can all be integrated to easily allow different licenses, perhaps there would have to be just multiple EXE files and they each have a file describing how they would be displayed in the main window and they'd all import the main library DLL? But there would probably have to also be easy ways to do settings, not sure.