Intermittent enclave session error using Always Encrypted w/ secure enclaves.

Microsoft.Data.SqlClient.EnclaveDelegate+RetryableEnclaveQueryExecutionException: Internal Error. Enclave session is null during query execution. Enclave type is 'SGX' and enclaveAttestationUrl is 'https://xxxxxxxxxxxxx.eus.attest.azure.net'.
 ---> System.ArgumentException: Internal Error. Enclave session is null during query execution. Enclave type is 'SGX' and enclaveAttestationUrl is 'https://xxxxxxxxxxxxx.eus.attest.azure.net'.
   at Microsoft.Data.SqlClient.EnclaveDelegate.GetEnclaveSession(SqlConnectionAttestationProtocol attestationProtocol, String enclaveType, EnclaveSessionParameters enclaveSessionParameters, Boolean generateCustomData, SqlEnclaveSession& sqlEnclaveSession, Int64& counter, Byte[]& customData, Int32& customDataLength, Boolean throwIfNull)
   at Microsoft.Data.SqlClient.EnclaveDelegate.GenerateEnclavePackage(SqlConnectionAttestationProtocol attestationProtocol, ConcurrentDictionary`2 keysToBeSentToEnclave, String queryText, String enclaveType, EnclaveSessionParameters enclaveSessionParameters, SqlConnection connection, SqlCommand command)
   --- End of inner exception stack trace ---
   at Microsoft.Data.SqlClient.EnclaveDelegate.GenerateEnclavePackage(SqlConnectionAttestationProtocol attestationProtocol, ConcurrentDictionary`2 keysToBeSentToEnclave, String queryText, String enclaveType, EnclaveSessionParameters enclaveSessionParameters, SqlConnection connection, SqlCommand command)
   at Microsoft.Data.SqlClient.SqlCommand.GenerateEnclavePackage()
   at Microsoft.Data.SqlClient.SqlCommand.RunExecuteReaderTdsWithTransparentParameterEncryption(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean isAsync, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest, Task describeParameterEncryptionTask)
   at Microsoft.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry, String method)
   at Microsoft.Data.SqlClient.SqlCommand.BeginExecuteReaderInternal(CommandBehavior behavior, AsyncCallback callback, Object stateObject, Int32 timeout, Boolean inRetry, Boolean asyncWrite)
   at Microsoft.Data.SqlClient.SqlCommand.BeginExecuteReaderAsyncCallback(AsyncCallback callback, Object stateObject)
   at System.Threading.Tasks.TaskFactory`1.FromAsyncImpl(Func`3 beginMethod, Func`2 endFunction, Action`1 endAction, Object state, TaskCreationOptions creationOptions)
   at Microsoft.Data.SqlClient.SqlCommand.InternalExecuteReaderAsync(CommandBehavior behavior, CancellationToken cancellationToken)

To Reproduce
Behavior occurs intermittently with any command that references an encrypted column.
Further technical details
Microsoft.Data.SqlClient version: 4.0.0
.NET.Core 3.1
AzureSQL
Attestation Protocol: AAS

Can you provide a repro?

I'm pretty sure it happens when the EnclaveSessionCache expires after 8 hours.
Update the EnclaveSessionCache to 1 minute instead of 8 hours
`        internal SqlEnclaveSession CreateSession(EnclaveSessionParameters enclaveSessionParameters, byte[] sharedSecret, long sessionId, out long counter)
{
string cacheKey = GenerateCacheKey(enclaveSessionParameters);
SqlEnclaveSession enclaveSession = null;
lock (enclaveCacheLock)
{
enclaveSession = new SqlEnclaveSession(sharedSecret, sessionId);
enclaveMemoryCache.Add(cacheKey, enclaveSession, DateTime.UtcNow.AddMinutes(1));
counter = Interlocked.Increment(ref _counter);
}
        return enclaveSession;
    }`

Run a query that requires enclave and then come back after a minute and you'll get it. Let me know what else you need from me

using Azure.Identity;
using Microsoft.Data.SqlClient;
using Microsoft.Data.SqlClient.AlwaysEncrypted.AzureKeyVaultProvider;
using System;
using System.Collections.Generic;
using System.Data;
using System.Diagnostics;
using System.Threading;
using System.Threading.Tasks;

namespace EncryptionTest
{

    /*  Table Create  (Need to add column encryption key to script (***Need To Add Column Encryption Key Here ***)
        CREATE TABLE [dbo].[EncrytptionTest]
        (
	        [Id] [int] IDENTITY(1,1) NOT NULL,
	        [EncryptedColumn] [char](1)  COLLATE Latin1_General_BIN2 ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = [***Need To Add Column Encryption Key Here ***], ENCRYPTION_TYPE = Randomized, ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256') NOT NULL,
            PRIMARY KEY CLUSTERED (	[Id] ASC)
        )
        GO

        DECLARE @male char(1) = 'M'
        INSERT INTO [EncrytptionTest]([EncryptedColumn])VALUES(@male)
        GO

        DECLARE @female char(1) = 'F'
        INSERT INTO [EncrytptionTest]([EncryptedColumn])VALUES(@female)
        GO
    */

    /* Update EnclaveSessionCache to following or wait 8 hours(update program below to run that long)
     *
     *  // Creates a new SqlEnclaveSession and adds it to the cache
        internal SqlEnclaveSession CreateSession(EnclaveSessionParameters enclaveSessionParameters, byte[] sharedSecret, long sessionId, out long counter)
        {
            string cacheKey = GenerateCacheKey(enclaveSessionParameters);
            SqlEnclaveSession enclaveSession = null;
            lock (enclaveCacheLock)
            {
                enclaveSession = new SqlEnclaveSession(sharedSecret, sessionId);
                enclaveMemoryCache.Add(cacheKey, enclaveSession, DateTime.UtcNow.AddMinutes(1));
                counter = Interlocked.Increment(ref _counter);
            }

            return enclaveSession;
        }
     */
    class Program
    {
        static readonly string server = "";
        static readonly string user = "";
        static readonly string password = "";
        static readonly string attestationUrl = "";
        static readonly string s_connectionString = $"Server={server};Initial Catalog=proformex;Connection Timeout=30;UID={user};PWD={password}; Column Encryption Setting = Enabled;Attestation Protocol = AAS; Enclave Attestation Url = {attestationUrl};";

        static readonly Random _random = new Random();
        static async Task Main(string[] args)
        {
            SqlColumnEncryptionAzureKeyVaultProvider akvProvider = new SqlColumnEncryptionAzureKeyVaultProvider(new DefaultAzureCredential());
            SqlConnection.RegisterColumnEncryptionKeyStoreProviders(customProviders: new Dictionary<string, SqlColumnEncryptionKeyStoreProvider>(capacity: 1, comparer: StringComparer.OrdinalIgnoreCase)
            {
                    { SqlColumnEncryptionAzureKeyVaultProvider.ProviderName, akvProvider}
            });

            for (int i = 0; i < 11; i++)
            {
                try
                {
                    using (SqlConnection sqlConnection = new SqlConnection(s_connectionString))
                    {
                        if (sqlConnection.State != ConnectionState.Open)
                        {
                            sqlConnection.Open();
                        }
                        using (SqlCommand sqlCommand = new SqlCommand($"SELECT ID FROM [EncrytptionTest] WHERE EncryptedColumn=@encryptedValue", sqlConnection))
                        {
                            int age = _random.Next(1, 120);
                            string encryptedValue = age % 2 == 0 ? "M" : "F";
                            SqlParameter customerFirstParam = sqlCommand.Parameters.AddWithValue(@"encryptedValue", encryptedValue);
                            customerFirstParam.Direction = ParameterDirection.Input;
                            customerFirstParam.DbType = DbType.AnsiStringFixedLength;
                            customerFirstParam.Size = 1;

                            using (SqlDataReader sqlDataReader = await sqlCommand.ExecuteReaderAsync())
                            {
                                while (sqlDataReader.Read())
                                {
                                    Debug.Print($"Param: {encryptedValue} - Result: {sqlDataReader[0]} - Time: {DateTime.Now}");
                                }
                            }
                        }
                    }
                    Thread.Sleep(6000);
                }
                catch (Exception ex)
                {
                    Debug.Print($"Errored at: {DateTime.Now} - {ex.Message}");
                }
            }
        }
    }
}

@johnnypham thoughts?
https://github.com/dna495/issue-1422-EncalveSessionError/commit/f492b71be5f3df67c4bdc6eb51c46fc57052cb6e

Sorry, I've been away. Thanks for the repro, I'll give it a try asap. It seems odd that the enclave session doesn't automatically refresh after it expires.

I still have yet to go through the enclave session caching implementation but I wanted to mention that the repro doesn't work for me, even if I change the enclave cache time to 10 seconds.

Not working as in not getting the exception?

Yes. I'm using my own table but that shouldn't make a difference. Everything else is the same. Tried with both 1 minute and 10 seconds.

Do you mind sending me your table/query, so that I can try?

It's the table created in this article. You can skip the part where you create the CMK/CEK and just use your existing keys.
Query is:
SELECT [SSN], [FirstName], [LastName], [Salary]
FROM [HR].[Employees]
WHERE [SSN] LIKE @SSNPattern AND [Salary] > @MinSalary;
``

I think the issue is when you use AzureSQL and AAS.  The cache refreshes correctly when I connect via SQLServer and HGS.

Ok thanks, I'll try that next.

I only see the exception when using ExecuteReaderAsync. ExecuteReader seems to work fine. If possible, can you verify this in your environment?

Verified. RunExecuteReader throws when it's async and retries when it's not
`
catch (EnclaveDelegate.RetryableEnclaveQueryExecutionException)
{
if (inRetry || isAsync)
{
throw;
}
                // Retry if the command failed with appropriate error.
                // First invalidate the entry from the cache, so that we refresh our encryption MD.
                SqlQueryMetadataCache.GetInstance().InvalidateCacheEntry(this);

                if (ShouldUseEnclaveBasedWorkflow && this.enclavePackage != null)
                {
                    EnclaveSessionParameters enclaveSessionParameters = new EnclaveSessionParameters(this._activeConnection.DataSource, this._activeConnection.EnclaveAttestationUrl, this._activeConnection.Database);
                    EnclaveDelegate.Instance.InvalidateEnclaveSession(this._activeConnection.AttestationProtocol, this._activeConnection.Parser.EnclaveType,
                        enclaveSessionParameters, this.enclavePackage.EnclaveSession);
                }

                return RunExecuteReader(cmdBehavior, runBehavior, returnStream, null, TdsParserStaticMethods.GetRemainingTimeout(timeout, firstAttemptStart), out task, out usedCache, isAsync, inRetry: true, method: method);
            }

`

Yeah, that seems like the likely solution. But I'm trying to figure out why it only fails with AAS and not HGS. The old async code is making it difficult.

Right right. Let me know if there's anything else I can do to help.

@johnnypham any update, or anything you'd like me to do to help?

Hi, I am using it .NET Core API hosted in Azure App Service. My Api failes to search on encrypted columns after almost 8 hours. It remains down almost 5-30 minutes before it automatically comes up. I have included following nuget packages in the project

Microsoft.Data.SqlClient
Microsoft.Data.SqlClient.AlwaysEncrypted.AzureKeyVaultProvider
Microsoft.IdentityModel.Clients.ActiveDirectory

I am using this code in Startup.cs file.  A quick response in this regard will be highly appreciated.
`var tenant = "tenant";
var clientApplicationId = "AADapplicationid";
var clientSecret = "ClientSecret";
var clientSecretCredential = new ClientSecretCredential(tenant, clientApplicationId, clientSecret);
SqlColumnEncryptionAzureKeyVaultProvider akvProvider = new SqlColumnEncryptionAzureKeyVaultProvider(clientSecretCredential);
SqlColumnEncryptionAzureKeyVaultProvider(defaultCredentials);
// Register AKV provider
SqlConnection.RegisterColumnEncryptionKeyStoreProviders(customProviders: new Dictionary<string, SqlColumnEncryptionKeyStoreProvider>(capacity: 1, comparer: StringComparer.OrdinalIgnoreCase)
{
{ SqlColumnEncryptionAzureKeyVaultProvider.ProviderName, akvProvider}
});
`

@tabi786 are you using SQL Server or Azure SQL, and can you please provide repro?

I am using Azure Sql with latest sql compatibility level. I am actually using Core Api with odata https://learn.microsoft.com/en-us/odata/webapi/first-odata-api
I'll also share in next post. https://learn.microsoft.com/en-us/odata/webapi/first-odata-api

I have created and uploaded a repo at https://github.com/tabi786/Test.WebAPI

Hi Dave,
I have put the repos at tabi786/Test.WebAPI (github.com)https://github.com/tabi786/Test.WebAPI
Regards.
Aftab Ahmad
From: Dave @.>
Sent: 4. marts 2023 15:10
To: dotnet/SqlClient @.>
Cc: tabi786 @.>; Mention @.>
Subject: Re: [dotnet/SqlClient] Intermittent enclave session error using Always Encrypted w/ secure enclaves. (Issue #1422)
@tabi786https://github.com/tabi786 are you using SQL Server or Azure SQL, and can you please provide repro?
—
Reply to this email directly, view it on GitHubhttps://github.com/dotnet/SqlClient/issues/1422#issuecomment-1454752360, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AC3L7HBVBWSVN5Y2TZH3ZTLW2NEMXANCNFSM5JPXCWRQ.
You are receiving this because you were mentioned.Message ID<EMAIL_ADDRESS>

Hi again,
I have the exact error message. Now it is happening very quickly, after every second hour.
Microsoft.Data.SqlClient.EnclaveDelegate+RetryableEnclaveQueryExecutionException: Internal Error. Enclave session is null during query execution. Enclave type is 'SGX' and enclaveAttestationUrl is 'https://xxxxxxxx.neu.attest.azure.net'.
---> System.ArgumentException: Internal Error. Enclave session is null during query execution. Enclave type is 'SGX' and enclaveAttestationUrl is 'https://xxxxxxxxxxx.neu.attest.azure.net'.
at Microsoft.Data.SqlClient.EnclaveDelegate.GenerateEnclavePackage(SqlConnectionAttestationProtocol attestationProtocol, ConcurrentDictionary2 keysToBeSentToEnclave, String queryText, String enclaveType, EnclaveSessionParameters enclaveSessionParameters, SqlConnection connection, SqlCommand command)    --- End of inner exception stack trace ---    at Microsoft.Data.SqlClient.SqlCommand.<>c.<ExecuteDbDataReaderAsync>b__209_0(Task1 result)
at System.Threading.Tasks.ContinuationResultTaskFromResultTask2.InnerInvoke()    at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state) --- End of stack trace from previous location ---    at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)    at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread) --- End of stack trace from previous location ---    at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)    at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)    at Microsoft.EntityFrameworkCore.Query.Internal.SingleQueryingEnumerable1.AsyncEnumerator.InitializeReaderAsync(AsyncEnumerator enumerator, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerExecutionStrategy.ExecuteAsync[TState,TResult](TState state, Func4 operation, Func4 verifySucceeded, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Query.Internal.SingleQueryingEnumerable1.AsyncEnumerator.MoveNextAsync()    at System.Text.Json.Serialization.Converters.IAsyncEnumerableOfTConverter2.OnWriteResume(Utf8JsonWriter writer, TAsyncEnumerable value, JsonSerializerOptions options, WriteStack& state)
at System.Text.Json.Serialization.JsonCollectionConverter2.OnTryWrite(Utf8JsonWriter writer, TCollection value, JsonSerializerOptions options, WriteStack& state)    at System.Text.Json.Serialization.JsonConverter1.TryWrite(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)
at System.Text.Json.Serialization.JsonConverter1.WriteCore(Utf8JsonWriter writer, T& value, JsonSerializerOptions options, WriteStack& state)    at System.Text.Json.Serialization.JsonConverter1.WriteCoreAsObject(Utf8JsonWriter writer, Object value, JsonSerializerOptions options, WriteStack& state)
at System.Text.Json.JsonSerializer.WriteCore[TValue](Utf8JsonWriter writer, TValue& value, JsonTypeInfo jsonTypeInfo, WriteStack& state)
at System.Text.Json.JsonSerializer.WriteStreamAsync[TValue](Stream utf8Json, TValue value, JsonTypeInfo jsonTypeInfo, CancellationToken cancellationToken)
at System.Text.Json.JsonSerializer.WriteStreamAsync[TValue](Stream utf8Json, TValue value, JsonTypeInfo jsonTypeInfo, CancellationToken cancellationToken)
at System.Text.Json.JsonSerializer.WriteStreamAsync[TValue](Stream utf8Json, TValue value, JsonTypeInfo jsonTypeInfo, CancellationToken cancellationToken)
at Microsoft.AspNetCore.Mvc.Formatters.SystemTextJsonOutputFormatter.WriteResponseBodyAsync(OutputFormatterWriteContext context, Encoding selectedEncoding)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.g__Logged|22_0(ResourceInvoker invoker, IActionResult result)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.g__Awaited|30_0[TFilter,TFilterAsync](ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResultExecutedContextSealed context)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.ResultNext[TFilter,TFilterAsync](State& next, Scope& scope, Object& state, Boolean& isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.g__Awaited|28_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.g__Awaited|20_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.g__Logged|17_1(ResourceInvoker invoker)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.g__Logged|17_1(ResourceInvoker invoker)
at Microsoft.AspNetCore.Routing.EndpointMiddleware.g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)
at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
at Test.Web.API.Startup.b__5_1(HttpContext context, Func`1 next) in C:\Users\aa\source\repos\Test.Web.API\Test.Web.API\Startup.cs:line 175
at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddlewareImpl.Invoke(HttpContext context)
HEADERS
Accept: /
Accept-Encoding: gzip, deflate, br
Authorization: Bearer XXXX
Cache-Control: no-cache
Content-Length: 0
Host: api.test.ltd
Max-Forwards: 10
User-Agent: PostmanRuntime/7.31.1
Postman-Token: 984262a3-6fe1-4e52-b751-513ebb2aeb5b
X-ARR-LOG-ID: b3af3b85-cba7-4fea-aba4-1f5dda4b46bb
CLIENT-IP: <IP_ADDRESS>:10241
DISGUISED-HOST: api.test.ltd
X-SITE-DEPLOYMENT-ID: testprodapi
WAS-DEFAULT-HOSTNAME: testprodapi.azurewebsites.net
X-Forwarded-Proto: https
X-AppService-Proto: https
X-ARR-SSL: 8192|256|CN=Sectigo RSA Domain Validation Secure Server CA, O=Sectigo Limited, L=Salford, S=Greater Manchester, C=GB|CN=.test.ltd
X-Forwarded-TlsVersion: 1.2
X-Forwarded-For: <IP_ADDRESS>:10241
X-Original-URL<EMAIL_ADDRESS>X-WAWS-Unencoded-URL<EMAIL_ADDRESS>X-MS-CLIENT-PRINCIPAL-NAME: Thomas Peter
X-MS-CLIENT-PRINCIPAL-ID: d679531a-be60-424c-a3bc-11bb1dd42c72
X-MS-CLIENT-PRINCIPAL-IDP: aad
X-MS-CLIENT-PRINCIPAL: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
HEADERS
Accept: /
Accept-Encoding: gzip, deflate, br
Authorization: Bearer XXXX
Cache-Control: no-cache
Content-Length: 0
Host: api.test.ltd
Max-Forwards: 10
User-Agent: PostmanRuntime/7.31.1
Postman-Token: 984262a3-6fe1-4e52-b751-513ebb2aeb5b
X-ARR-LOG-ID: b3af3b85-cba7-4fea-aba4-1f5dda4b46bb
CLIENT-IP: <IP_ADDRESS>:10241
DISGUISED-HOST: api.test.ltd
X-SITE-DEPLOYMENT-ID: testprodapi
WAS-DEFAULT-HOSTNAME: testprodapi.azurewebsites.net
X-Forwarded-Proto: https
X-AppService-Proto: https
X-ARR-SSL: 8192|256|CN=Sectigo RSA Domain Validation Secure Server CA, O=Sectigo Limited, L=Salford, S=Greater Manchester, C=GB|CN=.test.ltd
X-Forwarded-TlsVersion: 1.2
X-Forwarded-For: <IP_ADDRESS>:10241
X-Original-URL<EMAIL_ADDRESS>X-WAWS-Unencoded-URL<EMAIL_ADDRESS>X-MS-CLIENT-PRINCIPAL-NAME: Thomas Peter
X-MS-CLIENT-PRINCIPAL-ID: d679531a-be60-424c-a3bc-11bb1dd42c72
X-MS-CLIENT-PRINCIPAL-IDP: aad
X-MS-CLIENT-PRINCIPAL: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Regards.
Aftab Ahmad
From: Aftab Ahmad
Sent: 4. marts 2023 22:44
To: dotnet/SqlClient @.>; dotnet/SqlClient @.>
Cc: Mention @.>; Dennis Rohde @.*>
Subject: RE: [dotnet/SqlClient] Intermittent enclave session error using Always Encrypted w/ secure enclaves. (Issue #1422)
Hi Dave,
I have put the repos at tabi786/Test.WebAPI (github.com)https://github.com/tabi786/Test.WebAPI
Regards.
Aftab Ahmad
From: Dave<EMAIL_ADDRESS>Sent: 4. marts 2023 15:10
To: dotnet/SqlClient<EMAIL_ADDRESS>Cc: tabi786<EMAIL_ADDRESS>Mention<EMAIL_ADDRESS>Subject: Re: [dotnet/SqlClient] Intermittent enclave session error using Always Encrypted w/ secure enclaves. (Issue #1422)
@tabi786https://github.com/tabi786 are you using SQL Server or Azure SQL, and can you please provide repro?
—
Reply to this email directly, view it on GitHubhttps://github.com/dotnet/SqlClient/issues/1422#issuecomment-1454752360, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AC3L7HBVBWSVN5Y2TZH3ZTLW2NEMXANCNFSM5JPXCWRQ.
You are receiving this because you were mentioned.Message ID<EMAIL_ADDRESS>

@tabi786 looks like same bug. FWIW we have been running the change https://github.com/dna495/issue-1422-EncalveSessionError/commit/f492b71be5f3df67c4bdc6eb51c46fc57052cb6e since 12/2022 w/o issue.

Hi Dave,
Thank you for your message. I have downloaded the code but it has a lot of errors and I cannot build the project. Do you have a working project file as zip that I can download and include in my project?
Regards.
Aftab Ahmad

Hi @dna495,
I have got the code but unfortunately my Azure Encryption code has stopped working now. Any Idea.

Regards.
Aftab Ahmad

HI @dna495 @johnnypham @DavoudEshtehari @radical,
Can anyone of you guys help? We have the issue in Production Environment and it is blocking completely. Is there any other way to get help, for example from Microsoft support by creating a Support Ticket?
Your quick response in this regard will be highly appreciated.
Regards.
Aftab Ahmad

@tabi786 in case of any emergency support request contact Microsoft support center.

The fix for this issue has been merged and release in 5.2.0-preview1.

Fixed by #1988


Typescript types

Hello friends,
Do you have any interest in publishing types for this package? It's a matter of generating the corresponding .d.ts files for the .js files and specifying a typings key in package.json.
I'm particularly interested in this for projects at work, and wonder if there's anyone else out there in the community who would want this feature.

@avindra thanks for reaching out. We don't currently yet have the bandwidth for such nice things =) Will revisit at a later date.

And what about now? 😄

@ffMathy we've deprecated this repo. Please check out this new repo/package, which contains the Typescript defs: https://github.com/optimizely/javascript-sdk

You should archive the repo here in GitHub to make the deprecation more clear.

You’re right! I’ll archive it to avoid further confusion.


Control how json is encoded/decoded from/to records

Description:
This a feature request.
We need more control over how json values are encoded/decoded from/to records:
following are useful customisations:

field name of json payload and record could be different.
data type of json payload and record could be different.
If the field is empty we should be able to omit from the encoded json ( e.g. please check what omitempty tag does in golang)
better control over how date/time are serialised.
ability to ignore fields in a record (even if it has a value) when encoding a json.
ability to transform/format values when encoding a json. (e.g. apointment.dayOfWeek = 6 -> {"dayOfWeek":"Saturday"})

Steps to reproduce:
N/A
Affected Versions:
1.2.8
OS, DB, other environment details and versions:
N/A
Related Issues (optional):

Suggested Labels (optional):

Suggested Assignees (optional):

This is beyond language design. We need projection API (a new stdLib) to support this.
This issue has been marked as "Deferred" and will be revisited in the future when resources are available.

But these are important features for practical use of data seriazliation regardless its coming from lang or stdlib.


fix(webpack-config): fix webpack config for node projects

affects: @goldwasserexchange/read-pkg-up-helpers, @goldwasserexchange/webpack-config

fixes #33 with commits a885de78bf91e98506f3980bde4971d2f24fc7ee and 038ab1c4fa3539facda93633bbe84577ecaa362b


Remove "button drop-down" where it only has 2 options in the drop-down

Issue:  Button drop-down control where it is only being used for only 2 options
Resolution: Change those to be 2 buttons on same line.

This has been fixed in Workloads, but is still in

[ ] Create Service - Selectors

[ ] Create ConfigMap Data & Create Secret Data

Verified Fixed


Investigate conventions around HTTP headers

The x- HTTP header prefix has been deprecated. See the following links for details:

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers
https://datatracker.ietf.org/doc/html/rfc6648#page-4

We should introduce a namespace for iRODS specific headers. It should include a space for experimental headers as well.

This work has been captured in the new HTTP API.
https://github.com/irods/irods_client_http_api


Channel mapping

Hello!
Great project, I just discovered and started using, and so far its works fine, while I set the Windows device to stereo. As soon as I set it to multi channel (5.1 for example) I can see on the terminal, that the unix receiver is switches to 6 channel, but some weird combination of channels for some reason:

Using Pulseaudio output
xcb_connection_has_error() returned true
Starting multicast receiver
xcb_connection_has_error() returned true
Switched format to sample rate 48000, sample size 32 and 2 channels.
Channel 0 mapped to Front Right
Channel 1 mapped to Front Center
Channel 2 mapped to Rear Center
Channel 3 mapped to Side Left
Channel 4 mapped to Side Right
Channel 5 mapped to Side Right
xcb_connection_has_error() returned true
Switched format to sample rate 48000, sample size 32 and 6 channels.
Channel 0 mapped to Rear Center
Channel 1 mapped to Side Left
Channel 2 mapped to Side Right
Channel 3 mapped to Side Right
Channel 4 mapped to Side Right
Channel 5 mapped to Side Right

if I switch to Alsa:
Using ALSA output
xcb_connection_has_error() returned true
xcb_connection_has_error() returned true
Starting multicast receiver
xcb_connection_has_error() returned true
Your device doesn't support channel maps. Channels may be in the wrong order.
ALSA lib pcm.c:8306:(snd_pcm_recover) underrun occurred
xcb_connection_has_error() returned true

My setup: Win10 PC as the source/server, ubuntu 18.04 HTPC as client connected to receiver with HDMI.
I'm not sure where the problem is, with the receiver? With Pulseaudio? Something with the sound device on the client as the ALSA output says?
What to do?
Let me know if you need more info!

This is weird.
It seems like the channels are shifted for some reasons. Is that the whole pulseaudio output?
I see the channel list is printed twice but the second time it miss the "Switched format to.." line. Can you post the whole output?
In pulseaudio you have 5.1 output, right? What soundcard are you using?

So, full output of my current attempt:
I start with stereo, the modify the speaker setup on windows:
asd@asd:~/scream-master/Receivers/unix/build$ ./scream -i enp3s0 -v
Using Pulseaudio output
Starting multicast receiver
Switched format to sample rate 48000, sample size 32 and 2 channels.
Channel 0 mapped to Front Right
Channel 1 mapped to Front Center
Channel 2 mapped to Rear Center
Channel 3 mapped to Side Left
Channel 4 mapped to Side Right
Channel 5 mapped to Side Right
Switched format to sample rate 48000, sample size 32 and 6 channels.
Channel 0 mapped to Rear Center
Channel 1 mapped to Side Left
Channel 2 mapped to Side Right
Channel 3 mapped to Side Right
Channel 4 mapped to Side Right
Channel 5 mapped to Side Right
Switched format to sample rate 48000, sample size 32 and 6 channels.

The two 6 channel setup is when I switch between the two 5.1 option in windows:

My soundcard :
:~/scream-master/Receivers/unix/build$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: PCH [HDA Intel PCH], device 0: ALC255 Analog [ALC255 Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 3: HDMI 0 [HDMI 0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

I think I've found the problem, there was a regression when we merged all the receivers together.
I'm not at my dev pc right now to commit the fix but in network.c, line 36, can you replace
receiver_data->format.channel_map = (rctx_network.buf[3] << 8) | rctx_network.buf[4];
with
receiver_data->format.channel_map = (rctx_network.buf[4] << 8) | rctx_network.buf[3];
and see if it works?
The 3 and 4 in the square brackets are reversed.

I've upstreamed the fix, thank you for reporting this regression.

Yes, i just had a chance to try it now, and its work fine now. Thanks!


Support USB 3.0 UAS Drives

Please consider adding uas to the default modules list to support booting from USB 3.0 storage devices that use UAS instead of UMS.

Sounds reasonable. I pushed the change to wip branch. Please test it and let me know if it works for you as expected.

Thanks for getting to this so quickly! I was able to do a quick test this morning - I can now boot when I have booster build a universal image, but not when I remove universal from the config.
I added busybox to the image and lowered the timeout in order to take a look at what's happening. For some reason usb_storage and uas are not automatically loaded (even though they are present). I can insmod usb_storage and uas to get my drive to appear in /dev and I can see it load in dmesg. I'm not sure if I'll have time to take a closer look until next week, but I'll try to dig into this a bit more whenever I have a chance.

Thanks for the feedback.
Kernel modules (including uas) are loaded when an OS enumerates devices and find matching modalias. I wonder if the required modalias was not added to the non-universal booster image.
Let's debug the non-universal image:

To confirm that this module was properly added to the image please run booster ls YOURIMAGE.img and post it here.
Also please post output of booster build --verbose booster.img it will tell what device aliases you have at your machine.
And the last item please post output of the filtered modalias booster cat booster-linux.img usr/lib/modules/booster.alias

It appears that the device needs two modalias entries to fully enumerate.
When plugging in the device, udevadm monitor -p shows two uevents with different modalias properties:

KERNEL[2240.300811] add      /devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb2/2-3/2-3:1.0 (usb)
ACTION=add
DEVPATH=/devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb2/2-3/2-3:1.0
SUBSYSTEM=usb
DEVTYPE=usb_interface
PRODUCT=174c/235c/100
TYPE=0/0/0
INTERFACE=8/6/80
MODALIAS=usb:v174Cp235Cd0100dc00dsc00dp00ic08isc06ip50in00
SEQNUM=3656

KERNEL[2240.326083] bind     /devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb2/2-3/2-3:1.0 (usb)
ACTION=bind
DEVPATH=/devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb2/2-3/2-3:1.0
SUBSYSTEM=usb
DEVTYPE=usb_interface
DRIVER=uas
PRODUCT=174c/235c/100
TYPE=0/0/0
INTERFACE=8/6/98
MODALIAS=usb:v174Cp235Cd0100dc00dsc00dp00ic08isc06ip62in00
SEQNUM=3660

The second modalias is the only one present in /sys, so that's the only entry present in booster.alias.
To test this, I extracted booster-linux.img, added the first modalias to booster.alias and recreated the booster-linux.img file. The resulting image was able to successfully boot.

Thanks for the response. I just double-checked the aliases and they indeed match uas:
➜  booster modprobe -qaR 'usb:v174Cp235Cd0100dc00dsc00dp00ic08isc06ip50in00'
uas
usb_storage
➜  booster modprobe -qaR 'usb:v174Cp235Cd0100dc00dsc00dp00ic08isc06ip62in00'
uas

Why the first alias is not present under /sys is a good question and worth clarifying. But even in this case the second alias should match uas module and load it (+usb_storage which is a dependency of uas). Does it mean your boot system never really receives a udev event for the second modalias?
Could you please add booster.log to the kernel parameter and boot booster with your fixed image.  What usb/uas udev event do you see there?

Does it mean your boot system never really receives a udev event for the second modalias?

It seems as though second modalias event only happens if the first event successfully matches the driver.
Here's a sample of the log when booting the image that doesn't work. It fails to match the modalias and the system continues loading other drivers, eventually timing out while waiting for the rootfs since the second modalias event never occurs.

[    3.154198] booster: udev event {Header:add@/devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb2/2-3/2-3:1.0 Action:add Devpath:/devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb2/2-3/2-3:1.0 Subsystem:usb Seqnum:1642 Vars:map[ACTION:add DEVPATH:/devices/pci0000:00/0000:00:01.3/     0000:02:00.0/usb2/2-3/2-3:1.0 DEVTYPE:usb_interface INTERFACE:8/6/80 MODALIAS:usb:v174Cp235Cd0100dc00dsc00dp00ic08isc06ip50in00 PRODUCT:174c/235c/100 SEQNUM:1642 SUBSYSTEM:usb TYPE:0/0/0]}
[    3.154230] booster: udev event {Header:bind@/devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb2/2-3 Action:bind Devpath:/devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb2/2-3 Subsystem:usb Seqnum:1643 Vars:map[ACTION:bind BUSNUM:002 DEVNAME:bus/usb/002/002 DEVNUM:002 DEVPATH:     /devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb2/2-3 DEVTYPE:usb_device DRIVER:usb MAJOR:189 MINOR:129 PRODUCT:174c/235c/100 SEQNUM:1643 SUBSYSTEM:usb TYPE:0/0/0]}
[    3.154335] booster: no match found for alias usb:v174Cp235Cd0100dc00dsc00dp00ic08isc06ip50in00
[    3.353612] usb 1-4.2: new low-speed USB device number 3 using xhci_hcd
[    3.608775] usb 1-4.2: New USB device found, idVendor=046d, idProduct=c31c, bcdDevice=64.00
[    3.608781] usb 1-4.2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[    3.608783] usb 1-4.2: Product: USB Keyboard
[    3.608785] usb 1-4.2: Manufacturer: Logitech
[    3.609096] booster: udev event {Header:add@/devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb1/1-4/1-4.2 Action:add Devpath:/devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb1/1-4/1-4.2 Subsystem:usb Seqnum:1644 Vars:map[ACTION:add BUSNUM:001 DEVNAME:bus/usb/001/003 DEVNUM:003      DEVPATH:/devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb1/1-4/1-4.2 DEVTYPE:usb_device MAJOR:189 MINOR:2 PRODUCT:46d/c31c/6400 SEQNUM:1644 SUBSYSTEM:usb TYPE:0/0/0]}
[    3.623990] booster: udev event {Header:change@/devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb1/1-4/1-4.2 Action:change Devpath:/devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb1/1-4/1-4.2 Subsystem:usb Seqnum:1645 Vars:map[ACTION:change BUSNUM:001 DEVNAME:bus/usb/001/003 D     EVNUM:003 DEVPATH:/devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb1/1-4/1-4.2 DEVTYPE:usb_device DRIVER:usb MAJOR:189 MINOR:2 PRODUCT:46d/c31c/6400 SEQNUM:1645 SUBSYSTEM:usb TYPE:0/0/0]}
[    3.647602] booster: udev event {Header:add@/devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb1/1-4/1-4.2/1-4.2:1.0 Action:add Devpath:/devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb1/1-4/1-4.2/1-4.2:1.0 Subsystem:usb Seqnum:1646 Vars:map[ACTION:add DEVPATH:/devices/pci0000:     00/0000:00:01.3/0000:02:00.0/usb1/1-4/1-4.2/1-4.2:1.0 DEVTYPE:usb_interface INTERFACE:3/1/1 MODALIAS:usb:v046DpC31Cd6400dc00dsc00dp00ic03isc01ip01in00 PRODUCT:46d/c31c/6400 SEQNUM:1646 SUBSYSTEM:usb TYPE:0/0/0]}
[    3.647670] booster: modalias usb:v046DpC31Cd6400dc00dsc00dp00ic03isc01ip01in00 matched module usbhid
[    3.647715] booster: loading module usbhid
...
[    7.514064] booster: Timeout waiting for root filesystem

Here's a sample of the log from the modified image. It shows that the first modalias matches, the second modalias matches, then the block device appears and booster executes switch_root with the systemd init.

[    3.150552] booster: udev event {Header:add@/devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb2/2-3 Action:add Devpath:/devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb2/2-3 Subsystem:usb Seqnum:1640 Vars:map[ACTION:add BUSNUM:002 DEVNAME:bus/usb/002/002 DEVNUM:002 DEVPATH:/devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb2/2-3 DEVTYPE:usb_device MAJOR:189 MINOR:129 PRODUCT:174c/235c/100 SEQNUM:1640 SUBSYSTEM:usb TYPE:0/0/0]}
[    3.159424] booster: udev event {Header:add@/devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb2/2-3/2-3:1.0 Action:add Devpath:/devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb2/2-3/2-3:1.0 Subsystem:usb Seqnum:1641 Vars:map[ACTION:add DEVPATH:/devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb2/2-3/2-3:1.0 DEVTYPE:usb_interface INTERFACE:8/6/80 MODALIAS:usb:v174Cp235Cd0100dc00dsc00dp00ic08isc06ip50in00 PRODUCT:174c/235c/100 SEQNUM:1641 SUBSYSTEM:usb TYPE:0/0/0]}
[    3.159466] booster: udev event {Header:bind@/devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb2/2-3 Action:bind Devpath:/devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb2/2-3 Subsystem:usb Seqnum:1642 Vars:map[ACTION:bind BUSNUM:002 DEVNAME:bus/usb/002/002 DEVNUM:002 DEVPATH:/devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb2/2-3 DEVTYPE:usb_device DRIVER:usb MAJOR:189 MINOR:129 PRODUCT:174c/235c/100 SEQNUM:1642 SUBSYSTEM:usb TYPE:0/0/0]}
[    3.159551] booster: modalias usb:v174Cp235Cd0100dc00dsc00dp00ic08isc06ip50in00 matched module uas
[    3.159590] booster: loading module usb_storage
[    3.163836] usbcore: registered new interface driver usb-storage
[    3.163884] booster: udev event {Header:add@/bus/usb/drivers/usb-storage Action:add Devpath:/bus/usb/drivers/usb-storage Subsystem:drivers Seqnum:1643 Vars:map[ACTION:add DEVPATH:/bus/usb/drivers/usb-storage SEQNUM:1643 SUBSYSTEM:drivers]}
[    3.163901] booster: udev event {Header:add@/module/usb_storage Action:add Devpath:/module/usb_storage Subsystem:module Seqnum:1644 Vars:map[ACTION:add DEVPATH:/module/usb_storage SEQNUM:1644 SUBSYSTEM:module]}
[    3.163929] booster: loading module uas
[    3.184171] booster: udev event {Header:add@/devices/virtual/workqueue/scsi_tmf_9 Action:add Devpath:/devices/virtual/workqueue/scsi_tmf_9 Subsystem:workqueue Seqnum:1645 Vars:map[ACTION:add DEVPATH:/devices/virtual/workqueue/scsi_tmf_9 SEQNUM:1645 SUBSYSTEM:workqueue]}
[    3.187957] scsi host9: uas
[    3.188026] booster: udev event {Header:add@/devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb2/2-3/2-3:1.0/host9 Action:add Devpath:/devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb2/2-3/2-3:1.0/host9 Subsystem:scsi Seqnum:1646 Vars:map[ACTION:add DEVPATH:/devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb2/2-3/2-3:1.0/host9 DEVTYPE:scsi_host SEQNUM:1646 SUBSYSTEM:scsi]}
[    3.188032] usbcore: registered new interface driver uas
[    3.188039] booster: udev event {Header:add@/devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb2/2-3/2-3:1.0/host9/scsi_host/host9 Action:add Devpath:/devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb2/2-3/2-3:1.0/host9/scsi_host/host9 Subsystem:scsi_host Seqnum:1647 Vars:map[ACTION:add DEVPATH:/devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb2/2-3/2-3:1.0/host9/scsi_host/host9 SEQNUM:1647 SUBSYSTEM:scsi_host]}
[    3.188059] booster: udev event {Header:bind@/devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb2/2-3/2-3:1.0 Action:bind Devpath:/devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb2/2-3/2-3:1.0 Subsystem:usb Seqnum:1648 Vars:map[ACTION:bind DEVPATH:/devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb2/2-3/2-3:1.0 DEVTYPE:usb_interface DRIVER:uas INTERFACE:8/6/98 MODALIAS:usb:v174Cp235Cd0100dc00dsc00dp00ic08isc06ip62in00 PRODUCT:174c/235c/100 SEQNUM:1648 SUBSYSTEM:usb TYPE:0/0/0]}
[    3.188081] booster: udev event {Header:add@/bus/usb/drivers/uas Action:add Devpath:/bus/usb/drivers/uas Subsystem:drivers Seqnum:1649 Vars:map[ACTION:add DEVPATH:/bus/usb/drivers/uas SEQNUM:1649 SUBSYSTEM:drivers]}
[    3.188092] booster: udev event {Header:add@/module/uas Action:add Devpath:/module/uas Subsystem:module Seqnum:1650 Vars:map[ACTION:add DEVPATH:/module/uas SEQNUM:1650 SUBSYSTEM:module]}
[    3.188098] booster: modalias usb:v174Cp235Cd0100dc00dsc00dp00ic08isc06ip62in00 matched module uas
[    3.188266] scsi 9:0:0:0: Direct-Access     SanDisk  SDSSDP128G       0    PQ: 0 ANSI: 6
[    3.188684] booster: udev event {Header:add@/devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb2/2-3/2-3:1.0/host9/target9:0:0 Action:add Devpath:/devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb2/2-3/2-3:1.0/host9/target9:0:0 Subsystem:scsi Seqnum:1651 Vars:map[ACTION:add DEVPATH:/devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb2/2-3/2-3:1.0/host9/target9:0:0 DEVTYPE:scsi_target SEQNUM:1651 SUBSYSTEM:scsi]}
[    3.188705] booster: udev event {Header:add@/devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb2/2-3/2-3:1.0/host9/target9:0:0/9:0:0:0 Action:add Devpath:/devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb2/2-3/2-3:1.0/host9/target9:0:0/9:0:0:0 Subsystem:scsi Seqnum:1652 Vars:map[ACTION:add DEVPATH:/devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb2/2-3/2-3:1.0/host9/target9:0:0/9:0:0:0 DEVTYPE:scsi_device MODALIAS:scsi:t-0x00 SEQNUM:1652 SUBSYSTEM:scsi]}
[    3.188720] booster: udev event {Header:add@/devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb2/2-3/2-3:1.0/host9/target9:0:0/9:0:0:0/scsi_device/9:0:0:0 Action:add Devpath:/devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb2/2-3/2-3:1.0/host9/target9:0:0/9:0:0:0/scsi_device/9:0:0:0 Subsystem:scsi_device Seqnum:1653 Vars:map[ACTION:add DEVPATH:/devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb2/2-3/2-3:1.0/host9/target9:0:0/9:0:0:0/scsi_device/9:0:0:0 SEQNUM:1653 SUBSYSTEM:scsi_device]}
[    3.188743] booster: udev event {Header:add@/devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb2/2-3/2-3:1.0/host9/target9:0:0/9:0:0:0/bsg/9:0:0:0 Action:add Devpath:/devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb2/2-3/2-3:1.0/host9/target9:0:0/9:0:0:0/bsg/9:0:0:0 Subsystem:bsg Seqnum:1654 Vars:map[ACTION:add DEVNAME:bsg/9:0:0:0 DEVPATH:/devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb2/2-3/2-3:1.0/host9/target9:0:0/9:0:0:0/bsg/9:0:0:0 MAJOR:242 MINOR:4 SEQNUM:1654 SUBSYSTEM:bsg]}
[    3.188751] booster: udev event {Header:add@/devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb2/2-3/2-3:1.0/host9/target9:0:0/9:0:0:0/scsi_disk/9:0:0:0 Action:add Devpath:/devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb2/2-3/2-3:1.0/host9/target9:0:0/9:0:0:0/scsi_disk/9:0:0:0 Subsystem:scsi_disk Seqnum:1655 Vars:map[ACTION:add DEVPATH:/devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb2/2-3/2-3:1.0/host9/target9:0:0/9:0:0:0/scsi_disk/9:0:0:0 SEQNUM:1655 SUBSYSTEM:scsi_disk]}
[    3.189221] sd 9:0:0:0: [sde] 246162672 512-byte logical blocks: (126 GB/117 GiB)
...
[    3.276212] booster: mounting /dev/sde2->/booster.root, fs=ext4, flags=0x0, options=
[    3.295044] sd 9:0:0:0: [sde] Attached SCSI disk
[    3.295114] booster: udev event {Header:bind@/devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb2/2-3/2-3:1.0/host9/target9:0:0/9:0:0:0 Action:bind Devpath:/devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb2/2-3/2-3:1.0/host9/target9:0:0/9:0:0:0 Subsystem:scsi Seqnum:1665 Vars:map[ACTION:bind DEVPATH:/devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb2/2-3/2-3:1.0/host9/target9:0:0/9:0:0:0 DEVTYPE:scsi_device DRIVER:sd MODALIAS:scsi:t-0x00 SEQNUM:1665 SUBSYSTEM:scsi]}
[    3.297253] EXT4-fs (sde2): mounted filesystem with ordered data mode. Opts: (null). Quota mode: none.
[    3.314902] booster: Switching to the new userspace now. Да пабачэння!
[    3.355880] usb 1-4.2: new low-speed USB device number 3 using xhci_hcd
[    3.498093] random: crng init done
[    3.498103] systemd[1]: Successfully credited entropy passed from boot loader.
[    3.499292] systemd[1]: systemd 249.7-2-arch running in system mode (+PAM +AUDIT -SELINUX -APPARMOR -IMA +SMACK +SECCOMP +GCRYPT +GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN +IPTC +KMOD +LIBCRYPTSETUP +LIBFDISK +PCRE2 -PWQUALITY +P11KIT -QRENCODE +BZIP2 +LZ4 +XZ +ZLIB +ZSTD +XKBCOMMON +UTMP -SYSVINIT default-hierarchy=unified)

Interesting...
So in the second case (booster boots successfully) the first modalias (usb:v174Cp235Cd0100dc00dsc00dp00ic08isc06ip50in00) matches uas and usb_storage modules. Booster loads the drivers. This triggers uas device enumeration and it in turn reports another modailias for the same device but different USB interface.
So the first alias is the important one and booster should add it to the image. But for some reason it does not see it at the generation time. Which is wrong. Booster should have a way to enumerate all the UAS devices + its modaliases.
To double-check do you see any of the 2 above modailiases when you run find /sys/devices -name modalias -exec cat {} \;?

Also at this point the correct workaround to load the uas driver is to add following config option modules_force_load: uas

I did a bit more digging...
My understanding is that USB devices have one device descriptor, but can have multiple configurations (these seem to be referred to as alternate settings in the driver). Configurations can in turn have multiple interfaces.
Breaking down the device ID shows that the device first specifies its interface as USB_PR_BULK (ip = 0x50 in the modalias). Both usb_storage and uas register for devices with interface class USB_CLASS_MASS_STORAGE, interface subclass USB_SC_SCSI and interface USB_PR_BULK so each driver's probe function will be called.
During storage_probe() in the usb_storage driver, it will check if the UAS driver is enabled, and if so it will iterate through the alternate settings checking for a profile that's UAS capable ((interface class == USB_CLASS_MASS_STORAGE) && (interface subclasss == USB_SC_SCSI) && (interface == USB_PR_UAS)). If it finds a UAS capable alternate setting it will ignore the device by returning -ENXIO (no such device).
In the meantime, the UAS driver will also match the first modalias and in uas_probe() it will  check if one of the interfaces in an alternate configuration supports UAS. If it finds a UAS-capable interface it calls uas_switch_interface(). This in turn calls usb_set_interface() to switch to the USB_PR_UAS alternate configuration, which I believe disables the USB_PR_BULK interface since I think only one interface can be active for an endpoint (I'm not very familiar with USB terminology so this may not be totally accurate). I'm not sure, but  I'm guessing that disabling and enabling the endpoint when switching interfaces may trigger the second event with the new modalias.
I suspect the device is presenting USB_PR_BULK first for backwards compatibility - systems without any idea of what a UAS interface is would simply ignore the device if it presented USB_PR_UAS first.
The second modalias is the only one present on my system. The first modalias is absent because there is only one active interface for the device.

$ find /sys/devices -name modalias | xargs grep -e v174Cp235Cd0100dc00dsc00dp00ic08isc06ip50in00 -e v174Cp235Cd0100dc00dsc00dp00ic08isc06ip62in00
/sys/devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb2/2-3/2-3:1.0/modalias:usb:v174Cp235Cd0100dc00dsc00dp00ic08isc06ip62in00

Also at this point the correct workaround to load the uas driver is to add following config option modules_force_load: uas

Sounds good! That's what I've been doing so I'm glad to know that's the right approach for now.
I haven't looked yet, but I'm guessing other initramfs generators include all modalias entries for each driver present in the initramfs.

cc @oneukum who is an active uas kernel driver developer and might have some ideas about it.

Breaking down the device ID shows that the device first specifies its interface as USB_PR_BULK (ip = 0x50 in the modalias).

I suspect the device is presenting USB_PR_BULK first for backwards compatibility - systems without any idea of what a UAS interface is would simply ignore the device if it presented USB_PR_UAS first.

The device relies on the USB_PR_BULK modalias, provides USB_PR_BULK interface but it does not report it anywhere at sysfs. For me it sounds like a bug. The device should either report USB_PR_BULK on sysfs or USB_PR_UAS interface should send a udev event during enumeration without relying on existence of usb_storage module.
As a workaround at booster side we can add a module quirk - if uas module is loaded at a usersystem then all its modaliases should be included to the image.

As there are any comments on this issue from the upstream developer then I am going to implement the "quirk" solution. Booster will add all uas modaliases to the image. This should help to detect the module without any additional user configuration.
@MaximumWaffle Please check wip branch and let me know if it works for you without the config workaround.

Looks great, thanks!

$ booster cat /boot/booster-linux.img usr/lib/modules/booster.alias | sort
acpi*:MSFT0101:* tpm_crb
acpi*:MSFT0101:* tpm_tis
cpu:type:x86,ven*fam*mod*:feature:*0081* crc32_pclmul
cpu:type:x86,ven*fam*mod*:feature:*0081* crct10dif_pclmul
cpu:type:x86,ven*fam*mod*:feature:*0081* ghash_clmulni_intel
cpu:type:x86,ven*fam*mod*:feature:*0094* crc32c_intel
cpu:type:x86,ven*fam*mod*:feature:*0099* aesni_intel
pci:v*d*sv*sd*bc0Csc03i30* xhci_pci
usb:v*p*d*dc*dsc*dp*ic03isc*ip*in* usbhid
usb:v*p*d*dc*dsc*dp*ic08isc06ip50in* uas
usb:v*p*d*dc*dsc*dp*ic08isc06ip62in* uas
usb:v054Cp087Dd*dc*dsc*dp*ic*isc*ip*in* uas
usb:v059Fp105Fd*dc*dsc*dp*ic*isc*ip*in* uas
usb:v059Fp1061d*dc*dsc*dp*ic*isc*ip*in* uas
usb:v0984p0301d0128dc*dsc*dp*ic*isc*ip*in* uas
usb:v0BC2p331Ad*dc*dsc*dp*ic*isc*ip*in* uas
usb:v13FDp3940d*dc*dsc*dp*ic*isc*ip*in* uas
usb:v152Dp0539d*dc*dsc*dp*ic*isc*ip*in* uas
usb:v152Dp0567d*dc*dsc*dp*ic*isc*ip*in* uas
usb:v152Dp0578d*dc*dsc*dp*ic*isc*ip*in* uas
usb:v154BpF00Bd*dc*dsc*dp*ic*isc*ip*in* uas
usb:v154BpF00Dd*dc*dsc*dp*ic*isc*ip*in* uas
usb:v2109p0711d*dc*dsc*dp*ic*isc*ip*in* uas
usb:v2537p1068d*dc*dsc*dp*ic*isc*ip*in* uas
usb:v357Dp7788d*dc*dsc*dp*ic*isc*ip*in* uas
usb:v4971p1012d*dc*dsc*dp*ic*isc*ip*in* uas
usb:v4971p8017d*dc*dsc*dp*ic*isc*ip*in* uas
usb:v4971p8024d*dc*dsc*dp*ic*isc*ip*in* uas

[    3.093083] usb 2-3: new SuperSpeed USB device number 2 using xhci_hcd
[    3.121790] usb 2-3: New USB device found, idVendor=174c, idProduct=235c, bcdDevice= 1.00
[    3.121796] usb 2-3: New USB device strings: Mfr=2, Product=3, SerialNumber=1
[    3.121798] usb 2-3: Product: Ugreen Storage Device
[    3.121799] usb 2-3: Manufacturer: Ugreen
[    3.121800] usb 2-3: SerialNumber: 20D11E80C210
[    3.122117] booster: udev event {Header:add@/devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb2/2-3 Action:add Devpath:/devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb2/2-3 Subsystem:usb Seqnum:1640 Vars:map[ACTION:add BUSNUM:002 DEVNAME:bus/usb/002/002 DEVNUM:002 DEVPATH:/devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb2/2-3 DEVTYPE:usb_device MAJOR:189 MINOR:129 PRODUCT:174c/235c/100 SEQNUM:1640 SUBSYSTEM:usb TYPE:0/0/0]}
[    3.133489] booster: udev event {Header:add@/devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb2/2-3/2-3:1.0 Action:add Devpath:/devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb2/2-3/2-3:1.0 Subsystem:usb Seqnum:1641 Vars:map[ACTION:add DEVPATH:/devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb2/2-3/2-3:1.0 DEVTYPE:usb_interface INTERFACE:8/6/80 MODALIAS:usb:v174Cp235Cd0100dc00dsc00dp00ic08isc06ip50in00 PRODUCT:174c/235c/100 SEQNUM:1641 SUBSYSTEM:usb TYPE:0/0/0]}
[    3.133516] booster: udev event {Header:bind@/devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb2/2-3 Action:bind Devpath:/devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb2/2-3 Subsystem:usb Seqnum:1642 Vars:map[ACTION:bind BUSNUM:002 DEVNAME:bus/usb/002/002 DEVNUM:002 DEVPATH:/devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb2/2-3 DEVTYPE:usb_device DRIVER:usb MAJOR:189 MINOR:129 PRODUCT:174c/235c/100 SEQNUM:1642 SUBSYSTEM:usb TYPE:0/0/0]}
[    3.133607] booster: modalias usb:v174Cp235Cd0100dc00dsc00dp00ic08isc06ip50in00 matched module uas
[    3.133654] booster: loading module usb_storage
[    3.137951] usbcore: registered new interface driver usb-storage
[    3.137982] booster: udev event {Header:add@/bus/usb/drivers/usb-storage Action:add Devpath:/bus/usb/drivers/usb-storage Subsystem:drivers Seqnum:1643 Vars:map[ACTION:add DEVPATH:/bus/usb/drivers/usb-storage SEQNUM:1643 SUBSYSTEM:drivers]}
[    3.138000] booster: udev event {Header:add@/module/usb_storage Action:add Devpath:/module/usb_storage Subsystem:module Seqnum:1644 Vars:map[ACTION:add DEVPATH:/module/usb_storage SEQNUM:1644 SUBSYSTEM:module]}
[    3.138056] booster: loading module uas
[    3.161855] booster: udev event {Header:add@/devices/virtual/workqueue/scsi_tmf_9 Action:add Devpath:/devices/virtual/workqueue/scsi_tmf_9 Subsystem:workqueue Seqnum:1645 Vars:map[ACTION:add DEVPATH:/devices/virtual/workqueue/scsi_tmf_9 SEQNUM:1645 SUBSYSTEM:workqueue]}
[    3.165919] scsi host9: uas
[    3.165999] usbcore: registered new interface driver uas
[    3.166161] booster: udev event {Header:add@/devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb2/2-3/2-3:1.0/host9 Action:add Devpath:/devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb2/2-3/2-3:1.0/host9 Subsystem:scsi Seqnum:1646 Vars:map[ACTION:add DEVPATH:/devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb2/2-3/2-3:1.0/host9 DEVTYPE:scsi_host SEQNUM:1646 SUBSYSTEM:scsi]}
[    3.166175] booster: udev event {Header:add@/devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb2/2-3/2-3:1.0/host9/scsi_host/host9 Action:add Devpath:/devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb2/2-3/2-3:1.0/host9/scsi_host/host9 Subsystem:scsi_host Seqnum:1647 Vars:map[ACTION:add DEVPATH:/devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb2/2-3/2-3:1.0/host9/scsi_host/host9 SEQNUM:1647 SUBSYSTEM:scsi_host]}
[    3.166202] booster: udev event {Header:bind@/devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb2/2-3/2-3:1.0 Action:bind Devpath:/devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb2/2-3/2-3:1.0 Subsystem:usb Seqnum:1648 Vars:map[ACTION:bind DEVPATH:/devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb2/2-3/2-3:1.0 DEVTYPE:usb_interface DRIVER:uas INTERFACE:8/6/98 MODALIAS:usb:v174Cp235Cd0100dc00dsc00dp00ic08isc06ip62in00 PRODUCT:174c/235c/100 SEQNUM:1648 SUBSYSTEM:usb TYPE:0/0/0]}
[    3.166218] booster: udev event {Header:add@/bus/usb/drivers/uas Action:add Devpath:/bus/usb/drivers/uas Subsystem:drivers Seqnum:1649 Vars:map[ACTION:add DEVPATH:/bus/usb/drivers/uas SEQNUM:1649 SUBSYSTEM:drivers]}
[    3.166227] booster: udev event {Header:add@/module/uas Action:add Devpath:/module/uas Subsystem:module Seqnum:1650 Vars:map[ACTION:add DEVPATH:/module/uas SEQNUM:1650 SUBSYSTEM:module]}
[    3.166299] booster: modalias usb:v174Cp235Cd0100dc00dsc00dp00ic08isc06ip62in00 matched module uas
[    3.166484] scsi 9:0:0:0: Direct-Access     SanDisk  SDSSDP128G       0    PQ: 0 ANSI: 6


TGIS Onboarding Dev Tracker

Feature tracking:

Integration of TGIS into ODH
[P0] KServe and TGIS runtime exploration

https://github.com/opendatahub-io/kserve/issues/11

[P2] TGIS: configure job publish pypi (IBM Research does it manually?)

https://github.com/IBM/text-generation-inference/issues/1

[P0] TGIS: review/validate existing dockerfile

https://github.com/IBM/text-generation-inference/issues/2

[P0] TGIS: Create TGIS community images/CI (ODH)

https://github.com/IBM/text-generation-inference/issues/3

Closing this issue since we have an overall watsonx tracker that includes all components


Render the Tic Tac Toe Board

We need to render the tic tac toe board.

@leojavier could you please take care of this?


Magpy inline plots in jupyter

Hi everyone!
I've tried to plot loaded streams inside jupyter notebook:
%matplotlib inline
from magpy.stream import read
import magpy.mpplot as mp
stream = read(r'~/data/*.min')
mp.plot(stream)

The dedicated conda env with python 3.7 and magpy 1.0.3 used to run this code.
I've got the error:
[/opt/anaconda3/envs/magpy1/lib/python3.7/site-packages/magpy/stream.py:1590](): VisibleDeprecationWarning: Creating an ndarray from ragged nested sequences (which is a list-or-tuple of lists-or-tuples-or ndarrays with different lengths or shapes) is deprecated. If you meant to do this, you must specify 'dtype=object' when creating the ndarray.
  return DataStream(self,self.header,np.asarray(array))
[/opt/anaconda3/envs/magpy1/lib/python3.7/site-packages/magpy/mpplot.py:2480](): UserWarning: Matplotlib is currently using agg, which is a non-GUI backend, so cannot show the figure.
  plt.show()

Could you suggest me how to use inline plots with magpy?

You might try to add the following line in order to use a different backend:
%matplotlib inline
from magpy.stream import read
import magpy.mpplot as mp
matplotlib.use('TkAgg')
stream = read(r'~/data/*.min')
mp.plot(stream)
There are other supported backends as well like WXAgg, Qt5Agg...

Closing this now as the solution posted in February seems to be satisfying


Repository open to Hacktoberfest!

Just so everyone knows, this repository is open to all PRs for Hacktoberfest!

What could i do for this, and what do you want me to do?

🤷♂ whatever you feel would be helpful/useful!

So i could make a python game/ script?

And where would you want the files that make?

I want to contribute , how can I help ?!

@AshwatKumar if you could write simple contributing guidelines that would be amazing!

Let me know of any open issue that I can help fixing?

@rbidanta check #20

@rbidanta @AshwatKumar see #34

Very little time left!  Make sure to get your last PRs in :]

We’re now done!  Thank you all new contributors!! :]


Change commit_with_shortlog to not use git alias

Allow ./scripts/commit_with_shortlog to be Concourse pipeline friendly
We updated our Routing CI pipeline to auto-bump, however the docker image we use does not have the standard aliases (i.e. from sprout wrapped machines).
Its not a major issue and can be worked around it by creating the git alias in concourse build script  but I thought others teams may encounter if they use ./commit_with_shortlog
Mark - CF Routing Team

ci is a common alias for duet-commit on the workstations. That's the tool we use for pairing to include multiple contributors in the commit. The expectation is that commit_with_shortlog is done by programmers as part of ceremony involved with bumping submodules in a release.
I think it would be surprising if this script stopped using ci for commits.

Hey Matt,
Yeah ci is a definite common git alias (I have it) and the standard CF pairing workstations have it,  however the only minor problem I encountered this week was that I setup the CF Routing Team's Concourse pipeline to "auto-bump" if all the unit tests, acceptance tests pass...  and I still wanted to use the same commit_with_shortlog script when bumping.
i.e. our routing-ci bot will do the auto-bump...
https://github.com/cloudfoundry/cf-release/commit/83b8ae5e20d2929dd1743092c62d5cabdc5300cb
However when calling the script in a Concourse job there is no git alias for ci.
Since the Concourse jobs use docker containers, they are not aware of the git aliases we typically use...
so yeah I just added the git alias in the build script... but it felt wrong :)
I also expect if other CF teams setup their Concourse pipelines to auto-bump cf-release, then they would encounter the same issue.
So yeah I totally agree..  ci is very common.. I never use commit,  however I wanted to use commit_with_shortlog in our Concourse build, for consistency in commit messages, etc.
Maybe I am the first person to use this script in a Concourse pipeline ?  :)
Cheers

The way I look at it, either the pipeline does something to enable use of the script or all of the developers that are currently using the script will need to write new scripts to do the right thing. Given commit_with_shortlog is a one line wrapper around staged_shortlog, I think the path of leas resistance would be for you to use that instead to generate your commit message.

I agree with @sykesm, this change breaks expectations that all of our developers have about the behavior of commit_with_shortlog. Is there a reason that the line in your build script can't literally be
$script_dir/staged_shortlog | git commit -F -?
Best,
@zaksoup & @medvedzver

@zaksoup Yeah I can work around,   its not a problem.
The only thing I wanted to prevent was other CF teams which plan to auto-bump using commit_with_shortlog in a Concourse pipeline will encounter this and the discussion may come up again
Since (as CF Developers) we have specific prerequisite environment setup to do CF dev  (i.e. specific git aliases),  then I guess technically it should be the onus of the Concourse job to adhere to those prereqs.
So if I treat my Concourse job worker like a CF Developer and setup the prereqs.  In my case, I worked around by adding the git alias so I could use commit_with_shortlog.   This way (if for some reason) commit_with_shortlog changes in cf-release, then I am not out of sync.   I'll just have to make sure my Concourse job has the CF dev prerequisite setup.
Anyway, PR close away :)
Cheers


[BUG] Managed Disk SetTag broken in latest stable version of Azure.ResourceManager.Compute

Library name and version
Azure.ResourceManager.Compute 1.0.0
Describe the bug
After upgrading from latest beta version to stable version, the ManagedDisk SetTag method is broken.
Expected behavior
SetTags method work as before.
Actual behavior
SetTags returning an exception and don't apply any tag in resource
Reproduction Steps
Run this code using the latest beta version (it will work) and run the same piece of code using the latest stable version it will fail.
var osDisk = resourceGroup.GetManagedDisk($"MyTest");
IDictionary<string, string> iDictionary = new Dictionary<string, string>();
iDictionary.Add("mytag","tag1");
osDisk.Value.SetTags(iDictionary);
Environment
.NET SDK (reflecting any global.json):
Version:   6.0.302
Commit:    c857713418
Runtime Environment:
OS Name:     Windows
OS Version:  10.0.19044
OS Platform: Windows
RID:         win10-x64
Base Path:   C:\Program Files\dotnet\sdk\6.0.302\
global.json file:
Not found
Host:
Version:      6.0.7
Architecture: x64
Commit:       0ec02c8c96
.NET SDKs installed:
2.1.526 [C:\Program Files\dotnet\sdk]
2.1.818 [C:\Program Files\dotnet\sdk]
3.1.421 [C:\Program Files\dotnet\sdk]
5.0.408 [C:\Program Files\dotnet\sdk]
6.0.302 [C:\Program Files\dotnet\sdk]
.NET runtimes installed:
Microsoft.AspNetCore.App 3.1.27 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 5.0.17 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 6.0.7 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.NETCore.App 3.1.27 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 5.0.17 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 6.0.7 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.WindowsDesktop.App 3.1.27 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
Microsoft.WindowsDesktop.App 5.0.17 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
Microsoft.WindowsDesktop.App 6.0.7 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
Download .NET:
https://aka.ms/dotnet-download
Learn about .NET Runtimes and SDKs:
https://aka.ms/dotnet/runtimes-sdk-info

Label prediction was below confidence level 0.6 for Model:ServiceLabels: 'Storage:0.12092589,Tables:0.11084181,Event Hubs:0.06085848'

Thank you for your feedback.  Tagging and routing to the team member best able to assist.

Calling rest api directly without using nuget, works as workaround. Previous version of nuget also works. The issue is just stable version 1.0.0
More details about exception:
EXP: Azure.RequestFailedException: Service request failed.
Status: 202 (Accepted)
Headers:
Cache-Control: no-cache
Pragma: no-cache
Location: REDACTED
x-ms-ratelimit-remaining-subscription-deletes: REDACTED
x-ms-request-id: 5f06febc-2709-4ddc-b5f0-053bb5f69290
x-ms-correlation-request-id: REDACTED
x-ms-routing-request-id: REDACTED
Strict-Transport-Security: REDACTED
X-Content-Type-Options: REDACTED
Date: Sun, 31 Jul 2022 01:34:07 GMT
Expires: -1
Content-Length: 0
at Azure.ResourceManager.Resources.TagsRestOperations.DeleteAtScope(String scope, CancellationToken cancellationToken)
at Azure.ResourceManager.Resources.TagResource.Delete(WaitUntil waitUntil, CancellationToken cancellationToken)
at Azure.ResourceManager.Compute.ManagedDiskResource.SetTags(IDictionary`2 tags, CancellationToken cancellationToken)

I tried on my side the beta.9 version seeing the same issue, do you mind sharing your managed disk creation template so that i can make sure we operating on the same kind resource

vmconfig.StorageProfile = new VirtualMachineStorageProfile
{
OSDisk = new VirtualMachineOSDisk(DiskCreateOptionType.FromImage)
{
Name = $"{machine}-{instance}-OsDisk",
Caching = CachingType.ReadWrite,
OSType = SupportedOperatingSystemType.Windows,
ManagedDisk = new VirtualMachineManagedDisk { StorageAccountType = StorageAccountType.StandardLrs }
},
ImageReference = new ImageReference
{
Publisher = "MicrosoftWindowsServer",
Offer = "WindowsServer",
Sku = "2022-datacenter-g2",
Version = "latest"
}
};
Using API directly works, so this is definitely a bug in nuget.

vmconfig.StorageProfile = new VirtualMachineStorageProfile { OSDisk = new VirtualMachineOSDisk(DiskCreateOptionType.FromImage) { Name = $"{machine}-{instance}-OsDisk", Caching = CachingType.ReadWrite, OSType = SupportedOperatingSystemType.Windows, ManagedDisk = new VirtualMachineManagedDisk { StorageAccountType = StorageAccountType.StandardLrs } }, ImageReference = new ImageReference { Publisher = "MicrosoftWindowsServer", Offer = "WindowsServer", Sku = "2022-datacenter-g2", Version = "latest" } };
Using API directly works, so this is definitely a bug in nuget.

This is a swagger issue that the tag operation under managed disk returns status 202 but SDK is expecting 200 response based on swagger definition, corresponding issue opened here: https://github.com/Azure/azure-rest-api-specs/issues/20267

any update?

Sorry for the delayed response, we are working on it, will update later.

@gui28347 I believe this should have been fixed in one or two versions ago therefore if you have a try on the latest version of Azure.ResourceManager.Compute, it is fixed.
I am using v1.2.0-beta.1 of Azure.ResourceManager.Compute:
var group = client.GetResourceGroupResource(groupId);

ManagedDiskResource disk = group.GetManagedDisk("myDisk");

Console.WriteLine(disk.Id);

ManagedDiskResource newDisk = disk.SetTags(new Dictionary<string, string>
{
    ["my"] = "test"
});

Console.WriteLine(newDisk.Id);
Console.WriteLine(newDisk.Data.Tags.Count); // 1
Console.WriteLine(newDisk.Data.Tags["my"]); // test


Formatter returns an extra space when formatting with some locales and with symbol = ''

By creating the following formatter (I'm using locale = 'es', but this applies to other locales too):
var formatter = CurrencyTextInputFormatter(locale: 'es', symbol: '');

The formatter adds an extra space when formatting. That is, after typing "0", the above formatter returns "0,00 ". For some locales, such as pt_BR, the extra space can be in the front (i.e., " 0,00").
This is because NumberFormat.currency doesn't handle the symbol being empty, instead it expects either a null symbol (in which case it formats with the locale ISO code) or some non-empty string, in which case it would format as "0,00 €", in locale es, or "R$ 0,00", in locale pt_BR.
However, since Flutter's TextField includes preffixText and suffixText as decoration properties, I assume it's a fairly common case to use, for example, preffixText = r'R$', and then show no symbol in the actual text field string. In that case, this extra space is counter-intuitive (and was bugging my parser haha).
I believe this fix is very simple, just requires adding a trim() on the string after formatting. I'm submitting a PR for it, along with some unit tests to validate the changes. Feel free to point any issues :)

@luistrivelatto
Thank you so much!
Awesome for adding test code 👍.
I have just published new release 1.0.1 with your commit.


⚠ Bofrost.at has degraded performance

In 396a319, Bofrost.at (https://www.bofrost.at) experienced degraded performance:

HTTP code: 200
Response time: 1745 ms

Resolved: Bofrost.at performance has improved in f84de75.


Update diplomat.jade

Fix >100% of translation.

I can'n leave it as is :D

Hehe, good thinking. We'll just cover up any non-harmonious math. ;)


easyrsa path

Hey, in the following..
cd /etc/openvpn/easy-rsa/
./easyrsa build-client-full $CLIENT nopass
There is no easyrsa in /etc/openvpn/easy-rsa/
do you link the executable or am I missing something?

Read the https://github.com/Nyr/openvpn-install/blob/master/openvpn-install.sh#L214 part on the script.

Duh, thanks, i figured I was missing something obvious, thanks!


Telegram bot not returning responses

Describe the bug

Does not respond to messages, just prints forever in the console.
To Reproduce

Load custom character file from tweets2character.
Set up Telegram bot token.
Try to chat with bot.

Expected behavior

Bot responds.
Screenshots
Prints these logs forever.

Additional context
Running with LlamaLocal model.

I justed tested degen spartan and it seems to work gud now


NTR WIP Fix phpstan to run in docker container

added vendor autoload file and setting up a sw kernel to run the code analysis

Coverage remained the same at 34.26% when pulling f01fda927b28a01f7eaadd1fb4414414b2a0376a on NTR-fix-phpstan-for-docker into d140fd4c287f3e3e84c621eb2b45d986cd69c24d on master.

Coverage remained the same at 37.992% when pulling 0796874fd9d4ba8236c13f5aa219fae1ed3cb03b on NTR-fix-phpstan-for-docker into 56db3fa15c6b022b53fd0bbb7adf5fcc5fd686ef on master.


empty current state when route is accessed through the browser

I have the following configuration for my route:
$stateProvider
.state('home', {
        url: '/',
        template: '<home>'
    })

.state('manage', {
    url: 'manage',
    abstract: true,
    template:'

'
})

.state('manage.map', {
    parent: 'manage',
    url: '/map',
    template: '<dummy>'
})

in my index. html, I have a ui-view :

The problem i am having is that when i try to access the child state '/manage/map' directly from the broswer, it is empty $state.current looks like this {"name":"","url":"^","views":null,"abstract":true}. I can only access this state from a ui-sref redirection.

i'm going to close this issue, the problem was the missing '/' from the parent state definition
.state('manage', {
url: '/manage',
abstract: true,
template:''
})


add 1.16 docs release lead as an approver

Ref: https://kubernetes.slack.com/archives/CA56K25SN/p1566221927018600

/lgtm
/approve


motoc: 0.2.0 -> 0.3.1

Automatic update generated by nixpkgs-update tools. This update was made based on information from passthru.updateScript.
meta.description for motoc is: MOnado Tracking Origin Calibration program
meta.homepage for motoc is: https://github.com/galister/motoc
meta.changelog for motoc is: https://github.com/galister/motoc/releases
Updates performed

Ran passthru.UpdateScript

To inspect upstream changes
Impact
Checks done

built on NixOS
The tests defined in passthru.tests, if any, passed
found 0.3.1 with grep in /nix/store/clq666d35p4fhgkgbjdm89418vvx03az-motoc-0.3.1
found 0.3.1 in filename of file in /nix/store/clq666d35p4fhgkgbjdm89418vvx03az-motoc-0.3.1

Rebuild report (if merged into master) (click to expand)

2 total rebuild path(s)

2 package rebuild(s)

First fifty rebuilds by attrpath

motoc

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/clq666d35p4fhgkgbjdm89418vvx03az-motoc-0.3.1 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A motoc https://github.com/r-ryantm/nixpkgs/archive/787c4048e2a96b5986c8c832d534b38ecec24666.tar.gz

Or:
nix build github:r-ryantm/nixpkgs/787c4048e2a96b5986c8c832d534b38ecec24666#motoc

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/clq666d35p4fhgkgbjdm89418vvx03az-motoc-0.3.1
ls -la /nix/store/clq666d35p4fhgkgbjdm89418vvx03az-motoc-0.3.1/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

1 package built:

motoc

Maintainer pings
cc @Pandapip1 for testing.

[!TIP]
As a maintainer, if your package is located under pkgs/by-name/*, you can comment @NixOS/nixpkgs-merge-bot merge to automatically merge this update using the nixpkgs-merge-bot.

Add a :+1: reaction to pull requests you find important.

@NixOS/nixpkgs-merge-bot merge


Test for edge cases: is HTML Report complete for a DiffArtifact with the Left Material is NULL_OBJECT?

no longer noticed


Stop aligning output to 16

No need to do this anymore given that decomp has proper SBN support now.
Changing this will probably break the matching tests so will need to make some changes there.
https://github.com/nanaian/mamar/blob/aba939ba2c9ed2481af56c9a16f4b0ae53ffcc11/pm64/src/bgm/en.rs#L283

Fixed in https://github.com/bates64/mamar/commit/4b314dadc4d225fa48e19bb65b813711bffdd5ef


paper-ripple sets transform every frame instead of using accelerated animation

Rather than setting a new scale every frame, the effect would achieve better performance across browsers by using an accelerated animation. This would provide the browser with more hints to avoid re-raster on every frame.
The bug occurs in the drawRipple method https://code.google.com/p/chromium/codesearch#chromium/src/third_party/catapult/third_party/polymer/components/paper-ripple/paper-ripple.html&l=190
It can be reproduced by paper-button/demo.html, which is run by telemetry bots as per https://code.google.com/p/chromium/issues/detail?id=563504#c16
See more details here: https://code.google.com/p/chromium/issues/detail?id=563504#c18

This issue was moved to PolymerElements/paper-ripple#67


Fix the implementation of Http2DependencyTree

Backport #2319 to 7.1.x

[approve ci fedora]

[approve ci fedora]


[BUG] MiniCPM-V-2的vLLM推理不能使用

是否已有关于该错误的issue或讨论？ | Is there an existing issue / discussion for this?

[X] 我已经搜索过已有的issues和讨论 | I have searched the existing issues / discussions

该问题是否在FAQ中有解答？ | Is there an existing answer for this in FAQ?

[X] 我已经搜索过FAQ | I have searched FAQ

当前行为 | Current Behavior
MiniCPM-V-2的vLLM推理不能使用了
MiniCPM-Llama3-V 2.5是可以的
期望行为 | Expected Behavior

复现方法 | Steps To Reproduce

运行环境 | Environment
- OS:
- Python:
- Transformers:
- PyTorch:
- CUDA (`python -c 'import torch; print(torch.version.cuda)'`):

备注 | Anything else?

我是 MiniCPM-Llama3-V 2.5 都不能用
报错：AttributeError: 'list' object has no attribute 'to'

我是 MiniCPM-Llama3-V 2.5 都不能用 报错：AttributeError: 'list' object has no attribute 'to'

MiniCPM-Llama3-V 2.5 我这边可以正常推理  但是MiniCPM-V-2的更没了

我是 MiniCPM-Llama3-V 2.5 都不能用 报错：AttributeError: 'list' object has no attribute 'to'

MiniCPM-Llama3-V 2.5 我这边可以正常推理 但是MiniCPM-V-2的更没了

你是怎么操作的，也是按照文档这样吗？
git clone https://github.com/OpenBMB/vllm.git
cd vllm
git checkout minicpmv
pip install -e .
pip install timm=0.9.10
python examples/minicpmv_example.py

2.5 Should be run with no error now. As for 2, the official code has not been support yet.
I create a new repo of MiniCPM-V-2 on HF for vllm. You can use it temporarily: https://huggingface.co/HwwwH/MiniCPM-V-2.
Maybe this code will be merged into official HF repo after some necessary testing.

我是 MiniCPM-Llama3-V 2.5 都不能用 报错：AttributeError: 'list' object has no attribute 'to'

MiniCPM-Llama3-V 2.5 我这边可以正常推理 但是MiniCPM-V-2的更没了

你是怎么操作的，也是按照文档这样吗？
git clone https://github.com/OpenBMB/vllm.git
cd vllm
git checkout minicpmv
pip install -e .
pip install timm=0.9.10
python examples/minicpmv_example.py

是的啊 我就是这样操作的

2.5 should be run with no error now. As for 2, the official code has not supported vllm yet. I create a new repo of MiniCPM-V-2 on HF for vllm. You can use it temporarily: https://huggingface.co/HwwwH/MiniCPM-V-2. Maybe this code will be merged into official HF repo after some necessary testing.

Thank you for your reply.

2.5 should be run with no error now. As for 2, the official code has not supported vllm yet. I create a new repo of MiniCPM-V-2 on HF for vllm. You can use it temporarily: https://huggingface.co/HwwwH/MiniCPM-V-2. Maybe this code will be merged into official HF repo after some necessary testing.

Thank you for your reply.

推理成功了吗

2.5 should be run with no error now. As for 2, the official code has not supported vllm yet. I create a new repo of MiniCPM-V-2 on HF for vllm. You can use it temporarily: https://huggingface.co/HwwwH/MiniCPM-V-2. Maybe this code will be merged into official HF repo after some necessary testing.

Thank you for your reply.

推理成功了吗

我试了 没成功
报错：
File "/usr/local/lib/python3.10/dist-packages/vllm/engine/async_llm_engine.py", line 380, in init
self.engine = self._init_engine(*args, **kwargs)
File "/usr/local/lib/python3.10/dist-packages/vllm/engine/async_llm_engine.py", line 547, in _init_engine
return engine_class(*args, **kwargs)
File "/usr/local/lib/python3.10/dist-packages/vllm/engine/llm_engine.py", line 238, in init
self.tokenizer = self._init_tokenizer()
File "/usr/local/lib/python3.10/dist-packages/vllm/engine/llm_engine.py", line 495, in _init_tokenizer
return get_tokenizer_group(self.parallel_config.tokenizer_pool_config,
File "/usr/local/lib/python3.10/dist-packages/vllm/transformers_utils/tokenizer_group/init.py", line 34, in get_tokenizer_group
return tokenizer_cls.from_config(tokenizer_pool_config, **init_kwargs)
File "/usr/local/lib/python3.10/dist-packages/vllm/transformers_utils/tokenizer_group/tokenizer_group.py", line 31, in from_config
return cls(**init_kwargs)
File "/usr/local/lib/python3.10/dist-packages/vllm/transformers_utils/tokenizer_group/tokenizer_group.py", line 24, in init
self.tokenizer = get_tokenizer(self.tokenizer_id, **tokenizer_config)
File "/usr/local/lib/python3.10/dist-packages/vllm/transformers_utils/tokenizer.py", line 95, in get_tokenizer
tokenizer = AutoTokenizer.from_pretrained(
File "/usr/local/lib/python3.10/dist-packages/transformers/models/auto/tokenization_auto.py", line 881, in from_pretrained
return tokenizer_class.from_pretrained(
File "/usr/local/lib/python3.10/dist-packages/transformers/tokenization_utils_base.py", line 2291, in from_pretrained
return cls._from_pretrained(
File "/usr/local/lib/python3.10/dist-packages/transformers/tokenization_utils_base.py", line 2525, in _from_pretrained
tokenizer = cls(*init_inputs, **init_kwargs)
File "/root/.cache/huggingface/modules/transformers_modules/HwwwH_MiniCPM-V-2/tokenization_minicpmv.py", line 8, in init
super().init(**kwargs)
File "/usr/local/lib/python3.10/dist-packages/transformers/models/llama/tokenization_llama.py", line 171, in init
self.sp_model = self.get_spm_processor(kwargs.pop("from_slow", False))
File "/usr/local/lib/python3.10/dist-packages/transformers/models/llama/tokenization_llama.py", line 198, in get_spm_processor
tokenizer.Load(self.vocab_file)
File "/usr/local/lib/python3.10/dist-packages/sentencepiece/init.py", line 961, in Load
return self.LoadFromFile(model_file)
File "/usr/local/lib/python3.10/dist-packages/sentencepiece/init.py", line 316, in LoadFromFile
return _sentencepiece.SentencePieceProcessor_LoadFromFile(self, arg)
TypeError: not a string

@renjingneng   To use MiniCPM-V 2.5 with vllm,  2.5 model code should be updated to the same latest version as
openbmb/MiniCPM-Llama3-V-2_5 on Hugging Face.

@renjingneng To use MiniCPM-V 2.5 with vllm, 2.5 model code should be updated to the same latest version as openbmb/MiniCPM-Llama3-V-2_5 on Hugging Face.

ok so only MiniCPM-Llama3-V 2.5 be used for  vllm

@renjingneng To use MiniCPM-V 2.5 with vllm, 2.5 model code should be updated to the same latest version as openbmb/MiniCPM-Llama3-V-2_5 on Hugging Face.

ok so only MiniCPM-Llama3-V 2.5 be used for vllm

!! It should've be run successfully with V2. I check the reason of your traceback. I guess this may caused by the lfs tokenizer files. Check if these files are downloaded correctly.

@renjingneng To use MiniCPM-V 2.5 with vllm, 2.5 model code should be updated to the same latest version as openbmb/MiniCPM-Llama3-V-2_5 on Hugging Face.

ok so only MiniCPM-Llama3-V 2.5 be used for vllm

!! It should've be run successfully with V2. I've checked the reason of your traceback. I guess this may caused by the lfs tokenizer files. Check if these files are downloaded correctly.

hi @HwwwwwwwH  does openbmb/MiniCPM-V-2 work now?
i tried to send messages to HwwwH/MiniCPM-V-2 but model cannot read image. May I know how to solve it?
json_data = {
    'model': 'HwwwH/MiniCPM-V-2',
    'messages': [
        {
            'role': 'user',
            'content': [
                {
                    'type': 'text',
                    'text': "describe image in details",
                },
                {
                    'type': 'image_url',
                    'image_url': {
                        'url': f'data:image/png;base64,{img_b64}'
                    },
                },
            ],
        },
    ]
}

我是 MiniCPM-Llama3-V 2.5 都不能用 报错：AttributeError: 'list' object has no attribute 'to'

我进行infer也是相同的错误，请问你是通过更新了hf上最新的代码解决的吗？


슭릵긋맇듯 씄긲 덥럽겝 엏렵넿

에라이

@underTheTitle Should I curse so that I don't understand Korean? That's very rude.

Translation :

Slickgrid a dirty little hard to use it.

You might try using the 6pac fork, that's the current modern version.  There are also angular and aurelia versions.
https://github.com/6pac/SlickGrid/wiki/The-SlickGrid-Manifesto

Sorry if you're mad at me.
I'm actually using slickgrid well.
Thanks for making a good library.


Feature: Add NavMesh implementation

To bake the navMesh, there is a new window "Navigation", it has a list of parameters to change how to navMesh will be baked and there is button to bake it. Only the GO's with the tag "NAVIGABLE" will be taken into account to bake the NavMesh.
There are two new Components, the AgentComponent and the ObstacleComponent. To see how they work, there is a test scene named "navMeshTest".

GJ, just some changes regarding brackets and warnings.
If I load the navMeshTest scene and hit play, nothing happens (the player stays put, even when trying to move with WASD), do I have to do anything special to see the navmesh working and the player moving?

Yes, sorry. I didnt put a description.
In the new Navigation window you need to bake the navMesh first so the player starts to move with a test script.

In the new Navigation window you need to bake the navMesh first so the player starts to move with a test script.

K! Now it works perfect, thanks. Regarding the description...

Only the GO's with the tag "NAVIGABLE" will be taken into account.

So, right now in gameplay each enemy has the "Enemy" tag, an it is needed in order for them to work correctly in several aspects of the level, gameplay, UI... Could we change the way the navmesh gets the GameObjects to take into account? Maybe a checkbox or smth like that? Because if we have to set an enemy inside a navmesh, idk how we could do it because we can't assign simultaneously the "Enemy" and the "NAVIGABALE" tag.

In the new Navigation window you need to bake the navMesh first so the player starts to move with a test script.

K! Now it works perfect, thanks. Regarding the description...

Only the GO's with the tag "NAVIGABLE" will be taken into account.

So, right now in gameplay each enemy has the "Enemy" tag, an it is needed in order for them to work correctly in several aspects of the level, gameplay, UI... Could we change the way the navmesh gets the GameObjects to take into account? Maybe a checkbox or smth like that? Because if we have to set an enemy inside a navmesh, idk how we could do it because we can't assign simultaneously the "Enemy" and the "NAVIGABALE" tag.

I didnt specify, only the gameobjects with that tag will be taken into account to "bake" the navMesh. I mean, every floor we will want the drones to be able to navigate will need that tag.
The enemies will have the ComponentAgent, so we dont need them to have a specific tag, just this component.

I didnt specify, mb. Only the gameobjects with that tag will be taken into account to "bake" the navMesh. I mean, every floor we will want the drones to be able to navigate will need that tag (if we need we could change it to a checkbox, no problem).
The enemies will have the ComponentAgent that will move them, so we dont need them to have a specific tag, just this component.

Oh okay now I understand it better. Then we have a similar problem with the forceable items, they work by the "FORCEABLE" tag. Idk if it would affect anything rn, @Dedado3000 should know best if those two tags may intersect in any object and thus render one of the unusable.


Fixed the make-devenv.sh script

Fixes #605
Maybe for some recent changes in apko this script was not working.
What I did:

in the previous alpine:3.16.0 when we try apk add go it is getting the go-1.19.2 version but in order to run apko we need go-1.21.*. As I found it in the edge repository, So I have updated the BUILDER_ALPINE_TAG.
Currently due to multi-architecture build all the image that we create, the arch name is appended into the image tag. And there is no image with the name apko-inception:latest. And for dev-env it is unnecessary to build for all the architecture.

Identify the current host architecture. and build only for that.
Replace the Image name with the proper one.

LGTM 👍


Battery Callibration lost after power off/on - resets to original value

When adjusting all looks fine,
Buts after power off/own original value is back on screen.
Looks like the value is not store into memory.
Firmware 16.4

This issue occures since v0.3.
So no relation with #38

What is power calibration?
What are steps to reproduce the issue?
What is the result and what is the expected result?

Yes Voltage callibration of accu.
as is under menu 67. BatCal - battery calibration, measure the voltage on the back of the radio, and adjust the value in the menu accordingly

Fixed in: https://github.com/kamilsss655/uv-k5-firmware-custom/releases/tag/v.16.5

3 X checked... 3x OK


Small fixes to utility scripts

Hello there,
This PR basically fixes two little bugs:

utility/install_python_requirements.sh was trying to install requirements.txt even if project was created use_heroku == 'n'

both utility scripts depended of being called from undocumented and inconsistent paths. Particularly, install_python_requirements.sh only worked if it was called from the top of the project, and install_os_dependencies.sh only worked if called from inside utility/ folder. Now you can call them from wherever you want.

Cheers!

Thanks for this! 😆


Updates fork remotes to point to Artsy, fixes CI #trivial

I saw this in Slack so I thought I'd update from using Eloy's fork to Artsy's – seems that we've wanted to do that from the beginning, anyway.
This should fix the CI red on master.

Thanks!


Travis/tox: use dj19 tarball, add master; remove unsupported

Add allow_failures section for Django master on Travis.
Django 1.9 is only supported on Python 2.7 and 3.4+.

(At least most of the) Test failures should be fixed with #128.

Integrated in #131.


Maintained by Bounteous?

Would it make sense to have at least one Bounteous dev added as a maintainer for this project, being the original contributors?

Hi @HitmanInWis , I merged the PR for the initial commit, thank you very much for this contribution. I added you as an admin of the repository so you can add as many collaborators from Bounteous.

Thank you @vladbailescu !


Swift-2.0: advance unavailable

Seems like advance is deprecated in Swift 2.0, leading to errors here:
ImageManager.swift:
Line 180&181
Line 206
Error: 'advance' is unavailable: call the 'advanceBy(n)'  method on the index
Xcode 7.0 (iOS 9)

Since this is a duplicate report of #28 we will merge them.


Project Setup meeting

Milestone: Project Repository Setup

Project Setup Meeting
In this meeting, we will collaboratively work through the guide directory step by step to establish a solid foundation for our project repository. Each component of the guide will be discussed in detail to ensure everyone understands the setup process and their respective roles.

Agenda

[ ] Review Repository Setup

We will go through 0-repository_setup.md to understand the initial setup requirements for our project repository.

[ ] Discuss Group Norms

Review 1-group_norms.md to establish our team norms and expectations for collaboration.

[ ] Define Learning Goals

Explore 2-learning_goals.md to set clear learning objectives for the project.

[ ] Identify Constraints

Analyze 3-constraints.md to recognize any limitations or challenges we may face during the project.

[ ] Establish Communication Protocols

Discuss 4-communication.md to determine how we will communicate effectively throughout the project.

[ ] Set Up Project Board

Review 5-project_board.md to create an organized board for tracking tasks and progress.

[ ] Outline Development Process

Go through 6-development.md to define our development workflow and best practices.

[ ] Plan Retrospective

Discuss 7-retrospective.md to establish how we will reflect on our progress and improve as a team.

We look forward to everyone's input and collaboration in making this project a success!

completed


Support Multiple sticky columns

Hi guys,
Before forking the project, to implement this I prefer to ask if this not already done somewhere! I understood that it was implemented in version 2, but in v3 it does't seem to be possible to have multiple sticky columns isn't it?

Not yet but this is the #1 next feature we want to re-implement. If you do successfully implement, please let us know/create a PR!

I did implemented it; I append dynamically new classes for the other columns that have to be sticky, not sure if it is the most elegant solution.
Another way would be to fit the n sticky columns into one sticky cell.
https://github.com/artefactory/react-sticky-table/blob/master/src/index.js
Here is my implementation, I'll fix the tests and clean it if you think it's the right way to go.

@adussarps I think this works for static content, but unfortunately it doesn't work for dynamically changing content as far as I can tell (see dynamic cell sizes and changing content examples here: https://henrybuilt.github.io/react-sticky-table/#resizing-cells-example). The additional sticky columns will need to keep their dynamic widths up to date with content in our package - not sure how to do that unfortunately.

Yes, you are right indeed. A way to go would be to stick the first n columns into one sticky container then. This means each row would format it's child cells, I don't know about the performances of such a solution.

@adussarps Unfortunately I considered that and it's problematic because then they're out of flow with the other columns in the table and the heights are no longer dynamic. Best solution is probably to check for cell size changes using setInterval (because there's no reliable on('resize') event), and then update the sticky column offsets based on those. Probably decently performant, just takes some time to implement, and I have no time :(

Hello! I would only want to refresh the question about several fixed columns. It would be very useful to implement this. Could you please answer, do you have some ideas how to resolve this? Do you plan to start to do this?

@yuliaripple It'd be a large chunk of work. I'll think about if it can be fit in, but it'd be great if someone else (you??) implemented a rough PR to get the ball rolling.
The first trick is deciding whether to support dynamic or only fixed widths. Probably should be dynamic for ease-of-use and it's not that much less performant. It could be passed a "fixed" prop or something to optimize for performance when column/row sizes are fixed.
The general approach for dynamic:
styles

styles have to have access to state
state should store a width/height for each column/row
each column should have an offset top/left value of net-height/net-width of lower-index columns (this gets inverted for right column/footer) - this will be the most math-heavy/finicky part

the resize event

listening to resize events doesn't work reliably, so we have to poll with setInterval
in setInterval, check if first cell in each column/row has changed in width/height - this will be the most performance-sensitive code
if it has changed, update state with new size - this will be the easiest place to miss a css condition like box-sizing - we'd want to require box-sizing: border-box.

https://github.com/henrybuilt/react-sticky-table/pull/88


Improve support for client sharing between Ensembles

Currently, the Ensemble has functionality to close a tied client during ending operations like exit and del. This is governed by the Ensemble.cleanup_client variable that is set when a client is tied to the Ensemble. This complicates the ability for multiple ensembles to share a given client, as one may attempt to close the client that is still in use by another ensemble. We should implement a more robust relationship between an ensemble and a client, such that multiple clients can use an ensemble without pre-emptive attempts to close it, but also eventually closing it when no Ensembles are left using it.

Note that issues related to client sharing were observed in the flaky test failures in issue https://github.com/lincc-frameworks/tape/issues/328
Most of those failures were resolved by having mostly clientless unit tests (https://github.com/lincc-frameworks/tape/pull/376), but those failures are good examples of the kind of shared client issues we want to improve upon.


Implement filters on pipeline page

What is the motivation for adding/enhancing this feature?

The filters will allow user to get specific jobs based upon the category and pinned jobs
https://www.figma.com/file/bVPRRw282CqGKMdbz7dciH/HC-Ionic-design-system?node-id=23603%3A87300
Additional information

https://github.com/hotwax/job-manager/pull/246


How to Add custom text(water mark) on each page of pdf file uisng pdf.js

Hi,
We are using pdf.js to display pdf file(s) in browser.
We came across requirement to display stamp(text like watermark in word) on each page.
Is it possible to add custom text like watermark on each page using pdf.js programatically ?
While user print the pdf file those watermark(s) should be there in print out.
Appreciate any ideas/inputs/solutions for same.
Version: 1.1.114

You can overlay text divs over each page and render them onto the canvas for printing, but this is out of scope for the PDF.js project. Closing as answered.

Thank you very much.
I appreciate if you share any reference(s) which allow to render annotation(water mark) using pdf.js.
Thanks.