[#3423] add redis cluster.

#3423

Codecov Report

Merging #3452 into master will increase coverage by 0.01%.
The diff coverage is 55.26%.

@@            Coverage Diff             @@
##           master    #3452      +/-   ##
==========================================
+ Coverage   40.42%   40.43%   +0.01%
==========================================
  Files        2162     2156       -6
  Lines       70612    70587      -25
  Branches     9757     9753       -4
==========================================
- Hits        28543    28540       -3
+ Misses      39323    39312      -11
+ Partials     2746     2735      -11

Impacted Files
Coverage Δ

...npoint/web/service/TransactionInfoServiceImpl.java
0% <0%> (ø)
:arrow_up:

...r/ProtocolSendCommandAndReadMethodInterceptor.java
0% <0%> (ø)
:arrow_up:

...rcorp/pinpoint/plugin/redis/RedisTypeProvider.java
100% <100%> (ø)
:arrow_up:

...n/redis/interceptor/AttachEndPointInterceptor.java
23.33% <11.11%> (ø)

...ugin/redis/interceptor/SetEndPointInterceptor.java
33.33% <16.66%> (ø)

...t/web/vo/callstacks/AnnotationRecordFormatter.java
0.7% <33.33%> (-0.7%)
:arrow_down:

...rcorp/pinpoint/plugin/redis/RedisPluginConfig.java
57.89% <50%> (+11.22%)
:arrow_up:

...ugin/redis/interceptor/JedisMethodInterceptor.java
75.75% <80%> (+3.03%)
:arrow_up:

...m/navercorp/pinpoint/plugin/redis/RedisPlugin.java
81.72% <82.08%> (+7%)
:arrow_up:

...corp/pinpoint/web/vo/callstacks/RecordFactory.java
8.87% <9.37%> (-1.66%)
:arrow_down:

... and 17 more

Continue to review full report at Codecov.

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


GitLab(CE) plugin

With abilities to login and search/add users.

Thank you very much for the contribution. I'm going to push out a release soon.


I/O operation on closed file

What happened:
I want to open a netcdf file from s3 using xarray and preserve a lazy reference to the underlying data. This is what I tried
import xarray as xr
import s3fs

url = 'noaa-goes16/ABI-L2-RRQPEF/2020/001/00/OR_ABI-L2-RRQPEF-M6_G16_s20200010000216_e20200010009524_c20200010010034.nc'
fs = s3fs.S3FileSystem(anon=True)
with fs.open(url) as f:
    ds = xr.open_dataset(f)

This raises the following error:
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-46-20010df1a169> in <module>
      5 fs = s3fs.S3FileSystem(anon=True)
      6 with fs.open(url) as f:
----> 7     ds = xr.open_dataset(f)

/srv/conda/envs/notebook/lib/python3.7/site-packages/xarray/backends/api.py in open_dataset(filename_or_obj, group, decode_cf, mask_and_scale, decode_times, autoclose, concat_characters, decode_coords, engine, chunks, lock, cache, drop_variables, backend_kwargs, use_cftime, decode_timedelta)
    543
    544     with close_on_error(store):
--> 545         ds = maybe_decode_store(store)
    546
    547     # Ensure source filename always stored in dataset object (GH issue #2550)

/srv/conda/envs/notebook/lib/python3.7/site-packages/xarray/backends/api.py in maybe_decode_store(store, lock)
    457             drop_variables=drop_variables,
    458             use_cftime=use_cftime,
--> 459             decode_timedelta=decode_timedelta,
    460         )
    461

/srv/conda/envs/notebook/lib/python3.7/site-packages/xarray/conventions.py in decode_cf(obj, concat_characters, mask_and_scale, decode_times, decode_coords, drop_variables, use_cftime, decode_timedelta)
    594         drop_variables=drop_variables,
    595         use_cftime=use_cftime,
--> 596         decode_timedelta=decode_timedelta,
    597     )
    598     ds = Dataset(vars, attrs=attrs)

/srv/conda/envs/notebook/lib/python3.7/site-packages/xarray/conventions.py in decode_cf_variables(variables, attributes, concat_characters, mask_and_scale, decode_times, decode_coords, drop_variables, use_cftime, decode_timedelta)
    496             stack_char_dim=stack_char_dim,
    497             use_cftime=use_cftime,
--> 498             decode_timedelta=decode_timedelta,
    499         )
    500         if decode_coords:

/srv/conda/envs/notebook/lib/python3.7/site-packages/xarray/conventions.py in decode_cf_variable(name, var, concat_characters, mask_and_scale, decode_times, decode_endianness, stack_char_dim, use_cftime, decode_timedelta)
    336         var = times.CFTimedeltaCoder().decode(var, name=name)
    337     if decode_times:
--> 338         var = times.CFDatetimeCoder(use_cftime=use_cftime).decode(var, name=name)
    339
    340     dimensions, data, attributes, encoding = variables.unpack_for_decoding(var)

/srv/conda/envs/notebook/lib/python3.7/site-packages/xarray/coding/times.py in decode(self, variable, name)
    425             units = pop_to(attrs, encoding, "units")
    426             calendar = pop_to(attrs, encoding, "calendar")
--> 427             dtype = _decode_cf_datetime_dtype(data, units, calendar, self.use_cftime)
    428             transform = partial(
    429                 decode_cf_datetime,

/srv/conda/envs/notebook/lib/python3.7/site-packages/xarray/coding/times.py in _decode_cf_datetime_dtype(data, units, calendar, use_cftime)
     71     values = indexing.ImplicitToExplicitIndexingAdapter(indexing.as_indexable(data))
     72     example_value = np.concatenate(
---> 73         [first_n_items(values, 1) or [0], last_item(values) or [0]]
     74     )
     75

/srv/conda/envs/notebook/lib/python3.7/site-packages/xarray/core/formatting.py in first_n_items(array, n_desired)
     68         indexer = _get_indexer_at_least_n_items(array.shape, n_desired, from_end=False)
     69         array = array[indexer]
---> 70     return np.asarray(array).flat[:n_desired]
     71
     72

/srv/conda/envs/notebook/lib/python3.7/site-packages/numpy/core/_asarray.py in asarray(a, dtype, order)
     81
     82     """
---> 83     return array(a, dtype, copy=False, order=order)
     84
     85

/srv/conda/envs/notebook/lib/python3.7/site-packages/xarray/core/indexing.py in __array__(self, dtype)
    489
    490     def __array__(self, dtype=None):
--> 491         return np.asarray(self.array, dtype=dtype)
    492
    493     def __getitem__(self, key):

/srv/conda/envs/notebook/lib/python3.7/site-packages/numpy/core/_asarray.py in asarray(a, dtype, order)
     81
     82     """
---> 83     return array(a, dtype, copy=False, order=order)
     84
     85

/srv/conda/envs/notebook/lib/python3.7/site-packages/xarray/core/indexing.py in __array__(self, dtype)
    555     def __array__(self, dtype=None):
    556         array = as_indexable(self.array)
--> 557         return np.asarray(array[self.key], dtype=None)
    558
    559     def transpose(self, order):

/srv/conda/envs/notebook/lib/python3.7/site-packages/xarray/backends/h5netcdf_.py in __getitem__(self, key)
     27     def __getitem__(self, key):
     28         return indexing.explicit_indexing_adapter(
---> 29             key, self.shape, indexing.IndexingSupport.OUTER_1VECTOR, self._getitem
     30         )
     31

/srv/conda/envs/notebook/lib/python3.7/site-packages/xarray/core/indexing.py in explicit_indexing_adapter(key, shape, indexing_support, raw_indexing_method)
    835     """
    836     raw_key, numpy_indices = decompose_indexer(key, shape, indexing_support)
--> 837     result = raw_indexing_method(raw_key.tuple)
    838     if numpy_indices.tuple:
    839         # index the loaded np.ndarray

/srv/conda/envs/notebook/lib/python3.7/site-packages/xarray/backends/h5netcdf_.py in _getitem(self, key)
     36         with self.datastore.lock:
     37             array = self.get_array(needs_lock=False)
---> 38             return array[key]
     39
     40

/srv/conda/envs/notebook/lib/python3.7/site-packages/h5netcdf/core.py in __getitem__(self, key)
    144
    145     def __getitem__(self, key):
--> 146         return self._h5ds[key]
    147
    148     def __setitem__(self, key, value):

h5py/_objects.pyx in h5py._objects.with_phil.wrapper()

h5py/_objects.pyx in h5py._objects.with_phil.wrapper()

/srv/conda/envs/notebook/lib/python3.7/site-packages/h5py/_hl/dataset.py in __getitem__(self, args)
    541             arr = numpy.ndarray(selection.mshape, dtype=new_dtype)
    542             for mspace, fspace in selection:
--> 543                 self.id.read(mspace, fspace, arr, mtype)
    544             if len(names) == 1:
    545                 arr = arr[names[0]]

h5py/_objects.pyx in h5py._objects.with_phil.wrapper()

h5py/_objects.pyx in h5py._objects.with_phil.wrapper()

h5py/h5d.pyx in h5py.h5d.DatasetID.read()

h5py/_proxy.pyx in h5py._proxy.dset_rw()

h5py/_proxy.pyx in h5py._proxy.H5PY_H5Dread()

h5py/defs.pyx in h5py.defs.H5Dread()

h5py/h5fd.pyx in h5py.h5fd.H5FD_fileobj_read()

/srv/conda/envs/notebook/lib/python3.7/site-packages/fsspec/spec.py in readinto(self, b)
   1246         https://docs.python.org/3/library/io.html#io.RawIOBase.readinto
   1247         """
-> 1248         data = self.read(len(b))
   1249         memoryview(b).cast("B")[: len(data)] = data
   1250         return len(data)

/srv/conda/envs/notebook/lib/python3.7/site-packages/fsspec/spec.py in read(self, length)
   1232             length = self.size - self.loc
   1233         if self.closed:
-> 1234             raise ValueError("I/O operation on closed file.")
   1235         logger.debug("%s read: %i - %i" % (self, self.loc, self.loc + length))
   1236         if length == 0:

ValueError: I/O operation on closed file.

What you expected to happen:
I would like to not get an error and have the code work. I can make it work by doing
    ds = xr.open_dataset(f).load()

However, I lose the lazy access. I can also make it work by avoiding the context manager:
ds = xr.open_dataset(fs.open(url))

However, I'm not sure this is a recommended practice.
For context, I need to open 30,000 such files and pass them around a dask distributed cluster.
Environment:

s3fs version: 0.4.2
Dask version: 2.21.0
Python version: 3.7.6
Operating System: linux
Install method (conda, pip, source): conda

cc @rrsignell-usgs

Yes, using fs.open() is a fine solution. The instance may take up memory with its default read-ahead cache, but this is optional and will be cleared upon garbage collection.

Thanks Martin! Is the resulting object serializable?

Yes, but I think will include any current buffer. Even write-mode instances are serializable, but would lead to undefined behaviour/corruption if you tried to write to it from multiple processes.

Thanks! I am moving forward. Right now am not able to get it to work with distributed. Here is a simplified example.
import dask.array as dsa
from dask.distributed import Client

url = 'noaa-goes16/ABI-L2-RRQPEF/2020/001/00/OR_ABI-L2-RRQPEF-M6_G16_s20200010000216_e20200010009524_c20200010010034.nc'
fs = s3fs.S3FileSystem(anon=True)
f = fs.open(url)
ds = h5py.File(f, mode='r')
data = dsa.from_array(ds['RRQPE'])

# works
data.compute()

client = Client()
display(client)
# fails
data.compute()

The error is:
---------------------------------------------------------------------------
KilledWorker                              Traceback (most recent call last)
<ipython-input-4-445857babe7a> in <module>
     17 display(client)
     18 # fails
---> 19 data.compute()

/srv/conda/envs/notebook/lib/python3.7/site-packages/dask/base.py in compute(self, **kwargs)
    165         dask.base.compute
    166         """
--> 167         (result,) = compute(self, traverse=False, **kwargs)
    168         return result
    169

/srv/conda/envs/notebook/lib/python3.7/site-packages/dask/base.py in compute(*args, **kwargs)
    445         postcomputes.append(x.__dask_postcompute__())
    446
--> 447     results = schedule(dsk, keys, **kwargs)
    448     return repack([f(r, *a) for r, (f, a) in zip(results, postcomputes)])
    449

/srv/conda/envs/notebook/lib/python3.7/site-packages/distributed/client.py in get(self, dsk, keys, restrictions, loose_restrictions, resources, sync, asynchronous, direct, retries, priority, fifo_timeout, actors, **kwargs)
   2686                     should_rejoin = False
   2687             try:
-> 2688                 results = self.gather(packed, asynchronous=asynchronous, direct=direct)
   2689             finally:
   2690                 for f in futures.values():

/srv/conda/envs/notebook/lib/python3.7/site-packages/distributed/client.py in gather(self, futures, errors, direct, asynchronous)
   1986                 direct=direct,
   1987                 local_worker=local_worker,
-> 1988                 asynchronous=asynchronous,
   1989             )
   1990

/srv/conda/envs/notebook/lib/python3.7/site-packages/distributed/client.py in sync(self, func, asynchronous, callback_timeout, *args, **kwargs)
    831         else:
    832             return sync(
--> 833                 self.loop, func, *args, callback_timeout=callback_timeout, **kwargs
    834             )
    835

/srv/conda/envs/notebook/lib/python3.7/site-packages/distributed/utils.py in sync(loop, func, callback_timeout, *args, **kwargs)
    337     if error[0]:
    338         typ, exc, tb = error[0]
--> 339         raise exc.with_traceback(tb)
    340     else:
    341         return result[0]

/srv/conda/envs/notebook/lib/python3.7/site-packages/distributed/utils.py in f()
    321             if callback_timeout is not None:
    322                 future = asyncio.wait_for(future, callback_timeout)
--> 323             result[0] = yield future
    324         except Exception as exc:
    325             error[0] = sys.exc_info()

/srv/conda/envs/notebook/lib/python3.7/site-packages/tornado/gen.py in run(self)
    733
    734                     try:
--> 735                         value = future.result()
    736                     except Exception:
    737                         exc_info = sys.exc_info()

/srv/conda/envs/notebook/lib/python3.7/site-packages/distributed/client.py in _gather(self, futures, errors, direct, local_worker)
   1845                             exc = CancelledError(key)
   1846                         else:
-> 1847                             raise exception.with_traceback(traceback)
   1848                         raise exc
   1849                     if errors == "skip":

KilledWorker: ('array-original-5f04f3a8faa99245d0842f2eb32ac9cd', <Worker 'tcp://<IP_ADDRESS>:42777', name: 3, memory: 0, processing: 1>)

I am running everything from https://aws-uswest2.pangeo.io/, if you want to try it yourself there.

Is the h5py object de/serialisable

Is the h5py object de/serialisable

🤷 How do I check?

Sorry for being lazy. I think I figured it out
import cloudpickle
_ = cloudpickle.dumps(ds['RRQPE'])

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-6-5dea29b14d0e> in <module>
----> 1 _ = cloudpickle.dumps(ds['RRQPE'])

/srv/conda/envs/notebook/lib/python3.7/site-packages/cloudpickle/cloudpickle_fast.py in dumps(obj, protocol)
     99         with io.BytesIO() as file:
    100             cp = CloudPickler(file, protocol=protocol)
--> 101             cp.dump(obj)
    102             return file.getvalue()
    103

/srv/conda/envs/notebook/lib/python3.7/site-packages/cloudpickle/cloudpickle_fast.py in dump(self, obj)
    538     def dump(self, obj):
    539         try:
--> 540             return Pickler.dump(self, obj)
    541         except RuntimeError as e:
    542             if "recursion" in e.args[0]:

/srv/conda/envs/notebook/lib/python3.7/pickle.py in dump(self, obj)
    435         if self.proto >= 4:
    436             self.framer.start_framing()
--> 437         self.save(obj)
    438         self.write(STOP)
    439         self.framer.end_framing()

/srv/conda/envs/notebook/lib/python3.7/pickle.py in save(self, obj, save_persistent_id)
    522             reduce = getattr(obj, "__reduce_ex__", None)
    523             if reduce is not None:
--> 524                 rv = reduce(self.proto)
    525             else:
    526                 reduce = getattr(obj, "__reduce__", None)

/srv/conda/envs/notebook/lib/python3.7/site-packages/h5py/_hl/base.py in __getnewargs__(self)
    306         limitations, look at the h5pickle project on PyPI.
    307         """
--> 308         raise TypeError("h5py objects cannot be pickled")
    309
    310     def __getstate__(self):

TypeError: h5py objects cannot be pickled

You may want to try dask's specific serialisation (which defaults to cloud/pickle) for completeness. I can't imagine why the object should not be pickleable when it doesn't hold any files - I suppose some C-level memory block?

This thread seems relevant: https://github.com/dask/distributed/issues/2787
However, xarray finds some way to make this work. I would like to bypass xarray however, for performance sake.

I can get around it with xarray:
import xarray as xr
ds = xr.open_dataset(f, chunks={})
data = ds['RRQPE'].data

This is somehow serializable / computable with distributed. However, xarray is a lot slower at opening up the file than h5py. Can't I have the best of both worlds?
In any case, this is not an s3fs issue I guess.

You can build your array from delayed, and open the file and instantiate h5py in each call; but yes, you'll loose performance that way.

Sorry, don't know :|

I'm running into the same behavior, is avoiding the context manager the accepted workaround for this issue?

If not the context manager, then the close should still trigger when the file is garbage collected - that's the intended behaviour.


Warnings: Use alias_method > alias_attribute for non-attributes

Eliminate nags!
Fixes #43

This one's ready. No functional change at all, just swapping a method for a Rails 7.2 compatibility

@joshmn any chance you could take a peek at this one?

Any chance of getting this merged in? With rails 7.2 being officially released this is a blocker for sure.

All, I've reached out to @joshmn a couple of times... if he remains unavailable for another week or two, I will (sadly) fork this project and keep it up to date. I'm not sure exactly why he's been MIA lately. This gem should never block Rails upgrades.

Welp, figured that out.
https://www.yahoo.com/tech/man-ran-website-illegally-streamed-214600421.html?guccounter=1
Guess a fork is on the way.


README updates

REUSE needs that file in LICENSES/  to lint against. other than that i guess this is fine for consistency and making GitHub work, though you can delete COPYING as it's the same as NOTICE


[Windows] windows nodes high cpu usage with Rancher 2.3.0 and Docker 1809+

What kind of request is this (question/bug/enhancement/feature request):
[Bug] Once a windows node is connected to rancher cluster, only running bare minimum such as  getting rke-tools (sidekick,nginx proxy) and hyperkube will make cpu usage 100%
[Question] What is the recommended rancher + docker ee + windows version including hotfixes for this to work properly.
Steps to reproduce (least amount of steps as possible):

Create a win 2019 1809, vmware instance
-Install docker using

Install-Module DockerMsftProvider -Force
Install-Package Docker -ProviderName DockerMsftProvider -Force
(Install-WindowsFeature Containers).RestartNeeded
if restart needed Restart-Computer

Notes
inorder toget the latest first update the msftProvider : Update-Module DockerMsftProvider
Install-Package -Name docker -ProviderName DockerMsftProvider -Force -RequiredVersion 19.03.4 (at the time of installation)
latest available package get be seen at : https://dockermsft.blob.core.windows.net/dockercontainer/DockerMsftIndex.json

Connect a winbox 2019 to rancher 2.3.0 cluster via UI generated powershell command
Wait till box get registered and rke tools deployed to the node.
Once the node is registered and happy let it be in that state for couple of hours , it will start eating up to CPU
or you could fast track the issue by , restarting docker or rebooting the node.

Result:
rke-tools and hyperkube keeps restarting
cpu usage is 85-100%

CONTAINER ID        IMAGE                                COMMAND                  CREATED             STATUS                          PORTS               NAMES
3735b1c6216c        rancher/kubelet-pause:v0.1.3         "cmd /c ping -t 127.…"   2 seconds ago       Up Less than a second                               k8s_POD_cattle-node-agent-windows-jptmb_cattle-system_a4b866e8-de4e-4fc4-9953-1f0f8c2bb541_134
6e33ebcc1bc5        rancher/rke-tools:v0.1.50            "pwsh -NoLogo -NonIn…"   7 days ago          Restarting (0) 1 second ago                         nginx-proxy
84c1adb8f832        rancher/hyperkube:v1.16.1-rancher1   "pwsh -NoLogo -NonIn…"   7 days ago          Up 12 seconds                                       kubelet
f581772739ee        rancher/hyperkube:v1.16.1-rancher1   "pwsh -NoLogo -NonIn…"   7 days ago          Up 15 seconds                                       kube-proxy
23460993efc9        rancher/rke-tools:v0.1.50            "pwsh -NoLogo -NonIn…"   7 days ago          Restarting (0) 26 seconds ago                       service-sidekick

if we stopped all rancher containers
cpu usage drops to 15%-55%
stopping docker
gets cpu back to <5%
Interesting Observation
if you reduse vcpu's from 4 to 1,  node performance is boosted up significantly, cpu still above >85% but containers are no longer restarting.
i am using vxlan with flannel here,
i understand there is a [existing bug] regarding vxlan doesnt work everytime)(https://github.com/rancher/rancher/issues/20968)
Other details that may be helpful:
Container logs
rancher/rke-tools:v0.1.50
PS C:\Windows\system32> docker logs --tail 10 6e33ebcc1bc5
FATA[2019-10-21T09:43:46+13:00] rpc error: code = Unavailable desc = all SubConns are in TransientFailure, latest connection error: connection error: desc = "transport: Error while dialing open \\\\.\\pipe\\rancher_wins: The system cannot find the file specified."
FATA[2019-10-21T09:44:52+13:00] rpc error: code = Unavailable desc = all SubConns are in TransientFailure, latest connection error: connection error: desc = "transport: Error while dialing open \\\\.\\pipe\\rancher_wins: The system cannot find the file specified."
FATA[2019-10-21T09:45:57+13:00] rpc error: code = Unavailable desc = all SubConns are in TransientFailure, latest connection error: connection error: desc = "transport: Error while dialing open \\\\.\\pipe\\rancher_wins: The system cannot find the file specified."
FATA[2019-10-21T09:47:05+13:00] rpc error: code = Unavailable desc = all SubConns are in TransientFailure, latest connection error: connection error: desc = "transport: Error while dialing open \\\\.\\pipe\\rancher_wins: The system cannot find the file specified."
FATA[2019-10-21T09:48:09+13:00] rpc error: code = Unavailable desc = all SubConns are in TransientFailure, latest connection error: connection error: desc = "transport: Error while dialing open \\\\.\\pipe\\rancher_wins: The system cannot find the file specified."
FATA[2019-10-21T09:49:15+13:00] rpc error: code = Unavailable desc = all SubConns are in TransientFailure, latest connection error: connection error: desc = "transport: Error while dialing open \\\\.\\pipe\\rancher_wins: The system cannot find the file specified."
FATA[2019-10-21T09:50:22+13:00] rpc error: code = Unavailable desc = all SubConns are in TransientFailure, latest connection error: connection error: desc = "transport: Error while dialing open \\\\.\\pipe\\rancher_wins: The system cannot find the file specified."
FATA[2019-10-21T09:51:28+13:00] rpc error: code = Unavailable desc = all SubConns are in TransientFailure, latest connection error: connection error: desc = "transport: Error while dialing open \\\\.\\pipe\\rancher_wins: The system cannot find the file specified."
FATA[2019-10-21T09:52:35+13:00] rpc error: code = Unavailable desc = all SubConns are in TransientFailure, latest connection error: connection error: desc = "transport: Error while dialing open \\\\.\\pipe\\rancher_wins: The system cannot find the file specified."
FATA[2019-10-21T09:53:41+13:00] rpc error: code = Unavailable desc = all SubConns are in TransientFailure, latest connection error: connection error: desc = "transport: Error while dialing open \\\\.\\pipe\\rancher_wins: The system cannot find the file specified."

rancher-wins-kubelet.exe is running
rancher/hyperkube
PS C:\Windows\system32> docker logs --tail 5 84c1adb8f832
FATA[2019-10-21T10:21:37+13:00] rpc error: code = Unavailable desc = all SubConns are in TransientFailure, latest connection error: connection error: desc = "transport: Error while dialing open \\\\.\\pipe\\rancher_wins: The system cannot find the file specified."
INFO: Waiting for servcie-sidekick to prepare the entrypoint.ps1 ...
INFO: Args: --kubeconfig=c:/etc/kubernetes/ssl/kubecfg-kube-node.yaml --v=2 --client-ca-file=c:/etc/kubernetes/ssl/kube-ca.pem --hostname-override=<ip>  --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305 --cluster-dns=<ip> --root-dir=c:/var/lib/kubelet --anonymous-auth=false --enforce-node-allocatable= --cni-conf-dir=c:/etc/cni/net.d --cluster-domain=cluster.local --image-pull-progress-deadline=30m --authorization-mode=Webhook --cni-bin-dir=c:/opt/cni/bin --read-only-port=0 --kube-reserved=cpu=500m,memory=500Mi,ephemeral-storage=1Gi --cloud-provider= --network-plugin=cni --feature-gates=HyperVContainer=true,WindowsGMSA=true --cgroups-per-qos=false --event-qps=0 --resolv-conf= --volume-plugin-dir=c:/var/lib/kubelet/volumeplugins --system-reserved=cpu=1000m,memory=2Gi,ephemeral-storage=2Gi --address=<IP_ADDRESS> --streaming-connection-idle-timeout=30m --cert-dir=c:/var/lib/kubelet/pki --fail-swap-on=false --pod-infra-container-image=rancher/kubelet-pause:v0.1.3 --make-iptables-util-chains=true --authentication-token-webhook=true --node-ip=<ip>
FATA[2019-10-21T10:21:52+13:00] rpc error: code = Unavailable desc = all SubConns are in TransientFailure, latest connection error: connection error: desc = "transport: Error while dialing open \\\\.\\pipe\\rancher_wins: The system cannot find the file specified."
INFO: Waiting for servcie-sidekick to prepare the entrypoint.ps1 ...
PS C:\Windows\system32>

Observations
even though rancher guide and UI suggest 1809 docker ee will work. ** 18.09.0** does not

Digest: sha256:5933fb5d6669c790aa65d0937f92f48d8143ae60b5bd181ef1da3fa41e0fc4e4
Status: Downloaded newer image for rancher/rancher-agent:v2.3.0
INFO: Detecting running permission ...
INFO: Detecting host CPU reservation ...
INFO: Detecting host RAM reservation ...
INFO: Detecting host DISK reservation ...
INFO: Detecting host system locale ...
INFO: Detecting host Docker name pipe existing ...
INFO: Detecting host Docker release version ...
**FATA: Only support with Docker EE**
PS C:\Windows\system32> docker info
Containers: 1
 Running: 0
 Paused: 0
 Stopped: 1
Images: 1
Server Version: 18.09.0
Storage Driver: windowsfilter
 Windows:

Environment information

Rancher version (rancher/rancher/rancher/server image tag or shown bottom left in the UI):
Installation option (single install/HA):

Cluster information

Cluster type (Hosted/Infrastructure Provider/Custom/Imported):
Machine type (cloud/VM/metal) and specifications (CPU/memory):
Kubernetes version (use kubectl version):

Cluster information

rancherKubernetesEngineConfig": {
"addonJobTimeout": 30,
"authentication": {
"strategy": "x509|webhook",
"type": "/v3/schemas/authnConfig"
},
"authorization": {
"type": "/v3/schemas/authzConfig"
},
"bastionHost": {
"sshAgentAuth": false,
"type": "/v3/schemas/bastionHost"
},
"cloudProvider": {
"type": "/v3/schemas/cloudProvider"
},
"ignoreDockerVersion": true,
"ingress": {
"provider": "nginx",
"type": "/v3/schemas/ingressConfig"
},
"kubernetesVersion": "v1.16.1-rancher1-1",
"monitoring": {
"provider": "metrics-server",
"type": "/v3/schemas/monitoringConfig"
},
"network": {
"options": {
"flannel_backend_port": "4789",
"flannel_backend_type": "vxlan",
"flannel_backend_vni": "4096"
},
"plugin": "flannel",
"type": "/v3/schemas/networkConfig"
},
"restore": {
"restore": false,
"type": "/v3/schemas/restoreConfig"
},
"services": {
"etcd": {
"backupConfig": {
"enabled": true,
"intervalHours": 12,
"retention": 6,
"s3BackupConfig": null,
"safeTimestamp": false,
"type": "/v3/schemas/backupConfig"
},
"creation": "12h",
"extraArgs": {
"election-timeout": "5000",
"heartbeat-interval": "500"
},
"gid": 0,
"retention": "72h",
"snapshot": false,
"type": "/v3/schemas/etcdService",
"uid": 0
},
"kubeApi": {
"alwaysPullImages": false,
"podSecurityPolicy": false,
"serviceNodePortRange": "30000-32767",
"type": "/v3/schemas/kubeAPIService"
},
"kubeController": {
"type": "/v3/schemas/kubeControllerService"
},
"kubelet": {
"failSwapOn": false,
"type": "/v3/schemas/kubeletService"
},
"kubeproxy": {
"type": "/v3/schemas/kubeproxyService"
},
"scheduler": {
"type": "/v3/schemas/schedulerService"
},
"type": "/v3/schemas/rkeConfigServices"
},
"sshAgentAuth": false,
"type": "/v3/schemas/rancherKubernetesEngineConfig"
},
"requested": {
"cpu": "0",
"memory": "0",
"pods": "2"
},
"state": "active",
"transitioning": "no",
"transitioningMessage": "",
"type": "cluster",
"uuid": "543d2ad5-ea45-11e9-a6d4-0242ac110002",
"version": {
"buildDate": "2019-10-02T16:51:36Z",
"compiler": "gc",
"gitCommit": "d647ddbd755faf07169599a625faf302ffc34458",
"gitTreeState": "clean",
"gitVersion": "v1.16.1",
"goVersion": "go1.12.10",
"major": "1",
"minor": "16",
"platform": "linux/amd64",
"type": "/v3/schemas/info"
},
"windowsPreferedCluster": true
}

Machine type
 VM hosts (none cloud setup)
vcpu : 4
memory : 20gig
OS:
WindowsProductName           WindowsVersion OsHardwareAbstractionLayer
------------------           -------------- --------------------------
Windows Server 2019 Standard 1809           10.0.17763.194

**Patchces/ hotfixes **

PS C:\Windows\system32> Get-HotFix | fl

Description         : Update
FixComments         :
HotFixID            : KB4483452
InstallDate         :
InstalledBy         : ...
InstalledOn         : 2/21/2019 12:00:00 AM
Name                :
ServicePackInEffect :
Status              :

Description         : Security Update
FixComments         :
HotFixID            : KB4470788
InstallDate         :
InstalledBy         : NT AUTHORITY\SYSTEM
InstalledOn         : 2/21/2019 12:00:00 AM
Name                :
ServicePackInEffect :
Status              :

Description         : Security Update
FixComments         :
HotFixID            : KB4487038
InstallDate         :
InstalledBy         : ...
InstalledOn         : 2/21/2019 12:00:00 AM
Name                :
ServicePackInEffect :
Status              :

Description         : Security Update
FixComments         :
HotFixID            : KB4487044
InstallDate         :
InstalledBy         : ...
InstalledOn         : 2/21/2019 12:00:00 AM
Name                :
ServicePackInEffect :
Status              :

Docker version (use docker info):

PS C:\Windows\system32> docker info
Client:
 Debug Mode: false
 Plugins:
  cluster: Manage Docker clusters (Docker Inc., v1.2.0)

Server:
 Containers: 16
  Running: 0
  Paused: 0
  Stopped: 16
 Images: 4
 Server Version: 19.03.4
 Storage Driver: windowsfilter
  Windows:
 Logging Driver: json-file
 Plugins:
  Volume: local
  Network: ics internal l2bridge l2tunnel nat null overlay private transparent
  Log: awslogs etwlogs fluentd gcplogs gelf json-file local logentries splunk syslog
 Swarm: inactive
 Default Isolation: process
 Kernel Version: 10.0 17763 (17763.1.amd64fre.rs5_release.180914-1434)
 Operating System: Windows Server 2019 Standard Version 1809 (OS Build 17763.316)
 OSType: windows
 Architecture: x86_64
 CPUs: 4
 Total Memory: 20GiB
 Name: ...
 ID: NS6A:ARCU:3TUI:RSPS:NEIO:TIUV:WQUJ:6UQ3:B3IO:EEAH:YHCJ:7P6M
 Docker Root Dir: C:\ProgramData\docker
 Debug Mode: false
 Registry: https://index.docker.io/v1/
 Labels:
 Experimental: false
 Insecure Registries:
  <IP_ADDRESS>/8
 Live Restore Enabled: false

@GehanPanapitiya , thanks for a lot of description.

1809 is meaning the release ID of the Windows server, not the Docker version. We support both 1809 and 1903 for now. You could run Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\' | Select-Object -ExpandProperty ReleaseId via Powershell to ensure that.
The root cause of the high CPU is the Docker container restart strategy: docker keeps to restart the failed bootstrapping containers.
rancher-wins-kubelet is running, because it has passed its bootstrapping phase.

We introduced a component called wins to provide a Linux-like experience on Windows: https://github.com/rancher/wins, wins would listen on \\\\.\\pipe\\rancher_wins to accept the client request. So, please find out why wins is stopping?
If you want to re-add on the same host, please run c:\etc\rancher\cleanup.ps1 to clean up the previous installation state before re-adding.

@thxCode  thanks for the pointers.
quickly looking at the wins server on the machine.
PS C:\etc\rancher> Get-Service rancher-wins

Status   Name               DisplayName
------   ----               -----------
Running  rancher-wins       Rancher Wins

PS C:\etc\rancher> .\wins.exe server app run
WARN[2019-10-23T11:17:59+13:00] could not upgrade during windows service interacting
FATA[2019-10-23T11:17:59+13:00] failed to create server: could not listen npipe:////./pipe/rancher_wins: open \\.\pipe\rancher_wins: Access is denied.
PS C:\etc\rancher>

First i thought this could be the antivirus application blocking the application. But with out any changes it was able to install and add above pipe path and actively listen at the first time of running. for some reason it stopped /crashed. afterwards its unable to listen on that npipe.
** event log **

ProviderName LevelDisplayName Message
------------ ---------------- -------

docker       Warning          Syscall did not complete within operation timeout. This may indicate a platform issue. If it appears to be making no forward progress, obtain the stacks and see if there is a syscall stuck...
docker       Warning          Syscall did not complete within operation timeout. This may indicate a platform issue. If it appears to be making no forward progress, obtain the stacks and see if there is a syscall stuck...
rancher-wins Warning          [Process] Found stale process rancher-wins-ngin(15388), try to recreate a new process
rancher-wins Warning          [Process] Found stale process rancher-wins-kubelet(19656), try to recreate a new process
rancher-wins Warning          [Process] Found stale process rancher-wins-kubelet(30064), try to recreate a new process
rancher-wins Warning          [Process] Found stale process rancher-wins-ngin(25320), try to recreate a new process
rancher-wins Warning          [Process] Found stale process rancher-wins-kubelet(8292), try to recreate a new process
rancher-wins Warning          [Process] Found stale process rancher-wins-ngin(16064), try to recreate a new process
rancher-wins Warning          [Process] Found stale process rancher-wins-kubelet(16728), try to recreate a new process
rancher-wins Warning          [Process] Found stale process rancher-wins-ngin(17976), try to recreate a new process
rancher-wins Warning          [Process] Found stale process rancher-wins-ngin(20700), try to recreate a new process
rancher-wins Warning          [Process] Found stale process rancher-wins-kubelet(5552), try to recreate a new process
rancher-wins Warning          [Process] Found stale process rancher-wins-kubelet(21168), try to recreate a new process
rancher-wins Warning          [Process] Found stale process rancher-wins-ngin(11648), try to recreate a new process
rancher-wins Warning          [Process] Found stale process rancher-wins-ngin(20460), try to recreate a new process
rancher-wins Warning          [Process] Found stale process rancher-wins-kubelet(20532), try to recreate a new process
rancher-wins Warning          [Process] Found stale process rancher-wins-kubelet(8708), try to recreate a new process
rancher-wins Warning          [Process] Found stale process rancher-wins-ngin(15824), try to recreate a new process
rancher-wins Warning          [Process] Found stale process rancher-wins-ngin(14888), try to recreate a new process
rancher-wins Warning          [Process] Found stale process rancher-wins-kubelet(3332), try to recreate a new process
docker       Error            Handler for GET /v1.40/containers/d8c3d150d4579d022de07a2065ac556d98f308bc6d611638855fd6e1759572d4/json returned error: The pipe is being closed.
rancher-wins Warning          [Process] Found stale process rancher-wins-kubelet(2760), try to recreate a new process
rancher-wins Warning          [Process] Found stale process rancher-wins-ngin(12400), try to recreate a new process
rancher-wins Warning          [Process] Found stale process rancher-wins-kubelet(13828), try to recreate a new process
rancher-wins Warning          [Process] Found stale process rancher-wins-ngin(12804), try to recreate a new process
docker       Warning          driver error deleting endpoint service-sidekick : HNS failed with error : The endpoint was not found.
docker       Warning          driver error deleting endpoint kube-proxy : HNS failed with error : The endpoint was not found.
docker       Warning          driver error deleting endpoint nginx-proxy : HNS failed with error : The endpoint was not found.
docker       Warning          driver error deleting endpoint kubelet : HNS failed with error : The endpoint was not found.
docker       Error            84c1adb8f8329fcc190905f7919d3cb0eed4352592a129e8488f80c9e971dd17 cleanup: failed to delete container from containerd: no such container
docker       Error            6e33ebcc1bc5dcbade35b78325e5562f9ee920cbcb3e2999d2971c1e009a6049 cleanup: failed to delete container from containerd: no such container
docker       Error            23460993efc9eff1c94d3a75a56800e5a922c018fff4db79d63a4c12647e11e5 cleanup: failed to delete container from containerd: no such container
docker       Error            f581772739ee6c6fa3f12f92224fec75ac696cd133b8150e94a9176ed28007fc cleanup: failed to delete container from containerd: no such container
docker       Error            Failed to load container mount 9ab2afe7e95122394544bf51c0cf127df90e8a51a2432930b61f0a2ba039e94b: mount does not exist
docker       Error            Failed to load container mount d3bfdac5201f3bcea643a5a9ad865ea89f32bd042760369704040d57b701c8d4: mount does not exist
docker       Error            Failed to load container mount 68b31d95fcd342491231d9075787f677624e92cec69b9eebc0cf07abbe64dccb: mount does not exist
docker       Warning          driver error deleting endpoint service-sidekick : HNS failed with error : The endpoint was not found.
docker       Warning          driver error deleting endpoint nginx-proxy : HNS failed with error : The endpoint was not found.
docker       Warning          driver error deleting endpoint kube-proxy : HNS failed with error : The endpoint was not found.
docker       Warning          driver error deleting endpoint kubelet : HNS failed with error : The endpoint was not found.
docker       Error            Failed to load container mount 68b31d95fcd342491231d9075787f677624e92cec69b9eebc0cf07abbe64dccb: mount does not exist
docker       Error            Failed to load container mount d3bfdac5201f3bcea643a5a9ad865ea89f32bd042760369704040d57b701c8d4: mount does not exist
docker       Error            Failed to load container mount 9ab2afe7e95122394544bf51c0cf127df90e8a51a2432930b61f0a2ba039e94b: mount does not exist
docker       Warning          Syscall did not complete within operation timeout. This may indicate a platform issue. If it appears to be making no forward progress, obtain the stacks and see if there is a syscall stuck...
docker       Warning          Syscall did not complete within operation timeout. This may indicate a platform issue. If it appears to be making no forward progress, obtain the stacks and see if there is a syscall stuck...
docker       Warning          Syscall did not complete within operation timeout. This may indicate a platform issue. If it appears to be making no forward progress, obtain the stacks and see if there is a syscall stuck...
docker       Warning          Syscall did not complete within operation timeout. This may indicate a platform issue. If it appears to be making no forward progress, obtain the stacks and see if there is a syscall stuck...
docker       Warning          driver error deleting endpoint nginx-proxy : HNS failed with error : The endpoint was not found.
docker       Warning          driver error deleting endpoint kubelet : HNS failed with error : The endpoint was not found.
docker       Error            84c1adb8f8329fcc190905f7919d3cb0eed4352592a129e8488f80c9e971dd17 cleanup: failed to delete container from containerd: no such container
docker       Error            6e33ebcc1bc5dcbade35b78325e5562f9ee920cbcb3e2999d2971c1e009a6049 cleanup: failed to delete container from containerd: no such container
docker       Error            Failed to load container mount d3bfdac5201f3bcea643a5a9ad865ea89f32bd042760369704040d57b701c8d4: mount does not exist
docker       Error            Failed to load container mount 9ab2afe7e95122394544bf51c0cf127df90e8a51a2432930b61f0a2ba039e94b: mount does not exist
docker       Error            Failed to load container mount 68b31d95fcd342491231d9075787f677624e92cec69b9eebc0cf07abbe64dccb: mount does not exist

by force closing docker engine , i could see the same problem occurring for //./pipe/docker_engine too.
but now i stuck on that issue. similar to docker daemon cannot be started due to below issue.
ProviderName LevelDisplayName Message
------------ ---------------- -------
docker       Error            fatal: failed to load listeners: open //./pipe/docker_engine: Access is denied.
docker       Error            fatal: failed to load listeners: open //./pipe/docker_engine: Access is denied.
docker       Error            fatal: failed to load listeners: open //./pipe/docker_engine: Access is denied.
docker       Error            fatal: failed to load listeners: open //./pipe/docker_engine: Access is denied.
docker       Error            fatal: failed to load listeners: open //./pipe/docker_engine: Access is denied.
docker       Error            Force shutdown daemon

Just so you aware , all have been tried with elevated power-shell admin privilege.
when i installed Docker EE in Windows Server 2019 (version 1809) with Install-Package Docker -ProviderName DockerMsftProvider -Force and I don't see docker-users group being created. what is the recommended privilege sharing method in Windows ?
[Question]
For Rancher name pipes, does the client and server required to be in the same elevated access level ?
looking at the rancher_wins ACL it has only build-in admin and nt-authority access.
what is the required run time access level ?
PS C:\etc\rancher> [System.IO.Directory]::GetAccessControl("\\.\\pipe\\rancher_wins") | fl

Path   :
Owner  : BUILTIN\Administrators
Group  : NT AUTHORITY\SYSTEM
Access : NT AUTHORITY\SYSTEM Allow  FullControl
         BUILTIN\Administrators Allow  FullControl
Audit  :
Sddl   : O:BAG:SYD:P(A;;FA;;;SY)(A;;FA;;;BA)

Is there any documentation on what access is required for these services ?
I would like to understand

ACL requirements
which services / applications exe's needs elevated access
which exe's paths needs to be excluded from antivirus software.

Also can you kindly explain why Rancher_win project exist and how will it work with GMSA accounts

@GehanPanapitiya :

You would always get failed when executing wins srv app run with a previous running wins server, as the //./pipe/rancher_wins has been created and held by the first wins server process.

According to your feedback, the wins server has already run.

How you shutdown your Docker daemon? taskkill? And how you restart your Docker daemon? Start-Service docker?
I think there is not docker-users group in Windows Docker: Docker EE != Docker CE. The //./pipe/docker_engine is created via https://github.com/moby/moby/blob/8e610b2b55bfd1bfa9436ab110d311f5e8a74dcb/daemon/listeners/listeners_windows.go#L26-L27, the //./pipe/rancher_wins is created via https://github.com/rancher/wins/blob/7c2d5528151cb63355615e1ee02bd59380c1c1e2/pkg/npipes/npipe.go#L42-L43

I could not clarify what happens on your env, I give a simple step to bring up a reproducing Windows cluster:

bootstrap the rancher server
bootstrap an etcd+controlplane+worker on Linux (4C8G+) host
bootstrap a worker on Windows (8C16G+) host

type CMD on Windows searching box to find the CMD
choose Run as Administrator the CMD windows via clicking mouse right button
paste the bootstrapping script from rancher UI into the CMD windows, enter.

After the above steps, please observe the result. FYI, the wins server starting script and the cleaning up script want to confirm the execution permission by: https://github.com/rancher/rancher/blob/f6a4da4768fd06b76e3f5dcae98787a09e5643bc/package/windows/utils.psm1#L33-L37 .

Thank you for fast response @thxCode my setup was very much similar to what you propose, only difference was i had 4 cpus instead 8.
having 8 cpu's clearly keep usage under 50% perhaps that is what is needed as minimum. the user account that am using is a domain account , which does not have local admin privileges.
when we Register a new node is there a way to run wins in debug mode ?

@GehanPanapitiya :

The configuration file of wins lies on c:\etc\rancher\wins\config: https://github.com/rancher/rancher/blob/30db13e747b4807e13aa71d2b1c57be63dd84470/package/windows/bootstrap.ps1#L259, you could set debug: true into it: https://github.com/rancher/wins/blob/7c2d5528151cb63355615e1ee02bd59380c1c1e2/cmd/server/config/config.go#L27
For GMSA, you could follow this guide: https://kubernetes.io/docs/tasks/configure-pod-container/configure-gmsa/, Kubernetes would translate the GMSA CRD into a Windows registry item: Get-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization\Containers\CredentialSpecs\'

I am curious why you could not docker ps after restarting Docker? Does the domain account has privileges to access Docker?  Could you use the local admin to try to set up the Windows worker?

Thanks @thxCode , Finally got the nodes in to more stable working cluster. Debugging really helped to fast forward the work thank you.
There are several things which might be nice to be in the install guide.

windows server 1809, required a specific update to get flannel working correctly.

https://support.microsoft.com/en-us/help/4489899/windows-10-update-kb4489899

Node spec

Minimum of 8vcpu is highly recommended. (4cpu setup gave me 100%cpu which leads to adhoc errors at vm level)
if you are not running headless  , you would need to whitelist bunch of exe's from your antivirus program.

https://support.symantec.com/us/en/article.TECH235458.html
https://support.symantec.com/us/en/article.tech246815.html
-Access

on AD driven domain account will require elevated access than running privilege.

Account running Docker ee should have ACL ownership for below folders.

c:\etc , c:\var
c:\opt , c:\run

I'll start looking at GSMA work probably this week or early next.  would it be ok if i keep this thread open till that finishes ?

Also found out that  there are bunch of enhancements / bug fixes are required for windows vswitch to be working properly.
if you are using 1809 , you would required most of the patches till OS Build 17763.832.
Make sure you install
https://support.microsoft.com/en-us/help/4520062
offline download can be taken from:
https://www.catalog.update.microsoft.com/Search.aspx?q=KB4520062

Please let us know in a comment if you can still reproduce the issue, and we'll reopen it


feat(fs-syncer): jest helper

Add jestFixture helper to fs-syncer, which uses a directory based on the current test file name.
This also adds some experimental jsonc parsing and stringification which preserves comments, as well as yaml(-ish) stringification which is useful for readable jest snapshot tests.

Codecov Report

Merging #238 (8cbe679) into main (c7a416c) will decrease coverage by 3.54%.
The diff coverage is 84.93%.

:exclamation: Current head 8cbe679 differs from pull request most recent head 7eb860b. Consider uploading reports for the commit 7eb860b to get more accurate results

@@             Coverage Diff             @@
##              main     #238      +/-   ##
===========================================
- Coverage   100.00%   96.45%   -3.55%
===========================================
  Files           41       56      +15
  Lines          725      931     +206
  Branches       121      170      +49
===========================================
+ Hits           725      898     +173
- Misses           0       33      +33

Impacted Files
Coverage Δ

.../dedent-can-be-disabled-using-mergestrategy/foo.js
0.00% <0.00%> (ø)

...ures/integration.test.ts/dedents-by-default/foo.js
0.00% <0.00%> (ø)

...t.ts/ignore-paths-can-whitelist-folders/src/foo.js
0.00% <0.00%> (ø)

...re-paths-can-whitelist-folders/src/nestedjs/bar.js
0.00% <0.00%> (ø)

...ation.test.ts/ignore-paths-ignore-paths/src/foo.js
0.00% <0.00%> (ø)

...t.ts/ignore-paths-ignore-paths/src/nestedjs/bar.js
0.00% <0.00%> (ø)

...s/jest-fixture.test.ts/yaml-snapshot/singleline.js
0.00% <0.00%> (ø)

...-strategy-merge-config-merge-strategy/.eslintrc.js
0.00% <0.00%> (ø)

...trategy-merge-config-merge-strategy/jest.config.js
0.00% <0.00%> (ø)

...-strategy-merge-config-merge-strategy/src/index.ts
0.00% <0.00%> (ø)

... and 22 more

Continue to review full report at Codecov.

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


Update Client side example in README.md

passing javascript {extensions: 'twitter'} would not work unless wrapped in array.

Fixed in 3c7589d1d020af287e4a25bcbba45f4034fdaff1


fix: change email will make account empty error

fix: when update email will make the account empty
🅰 Please add the issue ID after "Fixes #"
Fixes #

I have read the CLA Document and I hereby sign the CLA

recheck

I have read the CLA Document and I hereby sign the CLA

I have read the CLA Document and I hereby sign the CLA

recheck


add new tokens for Centrifuge

DOT:

Spoiler!

aUSD

Spoiler!

USDT

Spoiler!

GLMR

Spoiler!

can't add more tokens on Centrifuge, need to implement ormlAssetRegistry


API should have a refresh re-rendering method

Currently there is no programmatic way to fully re-render HiGlass other than a manual resize of the browser window (even manually dispatching the resize event doesn't do the trick)
This API endpoint is important as host application may do stuff that requires a re-rendering (e.g., flexboxxy layout stuff)

Going to close this issue for now. Please reopen if it's still a problem.

It's still an unsolved issue that appears frequently in HGA when you programmatically change the dimensions of HG's parent div through flexboxxxy CSS inheritance (e.g., flex: 1)

Priority is not super high but the resize-sensor of HG doesn't work 100% unfortunately.


Fix #1818

Hello!

Type: bug
Link to issue: #1818

In raising this pull request, I confirm the following:

[x] I have checked that another pull request for this purpose does not exist
[x] I wrote some tests for this PR
[ ] I updated the CHANGELOG

Small description of change:
Iterator can't use reverse.
Thanks

@sergeyklay Check

@sergeyklay Change a little bit of code, be smarter.
class App
{
	public function test()
	{
		var k, v;
		var arr;

		let arr = [];
		for k, v in arr {
			echo k, v, "\n";
		}
	}
}

or
class App
{
	public function test()
	{
		var k, v;
		var arr;

		let arr = new Arr();
		for k, v in arr {
			echo k, v, "\n";
		}
	}
}

@sergeyklay It's difficult to make accurate judgments through possibleValue.


Inconsistent country name in the nodes

we have inconsistency in the data coming from graphql, in the country field.
sometimes two letters code for the country and other times the full name

@muhamadazmy should be fixed right?


Terminal should scroll for followers too

Problem
When pairing and using the terminal to look through the command output (think: git log, git diff or results of running the test suite), it’s important that the followers see exactly the same as the current driver.
Currently, when scrolling the terminal, the scroll is not synchronised for followers, which forces the pair to switch to classic network-hungry screen-sharing tools.
Proposed Solution
Send appropriate scrolling events to followers, or synchronise vertical scroll position in the terminal.
What do you think?

@IlyaBiryukov , is this technically possible? I understand the 'follow' feature does not involve the terminal support.

Nope. VSCode doesn't expose any information about terminal scroll position, it also doesn't allow extensions to control it.

We can ask them if it is technically possible to expose it.

We’re not able to prioritize this issue over the other higher-impact issues we receive every week, based on the votes and comments from others in the community and our understanding of the issue. However, rest assured that we love your input. If you feel it deserves to stay open, then clarify your use case and contact us to let us know how severe it is for you.


initial JMX + license

Contains initial health check and JMX support - will strip unneeded stuff (mbeans) later - still WIP.
Also contains license stuff in pom.xml, LICENSE.txt, NOTICE.txt (needs to be completed), source file headers.

The license stuff looks good to me, I've still got an email out to a open source license lawyer to evaluate the compatibility of Jersey CDDL 1.1 and Apache License v2.

Why did you remove the CassandraNodeInfo proto object? It seemed like that project would have been useful.

One question, but I think it's ready to merge after that.

CassandraNodeInfo will be re-added in the next PR - tbh, i don't really know why I've removed it

okay


The progress indicator shows wrong progress if the post contains image.

The circular progress indicator shows 100% progress before the post is even finished if the post contains images. I think the images have not been taken into accout for calculating the progress.

Can you provide a link?
The theme tries to calculate the progress when the load event is triggered, in theory that should happen when the whole page has loaded, including all dependent resources such as stylesheets and images.
Of course the progress is just an estimate, in some cases images or iframes that take longer to be fully loaded are not taking into account but that depends of your Internet speed or the size of the images.
For me it works correctly all the time in the demo website.

I will close this issue for now due inactivity, please feel free to comment again if necessary.


Questions about search

Hi,
My team and I are considering using gitbook.com as our team's internal knowledge base to replace our internal wiki. Here is our Gitbook.
I have 2 questions about search:

I noticed that during pageload, a JSON object called search_index.json is downloaded to the browser. This contains the text of all chapters, in addition to stems of each token in each chapter. My concern is that when our knowledge base gets to be several MB in size, this will not be scalable. Is there a size limit to the book before this search_index.json file no longer gets downloaded?

Does our Gitbook have an OpenSearch endpoint, so I can set it up as a custom search engine in my browser? Ideally, I want to be able to do this. This would obviate the need for me to bookmark the Gitbook and have to navigate to it every time I want to search something in it.

Thank you!

I figured out the answer to Question 2 myself. The URL I can use to set up a custom search engine in Chrome is: https://agolo.gitbooks.io/wiki/content/?q=%s
Question 1 still stands, though.

Hi,
For Question 1, there is a size index limit by default, if the book reaches it, it will stop indexing its content (but that content won't be searchable).
For comparison, my repo has more than 1000 AsciiDoc files, the built book is ~150MB in size (~source is ~60MB with images) and the search index is ~12MB.

For Question 1, The search interface can use different backend, the default one is lunr which index content in this json file, but you can also use algolia (https://www.algolia.com).

Hi @SamyPesse -- thank you for the prompt response. It was very helpful.
I have a question about running Algolia. The README has the following step:

Finally, pass your Admin API Key as an environment variable when launching gitbook, using ALGOLIA_PRIVATEKEY:

$ ALGOLIA_PRIVATEKEY="algolia-admin-api-key" gitbook serve

Is it possible to set environment variables on our book that's hosted on gitbook.com? I can't find anything about it in the Gitbook docs.

@agoloprem yes, in the book settings you can specify environment variable:

We'll add an entry in the FAQ about this.


the color bar is not updating in version 3

hi there!
i was using version 2 of this package, and everythin was fine.
Now in the version 3 there is a problem! the color bar is not getting updated.
Let's say i have a rect with gradient color starts from white and ends with black. now when i click on the last stop (black) the color picker bar still is on the white and doesn't get updated automatically!
as you can see in this screenshot the current color is blue but the color picker is on blue!

you can see it in your own live preview:
https://gradient-package-demo.web.app/

@penobit wow good find, thank you. Patching now

@penobit fixed in v3.0.3
Please comment if behavior continues.

@penobit  fixed in v3.0.3
Please comment if behavior continues.


Dependabot not running go fmt

https://github.com/dependabot/dependabot-core/issues/3036

https://github.com/dependabot/dependabot-core/issues/3036

Solved by moving to GH Native dependabot

Solved by moving to GH Native dependabot


net-gateway-api doesn't validate config-gateway

We don't have a running webhook which means an end-user can set a bad config and wouldn't know.
We should add a validating webhook just like Istio has one.
cmd  - https://github.com/knative-extensions/net-istio/blob/main/cmd/webhook/main.go
deployment  - https://github.com/knative-extensions/net-istio/blob/main/config/500-webhook-deployment.yaml
service - https://github.com/knative-extensions/net-istio/blob/main/config/500-webhook-service.yaml
secret - https://github.com/knative-extensions/net-istio/blob/main/config/500-webhook-secret.yaml
webhook config - https://github.com/knative-extensions/net-istio/blob/main/config/600-validating-webhook.yaml

/assign @izabelacg


Status subsection of Voting section the DAO App

This is a key section in the voting section. This is where the user can see a snapshot of the current status of the proposal.
It contains the following

Is the proposal going to pass?
Has the proposal reached quorum?
Has Tiki voted?
What is the impact of Tiki's vote?
What is the number of company votes and how have they influenced the vote?
What is the number of user votes and how have they influenced the vote?

This is the thinking as of 26/2

@BOC111 I don't understand the "Impact" chat, it seems to be the same as the two on the left.

It is the same format (lollipop) as the two on the left/middle. Its purpose is to show the impact of the Tiki vote on quorum and pass/not pass.


Fix getSelectedTopics of value in Topics attribute controller

Needed because of https://github.com/concrete5/concrete5/commit/1dd46309429224440219e0b4c2f2dfd3b9f8e3d0

Thanks – I've actually fixed this in a different way in a branch of the 8.0 branch, which I'll be merging back in soon.

:+1:


"Labels" fields should allow multi-lines values

Hello,
These fields can be used to pass HAProxy configuration snippets trough Marathon-LB:
https://github.com/mesosphere/marathon-lb#overridable-templates
However, if I put "\n" in the field, the resulting file contains "\n" instead of a carriage return.
I think the field should allow multi-line input and should not strip anything (double space can be used for the configuration file to be indented correctly, and it does matter).
Best regards,
Adam.

Hi @eLvErDe, this sounds to me like an issue with marathon-lb, could you please open an Issue at the www.github.com/mesosphere/marathon-lb repository.

This is certainly not a bug in marathon-lb. If you manually edit the JSON or POST it to Marathon, everything works great. The UI widget will eat any newlines you paste into the label value fields.

Actually, maybe this belongs in the marathon-ui project? Please advise.

Thanks for reopening !

Note: This issue has been migrated to https://jira.mesosphere.com/browse/MARATHON-4507. For more information see https://groups.google.com/forum/#!topic/marathon-framework/khtvf-ifnp8.


Don't explicitly link Python on OS X (2.4 branch)

Explicitly linking to a Python framework on OS X prevents modules from
being built against one python (i.e. system python) and imported from
another (i.e. Homebrew python); the interpreter segfaults if there's a
linkage to a foreign python. Building the module with -undefined dynamic_lookup instead of an explicit link allows the symbols to be
resolved at load time from a compatible python.

let's merge it in, it passes our buildbot :+1:


feat: Add articles and talks to author page

Fixes https://github.com/iodigital-com/io-technology/issues/40


Vulkan driver: Allocation mapped too many times simultaneously

What happened?

It happens after when working with the returned arrays. I hit this rather low allocation mapping limit of 255. It seems to be related to the reference counting of the Python arrays.
I am not sure if this should be considered a bug. From a user's point of view I have a module that works in other backends and then fails in the Vulkan driver due to some peculiar limitation.
Steps to reproduce your issue

Download and extract http://storage.googleapis.com/shark-public/boian/vulkan-alloc-mapped-too-many-times-data.tar.bz
Run this Python script in the same directory

import iree.runtime
import numpy as np
from typing import List, TypeVar

Tensor = TypeVar('Tensor')

def array_equal(a: Tensor, b: Tensor):
    return np.array_equal(np.asarray(a), np.asarray(b))

def assert_array_list_compare(array_compare_fn, a: Tensor, b: Tensor):
    assert (len(a) == len(b))
    for x, y in zip(a, b):
        np.testing.assert_array_compare(array_compare_fn, x, y)

def assert_array_list_equal(a: List[Tensor], b: List[Tensor]):
    assert_array_list_compare(array_equal, a, b)

jax_unet_optimizer_state = list(
    np.load("jax_unet_optimizer_state.npz").values())
iree_module = iree.runtime.system_api.load_vm_flatbuffer_file(
    "stable_diffusion_training_vulkan-spirv.vmfb", driver="vulkan")
assert_array_list_equal(iree_module.get_unet_optimizer_state(),
                        jax_unet_optimizer_state)

What component(s) does this issue relate to?
Runtime
Python
Version information
e5a8374bb198cbf8a73eb1a2b39d8b9d9ee973d8
Additional context
I have also included the MLIR. It was compiled with
iree-compile \
  stable_diffusion_training.mlir \
  --iree-input-type=mhlo \
  --iree-vm-bytecode-module-output-format=flatbuffer-binary \
  --iree-hal-target-backends=vulkan-spirv \
  -o=stable_diffusion_training_vulkan-spirv.vmfb \
  --iree-llvm-embedded-linker-path=/home/petkantchin/ws/iree/build/ninja/RelWithDebInfo/compiler/bindings/python/iree/compiler/tools/../_mlir_libs/iree-lld' \
  --mlir-print-debuginfo \
  --mlir-print-op-on-diagnostic=false

One really can't rely on GC to handle hardware resources - users in an environment that has a GC need to explicitly make sure they unmap resources instead of just letting them dangle. Someone familiar with the python bindings will need to see if whatever's happening inside there leaking mappings or something.
As for VMA, we'll be dropping our use at some point in the future and this limitation will go away. But it still won't be good practice and will have performance implications to keep the memory mapped even if you don't need it, and on some hardware it's not possible to launch new work on a device that has any host mappings active. This is just a reality of dealing with accelerator hardware.

I did a little digging in the Python API. The problem is that iree.runtime.DeviceArray holds the mapping to the host array.
I tried to make a function to clone the array list while relinquishing resources. I think this incurs an additional copy on the host side. I don't think there is a way around this with the current API.
def clone_device_array_list_to_numpy(array_list: List[iree_rt.DeviceArray]) -> np.ndarray:
  res = [None]*len(array_list)
  while (len(array_list)):
    arr = array_list[-1].to_host() # this makes a copy.
    res[len(array_list) - 1] = np.copy(arr) # this also makes a copy.
    del array_list[-1]
  return res

iree_unet_optimizer_state = list(iree_module.get_unet_optimizer_state()) # this needs to be an editable collection. tuple is not.
iree_unet_optimizer_state = clone_device_array_list_to_numpy(iree_unet_optimizer_state)

On the compiler side. I think these arrays are put in a single allocation block. They are persistent across calls. In Python each one creates a mapping to the same allocation.

That'd probably do it! It's understandable at the python level here that having an array-like accessor makes this tricky as even if you map lazily on first access you don't know when to unmap. Ideally we'd only create the host mapping when needed for the shortest possible duration but with a single layer API (just DeviceArray) it's hard; this is why internally the runtime manages buffers (iree_hal_buffer_t) separately from the metadata wrapping them (iree_hal_buffer_view_t) and scopes all host mappings to the operations performing them. This is possible because there are no array accessor-like behaviors allowed - nothing touching accelerators is going to be good if you can't batch operations and reading individual elements out one at a time is a really sketchy thing to try to do in general.
Some workarounds for this may be to at least internally setup a buffer mapping on the python side: python device objects could internally have a dict of buffer pointers -> buffer wrappers and when a DeviceArray tried to map host memory it could go through that dict to see if it's already mapped instead of doing it locally. It still may run afoul of things (if the user allocated 256 unique buffers and mapped each one it'd still hit the limit) but harder in normal cases (users should allocate as few buffers as possible for inputs and arena/slab allocate instead of one buffer per input, and as you mention the compiler only ever returns a single slab buffer with all results).
Short-term solution would be to make VMA optional now that we have the caching allocator, but the caching allocator has lots of very sharp edges that make it suboptimal for anything but benchmarks/repeated invocations and currently VMA is our only proper suballocator. I've got some work I need to finish on our own suballocator before we can fully rip out VMA but don't have an ETA (could be a few days or a few weeks).
An even shorter term workaround would be to implement a dispose or something on the DeviceArray such that users could force them to be unmapped without waiting for GC. Eventually switching the mapping mode to __enter__/__exit__ would be ideal for this kind of layer, letting you do things like:
with device_array.contents() as c:  # map memory here in explicit scope
  print(c[0])  # access host bytes here
# host memory mapping released

But I leave the python stuff up to people who have a more pythonic mindset :)

Paging our Python guru @stellaraccident

You all do know that it is just code, right? :)
I'll need to grok this issue and attempt some surgery. Won't happen today but can get to it in the next 3.

I am not in a hurry for that one. I wanted to use the Vulkan backend as a reference to see what precision I get there.


Fix test assertions on new integration-tester version

See alternate hack in request-override.js
The bulk of this diff is grouping tests on the same method together so I could actually find them.

lgtm


Setting Illuminate_highlightUnderCursor seems to have no effect

When setting vim.g.Illuminate_highlightUnderCursor = 0 in my config, the word under the cursor is still always underlined. However, other settings in my config are being respected.

Are you using LSP functionality? Also, there is an issue template, please use it, saying X doesn't work isn't useful (especially without a minimal init.vim).

I was seeing this - it seemed to be caused by loading nvim-lspconfig with packer before vim-illuminate. I swapped them and it worked 🤷🏻♂

Closing this because of a lack of info from original poster.


silent flag for initialize

The initialize function prints out some extra information:
>>> import jieba; jieba.initialize()
Building prefix dict from the default dictionary ...
Loading model from cache /tmp/jieba.cache
Loading model cost 0.508 seconds.
Prefix dict has been built succesfully.
>>>

It would be nice to have a way to silence this output, for example:
>>> import jieba; jieba.initialize(silent=True)
>>>

initialize()很吵:
>>> import jieba; jieba.initialize()
Building prefix dict from the default dictionary ...
Loading model from cache /tmp/jieba.cache
Loading model cost 0.508 seconds.
Prefix dict has been built succesfully.
>>>

请加一个选择让它安静一点，比如：
>>> import jieba; jieba.initialize(silent=True)
>>>

I figured out how to fix this using setLogLevel:
In [1]: import jieba

In [2]: import logging

In [3]: jieba.setLogLevel(logging.ERROR)

In [4]: jieba.initialize()

In [5]:

Closing.

I figured out how to fix this using setLogLevel:
In [1]: import jieba

In [2]: import logging

In [3]: jieba.setLogLevel(logging.ERROR)

In [4]: jieba.initialize()

In [5]:

A more concise way of doing this that doesn't require the logging module import:
import jieba

jieba.setLogLevel(20)


unable to launch default launcher job right after setup

baed on the log we don't have default INTEGRATION_JENKINS_URL var which is used for default configuration stuff
job: {id: 1, name: "launcher", jobURL: "${INTEGRATION_JENKINS_URL}/job/public/job/launcher",…}
id: 1
jenkinsHost: "${INTEGRATION_JENKINS_URL}"
jobURL: "${INTEGRATION_JENKINS_URL}/job/public/job/launcher"
name: "launcher"

after providing valid jenkins url we still have invalid job url for default launcher
id: 1
jenkinsHost: "http://hostname/jenkins"
jobURL: "http://hostname/jenkins/job/public/job/launcher"
but actual jobURL is http://<IP_ADDRESS>/jenkins/job/launcher/.
Need review these default repo registration steps

Uploading launcher.log…

fixed. need to remove all reporting-* images obligatory!

Verified on dev. Done.


Math update

Since the bot serves an image for each round of play, there would be slightly more images in total!
3 card images: (52x51x50)
132,600
4 card images: (52x51x50x49)
6,497,400
5 card images: (52x51x50x49x48)
311,875,200
= 318,505,200

Ha, I love that this is a PR. Your math checks out!

:+1:


RewardStorageIOS._getLastGivenTime will give you an incorrect DateTime

RewardStorageIOS._getLastGivenTime and RewardStorageAndroid._getLastGivenTime will collect a unix timestamp, stored milliseconds, and will incorrectly treat it like C#'s DateTime ticks; which "represents the number of 100-nanosecond intervals that have elapsed since 12:00:00 midnight, January 1, 0001". This will result in a date from the year 48 AC, which is no good if you are using the last given time for daily rewards.
You can see here the function which stores the last time given in the unix timestamp format.
..and here the C# side incorrectly parsing it as a DateTime tick.
It needs to be parsed differently, here is my current workaround to parse it to the correct time:
RewardStorageIOS.cs
		override protected DateTime _getLastGivenTime(Reward reward) {
			long lastTime = rewardStorage_GetLastGivenTimeMillis(reward.ID);
			return UnixMilliTimestampToDateTime(lastTime);
		}

		private DateTime UnixMilliTimestampToDateTime(long unixTime)
		{
			DateTime unix = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
			return unix.AddMilliseconds(unixTime);
		}

Updated to include Android, as it is also storing a unix timestamp and Unity is incorrectly parsing it.


Faceless agents

Private

@kdrumm I see those issues too now on development. I will investigate

@kdrumm Agents should be fixed now


*: Move closer to project-template's current status

Generated with:
$ git remote add project-template git://github.com/opencontainers/project-template.git
$ git fetch project-template
$ git show --oneline project-template/master
61d73a3 (project-template/master) Merge pull request #40 from wking/minor-patch-bullet
$ git merge --squash --allow-unrelated-histories project-template/master
$ git checkout HEAD -- .pullapprove.yml MAINTAINERS README.md RELEASES.md
$ git checkout project-template/master -- GOVERNANCE.md LICENSE
$ emacs README.md CONTRIBUTING.md # unify around project-template's CONTRIBUTING.md approach
$ emacs meeting.ics  # update link to point at CONTRIBUTING.md#meetings
$ git commit -sv

I personally prefer non-squash merges to preserve history and ease future updates, but that approach has not been popular within the OCI, so I'm going with a squash-merge here.
I'm sticking with the local RELEASES.md, because it uses four-space indents.  I've filed opencontainers/project-template#54 to upstream that change.
I've also filed opencontainers/project-template#55 upstreaming our local wording change from #943.
I've also fixed the GOVERNANCE.md security link in flight with opencontainers/project-template#34.
I've left the other in-flight project-template changes alone.
I've wrapped the URL in meetings.ics to avoid:

Line length should not be longer than 75 characters near line #33
Reference: RFC 5545 3.1. Content Lines

There was a previous run at something similar in #420, which was closed because the template docs were, at that time, not sufficiently generic.  With opencontainers/project-template#20 having landed since (via a bunch of separate PRs), I think it's worth taking another stab at this ;).

house keeping: bugger. I'm sure these are good changes, but with much of this being pointed at https://github.com/opencontainers/org I think this PR would have to be completely redone


IPFS hangs on startup.

Describe the bug
ipfs-pre-start hangs on ipfs config profile apply local-discovery on startup.
Steps To Reproduce
	services.ipfs = {
		enable = true;
		enableGC = true;
		apiAddress = "/unix/run/ipfs-api.sock";
		gatewayAddress = "/unix/run/ipfs-gateway.sock";
		extraFlags = [
			"--enable-namesys-pubsub"
		];
		extraConfig = {
			# We don't actually want or need CORS but go-ipfs uses this to do referrer and origin checks.
			API.HTTPHeaders."Access-Control-Allow-Origin" = [
				"https://ipfs.${config.deployment.targetHost}"
			];
		};
	};

??? sometimes (quite often) it hangs on startup.
Expected behavior
IPFS starts up successfully.
Additional context
Startup can be forced via gdb --batch --eval-command 'call exit(0)' --pid $(pgrep ipfs)
There were no migrations that needed to be run.
Notify maintainers
@fpletz
Metadata
Please run nix-shell -p nix-info --run "nix-info -m" and paste the result.

system: "x86_64-linux"
host os: Linux 5.10.60, NixOS, 21.11 (Porcupine)
multi-user?: yes
sandbox: yes
version: nix-env (Nix) 2.3.15
channels(kevincox): ""
channels(root): "nixos-21.05pre272380.f6b5bfdb470"
nixpkgs: /nix/var/nix/profiles/per-user/root/channels/nixos

Maintainer information:
# a list of nixpkgs attributes affected by the problem
attribute:
# a list of nixos modules affected by the problem
module:
- services.ipfs

I tried to debug further and didn't get far:
% ipfs --timeout 10s -D --local config profile apply server --dry-run
2021-09-02T13:21:15.151Z	DEBUG	cmd/ipfs	ipfs/main.go:130	config path is /var/lib/ipfs
Error: context deadline exceeded

So --timeout works but fails the command. Maybe we can just try to run this command for now, ignoring failures. At least it won't indefinitely block startup. No matter what args I give I can't get any more than that first log message.

I found a workaround. Run ipfs --timeout=1s -D daemon then you can apply profiles again. It sounds like sometimes the daemon isn't shutting down cleanly or something. I think the daemon was sometime hung and had to be killed so maybe that is the problem.

Sounds like an IPFS bug where ipfs config profile apply isn't cleaning up a crashed state properly. We can consider a terrible workaround like doing something like this at startup.
ipfs --timeout=10s profile apply ${profile} || { ipfs --timeout=10s daemon;  ipfs --timeout=10s profile apply ${profile} }

I've reported the issue upstream: https://github.com/ipfs/go-ipfs/issues/8407