Firebase ID token has expired.

[REQUIRED] Step 1: Describe your environment

Xcode version: 11.7
Firebase SDK version: 6.31.0
Firebase Component: Auth
Component version: 6.31.0
Installation method: Carthage

[REQUIRED] Step 2: Describe the problem
Steps to reproduce:
In our app, we use Firebase authentication token to identify user on our backend. We are sending this token with every request. We retrieve Firebase token using getIDToken(completion:) with every request.
The documentation says the method Retrieves the Firebase authentication token, possibly refreshing it if it has expired., but from time to time, we receive error Firebase ID token has expired. Get a fresh ID token from your client app and try again (auth/id-token-expired). See https://firebase.google.com/docs/auth/admin/verify-id-tokens for details on how to retrieve an ID token. This is kind of a major issue for our app, as we automatically log out users which receive unauthenticated error (because of user deletion functionality) - not mentioning that all of the requests automatically fail because of expired token.
Am I misunderstanding the concept of retrieving the token using getIDToken(completion:), or is this the bug in SDK?

Hi, thanks for reaching out--
Where are you seeing the auth/id-token-expired error? In your backend code or on the client?
How much time elapses between calling getIdToken and your backend doing the verification? Is it possible the token is becoming expired in flight (meaning: order of minutes between getting it from the client and doing verification on the backend)

Where are you seeing the auth/id-token-expired error? In your backend code or on the client?

In the response from backend.

How much time elapses between calling getIdToken and your backend doing the verification? Is it possible the token is becoming expired in flight (meaning: order of minutes between getting it from the client and doing verification on the backend)

I believe not. This happens after user launches the app, and sends initial requests with token to BE. Token is retrieved on the client using getIDToken(completion:) with every request.

Hmm yeah this is interesting. The relevant bit of code is here: https://github.com/firebase/firebase-ios-sdk/blob/master/FirebaseAuth/Sources/SystemService/FIRSecureTokenService.m#L110
The token should be valid for at least 5 minutes whenever you call this. Is there any more detail in the error you get back from the server? (A code or anything of that sort?)

Is there any more detail in the error you get back from the server? (A code or anything of that sort?)

Not really. We use gRPC, and the response received from BE looks like this:
failure(unauthenticated (16): Firebase ID token has expired. Get a fresh ID token from your client app and try again (auth/id-token-expired). See https://firebase.google.com/docs/auth/admin/verify-id-tokens for details on how to retrieve an ID token.)
Metadata received from BE contain this mesage:
Firebase ID token has expired. Get a fresh ID token from your client app and try again (auth/id-token-expired).

Would it be possible that if multiple calls to getIDToken(completion:) are made, we would receive one token for the first time, which will be invalidated with subsequent calls?

Chatted with the team a bit-- one thing to consider is that the SDK will automatically refresh the token if it has expired or if it will expire in the next 5 minutes. If the device has its clock running a bit behind then it will think the token has not expired even though it may have. Then, when you send it to your backend, your backend has the correct time and sees the token as expired.
The reverse may be true as well: if for some reason your server's clock is a bit ahead, it may incorrectly think the token is expired.
One thing to try: you can manually parse the ID token and log failures. Here's a snippet in Javascript but you can apply this equally in any language:
// Where atob is Base64 decode
const expirationTimeInSecondsSinceEpoch =
    JSON.parse(atob(tok.split('.')[1])).exp

That will get you the expiration time of the token in question. I'd suggest adding some sort of logging to your backend that records the token's expiration time and the server's current time when you catch this particular error.
(And I have to post this just in case, please don't post the ID token or other information here :smile: )

We are currently deploying solution that will incorporate such logging as mentioned by @samhorlbeck.

My team has been seeing the same issue intermittently for a while. After reviewing the source of this library, and the admin-sdk, my suspicion is that the client thinks an expired token is still valid when it is not. In our case, it seems to happen more frequently for requests made right after the app is foregrounded.
I noticed that FIRSecureTokenService caches an estimated expiration date for the token, and uses that to determine whether it's expired, rather than decoding and inspecting exp field of the actual token. Perhaps that could be where the issue is happening?
As a mitigation strategy we implemented a retry that will force refresh the token manually and resubmit the request if we receive a response that indicates an invalid token. That being said it would be great to get to the bottom of this issue.

To help figure out what's going on, I've added some validation on the client to check the token every time before it's submitted to the server. Over the weekend I was able to get a couple repros, showing that the ID token provided from auth sdk was actually expired.
An excerpt from the logs:
UserInfo={expiredAt=2020-10-12 00:27:04 +0000, NSLocalizedDescription=Expired token received from FIRAuth, currentTime=2020-10-12 00:53:41 +0000}
UserInfo={expiredAt=2020-10-11 00:45:30 +0000, currentTime=2020-10-11 00:55:16 +0000, NSLocalizedDescription=Expired token received from FIRAuth}

To get a token, I'm calling Auth.auth().currentUser.getIDToken(). To verify the token locally, I followed the same path that the backend uses (firebase-admin-sdk via jsonwebtoken npm package).

Split the JWT into it's various parts
Find the payload part
base64 decode it
Parse it into JSON
Extract the value from the "exp" key as a number
Compare current date's timeIntervalSince1970 with expires at date

    func verifyIDToken(token: String) throws -> Bool {
        let parts = token.split(separator: ".")
        // JSON Web Token should have a header, payload, and signature
        guard parts.count == 3 else {
            throw NSError(domain: "com.glasswing.cocoon", code: 500, userInfo: [
                NSLocalizedDescriptionKey: "Token has wrong number of parts. Expected 3, got \(parts.count)"
            ])
        }
        var payload = String(parts[1])
        // Base64 strings need to be divisible by 4 to be decoded with Data, otherwise pad with '='
        // https://stackoverflow.com/questions/4080988/why-does-base64-encoding-require-padding-if-the-input-length-is-not-divisible-by
        while payload.utf8.count % 4 != 0 {
            payload.append("=")
        }
        // Payload is base64 encoded json
        guard let payloadData = Data(base64Encoded: payload, options: .ignoreUnknownCharacters) else {
            throw NSError(domain: "com.glasswing.cocoon", code: 500, userInfo: [
                NSLocalizedDescriptionKey: "Token payload could not be decoded from base64 to json string"
            ])
        }
        guard let parsed = try? JSONSerialization.jsonObject(with: payloadData, options: []) as? [String: Any] else {
            throw NSError(domain: "com.glasswing.cocoon", code: 500, userInfo: [
                NSLocalizedDescriptionKey: "Token payload json could not be parsed"
            ])
        }
        // Expiration date is "exp" field
        guard let exp = parsed["exp"] as? Int else {
            throw NSError(domain: "com.glasswing.cocoon", code: 500, userInfo: [
                NSLocalizedDescriptionKey: "Could not find value for `exp` key in token payload"
            ])
        }
        let isExpired = Date().timeIntervalSince1970 >= TimeInterval(exp)
        if isExpired {
            // Log an error to Sentry to track instances of this
            let error = NSError(domain: "com.glasswing.cocoon", code: 500, userInfo: [
                NSLocalizedDescriptionKey: "Expired token received from FIRAuth",
                "expiredAt": Date(timeIntervalSince1970: TimeInterval(exp)),
                "currentTime": Date()
            ])
            AnalyticsManager.shared.trackError(error: error)
        }
        return !isExpired
    }

I'm seeing this error from my backend as well on a javascript web app when hitting the backend on a page that has been open and idle for over 1 hour. I'm not seeing the onAuthStateChanged handler fire when I would expect it to.
  async load () {
    this.logger.debug('Loading session');

    this.setState({changing: true});

    const {SessionUser, client} = this;
    this.unsubscribe = this.auth.onAuthStateChanged(async (firebase_user)=> {
      this.logger.debug('Firebase auth state changed', {firebase_user});
      await this._change(async ()=> {
        let user;
        if (firebase_user) {
          this.logger.debug('Getting firebase user token');
          const token = await firebase_user.getIdToken(true);
          client.setAuth({token});
          this.logger.debug('Loading session user');
          user = await SessionUser.load({client, token, firebase_user});
        } else {
          this.logger.debug('No firebase user clearing session');
          await client.clearAuth();
          user = new SessionUser();
        }
        return {user, loaded: true};
      });
    });
  }

Just a small update on these logs I've been collecting. The build that has this logging is now out in prod, and we've seen 6.5k instances of this across 1.5 unique users over the last week. Let me know if there's other details I can add to the logs to help debug.

I'm also seeing this issue.
Xcode version: 12.2
Firebase SDK version: 7.00.0
Firebase Component: Auth
Component version: 7.00.0
Installation method: Cocoapods
As described above the function getIDToken(completion:) is returning an expired token. We've also tried getIDTokenForcingRefresh(_:completion:)  with force refresh set to true and we are still getting expired tokens from this call.
As a work around we are now forcing refresh & retrying on every request to try and ensure the user gets a valid token.

Xcode version: 12.3
Firebase SDK version: 6.32.2
Firebase Component: Auth
Component version: 6.32.2
Installation method: Cocoapods
We seeing the same issue unfortunately. We get the token using getIDToken(completion:) right before each request, and on the server we get an expired token error, using the Firebase Admin SDK. This has happened 800 times for about 1700 users in the past week.
Strange thing is though, that it doesn't always return an expired token. I've done some manual testing on both a real device and the sim, using different identity providers, and found that I always got back a valid refreshed token after waiting for an hour.

Hi folks, thanks for the additional info! About what percentage of users and requests are you seeing this with? Unfortunately, I've not been able to reproduce this in my own manual testing, and it would be helpful to know the frequency of this issue.

@rosalyntan It's hard to get an exact % for you due to how our error logging is performed, but it appears to be intermittently affecting nearly all active users of our app since we added this logging.
My suspicion is that it has something to do with the app lifecycle. We make network requests that rely on this token as the app is transitioning into the background and also as it transitions into the foreground. We use background tasks paired with our network requests to request extra time as the app makes this transition to ensure the network request is successful. It appears that the requests that are being made with an expired token are typically one of the first network requests after a background -> foreground transition.
I have repro'ed this issue several times on my own device, but since it relies on time constraints I typically have to install a build and use it intermittently over the course of a day, and review the logs later. Let me know if I can add more details to my own logging that could help here.

We're facing a similar issue on our application.
Can we get an update here? It's happening to ~1% of our requests every week, but our app fails hard when it happens. It's not clear how we're suppose to recover from 401s.
Looking at the above messages, it's been 4 months since the issue was first reported. Is this being prioritized?
@rosalyntan

We're facing a similar issue on our application.
Can we get an update here? It's happening to ~1% of our requests every week, but our app fails hard when it happens. It's not clear how we're suppose to recover from 401s.
Looking at the above messages, it's been 4 months since the issue was first reported. Is this being prioritized?
@rosalyntan

Is there a workaround for now?
For example, would it be advisable to force refresh tokens every X minutes?

Is there a workaround for now?
For example, would it be advisable to force refresh tokens every X minutes?

@gilbertl It may not be ideal, but what we do is verify the token locally (using the code I shared above) to make sure it's not expired before submitting each request. If it's expired we automatically request a new token forcing refresh before using the token.

@gilbertl It may not be ideal, but what we do is verify the token locally (using the code I shared above) to make sure it's not expired before submitting each request. If it's expired we automatically request a new token forcing refresh before using the token.

Is there a workaround for now?
For example, would it be advisable to force refresh tokens every X minutes?

@gilbertl the workaround we have implemented for now looks like this -> if any request fails because of expired token, we force token refresh using getIDTokenForcingRefresh(true) and then retry request using freshly retrieved token
I wouldn't advise to force refresh token regularly, as it may cause unnecessary overhead and not ensure 100% reliability.

Is there a workaround for now?
For example, would it be advisable to force refresh tokens every X minutes?

@gilbertl the workaround we have implemented for now looks like this -> if any request fails because of expired token, we force token refresh using getIDTokenForcingRefresh(true) and then retry request using freshly retrieved token
I wouldn't advise to force refresh token regularly, as it may cause unnecessary overhead and not ensure 100% reliability.

For us, it looks to be about 6-7% of our daily userbase that are impacted by this issue.
Some background info that may be of help: we have an app that sends the user a notification once every day, at a random time. This notification is the trigger for a user to take a picture of what they're doing at that very moment. Because of this, most users use the app only for a short duration, once every day. We do get a lot of complaints that as soon as they open the app by tapping the notification, they're signed out. To some, this happens every single day. This is triggered by a 401 response from our backend that encounters a 'token expired' exception when validating the token with the Firebase Admin SDK.
We've implemented the same workaround for now, where we trigger a force refresh of the token when we encounter a 401 server response, and then retry the request with the new token.

For us, it looks to be about 6-7% of our daily userbase that are impacted by this issue.
Some background info that may be of help: we have an app that sends the user a notification once every day, at a random time. This notification is the trigger for a user to take a picture of what they're doing at that very moment. Because of this, most users use the app only for a short duration, once every day. We do get a lot of complaints that as soon as they open the app by tapping the notification, they're signed out. To some, this happens every single day. This is triggered by a 401 response from our backend that encounters a 'token expired' exception when validating the token with the Firebase Admin SDK.
We've implemented the same workaround for now, where we trigger a force refresh of the token when we encounter a 401 server response, and then retry the request with the new token.

I'm experiencing this same issue with the javascript SDK. In my SPA, I can reliably reproduce this in the following manner:

Authenticate via Firebase, everything will work normally
Leave the computer for a while, so that it goes into Sleep mode (Mac in my case). Leave the computer sleeping for a while (an hour or so, so that the last retrieved token will have expired)
Wake up the computer, and resume using the app. For some reason, firebase.auth().currentUser.getIdToken() will now still continue to serve the previous token, which has now expired.

I realize this isn't related to the iOS SDK specifically, but I wanted to chime in, in case the issue isn't unique to this specific SDK.

I'm experiencing this same issue with the javascript SDK. In my SPA, I can reliably reproduce this in the following manner:

Authenticate via Firebase, everything will work normally
Leave the computer for a while, so that it goes into Sleep mode (Mac in my case). Leave the computer sleeping for a while (an hour or so, so that the last retrieved token will have expired)
Wake up the computer, and resume using the app. For some reason, firebase.auth().currentUser.getIdToken() will now still continue to serve the previous token, which has now expired.

I realize this isn't related to the iOS SDK specifically, but I wanted to chime in, in case the issue isn't unique to this specific SDK.

Hi folks -- the additional logging added in #7461 should be in the upcoming release.
To turn on debug logs:

In Xcode, select Product > Scheme > Edit scheme.
Select Run from the left menu, then select the Arguments tab.
In the Arguments Passed on Launch section, add -FIRDebugEnabled.

If you can share the debug logs from whenever you see this issue occur, that would be helpful! I'm looking for logs with the tag I-AUT000017.
@hognevevle Thanks for reporting this! If you haven't already, can you file a separate issue in firebase-js-sdk?

Hi @rosalyntan, additional logging is great but I am not sure if this method is the one to take. Not sure that this issue is easily reproducible in debug environment 😬

Hi everyone -- I am experiencing the same problem in my application. It can't be reproduced obviously but I'm trying to log as many as possible
Usually, this bug occurred after the function "firGetIDTokenForcingRefresh" with forceRefresh=false  was called just before app became inactive (switch app or return to home).
From the log we have, it shows that "firGetIDTokenForcingRefresh" was called before app went inactive, and callback function was called after app became active a few hours later, with expired token (the same token that being used before app went inactive).
Hope this information could help you guys fix this problem.

Also seeing this issue in the JS SDK about 20 times a day.

We are seeing this too. Not sure why this is not getting more attention.

any fix ? the issue still persists.

For the folks seeing this in the JS SDK, please file a separate issue in the JS SDK repo: https://github.com/firebase/firebase-js-sdk/issues

Thank you to everyone who provided information on this issue!
Based on @kanottonp's observations, it appears the issue is caused by the callback being invoked much after the request for the token is made, if the app happens to go into the background before the callback completes. #9253 provides a partial fix that should reduce the occurrences of this issue. However, due to limitations around handling local clock skew, this is not a full fix. If you are still seeing this issue after the fix rolls out, we recommend the workaround mentioned by previous commenters, of catching the token expiry error and calling getIDTokenForcingRefresh(true) before retrying.


FAST rewrite object stored in /$tenant/Shared

Environment

FAST RPM Version: 1.2.0
BIG-IP Version: <IP_ADDRESS>

Summary
AS3 Shared applications can be used to stored shared object between applications of a tenant such as profile, irules, pool etc
When FAST Templates is used to manage these objects (pool in my exemple), it rewrite all the contents of the Shared Application.
This is the default behavior of AS3 + FAST, all applications are overwritten, but It shouldn't be like that for Shared Applications if FAST tend to manage Shared Objects.
FAST should "patch" Shared Application like it does for tenants.
Steps To Reproduce

Create a template to manage pool in the /Common/Shared

# my_template_set/shared_pool.mst file

{
  "class": "ADC",
  "schemaVersion": "3.19.0",
  "Common": {
    "class": "Tenant",
    "Shared": {
      "class": "Application",
      "template": "shared",
      "{{pool_name}}": {
        "class": "Pool",
        "monitors": [
          "http"
        ],
        "members": [
          {
            "servicePort": {{server_port::integer}},
            "serverAddresses": {{server_addresses::array}}
          }
        ]
      }
    }
  }
}

Deploy a first pool with rest call to the FAST API

POST /mgmt/shared/fast/applications

 {
    "name": "my_first_template_set/shared_pool",
    "parameters": {
        "pool_name": "pool_1",
        "server_port": 80,
        "server_addresses": [
            "<IP_ADDRESS>"
        ]
    }
}

Deploy a second pool with rest call to the FAST API

POST /mgmt/shared/fast/applications
POST /mgmt/shared/fast/applications

 {
    "name": "my_first_template_set/shared_pool",
    "parameters": {
        "pool_name": "pool_2",
        "server_port": 80,
        "server_addresses": [
            "<IP_ADDRESS>"
        ]
    }
}

Expected Behavior
Both pool created should be present on the Shared application.
> tmsh list ltm pool Shared/*

ltm pool Shared/pool_1 {
    members {
        Shared/<IP_ADDRESS>:http {
            address <IP_ADDRESS>
            session monitor-enabled
            state down
            metadata {
                source {
                    value declaration
                }
            }
        }
    }
    min-active-members 1
    monitor min 1 of { http }
}
ltm pool Shared/pool_2 {
    members {
        Shared/<IP_ADDRESS>:http {
            address <IP_ADDRESS>
            session monitor-enabled
            state down
            metadata {
                source {
                    value declaration
                }
            }
        }
    }
    min-active-members 1
    monitor min 1 of { http }
}

Actual Behavior
The first pool "pool_1" previously declared is overwritten by the second declaration of "pool_2"
> tmsh list ltm pool Shared/*

ltm pool Shared/pool_2 {
    members {
        Shared/<IP_ADDRESS>:http {
            address <IP_ADDRESS>
            session monitor-enabled
            state down
            metadata {
                source {
                    value declaration
                }
            }
        }
    }
    min-active-members 1
    monitor min 1 of { http }
}

Whatever the content of /$tenant/Shared, the last declaration overwritten everything.

ran into the same issue (with certificates). Would be great to get a bugfix for this soon ;)

This is working as intended, FAST is still declarative on a per-application basis. The "Shared" application in your template will be overwritten each time you deploy it in this way.
To create additional pools, you would want to template out the Application name of the template so you can create a new application. By using a new application name each time, a new pool will be created.
{
"class": "ADC",
"schemaVersion": "3.19.0",
"Common": {
"class": "Tenant",
"{{application_name}}": {
"class": "Application",
"template": "shared",
"{{pool_name}}": {
"class": "Pool",
"monitors": [
"http"
],
"members": [
{
"servicePort": {{server_port::integer}},
"serverAddresses": {{server_addresses::array}}
}
]
}
}
}
}
If you wanted to create multiple pools, you

One last note, the previous examples have a fixed tenant of "Common", the Tenant name also needs to be templated if this template is intended to be deployed to tenants other than Common.

I think you're right, it works as intended, so it's more an RFE.
As describe in the AS3 Schema, Shared application, in a tenant, holds objects that other applications can share within the tenant (Common to be shared accross tenants).
It's the only way to share objects (created with AS3) within applications.
So Shared application should be an exception and not be work on a per-application basis, it should work on a per-object basis to be able to easily add new objects
Why ? so you don't have to declare all the object in the Shared Application each time you want to add an other object.
Most of F5 users want to reduce the number of object stored in the BIGIP as too much object have a negative impact on the control plane performance (and it's more relevant when you use automation)
To do so, they might store differents object in the Shared application such as ssl profile, http profile, analytics profile ... and even pool.
Some of my customer are using the same pool (with url routing) for lots of theur applications and they don't want to recreate this pool for each application they create.
So FAST with a per-object approch in the Shared Application would be nice :)
PS : When you use the shared template (in Common or other partition), you can't overwrite the application name Shared (so your first declaration isn't working)

Please feel free to correct me on this, but I am not certain that it makes sense for an application deployed through FAST to modify the shared objects in this fashion. If the object is truly intended to be shared among multiple applications, I would think that shared object would be setup prior to deploying applications with FAST.

Closing. Please reopen if needed.


Force build with clang and update to latest version openssl-1.1.1t

In my manual run, there was only one failure. Will confirm with Jenkins and then update the expectedFailures accordingly.

Perhaps worth commenting to any OpenSSL developers that they will now need clang on their system

@ejratl FYI


Silencing new matplotlib warnings

Since upgrading to a recent matplotlib version, I am starting to get some rather annoying warnings. For instance, in the exporting tutorial:
/Users/jstevens/miniconda/envs/analytics/lib/python2.7/site-packages/matplotlib/collections.py:650:
 FutureWarning: elementwise comparison failed; returning scalar instead, but in the future will perform elementwise comparison
  if self._edgecolors_original != str('face'):
/Users/jstevens/miniconda/envs/analytics/lib/python2.7/site-packages/matplotlib/collections.py:590:
 FutureWarning: elementwise comparison failed; returning scalar instead, but in the future will perform elementwise comparison
  if self._edgecolors == str('face'):

If this was our code, we could fix it but based on the traceback, these warnings seem to be originating from matplotlib itself. Either we are passing some value into matplotlib it no longer likes, generating these messages or some code within matplotlib hasn't been updated properly.
Either way, do we decide to silence these warnings for now or allow these ugly, unhelpful warnings to appear in the notebook? I probably vote for the latter even though we are working round an issue I don't think we have much control over.

I think we have to decide whether it is due to what we passed or something internal to Matplotlib.  If it's internal, we can silence it after reporting the issue to Matplotlib.  If it's due to us, we can change it.

I agree with that assessment. I'll assign this to Philipp as he knows the plotting code far better than me and is likely to find the issue (if it is us!) much quicker.

Ok, I've narrowed the warning in the Exporting tutorial:

It occurs in  holoviews/plotting/mpl/plot.py on line 116 (fig.patch.set_alpha(self.fig_alpha)) when displaying Contours (uses PathPlot which uses LineCollection).
In matplotlib, the offending line is 651 in collections.py:

if self._edgecolors_original != str('face'):

self._edgecolors_original is not the argument to set_alpha and in this case the value is [[ 0.  0.  1.  1.]]

It looks like this one is out of our control so I'm going to push a commit to silence it. I'm going through the tutorials now to look for more warnings...

My attempts to silence this warning haven't succeeded yet. I do have the minimal example of something that generates a warning though:
from matplotlib.collections import LineCollection
lc = LineCollection([[(0,0),(1,2),(2,3)]])
lc.set_alpha(0)

The first warning is also generated plotting ErrorBars (again within matplotlib) so it is appearing all over the place. Fundamentally, it generated by numpy:
np.array([1,2,3])  == 'foo'

As I am yet to see such a warning appear due to a mistake in HoloViews, I am tempted to surpress it globally in holoviews.__init__.py (which works):
import warnings
warnings.filterwarnings("ignore", message="elementwise comparison failed; returning scalar instead")

Can I go ahead and commit this?

Yes, we did have some of those warnings ourself but I cleaned them up. Maybe there should be an option to disable that filter for testing, but otherwise just go ahead and commit that.

Committed in 586b1c1. We can remove this one 1.4 is released (hopefully matplotlib will fix these issues soon).


feat: add basic support for CDX 1.5

This PR introduces basic support for CDX 1.5.
Ref:

#404

Schema:

Extended schema-downloader and added specification files,
Adapted README and SchemaVersion for 1.5

Model:

Added SchemaVersion1Dot5, serializable annotations,
Extended ComponentType and ExternalReferenceType enums

Tests:

Generated snapshots for 1.5.
In some existing tests bom-ref changed, since 1.5 is now listed before 1.4

Chore:

Added newline = '\n' to schema-downloader and writeSnapshot for cross-platform support

Thank you for your contribution, @Churro . :+1:
I will review it soon


Add support for metadata/Addon-Data (key:value)

There should be generic support for the specified metadata.

Both key and value must consist of non-whitespace characters, which are not colons. Only one colon separates the key and value.

The metadata could be contained in a list in the item like the context/project-arrays:
item.metadata = { 'key':'value', 'key2':'value' }

Can it also support multiple values in the keys as an array? So this:
2018-03-21 Do something tag:foo tag:bar id:doit

would give:
item.metadata = { 'tag': ['foo', 'bar'], 'id': 'doit' }

I can also see a couple of other ways of working with multiple values: just using the last one, or always using an array. I think multiple values is very rare, though.

Should it also have addMetadata(key, value) and removeMetadata(key) ?


new features and missing language file

[Features]

Add a check whether we should do respawn for late joiner(some gamemode should not let late joiner immediately spawn)
Respawn Protection now will protect titan and add protection highlight both pilot/titan
Add the missing language file(Avoid being covered by other languages):northstar_custom_tchinese.txt
Add the missing localized string in english language file:fw_harvester_regen_time
Avoid script error due to invalid rodeo target

Avoid server error:player while parented when playing cam

Avoid server error:(I can delete this change if you want)

Before:

After:

Next time would be nice if each fix was its own PR, will probably look through this this weekend

Going off the PR description this should be separate PRs, no?

Going off the PR description this should be separate PRs, no?

At this point i'd just merge it as is

Going off the PR description this should be separate PRs, no?

At this point i'd just merge it as is

Hmm, maybe we should go over it in VC tonight? Like I'd love to split it up and have the knowledge on how commit stuff so it gets properly attributed to the right author but I lack the knowledge on what parts of the PR can be separated out. So this is where I'd need your help to do it properly ^^

Hmm, maybe we should go over it in VC tonight? Like I'd love to split it up and have the knowledge on how commit stuff so it gets properly attributed to the right author but I lack the knowledge on what parts of the PR can be separated out. So this is where I'd need your help to do it properly ^^

Im of the opinion we merge this as is, if it breaks I can just PR a fix

Welp this kinda flew under my radar now. Got my hands full with 1.17 release atm, after that I think I should be able to give it another look. When I get to it, I'll try to grab some under contributor and split up the PR a bit and deal with resulting merge conflicts myself (ofc everything properly credited <3)

Just a heads-up that I did NOT forget about this PR, I'm just working through a massive backlog right now. I promise I will look at this PR as well <3

I think the best way of merging this PR is to take individual changes of it and making new smaller PRs with them. That way they are easier to review and test ^^

Moving this PR to draft, for it to be split into smaller PRs.


awesome-sysadmin liked here is no longer maintained. But there's an alternative

kahun's last update to this repository was 8 months ago. n1trux is much more active.

:+1:
@n1trux Would be awesome if you could link back here in your list so users can easily discover more awesome lists ;)

I already linked to n1trux/awesome-awesomeness which in turn links to here. We should really consider hosting a site with better usability than github for all these awesome stuff.


Zig 0.12.0 support

This now has the same error as Zig 0.11.0 https://github.com/mjoerussell/zig-odbc/issues/11

@mjoerussell this now has the required fixes for zig 0.12


updated the URL for sitecore

Just updating the URL for now. Doesn't seem to be detecting the technology correctly. came across this while looking at #4847

made the change


missing domain (api-visitor-analytics.intercom.com) in 3.14.121

The following domain (api-visitor-analytics.intercom.com) was committed but it wasn't saved correctly. I cannot find the domain when I searched the hosts file.
Thanks

Thank you @strotee, good catch!
I just fixed this in commit 55b495315 which will reflect online in the next release.
Closing.


ORC-1403: ORC supports reading empty field name

What changes were proposed in this pull request?
ParserUtils removes empty check
Why are the changes needed?
https://github.com/apache/spark/pull/35253#issuecomment-1321866542
java.lang.IllegalArgumentException: Empty quoted field name at 'struct<``^:string>'
    at org.apache.orc.impl.ParserUtils.parseName(ParserUtils.java:114)
    at org.apache.orc.impl.ParserUtils.parseStruct(ParserUtils.java:170)
    at org.apache.orc.impl.ParserUtils.parseType(ParserUtils.java:228)
    at org.apache.orc.TypeDescription.fromString(TypeDescription.java:202)
    at org.apache.orc.mapred.OrcInputFormat.buildOptions(OrcInputFormat.java:122)
    at org.apache.spark.sql.execution.datasources.orc.OrcColumnarBatchReader.initialize(OrcColumnarBatchReader.java:130)
    at org.apache.spark.sql.execution.datasources.orc.OrcFileFormat.$anonfun$buildReaderWithPartitionValues$2(OrcFileFormat.scala:207)

How was this patch tested?
add UT

Does Apache Hive support empty field names?

See https://github.com/apache/spark/pull/35253#issuecomment-1321866542.
When spark.sql.orc.impl=native, writing to empty field name is supported, but reading is failed, when spark.sql.orc.impl=hive, neither writing nor reading empty field name is supported.
Before ORC-529 1.6.0, ORC should support reading empty filed name.

Sorry but the existing way is the correct direction. When Apache Hive (HiveFileFormat) doesn't support it, we should not remove a test coverage, testQuotedField2 .

Now the Spark orc datasource does not check the field name, but the Spark hive orc format checks the field name, which causes the Spark orc datasource to be able to write the field name.
Should we check it at the spark level, and it is not allowed to write the field name?
org.apache.spark.sql.execution.datasources.orc.OrcFileFormat
org.apache.spark.sql.hive.execution.HiveFileFormat#supportFieldName

In addition, can we check the schema in orc writer, otherwise the written data may not be read?
org.apache.orc.OrcFile.WriterOptions#setSchema

Ya, we can do some. However, instead of switching behaviors back and forth in this layer, I believe we need to focus on your end goals in the higher layers. What is your end goal as a user? For example, did you hit the following? If then, do we have a test coverage in Apache Spark codebase across multiple data sources (Hive,ORC,Parquet)? Can we start from there?

automatically generate _c1 if no alias is specified

What is your end goal as a user? For example, did you hit the following?

We have encountered some problems. Some lower versions of Spark use a lower version of ORC to write data with empty field name, but using Spark3.2 ORC 1.6 to read data fails.
We have injected custom rules into Spark through SparkSessionExtensions to realize the operation of adding alias automatically, which can avoid this problem.
So I was thinking, it would be better if this problem could be solved at Spark or ORC level.

Based on the above scenario, in order to avoid some additional side effects, maybe we could skip the limitation by adding a new configuration?


serializing tuples failes and deserializing tuples causes panics

This is similar to #18
given a type definition:
#[derive(Serialize, Deserialize)]
enum MyType {
  Add(i32, i32)
}

running this code:
println!("{:?}", serde_json_wasm::from_slice::<MyType>(b"{\"add\":[2, 3}"));

throws panics from: (partial stack trace)
12: <&mut serde_json_wasm::ser::Serializer as serde::ser::Serializer>::serialize_tuple_variant
13: example_contract::contract::_::<impl serde::ser::Serialize for example_contract::contract::QueryMsg>::serialize
14: serde_json_wasm::ser::to_string

running this code:
println!("{}", serde_json_wasm::to_string(&MyType::Add(3, 4)).unwrap_or_else(|err| err.to_string()));

shows:
Err(InvalidType)

I'll take a look at this.


Outside contributor testing GitHub workflow

Test issue, please ignore.

thanks. worked. though im not sure of the root cause


Background mode + stats

Idea, allow science fair to run after you close the window
17:22 also add a task tray mode
17:22 <blahah> yeah i was thinking about that too
17:23 <bret> Bret Comnes its important to encourage/enable people to keep their clients open in order to promote healthy swarm characteristics for bittorrent
17:23 its probably the same for hyperdrive
17:23 <blahah> yeah
17:24 <bret> Bret Comnes also tracking stats that are relevant to that as well.  lifetime seed times, lifetime/drive upload/download ratio, total data downloaded, total data seeded etc
17:24 might be able to gamify those a bit too
17:25 <blahah> yeah that's an excellent idea
17:25 feel like opening an issue?
17:25 <bret> Bret Comnes sure

Thanks @bcomnes!
So we have three suggestions in here:

Allow ScienceFair to run in the background as a daemon, probably with an icon + menubar sitting i the tasktray
Track stats (some you suggested, some I'm ad-libbing):

upload and download totals over time, per article, datasource and the whole app
seed ratios
average speeds over time
network health (protocols/methods available, peers)

Think about how to design the UX around the stats to incentivise people to seed, contribute etc.

This is a good setup. If I position myself in the role of the end user, then the stats would be very important to me, especially storage + speed, as these can slow down my system, fill up the hdd or cost me money.
I would like to add that you should also provide an indication of bandwidth and storage use to potential users before they install the software. They might be hesitant to install not knowing the impact.
PS This is the reason I chose Dat above SSB, because I couldn't figure out without diving into code what data a Pub server was actually exchanging, and how much it would cost to host one.
PS2 @blahah I addressed some of the concerns you had wrt the vision/future/reposition discussion in this comment: https://github.com/datproject/dat/issues/824#issuecomment-315522942

(PS you should also have a smooth installation and onboarding process.
If people spend 2 hrs on install + configuration, that means 2 hrs of their valuable time contributed to your good cause, that is now wasted. Plus you'll get more support requests of people having trouble following the instructions)

fwiw, pub servers are cheap to host.  I have one running on a raspi in my closet hooked up to gigabit fiber I have at home.  I have no clue what flows through it though.

(@bcomnes if you're curious what's on the wire, I've created an issue: https://github.com/ssbc/secure-scuttlebutt/issues/181)


mise: 2024.11.37 -> 2024.12.6

Automatic update generated by nixpkgs-update tools. This update was made based on information from passthru.updateScript.
meta.description for mise is: Front-end to your dev env
meta.homepage for mise is: https://mise.jdx.dev
meta.changelog for mise is: https://github.com/jdx/mise/releases/tag/v2024.12.6
Updates performed

Ran passthru.UpdateScript

To inspect upstream changes

Release on GitHub

Compare changes on GitHub

Impact
Checks done

built on NixOS
The tests defined in passthru.tests, if any, passed
found 2024.12.6 with grep in /nix/store/153nh580h8i00qi0nin6hbmrrch4mmfh-mise-2024.12.6
found 2024.12.6 in filename of file in /nix/store/153nh580h8i00qi0nin6hbmrrch4mmfh-mise-2024.12.6

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

2 total rebuild path(s)

2 package rebuild(s)

First fifty rebuilds by attrpath

mise

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/153nh580h8i00qi0nin6hbmrrch4mmfh-mise-2024.12.6 \
  --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 mise https://github.com/r-ryantm/nixpkgs/archive/bac89bb1978ca429a1269d4bc7160cff4a395380.tar.gz

Or:
nix build github:r-ryantm/nixpkgs/bac89bb1978ca429a1269d4bc7160cff4a395380#mise

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/153nh580h8i00qi0nin6hbmrrch4mmfh-mise-2024.12.6
ls -la /nix/store/153nh580h8i00qi0nin6hbmrrch4mmfh-mise-2024.12.6/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.
nixpkgs-review result
Generated using nixpkgs-review.
Command: nixpkgs-review

x86_64-linux

:white_check_mark: 1 package built:

mise

Maintainer pings
cc @konradmalik 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


Ingest ttd

Good to have: mapping FGFR1_HUMAN UniProt entry name with its corresponding UniProtKB accession UniProtKB:P11362

Okay, I've retrieved and added UniprotKB for human proteins (all Uniprot ids is 10s of Gbytes and not feasible to parse in a reasonable amount of time, so I'm leaving the non-human ones as uniprot names)


Disable Falcon7b async perf tests due to fd2 hang, re-enable sync tests

Re-enable Falcon7b sync tests due to #7947 being fixed
Disable Falcon7b async tests due to FD2 hang #8133

Model perf tests (single-chip): https://github.com/tenstorrent/tt-metal/actions/runs/8972293273


Updated imds spec version for the hybrid RP support

Latest improvements:
MSFT employees can try out our new experience at OpenAPI Hub  - one location for using our validation tools and finding your workflow.

Contribution checklist:

[x ] I have reviewed the documentation for the workflow.
[x ] Validation tools were run on swagger spec(s) and have all been fixed in this PR.
[ ] The OpenAPI Hub was used for checking validation status and next steps.

ARM API Review Checklist

[x] Service team MUST add the "WaitForARMFeedback" label if the management plane API changes fall into one of the below categories.
adding/removing APIs.
adding/removing properties.
adding/removing API-version.
adding a new service in Azure.

Failure to comply may result in delays for manifest application. Note this does not apply to data plane APIs.

[ ] If you are blocked on ARM review and want to get the PR merged urgently, please get the ARM oncall for reviews (RP Manifest Approvers team under Azure Resource Manager service) from IcM and reach out to them.
Please follow the link to find more details on API review process.

Automation for azure-sdk-for-go

Automation for azure-sdk-for-python

Can one of the admins verify this patch?

@openapibot sdkautomation rebuild

Hi @lirenhe and other admins, all checks are passed now. Please review the changes and approve and merge if possible. Thanks!
\cc @rifrankl @rikotcho @KumariSupriya @harijayms @edyoung

Hi @lirenhe and other admins, I have integrated the changes from IMDS 2019-08-01 and all checks are passed.  Please let us know if anything we need to do to get the PR approved and merged?
@rifrankl @rikotcho @KumariSupriya @harijayms @edyoung

@NullMDR I am not sure if I got your point. And I see the build seems to cover sdk node, sdk java, go, python, etc. already.

@jianyunt I mean the section here https://github.com/Azure/azure-rest-api-specs/pull/6846/files#diff-1f6ca4d24ed36009a22cccc573434122R223
We will move to new automation system in a near furture and you need that section to contain configuration for other languages to generate sdk in the new system.

@NullMDR what specific file do I need to change and how in order to adopt the new system you mentioned to cover other languages? it should be happening now or later?

No actual API changes. No need for the Azure API review board to review.

@jianyunt https://github.com/Azure/azure-rest-api-specs/blob/f0938f745e66b378b3874224a929a56ff88cf5e9/specification/imds/data-plane/readme.md#swagger-to-sdk
You'd better update it before we switch to new sdk generation system. We'll upgrade to new system a few month later.


Add SELF_HOSTED=1 switch for self-hosted Docker image

#207  👈
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @acco and the rest of your teammates on  Graphite


Check compilation for docs.rs build

The documentation does not build on docs.rs, you can check the status of the build at https://docs.rs/crate/bevy_entitiles/0.3.0/builds

I've already known this issue but I have no idea why this would happen. It says the platform is not supported. I guess #8 may be related to this. The next version may be built successfully.

Fixed in 0.4.0


data-* attribute, unexpected behavior

Steps to reproduce:

Create new blazor project
Add component:

@ChildContent

@functions
{
    [Parameter]
    string TabId { get; set; }
    [Parameter]
    RenderFragment ChildContent { get; set; }
}

Modify index.cshtml, add following lines:

<TabHead TabId="main">Main</TabHead>
<TabHead TabId="cat">Category</TabHead>

Result:
main
Main

cat
Category

Expected result:

Main

Category

@shumas Did you check this?
https://github.com/aspnet/Blazor/issues/297

@rynowak Unfortunately this does still repro in the 0.4.0 RC (with VS 15.7.3 and .NET Core 2.1.0 rtm).
It's hard to understand why it's still happening, because we have a unit test for it (SupportsDataDashAttributesWithCSharpExpressionValues) where it does work correctly and passes. But if you paste the same code from that unit test into a real project, the compiled result is not correct. Somehow the unit test isn't reflecting the real behavior.
Ryan, would you be able to look into this before we release? Maybe it's something we can put in a quick fix for, or failing that, bring back the data_ workaround.

Fixed by https://github.com/aspnet/Blazor/pull/949

Thanks for the report @shumas


Sync commits from release-2023a branch to rhods-1.34

Sync commits from release-2023a branch to rhods-1.34
Related-to: https://github.com/opendatahub-io/notebooks/issues/96

Merging this PR to keep the RHODS-1.34 release.


[3.2.12] Filein/fileout need to behave correctly in the presence of Characters [128..254] and [255+]

Filein and fileout both need to be aware of characters over 127 and handle them correctly (for some value of correct).  There are issues, although details are not resolved since both unix and jadeite/dolphin are prone to lying about extended characters.
Given a method such as
method: ClassWithIVs
allCharacters
^ '( ) * +  - / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G
H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f
g h i j k l m n o p q r s t u v w x y z { | } ~   ¡ ¢ £ ¤ ¥ ¦ § ¨ © ª
« ¬  ® ¯ ° ± ² ³ ´ µ ¶ · ¸ ¹ º » ¼ ½ ¾ ¿ À Á Â Ã Ä Å Æ Ç È É
Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß à á â ã ä å æ
ç è é ê ë ì í î ï ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ  ı Ł ł Œ œ Š š '
%

When loaded via topaz into the image and viewed in Jadeite, it displays like this:

Fileout from Jadeite is garbled, but writing to the project creates (what look like) correct results

Filing in from Jadeite however looks like this:

Fileout from Jadeite looks pretty good, but writing to the project, the source is garbled.

We do not need full support for filein/fileout of extended characters, but we do need to make sure we can avoid corruption introduced during filein; if nothing else, make it an error to attempt to filein (or fileout?) code with extended characters.  The filein/out can still be done in topaz and the display is (holding nose) reasonable.

This is on hold pending resolution of GsFileIn does not handle utf8 files


docs: minor fixes for some code examples in the book

Fixed two errors in the code examples while studying the documentation.

Missing the variable names in docs/book/src/interlude_projecting_children.md.
Referencing to a non-existing variable in docs/book/src/testing.md.

Thanks!


Disabling cancel button when input is readonly

@peolivei2 can you add a changelog and package version update?


Refactor verbForEndpoint to rest library

This PR is a simple refactor that moves the verbForEndpoint method into the rest library, since there is nothing openapi3 specific about this mapping.

I'm not entirely sure about this. REST doesn't define a mapping of operation names to verbs, so it's really just some opinion about what to do with unannotated operations. It's also missing a lot of things that I'm not sure if/how we'd support in rest in a general/globally applicable way, e.g. list and createOrUpdate.

True but there is a relatively standard mapping used in the industry.  This is not requiring every emitter to adhere to this mapping — it just establishes a default mapping that each emitter could change or completely ignore if desired.

Closing for now until design issue is resolved.


Doesn't preserve directory structure

Hi, it seems that running gulp.src("package/**").tar("package.tar") over this tree:
package
|-- a-file
`-- directory
    `-- nested-file

…results in:
package.tar
|-- a-file
`-- nested-file

I can't find a way to preserve the structure, like so:
package.tar
|-- a-file
`-- directory
    `-- nested-file

Sorry, false alarm. I seem to be doing something wrong.

since you are DenverCoder9 and me cueball:

here the answer:
gulp.src(..., { base: '.' })

:D wow, thanks! Who would have thought...

By the way – just for the record:
I wanted to use gulp-tar to manually pack an npm package – a bit like reinventing the wheel in fact. So though npm itself isn't particularly nice to work with programatically, I ended up using it: https://docs.npmjs.com/api/pack .


refactor(react-hooks): filter method

Codecov Report

Merging #152 (3ff985a) into main (56e3880) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main     #152   +/-   ##
=======================================
  Coverage   87.07%   87.07%
=======================================
  Files          45       45
  Lines         681      681
  Branches       92       92
=======================================
  Hits          593      593
  Misses         76       76
  Partials       12       12

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


[stable/wordpress] Fixed typo in _helpers.tpl

Signed-off-by: Yu-Hung Ou<EMAIL_ADDRESS>
What this PR does / why we need it:
Fixed typo in _helpers.tpl, so that helper template can be picked up correctly in deployment.yaml L210
Which issue this PR fixes

No issue opened.

Special notes for your reviewer:
Checklist
[Place an '[x]' (no spaces) in all applicable fields. Please remove unrelated fields.]

[x] DCO signed
[x] Chart Version bumped
[x] Variables are documented in the README.md

/ok-to-test
/lgtm


Update how-to-connect-health-agent-install.md

The "Read more about check outbound connectivity" link should go here
https://docs.microsoft.com/en-us/azure/active-directory/hybrid/how-to-connect-health-agent-install#test-connectivity-to-azure-ad-connect-health-service

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

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

Verified link correction. Thank you!


Online By HiTechNinja

Song Name
Online
Artist Name
HiTechNinja
Source
Youtube
Youtube Link
LOPL0jID8sN5p24Q
Direct File Link
No response
Song ID
735623
Start Offset [ms]
0
Extra
No response

reject
invalid YouTube link


Update out-of-date tdr library dependencies

Rather than making you do it, I've just committed the changes I made to test it. Feel free to overwrite them.

Looks good. Thanks for doing that. Should've checked the library was needed. I can't approve this, so you will have to.


No way to call the REST without using the ucdclient?

Hello,
I am trying to run a Groovy script on Jenkins Groovy Post Build plugin but I am not able to make a REST call to UCD using Basic Auth. In the examples here, I see it's using ucdclient but is it possible to call the REST without having to use ucdclient?
Thank you in advance.
Regards
Ivkaran Singh

The uDeployRestClient is used within our plugins to simply these calls. However, this client is not required.
The IBM Knowledge Center documentation shows how to make these calls through a simple curl command.
How to Use Docs: https://www.ibm.com/support/knowledgecenter/en/SS4GSP_6.1.0/com.ibm.udeploy.reference.doc/topics/rest_api_ref_using.html
I would first confirm you can get this running on the command line.
I would then follow this documentation to run a curl command via Groovy script: http://mrhaki.blogspot.com/2008/12/using-groovy-to-invoke-curl-and-use.html. It's one of the quickest way to get the curl command running.
Good luck!


Accessibility md-select aria-labelledby

Bug:
aria-labelledby shows up in DOM even if it has no value
What is the expected behavior?
aria-labelledby should never be empty, if there is no labelledby value then it should not be in the DOM
What is the current behavior?
aria-labelledby shows up in the DOM even if empty
What are the steps to reproduce?
http://embed.plnkr.co/cLXRzvn2uWQ5y5YmiU8L/
inspect select, notice empty aria-labelledby
What is the use-case or motivation for changing an existing behavior?
Currently throws accessibility issues
Which versions of Angular, Material, OS, TypeScript, browsers are affected?
"@angular/material": "2.0.0-beta.8"
Is there anything else we should know?

Closing since the associated PR was merged.


unable to perform ssl handshake: wrong version number : 336130315

My Environment

ArangoDB Version: 3.3.11
Storage Engine:  MMFiles
Deployment Mode: Master/Slave
Deployment Strategy: systemd
Configuration:
Infrastructure:  ESXi
Operating System: RHEL 7.4
Used Package: RedHat .rpm

Component, Query & Data
Affected feature: Multiple appearance in the Log

AQL query (if applicable):
AQL explain (if applicable):

Dataset:

Replication Factor & Number of Shards (Cluster only):

Steps to reproduce

yum localinstall -y arangodb3-debuginfo-3.3.11-1.x86_64.rpm
yum localinstall -y arangodb3-3.3.11-1.x86_64.rpm
systemctl disable arangodb3.service

vi /etc/arangodb3/arangod.conf
endpoint = ssl://<IP_ADDRESS>:8529
[ssl]
keyfile = /opt/secure/mykey.pem
protocol = 5
session-cache = true

systemctl start arangodb3 ; systemctl status arangodb3

Problem:
Errors in both Master/Slave logs
Expected result: No Error

Hi @poladeji,
Thanks for opening the issue. I tried setting up the Master/Slave replication with above mentioned steps and could not reproduce any error. Can you please let us know the following

How do you generate the mykey.pem file? Did you follow the procedure mentioned in the documentation?
Can you also please attach the Master and Slave logs.

Thanks!

Hi @poladeji,
how are things going? Did you manage to resolve the problem?
It would be great if you could share the requested information so that we can investigate this issue.


Can we trace new Thread() or ThreadPool?

We don't have a general out-of-box solution for it yet.
Propagating traces across thread boundaries are currently handled by plugins only for their respective libraries.


IndexError: list index out of range

When trying to retrieve stats in Python 3.7.3, I get the following IndexError:
>>> from retrieval import get_data
>>> df = get_data(fname='stats.html')
Found 3 entries in table.
multiprocessing.pool.RemoteTraceback:
"""
Traceback (most recent call last):
  File "/usr/local/Cellar/python/3.7.3/Frameworks/Python.framework/Versions/3.7/lib/python3.7/multiprocessing/pool.py", line 121, in worker
    result = (True, func(*args, **kwds))
  File "/Users/user/Dropbox/Projects/Test/Stats/retrieval.py", line 128, in process_entry
IndexError: list index out of range
"""

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/user/Dropbox/Projects/Test/Stats/retrieval.py", line 227, in get_data
    return process_in_parallel(t, processes=processes)
  File "/Users/user/Dropbox/Projects/Test/Stats/retrieval.py", line 174, in process_in_parallel
    for i, r in enumerate(pool.imap_unordered(process_entry, table_rows_str)):
  File "/usr/local/Cellar/python/3.7.3/Frameworks/Python.framework/Versions/3.7/lib/python3.7/multiprocessing/pool.py", line 748, in next
    raise value
IndexError: list index out of range

Line 128 in retrieval is:
tags = [li.text for li in tags[0].find_all('li')]

Any idea what the problem might be?

not the most fun answer but the best way to find out what the problem is to learn to debug
import pdb; pdb.set_trace()

you can check the axis by panda query and assign it to a variable


chore: Remove marked-terminal version pin

Details
Now that the ADO extension supports Node 16, we can remove the dependabot version pin on marked-terminal and update it to the latest version.
Motivation
Keep packages up-to-date.
Context

Pull request checklist

[n/a] Addresses an existing issue: Fixes #0000
[n/a] Added relevant unit test for your changes. (yarn test)
[n/a] Verified code coverage for the changes made. Check coverage report at: <rootDir>/test-results/unit/coverage
[x] Ran precheckin (yarn precheckin)
[x] Described how this PR impacts both the ADO extension and the GitHub action

Codecov Report

Merging #1274 (c2ef23d) into main (c5b0a96) will not change coverage.
The diff coverage is n/a.

:exclamation: Current head c2ef23d differs from pull request most recent head cf74adb. Consider uploading reports for the commit cf74adb to get more accurate results

@@           Coverage Diff           @@
##             main    #1274   +/-   ##
=======================================
  Coverage   91.04%   91.04%
=======================================
  Files          62       62
  Lines        1586     1586
  Branches      200      200
=======================================
  Hits         1444     1444
  Misses        142      142

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

I tested this branch with an ad-hoc deployment and it build successfully.


Security issue

Hi.
When I run example.cr from the repo, I'm able to view all filesystem not only root directory.
crystal example.cr -- 8090 /Users/admin/crystal/CrystalFTP

ftp localhost - 8090
ftp> cd /usr
ftp> ls

Does the RFC959 specify something about this?
Maybe should we let the user decide if they want to expose all their filesystem or only the root directory, with an extra argument in FTPServer constructor

Maybe should we let the user decide if they want to expose all their filesystem or only the root directory, with an extra argument in FTPServer constructor

👍


Tweak header logo sizes

What is the context of this PR?
Header census logo changes
How to review
Check census header logo looks correct at all view width sizes

 Adjust census logo size at breakpoints

 Adjust census logo size at breakpoints

Think we need a min-height or something on the header, so it doesn't change height between button/no button

Think we need a min-height or something on the header, so it doesn't change height between button/no button

Need to reduce size of NISRA logo on mobile

Need to reduce size of NISRA logo on mobile

Census logo isn't left aligned

Census logo isn't left aligned

The height of the blue header banner still different between these two examples...

The height of the blue header banner still different between these two examples...

The height of the header__top should change at the same breakpoint the ons logo switches from stacked to single line (at 399px not 500px)

The height of the header__top should change at the same breakpoint the ons logo switches from stacked to single line (at 399px not 500px)

Spacing looks off between the title and tagline.

Spacing looks off between the title and tagline.

This may have been a design decision but at this breakpoint there's either too much padding or the site title is too small... (@jrbarnes9 )

This may have been a design decision but at this breakpoint there's either too much padding or the site title is too small... (@jrbarnes9 )


Discord Bot

Description
Create a new Discord Server for Vike, and use/create a Discord bot to teach users about https://github.com/brillout/vite-plugin-ssr/discussions/526.
Having a cozy firechat-like place to casually chit-chat about general topics could be lovely. Example use cases:

Show us what you're building (startup, dev tool, Vike extension, etc.)
Philosophical discussions about the future of programming and/or Vike (e.g. vertical integration vs do-one-thing-do-it-well)
News
Etc.

It's paramount that users don't ask for help in that space. Therefore I think a bot is necessary to to prominently show the rules of https://github.com/brillout/vite-plugin-ssr/discussions/526 with maybe (if possible?) a checkbox "I've read the rules" that users have to check before being able to start chatting.
Contribution much welcome to point us to a Discord bot that does this, or maybe implement one? I'm unfamiliar with Discord's bot API.

I express interest in such a bot for inlang

Closing as we don't need this anymore.


build: Bundling is extremely slow and doesn't support debugging

Bundling has been challenging for this extension. Currently I am not happy with rollup.js as the bundler as the real-time updates are very slow, require extra heap memory for node (see ./package.json and still do not support debugging. Options for bundlers and current status is below. It is possible that the mermaid.js issues will be resolved if the root cause of  https://github.com/parcel-bundler/parcel/issues/8935 is fixed in mermaid.
Rollup.js

Con: Very slow for real-time updates
Con: Extra heap space needed
Con: debugging / sourcemaps do not work: https://github.com/crxjs/chrome-extension-tools/issues/691

Parcel

Pro: simple, minimal API and dependencies
Con: Fails to bundle mermaid.js correctly: https://github.com/parcel-bundler/parcel/issues/8935

Webpack

Pro: most popular / documented / well supported of the options it seems
Con: Fails to bundle mermaid.js correctly, as tested at https://github.com/dwmkerr/parcel-mermaid-import-issue

Webpack

Pro: very simple setup
Pro: very fast reload
Pro: bundles mermaid.js without issues
Con: Sourcemaps don't seem to work (https://github.com/dwmkerr/parcel-mermaid-import-issue)
Con: Build seems to fail with stack overflow, suggesting memory/perf issues: https://github.com/dwmkerr/parcel-mermaid-import-issue

Note: the latest version of the code using webpack seems to work properly


Incorrect Return Type Inferred for Value Objects with Singular and Multiple Attributes

Describe the bug
When a value object has only one attribute, the current behavior leads to an incorrect inference of the return type. Instead of returning an object with the attribute value directly, the return type is inferred as undefined. Conversely, when the value object has multiple attributes, the return type correctly infers an object with key-value pairs representing the attributes.
To Reproduce

Define a value object class inheriting from ValueObject.
Ensure the value object class has a constructor accepting an interface defining its attributes.
Implement a factory method within the value object class to create instances.
Create instances of the value object class with singular and multiple attributes.
Retrieve the object representation using the toObject method.

Expected behavior
When the value object has a singular attribute, the toObject method should directly return the attribute value. When the value object has multiple attributes, the toObject method should return an object with key-value pairs representing the attributes.
Actual Behavior:
Currently, when the value object has a singular attribute, the toObject method incorrectly infers the return type as undefined. When the value object has multiple attributes, the toObject method correctly returns an object with key-value pairs.
Screenshots

// Example demonstrating the issue
const vo = Street.create('10 Avenue').value();
const street = vo.toObject();
street.value // returns undefined, whereas it should return '10 Avenue'

When multiple keys

// Example demonstrating correct behavior
const vo = Address.create({ city: 'Rio de Janeiro', street: 'Av Copacabana' }).value();
const payload = vo.toObject();
payload.city // returns 'Rio de Janeiro'
payload.street // returns 'Av Copacabana'

Lib Version
rich-domain v1.22.1
Proposed Solution:
Adjust the implementation of the toObject method in the ValueObject class to correctly infer the return type based on the number of attributes present in the value object. If the value object has only one attribute, return the attribute value directly; if it has multiple attributes, return an object with key-value pairs representing the attributes.

https://github.com/4lessandrodev/rich-domain/commit/0a3d7ca907ff23c978e59d057c640d980983fb4e

#145

I mean,
type Props = {
  value: string
}
class Street extends ValueObject<Props> {}

it is not a primitive value, its an object with a key named "value" which has a primitive value

const street = new Street({ value: 'RUA A' })
const obj = street.toObject()

Result will be an object like:
{ value: 'RUA A' }

As supposed to be, am I wrong?
As I understand, an primitive value would be like
class Street extends ValueObject<string> {}
const street = new Street('RUA A' )
const obj = street.toObject()

Result will be like:
   // string

Ok, i get it now.
Auto mapper implementation remove { value: any } property of serialized object.

I think it's a design decision (looks like both are acceptable)
I didn't realized that auto mapper implementation removes object with single key.
Maybe that is the expected behavior, if so, we'll need to change the AutoMapperSerialize to support it.
BUT
If we have something like:
type PersonProps= {
   fullName: string
}
export class Person extends ValueObject<PersonProps> {}

const person = new Person({ fullName: 'John Doe' });
const result = person.toObject();

Result will be type string instead of { fullName: string } .
let me know your thoughts.
Solution for stopping transform single key objects into primitives

I tested some possibilities of conditional types and realized that it's not possible to perform this type of type checking considering the quantity of properties of an object.
So, for the sake of typing, I see that the best decision is:

[ ] Validate the methods of the value object to support primitive types without errors.
[ ] Adjust the value object class to have better support for primitive types as you mentioned:

class Street extends ValueObject<string> {}

[ ] Remove get and set from the value object class, as they are already marked as deprecated.
[ ] Adjust the type of the validation function so that if the generic type is primitive, it receives that primitive type instead of the key of an object.
[ ] Remove the convention of shortening the path of the value object when it has only one attribute and release a version that will break current implementations.


Add Prefixer sub-prefixes support

The current Prefixer trait has only a prefix() method that returns a "full prefix", i. e., for a given composite PrimaryKey, a prefix that is composed by all but the last element of the composite key.
When ranging over composite keys, we would like to be able to select the keys that are part of the (fixed) prefix. That way, we can range over, by example, all the ages related to a fixed name. As there can be multiple names with the same age, we would typically use a MultiIndex, disambiguating entries by (unique) primary key, plus, using a prefix that fixes only the name. That second part (using a prefix for only the first element of the key, in a triple key) is currently unsupported.
For some context, see #213, and https://github.com/CosmWasm/cosmwasm-plus/pull/213#discussion_r551976227 in particular.
Creating this issue to track possible implementations for this.

First idea that comes to mind is to add a prefix1() method to the Prefixer trait, and implement it for all the currently supported types.
Advantages:

Simple. Minimal modifications are required.

Disadvantages:

Maybe a little unclear (though that can be fixed by documentation).
Still requires passing the full K::Prefix argument to the prefix1() wrapper.

Variants / Improvements:

Add a subprefix() method, with an int value indicating desired number of prefix elements. May be difficult to implement in a generic way.
Add a PrefixSub1 type, and implement a prefix1() wrapper for it. This adds more clutter, but may be a good balance between usability and simplicity.

First idea that comes to mind is to add a prefix1() method to the Prefixer trait, and implement it for all the currently supported types.
Advantages:

Simple. Minimal modifications are required.

Disadvantages:

Maybe a little unclear (though that can be fixed by documentation).
Still requires passing the full K::Prefix argument to the prefix1() wrapper.

Variants / Improvements:

Add a subprefix() method, with an int value indicating desired number of prefix elements. May be difficult to implement in a generic way.
Add a PrefixSub1 type, and implement a prefix1() wrapper for it. This adds more clutter, but may be a good balance between usability and simplicity.

A possible alternative would be to use (abuse) tuples notation, using nesting for indicating the number of desired (sub-)prefixes. By example, (T, (U, V)) would be a triple key, but with a one element prefix, whereas ((T, U), V) (or directly (T, U, V)) will still be a triple key, but with a 2-element prefix.
Advantages:

No need for extra methods.

Disadvantages:

May be difficult to implement / generalize.
Syntax is a little obscure / indirect.

A possible alternative would be to use (abuse) tuples notation, using nesting for indicating the number of desired (sub-)prefixes. By example, (T, (U, V)) would be a triple key, but with a one element prefix, whereas ((T, U), V) (or directly (T, U, V)) will still be a triple key, but with a 2-element prefix.
Advantages:

No need for extra methods.

Disadvantages:

May be difficult to implement / generalize.
Syntax is a little obscure / indirect.

@ethanfrey, what do you think? I can present a couple impls for this, and we can discuss them over the code if you like.
By the way, this is required for the MultiIndex impl (see #211), but only if we ever want to range() over sub-prefixes.
That was the original use case / motivation, but that use case has since been deprecated (when we moved group updates to the cw4-group contract).
So, this is low priority, and more of a learning exercise / for the sake of completeness stuff for me at this point.

@ethanfrey, what do you think? I can present a couple impls for this, and we can discuss them over the code if you like.
By the way, this is required for the MultiIndex impl (see #211), but only if we ever want to range() over sub-prefixes.
That was the original use case / motivation, but that use case has since been deprecated (when we moved group updates to the cw4-group contract).
So, this is low priority, and more of a learning exercise / for the sake of completeness stuff for me at this point.

Interesting issue. I am deep trying to get wasmd 0.14 out and our testnet updated.
When I have time to look over all the prefix stuff, and open/merged PRs I can give real feedback.
One first glance Using ((T, U), V), (T, (U, V)) or (T, U, V) in the definition to enable one particular prefix search seems interesting. I think (T, (U, V)) actually encodes the same as (T, U, V), but ((T, U), V) differently. But this is not a huge issue as long as you fix one before deploying the contract.

Interesting issue. I am deep trying to get wasmd 0.14 out and our testnet updated.
When I have time to look over all the prefix stuff, and open/merged PRs I can give real feedback.
One first glance Using ((T, U), V), (T, (U, V)) or (T, U, V) in the definition to enable one particular prefix search seems interesting. I think (T, (U, V)) actually encodes the same as (T, U, V), but ((T, U), V) differently. But this is not a huge issue as long as you fix one before deploying the contract.

OK, I'll give the ((T, U), V) idea a shot.
When you have some time, please take a look at #215, where I've implemented a variant of the first approach presented above.

OK, I'll give the ((T, U), V) idea a shot.
When you have some time, please take a look at #215, where I've implemented a variant of the first approach presented above.

OK, I'll give the ((T, U), V) idea a shot.

Please don't work on this more. I need to review like 4 PRs of yours first.

OK, I'll give the ((T, U), V) idea a shot.

Please don't work on this more. I need to review like 4 PRs of yours first.

Closed by #215

Closed by #215


Add harfbuzz feature

This revives alacritty/alacritty#2677, adding a shape method to FreeTypeRasterizer when the feature flag is enabled. Ideally it would be on the Rasterizer trait, but I haven't learned how to add macos and windows support yet.
EDIT: note that the CI is not ran with the feature enabled at all. Let me know if I should change CI to also run harfbuzz feature enabled.

Okay, looks like the best approach is to make some fields for FreeTypeRasterizer public to allow shaping to be done at alacritty's side. As well as changing storing characters to GlyphIds.


Invalid Independent Set

Invalid independent set
In the following case the output set is not independent:
var edges = [[62,0],[1,1],[37,2],[0,3],[64,3],[29,4],[43,5],[10,6],[4,7],[6,10],[8,12],[8,59],[16,13],[65,14],[9,15],[9,17],[10,20],[11,21],[12,16],[12,18],[13,15],[14,16],[13,17],[14,17],[15,19],[13,20],[16,21],[13,22],[17,25],[17,55],[54,24],[18,25],[19,58],[20,27],[23,27],[24,27],[21,34],[21,35],[22,28],[23,30],[49,28],[24,30],[24,31],[24,32],[58,33],[25,37],[25,45],[25,54],[26,36],[59,36],[26,60],[27,45],[27,54],[31,38],[29,39],[29,40],[42,41],[30,64],[32,50],[33,42],[44,42],[34,43],[36,43],[48,43],[46,44],[36,45],[48,45],[53,45],[41,46],[38,47],[39,47],[41,48],[45,49],[43,50],[43,51],[44,62],[45,51],[46,52],[47,53],[48,53],[47,54],[48,54],[50,55],[51,56],[52,57],[58,59],[59,60],[60,61],[62,63],[63,63]];

var indepSet = require('bipartite-independent-set');
var maxIS = indepSet(66, 65, edges);

//OUTPUT IS:
//maxIS = [[0,2,3,5,7,17,18,22,27,28,35,36,38,39,40,47,48,49,50,53,55,56,57,61,64],[0,1,2,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,26,27,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,46,48,49,50,51,52,56,57,58,59,60,61,62,63,64]];

**Error:**Both vertices 48 and 43 in the output set are in the edge [48,43]. It violates independent property of the set.

Thanks for reporting this


Xavier Failed to compile Pytorch 1.4

https://github.com/mlcommons/inference_results_v1.1/blob/afc47bcbb459494574b5f888475694fc0d30bfa7/closed/NVIDIA/scripts/install_xavier_dependencies.sh#L108
Xavier dependency have following errors. The Xavier I used started from a fresh installation with only pip installed for supporting python3.8 dependencies.
c++: internal compiler error: Segmentation fault (program cc1plus)
Please submit a full bug report,
with preprocessed source if appropriate.
See <file:///usr/share/doc/gcc-7/README.Bugs> for instructions.
caffe2/CMakeFiles/torch.dir/build.make:2818: recipe for target 'caffe2/CMakeFiles/torch.dir/__/aten/src/ATen/CPUType.cpp.o' failed
make[2]: *** [caffe2/CMakeFiles/torch.dir/__/aten/src/ATen/CPUType.cpp.o] Error 4
make[2]: *** Waiting for unfinished jobs....
c++: internal compiler error: Segmentation fault (program cc1plus)
Please submit a full bug report,
with preprocessed source if appropriate.
See <file:///usr/share/doc/gcc-7/README.Bugs> for instructions.
caffe2/CMakeFiles/torch.dir/build.make:2883: recipe for target 'caffe2/CMakeFiles/torch.dir/__/aten/src/ATen/TypeDefault.cpp.o' failed
make[2]: *** [caffe2/CMakeFiles/torch.dir/__/aten/src/ATen/TypeDefault.cpp.o] Error 4

Could you try building with gcc-9.3? This comment indicates that using gcc-9.3 fixed a similar error.
If that doesn't work, here is a pre-built PyTorch tarball for Xavier. Could you try copying the contents of <untar_dir>/usr/local/lib/python3.8/dist-packages to /usr/local/lib/python3.8/dist-packages?

gcc-9.4 returns following errors. I noticed this error happened much earlier. I will try the tarball next. I understand there is prebuilt wheel for pytorch for Xavier. Hope this doesn't affect the bench results.
[ 47%] Building CXX object third_party/onnx/CMakeFiles/onnx_proto.dir/onnx/onnx-operators_onnx_torch-ml.pb.cc.o
c++: internal compiler error: Segmentation fault signal terminated program cc1plus
Please submit a full bug report,
with preprocessed source if appropriate.
See <file:///usr/share/doc/gcc-9/README.Bugs> for instructions.
c10/test/CMakeFiles/c10_intrusive_ptr_test.dir/build.make:81: recipe for target 'c10/test/CMakeFiles/c10_intrusive_ptr_test.dir/util/intrusive_ptr_test.cpp.o' failed
make[2]: *** [c10/test/CMakeFiles/c10_intrusive_ptr_test.dir/util/intrusive_ptr_test.cpp.o] Error 4
CMakeFiles/Makefile2:3362: recipe for target 'c10/test/CMakeFiles/c10_intrusive_ptr_test.dir/all' failed
make[1]: *** [c10/test/CMakeFiles/c10_intrusive_ptr_test.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[ 47%] Built target Caffe2_PROTO
[ 47%] Linking CXX static library ../../lib/libonnx_proto.a
[ 47%] Built target onnx_proto
Makefile:159: recipe for target 'all' failed
make: *** [all] Error 2
Traceback (most recent call last):
  File "setup.py", line 755, in <module>
    build_deps()
  File "setup.py", line 311, in build_deps
    build_caffe2(version=version,
  File "/tmp/pytorch/tools/build_pytorch_libs.py", line 62, in build_caffe2
    cmake.build(my_env)
  File "/tmp/pytorch/tools/setup_helpers/cmake.py", line 335, in build
    self.run(build_args, my_env)
  File "/tmp/pytorch/tools/setup_helpers/cmake.py", line 141, in run
    check_call(command, cwd=self.build_dir, env=env)
  File "/usr/lib/python3.8/subprocess.py", line 364, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['cmake', '--build', '.', '--target', 'install', '--config', 'Release', '--', '-j', '8']' returned non-zero exit status 2.

For the pre-built PyTorch. It seems it have different numpy version. Here is the error when importing torch.
import torch
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.8/dist-packages/torch/__init__.py", line 81, in <module>
    from torch._C import *
RuntimeError: module compiled against API version 0xe but this version of numpy is 0xd


Is there a way to extend the insert function in a customQueryBuilder so that it automatically handles duplicate key errors?

I'm trying to upsert instead of insert but I cant seem to get this PR to work: https://github.com/knex/knex/pull/6050
Because my tables have triggers to automatically update the created and updated timestamps on tables. so now I'm trying to extend the QueryBuilder for objection with a custom one so that all my inserts automatically handles the duplicate key error. How do I go about doing so?
I tried extending it but I end up causing and infinite loop because I'm calling .insert in the insert override. What should I be doing to handle duplicate key error for mssql?

Documentation
https://vincit.github.io/objection.js/api/query-builder/mutate-methods.html#onconflict
examples:
https://github.com/Vincit/objection.js/blob/main/tests/integration/insert.js

Documentation
https://vincit.github.io/objection.js/api/query-builder/mutate-methods.html#onconflict

Quote form the docs:

Implemented for the PostgreSQL, MySQL, and SQLite databases

My issue is for mssql:

What should I be doing to handle duplicate key error for mssql?

For anyone else who might run into this, the answer is that it doesn't work at all for mssql, you shouldn't use merge at all, and you will basically just have to cobble together a solution by yourself in the BaseModel by creating your own method.
This is what I ended up using in my BaseModel with a combination of lodash & existing objection methods:
 static async insertMerge(trx, created) {
    await this.query(trx)
      .insert(created)
      .onError(async (error, _query) => {
        // 2627 is a primary key conflict error
        if (error.number === 2627) {
          const createdIDs = created.map(l => l.id);
          const conflicts = await this.query(trx).whereIn('id', createdIDs);
          const inserts = _.differenceBy(created, conflicts, 'id');
          const updates = _.differenceBy(created, inserts, 'id');

          if (inserts.length > 0) {
            await this.query(trx).insert(inserts);
          }

          if (updates.length > 0) {
            for (const x of updates) {
              const updateData = _.omit(x, ['id', ...any other columns you want to omit like timestamps]);
              await this.query(trx).where('id', x.id).patch(updateData);
            }
          }
        } else {
          return Promise.reject(error);
        }
      });
  }


Pictures/Graphics for Resources

Resources Pictures

[ ] Open Documentation Guide @yara89
[ ] Solar Charger
[ ] ASKotec
[x] Open Workshop Space
[ ] Repair Café
[ ] GitHub Guidance
[ ] ASKradio

maybe we could add the House project in Pagirinya as Training/Educational Resource as well? what is it officially named? @intertwilight

 → Solar Charger

→ House project??

→ #ASKotec

→ Community Repair Café

→ #ASKradio

Open Documentation Guide → https://github.com/opencultureagency/Open-Documentation-Guide

it absolutely is an online/digital educational resource! in fact, it
should be a number of them ... this is the whole point of developing the
modules to then share via github. That process has been supported a bit
by the carleton people and done primarily by gama, but needs some better
guidance to make it useable in the end. It's still very much at the
beginning and basically ended (for now) in June this year
The 'official' name is #ROSHOP Responsive Open Source Housing Prototype
On 12/15/21 12:37 AM, Timm wrote:

maybe we could add the House project in Pagirinya as
Training/Educational Resource as well? what is it officially named?
@intertwilight https://github.com/intertwilight
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/ASKnetCommunity/ASKnet.Community/issues/63#issuecomment-994140474,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AJM24YMJKMUKCXDFVNTEQ5LUQ7IJZANCNFSM5KCG4RSA.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

--
r0g_agency for open culture and critical transformation gGmbH
Knobelsdorffstr. 22
14059 Berlin
+49<PHONE_NUMBER>ha
openculture.agency
tweet @intertwilight
#DefyHateNow / #DoDevDif / #peacehackcamp / #OSJUBA / #ASKotec / #Tech4Life
//  ------------------  //
'We choose to do the other things, not because they are easy, but because they are hard"
JFK, Rice University, 1961

#ROSHOP Responsive Open Source Housing Prototype

alright @MartinSchott can you add this as a resource?
the picture is above and here is the repo to link to:
https://github.com/The-Youth-Empowerment-Foundation-Adju/Pagirinya-Satellite-House

@timmwille yep, done (in development branch)


[SPARK-35159][SQL][DOCS][3.0] Extract hive format doc

What changes were proposed in this pull request?
Extract common doc about hive format for sql-ref-syntax-ddl-create-table-hiveformat.md and sql-ref-syntax-qry-select-transform.md to refer.

Why are the changes needed?
Improve doc
Does this PR introduce any user-facing change?
No
How was this patch tested?
Not need

FYI @maropu

Test build #138034 has started for PR 32378 at commit aea8845.

Test build #138034 has finished for PR 32378 at commit aea8845.

This patch passes all tests.
This patch merges cleanly.
This patch adds the following public classes (experimental):
    SERDE serde_class [ WITH SERDEPROPERTIES (k1=v1, k2=v2, ... ) ]

Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/138034/

Kubernetes integration test starting
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/42553/

Kubernetes integration test status failure
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/42553/

Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder-K8s/42553/

Merged to branch-3.0.