Skip to content

Commit a24fe36

Browse files
authored
Cherry picks for v2.10.20 (#5843)
Includes: - #5841 - #5836 - #5837
2 parents e7c88e8 + 2b625ce commit a24fe36

7 files changed

Lines changed: 90 additions & 45 deletions

File tree

.github/actions/nightly-release/action.yaml

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,9 @@ runs:
3131
go-version: "${{ inputs.go }}"
3232

3333
- name: goreleaser
34-
uses: goreleaser/goreleaser-action@v5
34+
# Use commit hash here to avoid a re-tagging attack, as this is a third-party action
35+
# Commit 5742e2a039330cbb23ebf35f046f814d4c6ff811 = tag v5
36+
uses: goreleaser/goreleaser-action@5742e2a039330cbb23ebf35f046f814d4c6ff811
3537
with:
3638
workdir: "${{ inputs.workdir }}"
3739
version: latest
@@ -49,9 +51,9 @@ runs:
4951
shell: bash
5052
run: |
5153
NDATE=$(date +%Y%m%d)
52-
54+
5355
docker tag synadia/nats-server:nightly-${NDATE} synadia/nats-server:${{ inputs.label }}-${NDATE}
5456
docker tag synadia/nats-server:nightly-${NDATE} synadia/nats-server:${{ inputs.label }}
55-
57+
5658
docker push synadia/nats-server:${{ inputs.label }}-${NDATE}
5759
docker push synadia/nats-server:${{ inputs.label }}

.github/workflows/cov.yaml

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,17 @@ jobs:
3333
set +e
3434
3535
- name: Convert coverage.out to coverage.lcov
36-
uses: jandelgado/gcov2lcov-action@v1.0.9
36+
# Use commit hash here to avoid a re-tagging attack, as this is a third-party action
37+
# Commit c680c0f7c7442485f1749eb2a13e54a686e76eb5 = tag v1.0.9
38+
uses: jandelgado/gcov2lcov-action@c680c0f7c7442485f1749eb2a13e54a686e76eb5
3739
with:
3840
infile: acc.out
3941
working-directory: src/github.com/nats-io/nats-server
4042

4143
- name: Coveralls
42-
uses: coverallsapp/github-action@v2
44+
# Use commit hash here to avoid a re-tagging attack, as this is a third-party action
45+
# Commit 3dfc5567390f6fa9267c0ee9c251e4c8c3f18949 = tag v2
46+
uses: coverallsapp/github-action@3dfc5567390f6fa9267c0ee9c251e4c8c3f18949
4347
with:
4448
github-token: ${{ secrets.github_token }}
4549
file: src/github.com/nats-io/nats-server/coverage.lcov

server/certstore/certstore_windows.go

Lines changed: 27 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -115,19 +115,38 @@ var (
115115
winMyStore = winWide("MY")
116116

117117
// These DLLs must be available on all Windows hosts
118-
winCrypt32 = windows.MustLoadDLL("crypt32.dll")
119-
winNCrypt = windows.MustLoadDLL("ncrypt.dll")
118+
winCrypt32 = windows.NewLazySystemDLL("crypt32.dll")
119+
winNCrypt = windows.NewLazySystemDLL("ncrypt.dll")
120120

121-
winCertFindCertificateInStore = winCrypt32.MustFindProc("CertFindCertificateInStore")
122-
winCryptAcquireCertificatePrivateKey = winCrypt32.MustFindProc("CryptAcquireCertificatePrivateKey")
123-
winNCryptExportKey = winNCrypt.MustFindProc("NCryptExportKey")
124-
winNCryptOpenStorageProvider = winNCrypt.MustFindProc("NCryptOpenStorageProvider")
125-
winNCryptGetProperty = winNCrypt.MustFindProc("NCryptGetProperty")
126-
winNCryptSignHash = winNCrypt.MustFindProc("NCryptSignHash")
121+
winCertFindCertificateInStore = winCrypt32.NewProc("CertFindCertificateInStore")
122+
winCryptAcquireCertificatePrivateKey = winCrypt32.NewProc("CryptAcquireCertificatePrivateKey")
123+
winNCryptExportKey = winNCrypt.NewProc("NCryptExportKey")
124+
winNCryptOpenStorageProvider = winNCrypt.NewProc("NCryptOpenStorageProvider")
125+
winNCryptGetProperty = winNCrypt.NewProc("NCryptGetProperty")
126+
winNCryptSignHash = winNCrypt.NewProc("NCryptSignHash")
127127

128128
winFnGetProperty = winGetProperty
129129
)
130130

131+
func init() {
132+
for _, d := range []*windows.LazyDLL{
133+
winCrypt32, winNCrypt,
134+
} {
135+
if err := d.Load(); err != nil {
136+
panic(err)
137+
}
138+
}
139+
for _, p := range []*windows.LazyProc{
140+
winCertFindCertificateInStore, winCryptAcquireCertificatePrivateKey,
141+
winNCryptExportKey, winNCryptOpenStorageProvider,
142+
winNCryptGetProperty, winNCryptSignHash,
143+
} {
144+
if err := p.Find(); err != nil {
145+
panic(err)
146+
}
147+
}
148+
}
149+
131150
type winPKCS1PaddingInfo struct {
132151
pszAlgID *uint16
133152
}

server/jetstream_cluster_4_test.go

Lines changed: 19 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2913,27 +2913,26 @@ func TestJetStreamClusterKeyValueLastSeqMismatch(t *testing.T) {
29132913
nc, js := jsClientConnect(t, c.randomServer())
29142914
defer nc.Close()
29152915

2916-
kv, err := js.CreateKeyValue(&nats.KeyValueConfig{
2917-
Bucket: "mismatch",
2918-
Replicas: 3,
2919-
})
2920-
require_NoError(t, err)
2921-
2922-
revision, err := kv.Create("foo", []byte("1"))
2923-
require_NoError(t, err)
2924-
require_Equal(t, revision, 1)
2916+
for _, r := range []int{1, 3} {
2917+
t.Run(fmt.Sprintf("R=%d", r), func(t *testing.T) {
2918+
kv, err := js.CreateKeyValue(&nats.KeyValueConfig{
2919+
Bucket: fmt.Sprintf("mismatch_%v", r),
2920+
Replicas: r,
2921+
})
2922+
require_NoError(t, err)
29252923

2926-
revision, err = kv.Create("bar", []byte("2"))
2927-
require_NoError(t, err)
2928-
require_Equal(t, revision, 2)
2924+
revision, err := kv.Create("foo", []byte("1"))
2925+
require_NoError(t, err)
2926+
require_Equal(t, revision, 1)
29292927

2930-
// Now delete foo from sequence 1.
2931-
// This needs to be low level remove (or system level) to test the condition we want here.
2932-
err = js.DeleteMsg("KV_mismatch", 1)
2933-
require_Error(t, err)
2928+
revision, err = kv.Create("bar", []byte("2"))
2929+
require_NoError(t, err)
2930+
require_Equal(t, revision, 2)
29342931

2935-
// Now say we want to update baz but iff last was revision 1.
2936-
_, err = kv.Update("baz", []byte("3"), uint64(1))
2937-
require_Error(t, err)
2938-
require_Equal(t, err.Error(), `nats: wrong last sequence: 0`)
2932+
// Now say we want to update baz but iff last was revision 1.
2933+
_, err = kv.Update("baz", []byte("3"), uint64(1))
2934+
require_Error(t, err)
2935+
require_Equal(t, err.Error(), `nats: wrong last sequence: 0`)
2936+
})
2937+
}
29392938
}

server/pse/pse_windows.go

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,17 +25,33 @@ import (
2525
"syscall"
2626
"time"
2727
"unsafe"
28+
29+
"golang.org/x/sys/windows"
2830
)
2931

3032
var (
31-
pdh = syscall.NewLazyDLL("pdh.dll")
33+
pdh = windows.NewLazySystemDLL("pdh.dll")
3234
winPdhOpenQuery = pdh.NewProc("PdhOpenQuery")
3335
winPdhAddCounter = pdh.NewProc("PdhAddCounterW")
3436
winPdhCollectQueryData = pdh.NewProc("PdhCollectQueryData")
3537
winPdhGetFormattedCounterValue = pdh.NewProc("PdhGetFormattedCounterValue")
3638
winPdhGetFormattedCounterArray = pdh.NewProc("PdhGetFormattedCounterArrayW")
3739
)
3840

41+
func init() {
42+
if err := pdh.Load(); err != nil {
43+
panic(err)
44+
}
45+
for _, p := range []*windows.LazyProc{
46+
winPdhOpenQuery, winPdhAddCounter, winPdhCollectQueryData,
47+
winPdhGetFormattedCounterValue, winPdhGetFormattedCounterArray,
48+
} {
49+
if err := p.Find(); err != nil {
50+
panic(err)
51+
}
52+
}
53+
}
54+
3955
// global performance counter query handle and counters
4056
var (
4157
pcHandle PDH_HQUERY

server/stream.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4400,7 +4400,7 @@ func (mset *stream) processJetStreamMsg(subject, reply string, hdr, msg []byte,
44004400
if err == ErrStoreMsgNotFound {
44014401
if seq == 0 {
44024402
fseq, err = 0, nil
4403-
} else {
4403+
} else if mset.isClustered() {
44044404
// Do not bump clfs in case message was not found and could have been deleted.
44054405
var ss StreamState
44064406
store.FastState(&ss)

server/sysmem/mem_windows.go

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,23 @@
1717
package sysmem
1818

1919
import (
20-
"syscall"
2120
"unsafe"
21+
22+
"golang.org/x/sys/windows"
2223
)
2324

25+
var winKernel32 = windows.NewLazySystemDLL("kernel32.dll")
26+
var winGlobalMemoryStatusEx = winKernel32.NewProc("GlobalMemoryStatusEx")
27+
28+
func init() {
29+
if err := winKernel32.Load(); err != nil {
30+
panic(err)
31+
}
32+
if err := winGlobalMemoryStatusEx.Find(); err != nil {
33+
panic(err)
34+
}
35+
}
36+
2437
// https://docs.microsoft.com/en-us/windows/win32/api/sysinfoapi/ns-sysinfoapi-memorystatusex
2538
type _memoryStatusEx struct {
2639
dwLength uint32
@@ -30,16 +43,8 @@ type _memoryStatusEx struct {
3043
}
3144

3245
func Memory() int64 {
33-
kernel32, err := syscall.LoadDLL("kernel32.dll")
34-
if err != nil {
35-
return 0
36-
}
37-
globalMemoryStatusEx, err := kernel32.FindProc("GlobalMemoryStatusEx")
38-
if err != nil {
39-
return 0
40-
}
4146
msx := &_memoryStatusEx{dwLength: 64}
42-
res, _, _ := globalMemoryStatusEx.Call(uintptr(unsafe.Pointer(msx)))
47+
res, _, _ := winGlobalMemoryStatusEx.Call(uintptr(unsafe.Pointer(msx)))
4348
if res == 0 {
4449
return 0
4550
}

0 commit comments

Comments
 (0)